Moodle插件开发笔记13: Activity module开发(一)

Activity module是moodle里最复杂的module类型。Assignment, Quiz等module都属于activity module。 1、了解模块结构和开发…

Activity module是moodle里最复杂的module类型。Assignment, Quiz等module都属于activity module。

1、了解模块结构和开发约定

         Moodle的模块是Moodle中最具扩展性的构架之一, 因此需要开发者对PHP和MySql都应该有一定的开发能力, 并且还要对Moodle模块的结构有一定了解。 下表是Moodle模块的目录结构。
mod_form.php 创建或编辑模块时使用的表单界面   
version.php   控制版本, 如果复制进来的版本号比数据库中的版本号更高的话便进行升级操作   
icon.gif 模块的显示图标16×16   
db/ 数据库文件夹   
db/install.xml 定义数据库的所有类型的数据表的结构。用于在模块安装。   
db/upgrade.php  定义数据库表结构的变化。用于在模块升级   
db/ access.php 定义模块功能,许可权限   
index.php 课程下所有新建模块的内容显示界面   
view.php 察看单个模块详细信息的内容界面   
lib.php 模块中的方法(函数)库   
backuplib.php and restorelib.php 可选   
settings.php or settingstree.php 可选。为这个模块定义的管理设置页。   
defaults.php 让你轻松地定义为您的配置变量的默认值。它是包含在lib / adminlib.php升级活动模块。它应该定义一个数组$ defaults。这些值然后装入config表。另外,如果你设置$defaults[‘_use_config_plugins’]为true,值被装入config_plugins表,这是更好的做法。见mod/quiz/defaults.php一个例子。   
lang/en_utf8/newmodule.php 可选 
        Moodle在管理界面下可以进入aintenance(维护)模式, 对所有的模块和插件进行检测。对于模块来说, Moodle会检测mod文件夹下所有的子文件夹: 对于已有模块的文件夹, Moodle会检测version.php, 比较系统中的模块版本和文件夹中的模块版本是否一致, 如果一致就不作任何操作, 如果不一致就进行版本更改的操作; 对于新模块的文件夹, Moodle会将该文件的名字作为模块的名字, 并读取db文件夹下的install.xml文件,生成新的数据表格和初始化数据。一切工作完成后, 就可以在课程中使用新的活动类型了。
在模块的开发时要注意一些基本的约定, 特别是对于lib.php这个函数库文件, 要求必须定义下面的方法:
newmodule _install() -它会在模块安装时被调用
newmodule_add_instance( )添加一个模块记录到数据库;
newmodule_update_instance( )更新数据库记录;
newmodule_delete_instance( )删除一个数据库记录;
newmodule_user_outline( )传递一个实例, 返回用户贡献的总结;
newmodule_user_complete( )传递一个实例, 返回用户贡献的细节。
newmodule_get_view_actions() / newmodule _get_post_actions()参与报告(course/report/participation/index.php)分类日志表中的操作使用。
其他可用的函数,但不是必需的:
newmodule_delete_course()当所有实例都被删除后,代码将清理的内容
newmodule_process_options()- code to pre-process the form data from module settings
newmodule_reset_course_form() and newmodule_delete_userdata()- used to implement Reset coursefeature.
        其中newmodule为新建模块的名称, 这个名称一般为不含数字和其他特殊符号的单个英文名称。 即便你不需要某个方法, 也要进行定义, 方法体可以为空, 或返回空的结果。
2、开发方法
        新模块的开发可以通过下面几个步骤完成(忽略对PHP和MySql的掌握程度) , 我们使用最简单的文本编辑器就可以完成下列步骤:
·从moodle.org下 载 开 发 模 版 (http://download.moodle.org/download.php/modules/NEWMODULE.zip)。
其中包含了上文提到的所有文件和文件夹, 且在lip.php中定义了所有必要的方法。
·解压缩文件到任意文件夹。
·将文件夹名改为你的新模块名, 比如bulletin。
·将文件夹下所有文件中的NEWMODULE文本替换为bulletin。
·创建模块的语言包文件, 建议默认使用英文语言。避免将文本直接在页面上硬编码, 便于语言版本的更换, 比如, 创建如下目录: lang/en_utf8/bulletin。
·编辑数据库操作( lib.php)和使用界面(mod.php, index.php和view.php) 的代码需要编写, 并且在Moodle中进行测试。

3、开发实例
下面以开发一个最为简单的“Bulletin” activity为例。
Step 1 使用 NEWMODULE作为模版
1. 下载最新的NEWMODULE
Moodle提供了一个activity template named NEWMODULE, you can download it athttp://moodle.org/mod/data/view.php?d=13&rid=715&filter=1.当你开发activity时应该based on NEWMODULE。需要注意的是,NEWMODULE还是缺少了非常重要的功能没有涉及:backup and restore。少了这2个功能后果会很严重,很多moodle system不会安装缺少这2个function的activity module。
2. rename “newmodule” folder to our module name “bulletin”
3. search目录下所有文件的内容,用”bulletin”替代”newmodule”
4. rename lang/en_utf8/newmodule.php to bulletin.php
5. copy the whole “bulletin” folder to< moodle home>/mod folder
未完,待续

作者: admin

为您推荐

联系我们

联系我们

邮箱:

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部