Difference between revisions of "Frankenstyle"

Jump to: navigation, search
(Added tools)
(Plugin types)
Line 27: Line 27:
| report
| report
| /admin/report
| /admin/report
| Admin tools
| tool
| /admin/tool
| Assignments
| Assignments
Line 155: Line 159:
| workshopform
| workshopform
| /mod/workshop/form
| /mod/workshop/form
| Admin tools
| tool
| /admin/tool

Revision as of 03:18, 25 January 2012

'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 Skoda.


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

Plugin type Frankenstyle prefix Moodle path
Activity modules mod /mod
Admin reports report /admin/report
Admin tools tool /admin/tool
Assignments assignment /mod/assignment/type
Authentication plugins auth /auth
Blocks block /blocks
Core subsystems core / (see below for details)
Course formats format /course/format
Course reports coursereport /course/report
Database field types datafield /mod/data/field
Database presets datapreset /mod/data/preset
Editors editor /lib/editor
Enrolment plugins enrol /enrol
Filters filter /filter
Grade export plugins gradeexport /grade/export
Grade import plugins gradeimport /grade/import
Grade 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 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
Conditionals 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


Frankenstyle component names are used in:

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


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


Other places (TODO)

Please add more as they come up.