标签:
前提:
1) 基于Moodle3.0,要求Moodle版本高于2.0
2) PHP编程基础:语言的了解和开发工具使用
有经验的开发人员和那些只是想程序员的参考文本应参阅附录A。
从无到有,创建一个名为“SimpleHtml”的版块,为了保持一致性,遵循使用小写“simplehtml”。同时新建版块相应文件均在/blocks/simplehtml目录下。每当一个文件的路径在本文档中提到的,它会始终以斜线开始。这是指Moodle的主目录; 所有文件和目录将相对于该目录中提及。
要创建Moodle的版块,最基本情况下,需要提供4个php文件。注意:当前示例为创建名为“simplehtml”的版块,在实际的开发中,要替换为实际的版块名。4个文件如下图所示:
下面将逐一进行讲解。
2.1 block_simplehtml.php
此文件作为版块的类文件,既用来管理,也包括页面显示。
创建文件后,开始编写代码:
<?php
class block_simplehtml extends block_base {
public
function init()
{
$this->title = get_string(‘simplehtml‘, ‘block_simplehtml‘);
}
// The
PHP tag and the curly bracket for the class definition
//
will only be closed after there is another function added in the next section.
}
第一行是定义版块类:精确的显示命名,以“block_”作为类前缀,加上版块名,即为类名”block_simplehtml”。默认版块类均继承基类“block_base”。
初始化方法init(),是所有版块必不可少的。目的是初始化类成员变量。
在这个例子中,我们只需要设置$this->title,即在版块顶部显示的标题,我们可以随意设置。在这种情况下,需要读取真实的标题,从下面提到的语言文件(即2.3),通过get_string()方法。
补充:get_string(‘simplehtml‘, ‘block_simplehtml‘)表示获取版块名为simplehtml的语言索引为‘simplehtml’对应的字符串,即2.3语言文件中的 $string[‘simplehtml‘] = ‘Simple HTML‘;
2.2 db/access.php
此文件包含版块创建的新功能。
自Moodle2.4起,推出了核心功能模块addinstance和myaddinstance。它们被引入控制每个版块的使用。这些功能应该被添加到自定义的版块中。
在这里保持默认即可,将下面的代码覆盖到文件中。
<?php
$capabilities = array(
‘block/simplehtml:myaddinstance‘ => array(
‘captype‘ => ‘write‘,
‘contextlevel‘ => CONTEXT_SYSTEM,
‘archetypes‘ => array(
‘user‘ => CAP_ALLOW
),
‘clonepermissionsfrom‘ => ‘moodle/my:manageblocks‘
),
‘block/simplehtml:addinstance‘ => array(
‘riskbitmask‘ => RISK_SPAM | RISK_XSS,
‘captype‘ => ‘write‘,
‘contextlevel‘ => CONTEXT_BLOCK,
‘archetypes‘ => array(
‘editingteacher‘ => CAP_ALLOW,
‘manager‘ => CAP_ALLOW
),
‘clonepermissionsfrom‘ => ‘moodle/site:manageblocks‘
),
);
2.3 lang/en/block_simplehtml.php
lang表示是语言包目录,en表示英文,fr表示法语,zh_ch就是中文,即文件下的语言包是支持相应语言的,根据所选语言进行切换。所有版块语言文件均在版块安装目录的/lang子目录下。
<?php
$string[‘pluginname‘] = ‘Simple HTML block‘;
$string[‘simplehtml‘] = ‘Simple HTML‘;
$string[‘simplehtml:addinstance‘] = ‘Add a new simple HTML block‘;
$string[‘simplehtml:myaddinstance‘] = ‘Add a new simple HTML block to the My Moodle page‘;
第一行, $string[‘ pluginname ‘] 即插件名,Moodle 2.0及以上版本需要,在升级页面中显示,以区分其他插件。
第二行,$string[‘simplehtml‘]即版块名,用于区分其他版块。
第三行,$string[‘simplehtml:addinstance‘]表示在Moodle编辑模式下,为Moodle公共页添加版块实例后设置版块权限时,显示的版块选项。
第四行,$string[‘simplehtml:myaddinstance‘] 表示在Moodle编辑模式下,用户为“my“页面添加版块实例后设置权限时,显示的版块选项。
2.4 version.php
此文件保存插件的版本信息,以及其他预设参数(这里没有涉及到 - 看version.php如果你想了解更多详细信息)。
版本文件其实非常简单,根据需要,只包含几个字段定义。下面是个例子:
<?php
$plugin->component = ‘block_simplehtml‘; // Recommended since 2.0.2 (MDL-26035). Required since 3.0 (MDL-48494)
$plugin->version = 2016022400; // YYYYMMDDHH (year, month, day, 24-hr time)
$plugin->requires = 2014112400; // YYYYMMDDHH (This is the release version for Moodle 2.0)
文件包含组件定义(‘block_’+版块名)、插件版本号,以及可在Moodle上安装和使用插件的最低版本号。
版本号格式为:YYYYMMDDHH,即年月日和24小时制,如2016022400,就表示版本为2016年2月24号00点发布。
注意:这里使用的对象总是$plugin,不用自己创建,也不要修改。文件也没有PHP结束标记(?>)。这个有必要的,以避免文件空白问题。其他文件也是。
至此,版块插件基本文件已经完成,可在Moodle站点中进行插件的添加和查看。.
使用管理员用户登录,并打开编辑模式,在页面中添加我们的版块,见下图。同时打开编辑模式可进行版块的设置等,由于版块没有内容,所以版块不会显示。
3.1 显示版块内容
在2.1版块插件类文件中,加入如下方法,代码为:
public function get_content() {
if ($this->content !== null) {
return $this->content;
}
$this->content = new stdClass;
$this->content->text = ‘The content of our SimpleHTML block!‘;
$this->content->footer = ‘Footer here...‘;
return $this->content;
}
该方法在用户添加版块实例时,自动调用,得到版块的内容。
首先,检查当前版块实例属性$this->content是否为空,若不为空(版块内容已经计算过),则直接返回。
注:由于计算可能是耗时的操作,且在每个版块会多次调用,所以采取以防措施,以节省时间,提高效率。
其次,就是定义内容,$this->content是版块预定义显示的内容,以标准类对象形式存储。
$this->content->text 是版块内容文本,是固定写法。
$this->content->footer 是版块内容页脚,是固定写法。
然后将内容返回。
补充:版块内容不只是text,footer,还有其他类型,如list列表,tree树结构等,有关版块实例属性$this->content,请参阅附录A。
3.2 可编辑版块内容 edit_form.php
提供用户可配置版块显示内容的能力, 即实例配置。在页面中,点击进入页面编辑模式,会看到每个版块标题栏均显示编辑(设置)按钮,点击后会进入版块编辑(设置)表单页面。
Moodle默认添加到该表单的设置,关于版块的外观和位置,即Moodle会自动为插件配置页面添加额外的一些配置元素等。
可通过扩展配置表单,添加自定义的偏好字段,让用户可以更好地调整版块。创建文件/blocks/simplehtml/edit_form.php,并用下面的代码填充它:
<?php
class block_simplehtml_edit_form extends block_edit_form {
protected
function specific_definition($mform) {
//
Section header title according to language file.
$mform->addElement(‘header‘, ‘configheader‘, get_string(‘blocksettings‘, ‘block‘));
//
A sample string variable with a default value.
$mform->addElement(‘text‘, ‘config_text‘, get_string(‘blockstring‘, ‘block_simplehtml‘));
$mform->setDefault(‘config_text‘, ‘default content‘);
$mform->setType(‘config_text‘, PARAM_RAW);
}
}
第一行,声明了一个继承block_edit_form的类,这让Moodle识别代码在配置页面执行。specific_definition()方法是表单元素被定义的地方。这些元素采用与Moodle表单库相同的标准。在specific_definition()方法中,创建了一个头,和一个输入元素来接收在版块中使用的文本。
此处需要扩展语言文件, 为“blockstring”添加一个值,如下所示:
$string[‘blockstring‘] = ‘ Block Content‘;
因此,一旦我们的实例配置表单被保存,我们就可以在版块中使用输入的文本,像这样:
if (! empty($this->config->text)) {
$this->content->text = $this->config->text;
}
在版块类文件get_content()方法中加入上述代码:
注意,$this->config可以在所有版块方法中获取的,除了init()方法。这是因为init()方法在版块创建的时候被立刻调用(实现初始化),因此$this->config尚未实例化。
注意复选框:你不能在表单中使用“复选框checkbox”元素(一旦设置将保持设置)。你必须使用advcheckbox代替。
3.3 可编辑版块标题 edit_form.php
让我们添加一个字段/blocks/ simplehtml /edit_form.php。如下:
// A sample string variable with a default value.
$mform->addElement(‘text‘, ‘config_title‘, get_string(‘blocktitle‘, ‘block_simplehtml‘));
$mform->setDefault(‘config_title‘, ‘default title‘);
$mform->setType(‘config_title‘, PARAM_TEXT);
这里需要另外一个方法来处理版块标题$this->title,而$this->title是绝对不一样通过$ this->config->title(至少对于Moodle来说),也不能使用init()来处理,需要在2.1文件(/block/simplehtml/block_simplehtml.php)中添加specialization()方法:
public function specialization() {
if (isset($this->config)) {
if (empty($this->config->title)) {
$this->title = get_string(‘defaulttitle‘, ‘block_simplehtml‘);
} else {
$this->title = $this->config->title;
}
if (empty($this->config->text)) {
$this->config->text = get_string(‘defaulttext‘, ‘block_simplehtml‘);
}
}
}
此处需要扩展语言文件, 为“blocktitle”添加一个值,如下所示:
$string[‘blocktitle‘] = ‘ Block Title‘;
只要我们版块实例加载和可用,可以保证被Moodle自动调用。这意味着该版块的内容是首次计算,版块什么都没做之前。因此,提供specialization()方法是自然选择,对于需要采取行动,或“尽快”可用的任何配置数据,比如当前情况。
3.4 隐藏版块
这里的一个例子是“最近的活动Recent Activity”模块,而事实上没有最近的活动存在。然而,在这种情况下,该模块选择明确通知你缺少活动,这可以说是有用的。如果不需要显示的话,让版块“消失”就会很好。
将get_content()方法的返回值设置为空,就是空字符串(““),包括$this->content->text,和$this->content->footer。Moodle会调用is_empty()方法来检查版块的内容,如果内容为空,就不会显示。
注:事实上版块的标题的值和 hide_header()方法的存在或不存在,不影响此行为。如果一个版块没有内容,就被认为是空的,不论其他。
3.5 支持多个实例
在单个课程中添加多个同类型的版块会非常好。做法比较简单,就是在2.1版块类文件(/block/simplehtml/block_simplehtml.php)添加方法:
public function instance_allow_multiple() {
return
true;
}
这会告诉Moodle,允许任何课程添加任意数据的SimpleHtml版块实例。
注意:即使版块同意允许多个实例出现在同一页面,管理员有选择禁用此类行为。此设置可分别在每个版块从管理/配置/版块(Administration/Configuration/Blocks)页。
3.6 全局设置
为版块插件添加手动设置选型,比如限制版块内容字符数,或字符类型(如纯文本)等。
现在实现例子,设置版块内容只允许文本,不包括HTML。创建一个新文件/blocks/simplehtml/settings.php,并为每个设置定义表单字段。这在概念上很类似于我们如何生成实例配置形式,但用于生成表单和字段的实际代码有点不同。
将以下内容填充在你的settings.php:
<?php
$settings->add(new admin_setting_heading(
‘headerconfig‘,
get_string(‘headerconfig‘, ‘block_simplehtml‘),
get_string(‘descconfig‘, ‘block_simplehtml‘)
));
$settings->add(new admin_setting_configcheckbox(
‘simplehtml/Allow_HTML‘,
get_string(‘labelallowhtml‘, ‘block_simplehtml‘),
get_string(‘descallowhtml‘, ‘block_simplehtml‘),
‘0‘
));
如我们所见,为了生成全局配置表单,可以简单地创建管理设置对象,并把设置对象放到数组当中。
$settings变量是固定的,预配置信息要以属性形式放到配置对象中,如admin_setting_configcheckbox,在管理设置中,通过checkbox(复选框)形式来配置信息。‘simplehtml/Allow_HTML‘表示simplehtml版块,Allow_HTML是配置名称,也是存储形式。该配置选项将会存储在全局$CFG对象,以及<pre_fix>_config数据看表中。建议使用版块插件名作为配置前缀,否则会与其他插件变量冲突,则配置全名就是版块名/配置名,如’simplehtml/Allow_HTML’,那么配置数据会出书到‘<pre_fix>_config_simplhtml‘表中,同时在通过get_config()方法获取配置时,也不会发生问题。
每个元素有两个语言标记,第一个标签是元素的标签或主要文本,第二个标签是为它的描述。
另外此处需要扩展语言文件, 为“headerconfig”等分别添加一个值,如下所示:
$string[‘ headerconfig‘] = ‘SimpleHtml Global Config‘;
$string[‘descconfig‘] = ‘Description of ...‘;
$string[‘labelallowhtml‘] = ‘Set allow html‘;
$string[‘descallowhtml‘] = ‘Description allow html...‘;
注:<pre_fix>是在Moodle安装时定义的共有表前缀(默认为mdl_)。
自Moodle2.4起,为了启用全局配置,下面的代码必须添加到/blocks/simplehtml/block_simplehtml.php文件中。
public function has_config() {return true;}
这行代码告诉Moodle该版块有setting.php文件,即启用全局配置。
第一种,直接保存配置到全局$CFG对象,可这样访问数据:
$allowHTML = $CFG->Allow_HTML;
(推荐)第二种,使用版块名自定义命名空间,保存配置变量,可通过get_config()方法过去。
$allowHTML = get_config(‘simplehtml‘, ‘Allow_HTML‘);
默认实例配置数据保存方法如下:
public function instance_config_save($data) {
$data = stripslashes_recursive($data);
$this->config = $data;
return set_field(‘block_instance‘,
‘configdata‘,
base64_encode(serialize($data)),
‘id‘,
$this->instance->id);
}
现在需要我们对该方法重写,以达到我们的要求。重写后方法如下:
public function instance_config_save($data) {
if(get_config(‘simplehtml‘, ‘Allow_HTML‘) == ‘0‘) {
$data->text = strip_tags($data->text);
}
// And now forward to the default implementation defined in the parent class
return parent::instance_config_save($data);
}
注:这里存在一个问题,若先允许HTML,并保存带有HTML的内容,然后再限制HTML,版块会继续显示包含HTML的内容。
而问题的解决办法有两种:
ü 一旦设置不允许HTML,就对版块实例内容进行HTML过滤,而再次允许时,过滤掉的HTML将不回显。
ü 在显示内容前,先验证配置是否允许HTML,再决定是否过滤HTML,这样重复设置允许和不允许时,不会丢失HTML标签。
3.7 隐藏版块标题
在版块类文件(2.1,/blocks/simplehtml/block_simplehtml.php)中,加入如下代码:
public function hide_header() {
return true;
}
注意:不能仅在init()方法中设置版块的标题为空,在init()方法调用后每个版块有一个唯一的不为空的标题,以至于Moodle可以用标题区分不同已安装的版块。
3.8 自定义版块样式
每一版块将完全被包含在一个<div>或<table>元素中,在包裹元素中将输出所有版块的HTML。我们可以指示Moodle给包裹元素以明确的值添加HTML属性。这就是自由定制CSS样式的结果。
下面的功能将修改版块HTML元素的“class“属性,通过”block_“前缀和版块名。通过主题CSS中类选择器来修改版块的风格,比如".block_simplehtml { border: 1px black solid}"。定义的方法参考如下,默认返回属性名和值得关联数组:
public function html_attributes() {
$attributes = parent::html_attributes(); // Get default values
$attributes[‘class‘] .= ‘ block_‘. $this->name(); // Append our class to class attribute
return $attributes;
}
版块的结果中所有从版块基类继承正常的HTML属性,加上额外的样式名称。现在我们可以使用这个样式名改变版块的风格,通过YUI添加JavaScript事件,等等。最后遵循优雅的设计风格,采用name()方法进行动态匹配版块名,而不是对其硬编码为“block_simplehtml”。
自定义字体颜色:
public function html_attributes() {
$attributes = parent::html_attributes(); // Get default values
$attributes[‘class‘] .= ‘ setcolor‘; // Append our class to class attribute
return $attributes;
}
同时创建样式文件(/blocks/simplehtml/styles.css),添加如下代码:
.setcolor { color: maroon }
结果参考下:
3.9 单独授权
为版块选择合适的显示场景(页面)。比如“社会活动”模块,在“社会”课程格式下的课程中是有用的,但在“周”格式下的课程中不行。
Moodle允许版块在哪些页面格式中是可用的,并强制开发者设置。这些信息通过标准关联数组传递给Moodle,该数组的键是响应页,而值是表示版块是否显示的布尔值(true/false)。
注意上段中特意使用page页而不是course课程。这是因为在Moodle1.5或更高版本中,版块可以在任何支持它们的页中显示。最好的例子就是课程页,但并不限于它们。比如测试浏览页(点击测试名看见的第一个)也支持版块。
页面格式名(我们可以使用的)是源于脚本名(从这实际被用来于显示该网页的脚本)。例如,当我们正在浏览一个课程,这个脚本是/course/view.php(这在浏览器的地址中很明显)。因此,该页的格式是cource-view。它的规则比较简单,对于一个测验浏览页面格式名是mod-quiz-view。这个经验法则也有一些例外,如下:
1) 对于Moodle首页,格式名为site-index。
2) 课程的格式名其实不只是course-view,还包括course-view-weeks,course-view-topics等等。
3) 即使没有这样的页面,格式名都可以用“all”来捕获所有选项。
我们会尽可能多的包含格式名,在定义使用格式时(applicable formats)。每种格式可以允许或禁止,而且有三个规则可以帮助解决问题,“是否允许版块进入这个页面?”:
1) 格式名的前缀匹配格式名称;例如,mod将匹配所有的活动模块(activity modules.)。当然,course-view将匹配任何课程,无论课程格式。最后,site也将匹配首页(请记住,它的全格式名是site-index)。
2) 格式名越能明确匹配页,优先级越高,在决定是否版块将被允许时。例如,mod,mod-quiz和mod-quiz-view均匹配查看测验浏览页。但是,如果这三个都存在,mod-quiz-view将优先于其他两个,因为这是一个更好的匹配。
3) 字符*可以代替任何字的使用。例如,mod和mod-*是等价的。在这份文件的写作的时候(https://docs.moodle.org/dev/Blocks),有没有实际的理由,利用这种“通配符匹配”功能,但它的存在为将来使用。
4) 格式名的出现顺序是没有任何区别的。
默认地, 在数组中没有写的格式名,或对应的值为false的,均表示相应页面不允许出现版块。
第一个例子,若版块在所有页显示,要使用:
public function applicable_formats() {
return array(‘all‘ => true);
}
“all”表示匹配所有(上文已提到),版块可以在所有页面显示,比如html版块(/blocks/html);
第二个列子,若版块仅出现在网站首页,要使用:
public function applicable_formats() {
return array(‘site‘ => true);
}
或将“site”改为“site-index”,这样更贴切。
注解:由于不是匹配所有页,同时“site“页为true,说明网站首页可以显示该版块。
第三个例子,若想要允许版块出现在所有课程中,“social“社会课程除外,也不允许出现在其他地方,要使用:
public function applicable_formats() {
return array(
‘course-view‘ => true,
‘course-view-social‘ => false);
}
第四个例子,也是最复杂的例子,假设一个块可以显示在网站的首页,在课程(但不是社会课程),以及浏览的任何活动模块,除了测验。要使用:
public function applicable_formats() {
return array(
‘site-index‘ => true,
‘course-view‘ => true,
‘course-view-social‘ => false,
‘mod‘ => true,
‘mod-quiz‘ => false
);
}
不难看出,“最佳匹配“策略将决定最终的结果。
3.10 Cron响应
对Moodle全局Cron进程做出响应是可能的;我们可以有一个定期运行,无视用户交互的方法。有两个部分。首先,我们需要给我们的版块类中定义一个新方法:
public function cron() {
mtrace( "Hey, my cron script is running" );
// do something
return true;
}
注意:如果你没有在cron函数中返回true,在版块表中lastcron字段将不会被更新,因此,每次全局Cron运行时,您的cron函数都会被调用一次!
然后,我们需要为cron功能设置(最小)执行间隔。在Moodle2.0之前,这是通过init()方法保存在版块成员变量$this->cron中。现在在/blocks/simplehtml/ version.php文件中添加额外的一行来实现。打开它,并添加以下内容:
$plugin->cron = 300;
定时间隔使用秒来设置,所以上述最小间隔为5分钟。然而,该函数会按频繁调用,仅在Cron已经被设置运行在Moodle安装程序。所以如果版块被设置在两次运行之间至少5分钟,但Moodle的定时系统仅被设置每24小时运行一次,版块会在两次运行之间等待比我们预期的更长得时间。
请记住,如果我们更改版本文件或版块文件中的任何值,我们一定要将更改版本号,并访问通知页以升级该版块,否则修改将被忽略。
注:版块cron仅被设计调用版块类型的cron脚本。就是说,定时cron不在乎版块的单独实例。在cron方法中$this是被定义的,但它几乎什么都没有(只有标题和内容字段填充)。如果你需要执行cron为单独实例,这是你自己的责任在cron功能中来遍历模它们。比如:
public function cron() {
global $DB; // Global database object
// Get the instances of the block
$instances = $DB->get_records( ‘block_instances‘, array(‘blockname‘=>‘simplehtml‘) );
// Iterate over the instances
foreach ($instances as $instance) {
// Recreate block object
$block = block_instance(‘simplehtml‘, $instance);
// $block is now the equivalent of $this in ‘normal‘ block
// usage, e.g.
$someconfigitem = $block->config->item2;
}
}
提示:这意味着创建一个版块是可能的方式来创建代码(以低开销来响应cron)。没有版块的真实实例是要求的。
4.1 列表 lists
这个列表每行显示一项,和旁边一个可选的图像(图标)。一个类似列表版块的例子就是标准的Moodle“admin”模块,这将说明本节所讨论的所有问题。
列表版块以完全相同的方式使用$this->content->footer,却忽略$this->content->text。
在get_content()方法被调用时,设置两个属性:$this->content->items和$this->content->icons。$this->content->items和$this->content->icons均为数字索引数组,且数量相同。$this->content->items中每一项应包含要显示在列表中的HTML元素,是指向其他页的链接。$this->content->icons中应是完整的 <img>标签,带有“src”,“height”,“width”和“alt”属性。建议使用标准的16×16图像。
为了告诉Moodle,我们希望有一个列表而不是标准的文本,我们需要做一个小的变化给我们的版块类的声明。相反,扩展类block_base,我们的块将扩展类block_list。 例如:
class block_my_menu extends block_list {
// The init() method does not need to change at all
}
除了使这种变化,我们当然必须也修改get_content()方法来构造$this->content变量如上面讨论:
public function get_content() {
if ($this->content !== null) {
return $this->content;
}
$this->content = new stdClass;
$this->content->items = array();
$this->content->icons = array();
$this->content->footer = ‘Footer here...‘;
$this->content->items[] = html_writer::tag(‘a‘, ‘Menu Option 1‘, array(‘href‘ => ‘some_file.php‘));
$this->content->icons[] = html_writer::empty_tag(‘img‘, array(‘src‘ => ‘images/icons/1.gif‘, ‘class‘ => ‘icon‘));
// Add more list items here
return $this->content;
}
总之,如果我们想创建一个列表块,而不是文本块,我们只需要改变版块类声明和get_content()方法。
4.2 树 tree
暂不推荐使用。
在某些情况下,我们需要有一个数据库表,来保存在版块使用到的一些具体信息,则我们需要创建文件/blocks/simplehtml/install.xml 与它所包含的表架构。
要创建install.xml文件,使用XML数据库编辑器, 或参考XMLDB编辑器文档(Moodle插件开发—XMLDB编辑器.docx)。更多信息请参见常见问题解答数据库> XMLDB。
补充(仅供参考):
1) Moodle目录结构
l /admin:该目录下存放的文件主要Moodle站点管理代码
l /auth:该目录存放Moodle用户认证的组件模块
l /availability:活动和部分的访问可用控制模块。
l /backup:该目录下包含创建备份或恢复时所用到的管理模块
l /badges:徽章模块
l /blocks:该目录下存放用户管理Moodle页面上的所有版块的模块
l /blog:该目录下存放用户管理Moodle中blog管理和编辑内容模块。
l /cache:缓存模块
l /calendar:用户管理和显示日历的模块
l /cohort:替代课程类别注册模块
l /comment:注释管理模块
l /completion:课程、活动等完成管理模块
l /course:课程显示和管理模块
l /enrol:该目录下存放各种选课插件,默认是manual方式
l /error:包含显示Moodle站点错误的文件
l /files:用户管理和显示用户上次文件的模块
l /filter:用于管理Moodle站点的各类过滤方法的模块,如数字附后等
l /grade:用户管理和显示学生成绩的模块
l /group:组管理模块
l /install:包含Moodle默认安装时使用的各种语言包、安装说明界面等
l /iplookup:显示用户IP地址信息的模块
l /lang:包含Moodle默认安装时使用的语言包,默认英文。
l /lib:存放Moodle所有核心代码库
l /local:本地定制模块
l /login:管理用户登录和退出的模块
l /messge:管理和显示用户短信息的模块
l /mnet:web service之mnet
l /mod:包含Moodle中可以使用的各种资源和活动模块
以下模块均可以管理和显示,并是在活动中
ü --/assignment:作业模块
ü --/chat:聊天模块
ü --/choice:投票模块
ü --/data:数据库模块
ü --/forum:讨论区模块
ü --/glossary:词汇表模块
ü --/hotpot:hotpot模块
ü --/journal:报告模块
ü --/label:标签模块
ü --/lams:管理和显示活动中模块
ü --/lesson:程序教学模块
ü --/quiz:测验模块
ü --/resource:资源模块
ü --/scorm:SCORM模块
ü --/survey:问卷调查模块
ü --/wiki:WIKI模块
ü --/workshop:车间模块
l /my:用户个人信息管理模块
l /notes:注释模块
l /pix:站点图片模块
l /plagiarism:防剽窃模块
l /portfolio:内容发布模块
l /question:存放活动使用的各种尸体题型和管理模块
l /rating:登记模块
l /report:报告模块
l /repository:第三方库模块
l /rss:RSS模块
l /tag:标签模块
l /theme:存放各种预设的主题风格,可以用来改变Moodle站点外观
l /user:用户程序模块
l /userpix:用户头像目录
l /webservice:Web Service集成目录
l COPYING.txt:Moodle版权信息
l Gruntfile.js:Gruntfile项目管理文件
l README.txt:Moodle自述文件
l TRADEMARK.txt:Moodle商标许可文件
l behat.yml.dist:预定义Behat行为驱动文件
l brokenfile.php:为了防止错误日志出现服务器日志中所使用的空文件。
l composer.json:Composer依赖管理文件
l composer.lock:Composer版本锁定文件。
l config-dist.php:Moodle预定义配置文件,用来手动修改配置。
l config.php:Moodle站点的配置文件,包含访问地址,数据库信息等
l draftfile.php:该脚本为当前用户的文件草案提供服务
l file.php:从数据目录moodledata中提取遗留文件(仅在其等于2时可用)
l githash.php:git包信息
l help.php:指向相关帮助文档的程序
l help_ajax.php:通过Ajax显示帮助文档
l index.php:Moodle站点默认首页
l install.php:安装Moodle站点并自动创建config.php文件的程序
l npm-shrinkwrap.json:依赖管理文件
l package.json:包文件
l phpunit.xml.dist:测试用
l pluginfile.php:代表为单个插件服务的脚本
l tags.txt:Exuberant ctags生成PHP标签,使用方法
l version.php:Moodle版本文件
标签:
原文地址:http://www.cnblogs.com/toughlife/p/5513939.html