Note:

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

Frankenstyle: Difference between revisions

From MoodleDocs
m (→‎Plugin types: Get rid of the duplicity with the other page)
Line 14: Line 14:
== Plugin types ==
== Plugin types ==


{| class="nicetable"
See [[Plugin types]] page for the list of all supported plugin types in Moodle and their frankenstyle prefix.
|-
! Plugin type
! Frankenstyle prefix
! Moodle path
|-
| [[Activity modules]]
| mod
| /mod
|-
| [[Admin reports]]
| report
| /admin/report
|-
| [[Admin tools]]
| tool
| /admin/tool
|-
| [[Assignment types]]
| assignment
| /mod/assignment/type
|-
| [[Authentication plugins]]
| auth
| /auth
|-
| [[Blocks]]
| block
| /blocks
|-
| Core subsystems
| core
| / (not a true plugin, see below for details)
|-
| [[Course formats]]
| format
| /course/format
|-
| [[Course reports]]
| coursereport
| /course/report
|-
| [[Database fields]]
| datafield
| /mod/data/field
|-
| [[Database presets]]
| datapreset
| /mod/data/preset
|-
| [[Editors]]
| editor
| /lib/editor
|-
| [[Enrolment plugins]]
| enrol
| /enrol
|-
| [[Filters]]
| filter
| /filter
|-
| [[Gradebook export]]
| gradeexport
| /grade/export
|-
| [[Gradebook import]]
| gradeimport
| /grade/import
|-
| [[Gradebook reports]]
| gradereport
| /grade/report
|-
| [[Grading methods]]
| gradingform
| /grade/grading/form
|-
| [[Local plugins]]
| local
| /local
|-
| [[Messaging consumers]]
| message
| /message/output
|-
| [[Mnet services]]
| mnetservice
| /mnet/service
|-
| [[Plagiarism plugins]]
| plagiarism
| /plagiarism
|-
| [[Portfolio plugins]]
| portfolio
| /portfolio
|-
| [[Question behaviours]]
| qbehaviour
| /question/behaviour
|-
| [[Question formats]]
| qformat
| /question/format
|-
| [[Question types]]
| qtype
| /question/type
|-
| [[Quiz reports]]
| quiz
| /mod/quiz/report
|-
| [[Repository plugins]]
| repository
| /repository
|-
| [[SCORM reports]]
| scormreport
| /mod/scorm/report
|-
| [[Themes]]
| theme
| /theme
|-
| [[User profile fields]]
| profilefield
| /user/profile/field
|-
| [[Webservice protocols]]
| webservice
| /webservice
|-
| [[Workshop allocation strategies]]
| workshopallocation
| /mod/workshop/allocation
|-
| [[Workshop evaluation plugins]]
| workshopeval
| /mod/workshop/eval
|-
| [[Workshop grading forms]]
| workshopform
| /mod/workshop/form
|}
 


To get a definitive list in your version of Moodle 2.x, use a small Moodle script with <tt>print_object(get_plugin_types());</tt>.
To get a definitive list in your version of Moodle 2.x, use a small Moodle script with <tt>print_object(get_plugin_types());</tt>.

Revision as of 07:00, 20 May 2016

'Frankenstyle component names' refers to the naming convention that is used to uniquely identify a Moodle plugin based on the type of plugin and its name. They are used throughout the Moodle code (with a notable exception being the css class names in the themes).

Martin Dougiamas invented the word 'frankenstyle' to describe this naming system which was invented by Petr Škoda.

Format

Frankenstyle component names have a prefix and then a folder name, separated by an underscore.

  1. The prefix is determined by the type of plugin. For example, the prefix for an activity module is mod.
  2. The name is the folder name of the plugin, always lower case. For example, the name for Quiz is quiz.

So the frankenstyle component name for the quiz module is mod_quiz.

Plugin types

See Plugin types page for the list of all supported plugin types in Moodle and their frankenstyle prefix.

To get a definitive list in your version of Moodle 2.x, use a small Moodle script with print_object(get_plugin_types());.

Core subsystems

Subsystems in Moodle are not plugins themselves but can be referred to using core_xxx where xxx is the subsystem name as defined in get_core_subsystems().

You can see these being used in the @package parameter in phpdocs, or in the webservice function names.


Core subsystem Frankenstyle component name
Access core_access
Badges core_badges
Conditional availability core_condition
Comment core_comment
Completion core_completion
Course core_course
Enrol core_enrol
Files core_files
Forms core_form
Grade core_grade
Groups core_group
Messages core_message
Mnet core_mnet
My home page core_my
Notes core_notes
Ratings core_rating
Role core_role
RSS core_rss
Tag core_tag
User core_user
Web service core_webservice

Usage

Frankenstyle component names are used in:

Function names

All plugin functions must start with full frankenstyle prefix. For backwards compatibility modules may also use modulename_ as prefix.

Class names

All plugin classes must start frankenstyle prefix, ex: mod_forum_some_class.

Constants

All plugin constants must start with uppercase frankenstyle prefix, example MOD_FORUM_XXXX.

Table names

All table names for a plugin must begin with its frankenstyle name (after the standard Moodle table prefix).

(The exception to this rule is Moodle activities which (for historical reasons) do not have mod_ in front of the plugin name)

Examples: mdl_local_coolreport, mdl_local_coolreport_users

Plugin configuration table

In the config_plugins table, column plugin, the frankenstyle name is used.

Capabilities

All capabilities for a plugin use the frankenstyle name, except with a / instead of a _.

Example: mod/quiz:viewattempt

Language files

The main language file for each plugin (with the notable exception of activity modules) is the frankenstyle component name.

Examples: /blocks/participants/lang/en/block_participants.php

Renderers

Module Subplugins

It is possible to extend modules without having to change the basic module's code. See Subplugins for details.

Other places (TODO)


Please add more as they come up.

See also