`
天梯梦
  • 浏览: 13730868 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

moodle架构分析---表现层的设计(一)

 
阅读更多

Moodle在表现层的实现有多种机制,分别针对页面、表单、导航条、页面头部、页面底部等。

 

  1、针对页面的实现,直接编辑HTML页面,然后在业务逻辑处理完毕之后,include编辑好的html页面即可。这种机制的实现可以看login/index.php和 login/index_form.php页面。

 

 

  2、针对表单的实现,一般是创建一个父类为moodleform的类,如

 

class test_form extends moodleform {

  //定义表单元素

  function definition() {

  //获得表单引用

  $mform =& $this->_form;

  //添加header对象

  $mform->addElement('header', '', get_string('createuserandpass'), '');

  //添加text对象,

  $mform->addElement('text', 'username', get_string('username'), 'maxlength="100" size="12"');

  $mform->setType('username', PARAM_NOTAGS);

  $mform->addRule('username', get_string('missingusername'), 'required', null, 'server');

  }

  //定义过滤

  function definition_after_data(){}

  //定义验证逻辑

  function validation($data, $files) {}

  }

 

 

  然后,业务逻辑层中声明test_form对象,即

 

$test = new test _form();

 

 

  最后调用test_form对象的display方法,即可把表单对象显示出来。

 

$test ->display();

 

 

  表单元素的类型和规则如下:

 

$GLOBALS['HTML_QUICKFORM_ELEMENT_TYPES'] =

  array(

  'group'         =>array('HTML/QuickForm/group.php','HTML_QuickForm_group'),

  'hidden'        =>array('HTML/QuickForm/hidden.php','HTML_QuickForm_hidden'),

  'reset'         =>array('HTML/QuickForm/reset.php','HTML_QuickForm_reset'),

  'checkbox'      =>array('HTML/QuickForm/checkbox.php','HTML_QuickForm_checkbox'),

  'file'          =>array('HTML/QuickForm/file.php','HTML_QuickForm_file'),

  'image'         =>array('HTML/QuickForm/image.php','HTML_QuickForm_image'),

  'password'      =>array('HTML/QuickForm/password.php','HTML_QuickForm_password'),

  'radio'         =>array('HTML/QuickForm/radio.php','HTML_QuickForm_radio'),

  'button'        =>array('HTML/QuickForm/button.php','HTML_QuickForm_button'),

  'submit'        =>array('HTML/QuickForm/submit.php','HTML_QuickForm_submit'),

  'select'       =>array('HTML/QuickForm/select.php','HTML_QuickForm_select'),

  'hiddenselect' =>array('HTML/QuickForm/hiddenselect.php','HTML_QuickForm_hiddenselect'),

  'text'          =>array('HTML/QuickForm/text.php','HTML_QuickForm_text'),

  'textarea'      =>array('HTML/QuickForm/textarea.php','HTML_QuickForm_textarea'),

  'link'          =>array('HTML/QuickForm/link.php','HTML_QuickForm_link'),

  'advcheckbox'   =>array('HTML/QuickForm/advcheckbox.php','HTML_QuickForm_advcheckbox'),

  'date'          =>array('HTML/QuickForm/date.php','HTML_QuickForm_date'),

  'static'        =>array('HTML/QuickForm/static.php','HTML_QuickForm_static'),

  'header'        =>array('HTML/QuickForm/header.php', 'HTML_QuickForm_header'),

  'html'          =>array('HTML/QuickForm/html.php', 'HTML_QuickForm_html'),

  'hierselect'    =>array('HTML/QuickForm/hierselect.php', 'HTML_QuickForm_hierselect'),

  'autocomplete' =>array('HTML/QuickForm/autocomplete.php', 'HTML_QuickForm_autocomplete'),

  'xbutton'       =>array('HTML/QuickForm/xbutton.php','HTML_QuickForm_xbutton')

  );

  $GLOBALS['_HTML_QuickForm_registered_rules'] = array(

  'required'      => array('html_quickform_rule_required', 'HTML/QuickForm/Rule/Required.php'),

  'maxlength'     => array('html_quickform_rule_range',    'HTML/QuickForm/Rule/Range.php'),

  'minlength'     => array('html_quickform_rule_range',    'HTML/QuickForm/Rule/Range.php'),

  'rangelength'   => array('html_quickform_rule_range',    'HTML/QuickForm/Rule/Range.php'),

  'email'         => array('html_quickform_rule_email',    'HTML/QuickForm/Rule/Email.php'),

  'regex'         => array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),

  'lettersonly'   => array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),

  'alphanumeric' => array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),

  'numeric'       => array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),

  'nopunctuation' => array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),

  'nonzero'       => array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),

  'callback'      => array('html_quickform_rule_callback', 'HTML/QuickForm/Rule/Callback.php'),

  'compare'       => array('html_quickform_rule_compare', 'HTML/QuickForm/Rule/Compare.php')

  );

 

 

  具体可以查看lib/pear/HTML/QuickForm.php,和各个表单元素和规则的实现文件。

 

来源:http://www.goodu.info/gc/node/354

 

 

 

分享到:
评论

相关推荐

    moodle-latest-32.tgz

    这个名为 "moodle-latest-32.tgz" 的压缩包文件是 Moodle 的3.2.2版本,它是软件发布的一个特定版本,通常包含了该版本的所有必要文件和资源,以便用户下载并进行安装。 在Moodle 3.2.2这个版本中,开发者可能引入...

    Python库 | moodle-dl-2.2.0.7.tar.gz

    `moodle-dl` 是一个用Python编写的开源库,其主要功能是帮助用户下载Moodle平台上的课程内容。Moodle是一个广泛使用的开源在线学习管理系统,它允许教育者创建交互式、个性化的学习环境。`moodle-dl` 库则提供了方便...

    让Moodle动起来-Moodle动态效果代码

    通过上述分析可以看出,在Moodle中应用动态效果可以显著提升用户体验和视觉吸引力。这些效果不仅限于简单的文本滚动,还可以通过集成Flash动画、JavaScript等技术来实现更加复杂的互动式体验。对于教育工作者来说,...

    Moodle-Downloader-2:一个Moodle下载器,可从Moodle快速下载课程内容(例如讲座pdf)

    (可选)通过邮件,XMPP或有关这些更改的通知。 通过所有这些出色的功能,节省您宝贵的时间。 不要错过任何文件,如果在线删除... (要从旧版本升级,请使用pip install -U moodle-dl代替) 在所需的下载目录中运行m

    Moodle2ToolGuideforTeachers-v10-zh_cn

    4. 评估学习效果:Moodle2支持多种评估方式,如词汇表、问卷调查等,教师可以通过这些功能收集和分析学生的学习情况。 5. 交流与互动:尽管Moodle2的主要功能侧重于信息传播和资源发布,但它也支持一定程度的交流与...

    moodle-latest-37.rar

    moodle3.7源码

    moodle-dev-compose:基于Docker的本地Moodle开发环境的撰写文件

    moodle-dev-compose 用于基于Docker的本地Moodle开发环境的撰写文件。要求你会需要: 已安装Docker和Docker-compose。 您要处理的Moodle回购克隆。 确保您没有运行使用端口80的本地Web服务器(如果需要,请将其更改...

    moodle-mlbackend-python:Moodle机器学习后端

    "Moodle机器学习后端",即moodle-mlbackend-python,是Moodle平台的一个扩展,旨在为教育领域的在线学习系统提供强大的机器学习功能。Moodle是一个开源的学习管理系统(LMS),广泛用于创建交互式和个性化的学习环境...

    Moodle

    #### 知识点六:Moodle的技术架构与社区支持 Moodle采用PHP语言编写,基于MySQL数据库运行,支持多种操作系统。它的模块化设计允许开发者轻松扩展功能。更重要的是,Moodle拥有一个活跃的全球用户和开发者社区,这...

    Moodle-2.7.1安装包

    总之,"Moodle-2.7.1安装包"提供了一个快速启动Moodle学习平台的途径,适合教育机构和个人教师探索在线教育的可能性。通过深入理解和掌握Moodle的使用,我们可以创建富有创新性的教学场景,促进学生的学习成效。

    moodle教程1-17课

    moodle的详细教程,从介绍,到安装,以及各个部分的课程,很好的资源

    moodle--信息化教学的给力平台.pptx

    Moodle不仅有助于转变教师的教育理念和教学方法,推动从教案设计向课程设计的转变,更注重多样化的教学评价,如过程性评价、总结性评价以及档案袋评价等。 使用Moodle,教师可以轻松地自我设计和管理课程,无论是...

    1190_Moodle-Quiz-App

    Moodle-测验-应用程序

    moodle-docker-demo:Moodle 3.9在Windows上使用Docker进行演示

    moodle-docker-demo:用于演示Moodle 3.9的Docker容器 该存储库包含Docker配置,旨在轻松运行Moodle3.9的副本以在Windows 10计算机上进行演示 Windows先决条件 和 Git命令行工具 Windows批处理命令 Moodle实例 ...

    moodle-vagrant-example:Moodle的Vagrant开发环境

    结合这两个工具,`moodle-vagrant-example` 提供了一个方便的、预配置的Moodle开发环境,适合教育者、开发者或者对Moodle感兴趣的任何人都可以快速启动和测试。 在这个Vagrant环境中,操作系统通常是Ubuntu,这是一...

    Moodle课程设计

    资源名称:Moodle课程设计 内容简介: 《MOODLE课程设计》内容简介:Moodle是Modular Object-Oriented Dynamic Learning Environment(模块化面向对象的动态学习环境)的缩写,它是一个课程管理系统(CMS),基于...

    moodle-custom-files:把这些放到moodle文件夹中运行

    在处理"moodle-custom-files-main"这样的压缩包时,你需要解压文件,然后根据文件类型分别处理: 1. **PHP脚本**:这些可能是用于扩展Moodle功能的自定义模块,如自定义报告、活动或工具。你需要查看代码,理解其...

    moodle-local-questionssimplified:帮助输入(批量)多项选择题的模块

    问题简化这个 Moodle 模块旨在与moodle-mod-automultiplechoice 模块一起使用。 它提供了一个简单的界面来输入多项选择题,而另一个模块则处理根据这些问题构建的纸质测验。 该模块是为TICE de l'Université Pierre...

Global site tag (gtag.js) - Google Analytics