Activity modules: Difference between revisions
Seth Battin (talk | contribs) No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
Activity modules reside in the '''/mod''' directory. Each module is in a separate subdirectory and consists of | Activity modules reside in the '''/mod''' directory. They are the oldest type of plugins in Moodle - that's why they have this overly-generic name and also why they have a few idiosyncrasies and operate slightly differently from all the plugins that came later. | ||
Each module is in a separate subdirectory and consists of a number of ''''mandatory elements'''' (see below) plus extra scripts unique to each module. | |||
In the example below we will assume a module called ''''widget'''', that is stored in the ''''/mod/widget'''' directory. All functions and classes should have names starting with '''widget_'''' and any constants you define should start with ''''WIDGET_''''. (Note that activity modules are the only exception from the normal frankenstyle naming rules which would normally have required prefixes like "mod_widget_") | |||
* ''[[mod_form.php]]'' - a form to set up or update an instance of this module | * ''[[mod_form.php]]'' - a form to set up or update an instance of this module | ||
Line 9: | Line 13: | ||
* ''[[index.php]]'' - a page to list all instances in a course | * ''[[index.php]]'' - a page to list all instances in a course | ||
* ''[[view.php]]'' - a page to view a particular instance | * ''[[view.php]]'' - a page to view a particular instance | ||
* ''[[lib.php]]'' - | * ''[[lib.php]]'' - all functions intended to be called from OUTSIDE this activity module are here. Required functions are: | ||
:* widget_install() - will be called during the installation of the module | :* widget_install() - will be called during the installation of the module | ||
:* widget_add_instance() - code to add a new instance of widget | :* widget_add_instance() - code to add a new instance of widget | ||
Line 21: | Line 25: | ||
:** widget_process_options() - code to pre-process the form data from module settings | :** widget_process_options() - code to pre-process the form data from module settings | ||
:** [[Implementing Reset course functionality in a module|widget_reset_course_form() and widget_delete_userdata()]] - used to implement [[Reset course]] feature. | :** [[Implementing Reset course functionality in a module|widget_reset_course_form() and widget_delete_userdata()]] - used to implement [[Reset course]] feature. | ||
* ''backuplib.php'' and ''restorelib.php'' (optional) | * ''backuplib.php'' and ''restorelib.php'' (optional) | ||
* ''settings.php'' or ''settingstree.php'' - (optional) a definition of an admin settings page for this module. mod/assignment/settings.php is a good simple example. mod/quiz/settingstree.php is a more complex example. | * ''settings.php'' or ''settingstree.php'' - (optional) a definition of an admin settings page for this module. mod/assignment/settings.php is a good simple example. mod/quiz/settingstree.php is a more complex example. |
Revision as of 03:07, 29 May 2012
Activity modules reside in the /mod directory. They are the oldest type of plugins in Moodle - that's why they have this overly-generic name and also why they have a few idiosyncrasies and operate slightly differently from all the plugins that came later.
Each module is in a separate subdirectory and consists of a number of 'mandatory elements' (see below) plus extra scripts unique to each module.
In the example below we will assume a module called 'widget', that is stored in the '/mod/widget' directory. All functions and classes should have names starting with widget_' and any constants you define should start with 'WIDGET_'. (Note that activity modules are the only exception from the normal frankenstyle naming rules which would normally have required prefixes like "mod_widget_")
- mod_form.php - a form to set up or update an instance of this module
- version.php - defines some meta-info
- pix/icon.gif - a 16x16 icon for the module
- db/install.xml - defines the structure of db tables for all database types. Is used during module installation
- db/upgrade.php - defines changes in the structure of db tables. Is used during module upgrade
- db/access.php - defines module capabilities
- index.php - a page to list all instances in a course
- view.php - a page to view a particular instance
- lib.php - all functions intended to be called from OUTSIDE this activity module are here. Required functions are:
- widget_install() - will be called during the installation of the module
- widget_add_instance() - code to add a new instance of widget
- widget_update_instance() - code to update an existing instance
- widget_delete_instance() - code to delete an instance
- widget_user_outline() - given an instance, return a summary of a user's contribution
- widget_user_complete() - given an instance, print details of a user's contribution
- widget_get_view_actions() / widget_get_post_actions() - Used by the participation report (course/report/participation/index.php) to classify actions in the logs table.
- Other functions available but not required are:
- widget_delete_course() - code to clean up anything that would be leftover after all instances are deleted
- widget_process_options() - code to pre-process the form data from module settings
- widget_reset_course_form() and widget_delete_userdata() - used to implement Reset course feature.
- backuplib.php and restorelib.php (optional)
- settings.php or settingstree.php - (optional) a definition of an admin settings page for this module. mod/assignment/settings.php is a good simple example. mod/quiz/settingstree.php is a more complex example.
- defaults.php - lets you easily define default values for your configuration variables. It is included by upgrade_activity_modules in lib/adminlib.php. It should define an array $defaults. These values are then loaded into the config table. Alternatively, if you set $defaults['_use_config_plugins'] to true, the values are instead loaded into the config_plugins table, which is better practice. See mod/quiz/defaults.php for an example. (This apparently only works with moodle 2.x branch.)
- lang/en/widget.php - (optional) Lastly, each module will have some language files that contain strings for that module.
IMPORTANT:
- When creating a new module, the new name of the module must not contain numbers or other special characters!
- You need a data base table with the same name as your module. This table must have at least three fields:
- id
- course
- name
- You should also make sure that your activity module provides appropriate support for groups and meta-courses.
See also
- Moodle 2.x activity module template https://github.com/moodlehq/moodle-mod_newmodule for developing new modules.
- Blocks
- Backup
- Tracker issue [https://tracker.moodle.org/browse/CONTRIB-52 CONTRIB-52 Improvements to make NEWMODULE really useful] - including download link for new module template supporting roles, formslib etc. (unfinished)
- http://download.moodle.org/plugins16/mod/NEWMODULE.zip - new module template for versions of Moodle prior to 1.7. Please follow the README instructions inside the zip.
- NEWMODULE_Documentation
Using Moodle forum discussions: