Moodle插件开发系列——XMLDB编辑器

Moodle插件开发系列——XMLDB编辑器

位置:网站管理>开发> XML编辑器

l  XML编辑器是制作install.xml文件的工具,而install.xml是指定Moodle建立数据库表的规范文件。

l  它将表/字段/键/索引等的编辑变得简单,使开发人员能够将时间使用在编码和改进上,而不是与XML文件和手动编辑造成的错误。

l  Moodle中,所有install.xml文件均在每个插件的db目录下,该文件通过一些点击和按键就可以编辑(我们建议如此)。那些install.xml将包含所需的所有信息,用于为支持每个RDBMS而生成特定的对象。

l  注:能够很好地处理文件,Web服务器需要对所有db目录的写权限(install.xml文件本身)。如果无法点击或加载或创建链接,这意味着你没有创建/ db目录,或是该目录不可写。

前提:插件已经正常安装,示例插件为simpledatabase,所属插件类型为Block(版块)。

  1. 快速启动

使用XML编辑器为新插件来创建一个表:

l  插件的db目录,例如blocks/simpledatabase /db,确保网络服务器拥有该目录的写入权限。若没有,参考下图修改权限:

l  Moodle中,导航到网站管理->开发-> XMLDB编辑器

l  你现在应该看到/blocks/simpledatabase/db中的XML数据库的位置列表,并且创建按钮应该是可以点击的(蓝色字体)。(如果你看到插件目录,但创建按钮不能点,确保Web服务器具有写权限这个目录!)

l  单击[创建]

这将在/blocks/simpledatabase/db目录下创建一个新install.xml文件。点击[XML]可浏览install.xml内容,参考如下:

内容注释:id为默认表主键,类型int,长度10,以及默认表名为 ‘block_simpledatabase’,而实际数据库中表名问”mdl_block_simpledatabase”(默认表前缀为mdl_,自动添加)。

l  点击[载入]。(这将install.xml文件的内容加载到内存中)

l  单击[编辑]

该页面下可新建表,并对当前表操作。

l  点击表名,即block_simpledatabase

可编辑表字段、键、索引等信息。

l  现在你可以使用XML编辑器,创建和编辑你的插件表。

通过提示可编辑表,每个操作均可查看相应的sql或php代码。

若已修改,页面会提示“已修改,可保存“类似提示,如上图。

演示操作:添加字段

1)     点击“新建字段“

2)     填写新字段信息,然后点击“更改“

这是页面已提示有更改,下方显示新增字段信息,同时[保存]按钮也显示处理,此时点击[保存],才会新字段信息保存早install.xml文件中。

3)     查看install.xml内容

回到XMLDB编辑器列表,打开对应的xml文件,内容如下:

特别注意:保存后,需要卸载掉该插件,重新安装,只有这样,插件数据库表才会创建。

Install.xml其实只是记录插件的数据库表的结构,而不是实际的数据库表的操作。

插件的升级, 需要手动在db目录下创建一个upgrade.php文件。这个upgrade.php文件应该看起来像这样:

<?php
 
function xmldb_mymodule_upgrade($oldversion) {
    global
$CFG;
 
    $result
= TRUE;
 
// Insert PHP code from XMLDB Editor here
 
    return
$result;
}
?>

 

为获得“/ /insert PHP code here“代码(即实现数据库表操作的php代码,编辑器会提供),打开XML编辑器、加载相关install.xml文件,并编辑该文件。

选择“查看PHP”选项,

然后选择动作“add field“(添加字段),然后复制并粘贴生成的代码。

比如上述添加flag字段,操作的php代码为下方灰色框中内容,将代码复制到upgrade.php中,而flag字段是要在插件升级过程中添加,需要调整插件的版本号(version.php文件中),要大于旧版本号,同时将代码中XXXXXXXXXX替换为新版本号(建议),以避免未知的错误。

比如旧版本号为2016022400,那么新的版本号可以为2016022401,比旧版本大即可。

在升级过程中,会验证插件表中是否已存在该字段,即:

