Moodle二次开发指南-设计指南.doc_第1页
Moodle二次开发指南-设计指南.doc_第2页
Moodle二次开发指南-设计指南.doc_第3页
Moodle二次开发指南-设计指南.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Moodle的结构分析模块化的扩展特殊需求可以通过模块扩展。Moodle的M表示Modular, 就是暗示它的功能可以通过模块进行扩展。这些模块涵盖了系统主题风格( Theme)、 界面语言、 数据库模型、 课程结构、 问题格式、 导入导出格式和活动模块等各个方面。 Moodle开发社区的“Modules and plugins”数据库( /mod/data/view.php?id=6009) 中已经注册了上百种标准的和第三方开发的稳定模块, 并且在大量热衷模块开发的用户支持下, 还在不断增加。与其他网络课程平台的交互性在数据的保存方面, Moodle将一个课程的文件全部保存在一个目录中。这样即便不通过Moodle系统,也可以很方便地通过目录操作访问到某个课程的内容, 可以将这些文件带到其他课程平台上使用。在未来版本中, 还将支持不同平台格式的课程导入和导出, 目前已经实现的有SCORM和IMS的课程包。Moodle数据库模型要进行二次开发, 对一个系统的数据库模型的了解也是很必要的。因为Moodle并不需要我们进行核心代码的修改和开发, 因此在最初阶段不必作细节分析。当我们具体碰到某一个模块时, 才有必要进行深入的分析。Moodle的数据库模型经过几年的发展已经很复杂, 为了减少这种复杂关系带来的混乱, 它采用了这样的命名方式。如: mdl_course_categories, 其中mdl是所有系统表格的前缀, course代表属于course的模块,categroies代表课程分类表, 这样既可以保证清晰的表述, 又可以避免不同模块之间数据表格的重名。由于模块部分的数据模型会随着系统模块的增加而增加,所以当你扩展模块的时候, 那部分数据模型就可能会发生变化。1.8版的数据库一共包含约180个表, 结构复杂, 故应该采用各个模块分别分析的方法来研究, 其中config、user、course、quiz、question等模块的数据模型应该优先考虑。在每次接触到某个模块的数据模型时, 必须分析到细节, 比如在设计自己的模块时, 如果需要进行权限分配, 就需要研究用户和角色的数据结构, 图3是user和role模块关系数据模型的简化图(各表的字段略)。这个模型中mdl_user包含了用户的基本信息;mdl_user_info的三张表格用于增加用户的自定义属性; mdl_role和mdl_role_capabilities包含了系统用户的角色和各角色所拥有的能力/权限;mdl_role_assignment是mdl_user和mdl_role的关联表,保存了user和role的包含关系。Moodle提供了ADODB数据访问抽象层来进行数据库的访问, 所以我们不需要直接编写访问数据库的代码, 只要通过抽象层的方法即可。Moodle二次开发的形式Moodle的二次开发重点不是对Moodle的核心代码和模块进行修改, 而是针对其外部功能模块的设计和开发以满足特定的需求, 即围绕Moodle的核心代码进行的模块开发。熟悉目录结构熟悉Moodle的目录结构, 可以帮助你迅速的定位文件, 进行修改。下表罗列了Moodle的主要目录及文件。Moodle在自定义后, 子目录的结构会有所不同,上述根目录的结构对相同版本来说是固定的。Moodle主要目录和文件:文件夹功能admin/系统管理的代码auth/验证用户基本模块及扩展模块blocks/页面 block 基本模块难度及扩展模块calendar/维护及显示日历的代码course/显示和管理课程的代码doc/Moodle的帮助文档files /显示和管理上传文件的代码lang/不同语言的对应文本, 每个目录表示一种语言, 并且和具体的模块对应lib/Moodle 的核心代码库login/登录及账号创建代码mod/Moodle 的基本模块和扩展模块pix/站点的图片theme/站点的主题包/皮肤包, 控制站点的样式user/显示和管理用户config.php包含基本的系统设置, 一般在第一次安转时设置install.php安装站点version.版本控制index.php站点首页总体开发约定参看:Moodle二次开发指南-代码编写指南.docMoodle语言包的二次开发1. Moodle语言包的结构Moodle中几乎所有在页面上看到的文本都是从一系列的语言文件中动态获取的, 这些文件被称为Language File或者String File。 这些文件通常按照语言代码的文件夹存放在lang目录中, 比如en_uft8、zh_cn_utf8, 并且以php为扩展名。文件内以字符串的形式定义了界面的文本, 如:$string“action”= “Action” ;$string“activemodule”= “Active Module” ;然后在界面引用时使用如下语句, 即可显示相应的文本:print_string( “action” );print_string( “activemodule” );或者, 将文本赋给变量, 如:$activemodule=get_string( “activemodule” );开发新的Moodle语言包的过程就是将Moodle的英文语言包中的文本翻译成其他语言。Moodle Theme的二次开发1. Theme结构和开发约定Moodle拥有一个强大的Theme系统, 可以通过XHMTL和CSS进行界面效果的修改。Moodle的Theme中定义了多层样式, 分别是站点级别(Site Level)、 课程级别(Course Level)/用户级别(User Level)和页面级别(Page Level), 可以让用户多层次地进行样式风格的定义。Moodle的Theme存放在Theme文件夹中, 每个子文件夹就代表一套Theme, 在每个Theme的子文件夹中都包含下表中的文件和文件夹。Theme文件夹结构pix/包含所有在 Theme 中使用的图片config.phpCSS 文件配置favicon.ico浏览器标题栏和收藏夹中显示的图标footer.html页脚内容header.html页眉内容styles .php调用 CSS 文件的代码(不需要修改)styles_color.cs s色彩样式文件styles_fonts .css字体样式文件styles_layout.css布局样式文件styles_moz.css针对 Mozilla 和 FireFox 的特性格式设计Theme时,可以将多个文件夹中的CSS文件整合使用, 其过程就是重新定义和添加CSS的样式。更详细的内容请参考/en/Themes。2. 开发方法要创建新的Theme, 最好是从当前使用版本中的标准Theme开始。 我们可以复制一个文件夹, 将文件夹名字修改为新的名字, 然后就可以开始设计新的Theme了。主要的工作就是将原子目录中的内容进行重新定义, 设计新的图标、 整体风格、 色彩体系、 字体和布局。对CSS和XHTML不熟悉的用户可以参考/en/Theme_sources上的资源进行CSS和XHTML的学习。Moodle模块的二次开发1. 模块结构和开发约定Moodle的模块是Moodle中最具扩展性的构架之一, Moodle模块的目录结构。文件夹/文件功能mod.html创建或编辑模块时使用的表单界面version.php控制版本, 如果复制进来的版本号比数据库中的版本号更高的话便进行升级操作icon.gif 模块的显示图标db/数据库文件夹(根据数据库类型的不同, 其中文件会有所不同)db/mysql.导入到系统数据库的控制db/mysql.建立模块数据库和插入初始化数据的 sql脚本index.php界面课程下所有新建模块的内容显示view.php察看单个模块详细信息的内容界面lib.php模块中的方法(函数)库config.html设置新模块的页面, 可选。如果有这个文件就会在模块设置管理页面中出现 config 的链接将新模块文件夹放到Moodle目录下的mod目录下, 就可以让Moodle发现和使用新模块。Moodle在管理界面下可以进入Maintenance(维护)模式, 对所有的模块和插件进行检测。对于模块来说, Moodle会检测mod文件夹下所有的子文件夹: 对于已有模块的文件夹, Moodle会检测version.php, 比较系统中的模块版本和文件夹中的模块版本是否一致, 如果一致就不作任何操作, 如果不一致就进行版本更改的操作; 对于新模块的文件夹, Moodle会将该文件的名字作为模块的名字, 并读取db文件夹下的.sql文件, 将其中的script程序在数据库中执行以生成新的数据表格和初始化数据。一切工作完成后, 就可以在课程中使用新的活动类型了。在模块的开发时要注意一些基本的约定, 特别是对于lib.php这个函数库文件, 要求必须定义下面的方法:newmodule_add_instance()添加一个模块记录到数据库;newmodule_update_instance()更新数据库记录;newmodule_delete_instance()删除一个数据库记录;newmodule_user_outline()传递一个实例, 返回用户贡献的总结;newmodule_user_complete()传递一个实例, 返回用户贡献的细节。其中的newmodule为新建模块的名称, 这个名称一般为不含数字和其他特殊符号的单个英文名称。 即便你不需要某个方法, 也要进行定义, 方法体可以为空, 或返回空的结果。2. 开发方法新模块的开发可以通过下面几个步骤完成:从下 载 开 发 模 版 ( /download.php/modules/NEWMODULE.zip)。其中包含了上文提到的所有文件和文件夹, 且在lip.php中定义了所有必要的方法。解压缩文件到任意文件夹。将文件夹名改为你的新模块名, 比如bulletin。将文件夹下所有文件中的NEWMODULE文本替换为bulletin。如果需要用到数据库, 那么在db/mysql.sql文件中编写sql数据库定义语句, 注意在创建表格时使用模块名作为前缀, 比如bulletin_posttable, 这样可以避免表格重名。同时编辑db/mysql.php文件, 设置模块名和版本号。创建模块的语言包文件, 建议默认使用英文语言。避免将文本直接在页面上硬编码, 便于语言版本的更换, 比如, 创建如下目录: lang/en_utf8/bulletin.php, 然后在文件中输入你需要在界面上显示的文本。将整个模块文件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论