Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Subplugins: Difference between revisions

From MoodleDocs
(Fixed transposed parameters in example.)
Line 10: Line 10:


=== Writing a sub-plugin ===
=== Writing a sub-plugin ===
A sub-plugin has the same structure as a regular plugin.  It will have a <tt>version.php</tt>, a <tt>lang</tt> directory, and can have a <tt>db</tt> directory with an <tt>install.xml</tt> and all the other hooks you'd expect to see used in any other type of plugin, such as an activity, block, or admin report.


An important thing to remember when using lang strings is to prefix the component with the plugin type, as you do with all non-activity blocks. So to print the name of the "accumulative" workshopform plugin, you'd do
A lot of the basic structure of a sub-plugin is the same as any other plugin. It can have a <tt>version.php</tt>, a <tt>lang</tt> directory, and can have a <tt>db</tt> directory with <tt>install.xml</tt> and all the others files can can go in there.
print_string('pluginname', 'workshopform_accumulative');
 
However the details of what APIs the sub-plugin has to provide depends on the type of sub-plugin it is. For example, and quiz report has to follow the rules for quiz reports that the quiz module sets, and a workshop allocation has to follow the rules set by the workshop module. When you create a new type of sub-plugin, you should document the expected API.

Revision as of 15:42, 24 September 2011

Sub plugins allow activity modules to be extended without having to change the module's code.

Each activity module can define a set of subplugin types in db/subplugins.php. The file must contain an array called $subplugins, with the plugin type as the key for the directory containing the plugins. For example, from mod/workshop/db/subplugins.php:

$subplugins = array(
                   'workshopform'       => 'mod/workshop/form',
                   'workshopallocation' => 'mod/workshop/allocation',
                   'workshopeval'       => 'mod/workshop/eval',
                   );

This defines 3 plugin types, workshopform, workshopallocation, and workshopeval. The plugins themselves can be found in mod/workshop/form, mod/workshop/allocation and mod/workshop/eval, respectively. Each of these directories can contain a number of plugins, each within it's own subdirectory.

Writing a sub-plugin

A lot of the basic structure of a sub-plugin is the same as any other plugin. It can have a version.php, a lang directory, and can have a db directory with install.xml and all the others files can can go in there.

However the details of what APIs the sub-plugin has to provide depends on the type of sub-plugin it is. For example, and quiz report has to follow the rules for quiz reports that the quiz module sets, and a workshop allocation has to follow the rules set by the workshop module. When you create a new type of sub-plugin, you should document the expected API.