if
(!$dbman->field_exists($table, $field)) {

$dbman->add_field($table,
$field);

}

注:XMLDB编辑器只是将数据库表结构以xml格式存储,不会更改数据库。而upgrade.php中内容才是实际实现数据库操作的,完成数据库的增删改查等。而相应的php代码可以通过XMLDB编辑器提供。可以参考上述新建字段操作。

此时,由于插件版本号没有变化,升级过程不会执行,需要将插件版本号上调版本号,这样系统才会检测到插件需要升级。

例如:version.php中版本为2015110604,那么需要增加(多少无所谓),变为2015110605,同时将upgrade.php文件中的版本号要与修改后的相同。

  1. 使用

l  XMLDB编辑器比较容易使用。强烈推荐实际操作一段时间,看它是如何工作以及如何修改install.xml文件。

l  这是一个自上而下的组织结构,从加载(或创建)一个新XMLDB文件开始。可以编辑该文件,并且文件基本结构会显示处理。结构中有两种类型的元素:表和语句,并且XMLDB编辑器允许添加、编辑、删除、移动。

l  在编辑表时,你可以看到和轻松地处理表的字段、关键字和索引。请注意,某些字段是不可编辑的,因为它们可能是作为键或索引的一部分在使用。

l  字段可以编辑,指定它们的名称、类型、长度、小数、空、默认等。键和索引与之相同。

l  所有的XMLDB编辑器页面允许您对输入有关项目的修改进行注释(表、索引、关键领域,声明)。使用它,你希望,它可以帮助其他开发人员了解一点的数据库模型。

l  如果要定义一个枚举类型的字段,应该提供一个逗号分隔的列表,每个选项由单引号包围。例如:“选项”,‘option2 ‘,‘option3”。然而,枚举已在Moodle 2过时,所以要尽量避免。

  1. 公约(参考)

除了数据库结构的指南,应该遵循一些更为规范的规则:

3.1
关于名称:

a)    
所有小写名称(表、索引、键和字段)。

b)    
表名和字段名必须只使用A-Z、0-9和_字符。最大28个字符。

c)     
XMLDB文件中的键和索引名,必须用“-”(减号)字符连接字段名来形成。

d)    
主键必须被命名为“primary”。

e)    
强烈建议避免保留名。

3.2
关于空值

a)    
避免使用默认值“”(空字符串)来创建所有的字段。

3.3
关于外键

a)    
每个XML文件的表之下,你必须定义现有外键(FK)正确。这将允许每个人都知道一个更好的结构,允许发展到一个更好的约束系统,在未来,将提供必要的信息,以创建适当的指标的基础代码。

b)    
注意,如果你定义任何字段组合为FK你不会创建任何索引字段,代码会自动地做它!

c)     
尊重公约3.1-c)

3.4
关于唯一键

a)    
宣布任何领域唯一键(UK),如果他们打算作为一个FK(外键)的目标。创建独特的索引。

b)    
尊重公约3.1-c)

  1. 参阅

XMDB定义一个XML结构

安装和升级插件数据库表

l  利用Moodle使用XMLDB编辑器论坛讨论

附录B - 从介绍Moodle编程课程的XML编辑器

时间: 2024-08-06 16:06:10

Moodle插件开发系列——XMLDB编辑器的相关文章

Moodle插件开发——Blocks(版块)

前提: 1)     基于Moodle3.0,要求Moodle版本高于2.0 2)     PHP编程基础:语言的了解和开发工具使用 有经验的开发人员和那些只是想程序员的参考文本应参阅附录A. 1.   简述 从无到有,创建一个名为“SimpleHtml”的版块,为了保持一致性,遵循使用小写“simplehtml”.同时新建版块相应文件均在/blocks/simplehtml目录下.每当一个文件的路径在本文档中提到的,它会始终以斜线开始.这是指Moodle的主目录: 所有文件和目录将相对于该目录

【插件开发】—— 9 编辑器代码分块着色-高亮显示!

前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图 4 SWT编程须知 5 SWT简单控件的使用与布局搭配 6 SWT复杂空间与布局搭配 7 SWT布局详解 8 IPreferenceStore使用详解 这篇讲解依然是一个重头的技巧,就是[代码的着色].大家在使用各种编辑器的时候都会发现,有些关键词和一些注释之类的都会以不同的颜色进行显示,那么它是怎么做到呢?先看一下示例的运行效果! 凭空思考下: [IO书写]首先这些输入的东西可能是以一些字符串的形式

【05】emmet系列之各种缩写

[01]emmet系列之基础介绍 [02]emmet系列之HTML语法 [03]emmet系列之CSS语法 [04]emmet系列之编辑器 [05]emmet系列之各种缩写 各种缩写 缩写:! <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> &

sublime插件开发教程(附源码)

1.背景 虽然可能大神门在编辑器方面都比较偏向于vim之类的自由度更高的工具,但是从我个人来讲sublime这样的插件安装更方便的工具还是比较得心应手的.之前用sublime写英语作文,但是没有一个比较好用的timer,Package_Control里面的track_timer不能实时显示时间,所以博主就自己动手,写了这个插件,可以实时timer,记录时间.效果如下图, 2.使用 使用起来很方便,只要把下载好的sublime-timer文件夹放在下图这个路径下即可. 可以用快捷键方便的对time

xadmin 插件开发

xadmin 插件开发 互文本编辑器,UEditor 在github上面搜索djangoueditor,经行安装下载 插件官方文档 网址:http://xadmin.readthedocs.io/en/docs-chinese/plugins.html#安装流程:1. pip install DjangoUeditor2.settings.py 中加入DjangoUeditor 3.在adminx.py文件里面,courseAdmin类里面加入 def save_models(self): ob

使用编辑器

在开始编写shell脚本之前,您需要了解使用至少一种Linux中的编辑器: 1.VIM编辑器 几乎所有的Linux发型版本使用别名vi来表示vim alias vi='vim' 1.1.vim的基本用法 vim运行两种模式:1.正常模式 2.插入模式 在正常模式下: 上 下 左 右 由 k j h l 来替代: ctrl+f 下移一屏 ctrl+b 上移一屏 G 移动到最后一行 gg 移动到最开始一行 num G 移动到指定num行 :q 退出 :q! 强制退出 :w filename 将文件另

解析HTML利器AngleSharp介绍

解析HTML利器AngleSharp介绍 AngleSharp是基于.NET(C#)开发的专门为解析xHTML源码的DLL组件. 项目地址:https://github.com/FlorianRappl/AngleSharp 我主要介绍是一些使用AngleSharp常用的方法,跟大家介绍,我会以http://www.cnblogs.com站点作为原型. 其它的类似组件有: 国内:Jumony github地址:https://github.com/Ivony/Jumony 作者Blog地址:ht

C#中使用Redis学习一 windows安装redis服务器端和客户端

学习背景 今天是2015年1月2日,新年刚开始的第二天,先祝大家元旦快乐啦(迟到的祝福吧^_^).前段时间一直写Jquery插件开发系列博文,这个系列文章暂停一段时间,最近一直在看redis,我将把redis作为一个系列写一下我的学习历程.正好现在项目中使用了redis,本着学习探索的精神,准备写一下我对redis的一个学习历程和自己的一点感悟.在学习过程中也走了很多弯路,希望能对看这篇博文的朋友们带来点帮助.也算是写这边博文的最大目的了. 我在认识redis之前没有接触过任何NoSql思想.对

sublime Text3 插件编写教程_第一课

今天给大家分享一下编写一个Sublime Text3 插件的流程以及使用插件解决的一个实际问题. 一.开发插件的前提条件 开发sublime插件用到的是Python语言,因此必须懂Python语言的基础语法.学习Python语言,推荐学习廖雪峰的Python教程(http://www.liaoxuefeng.com/). 编写插件处理文本用到正则表达式的地方非常多,尽量了解正则表达式语法.学习正则表达式,推荐正则表达式30分钟入门教程(http://www.cnblogs.com/deercha