Merge branch 'MDL-50472-37' of git://github.com/Chocolate-lightning/moodle into MOODL...
[moodle.git] / course / format / upgrade.txt
blob68d719478753c21ba3ca56a0cdceb0982bc8830f
1 This files describes API changes for course formats
3 Overview of this plugin type at http://docs.moodle.org/dev/Course_formats
5 === 3.6 ===
6 * New method validate_format_options() cleans the values of the course/section format options before inserting them
7   in the database. Course format options can now be set in tool_uploadcourse and validation of user-submitted data is important.
8   Note that validate_format_options() is now always called when somebody creates or edits course or section and also
9   during restore and course upload. Default implementation validates against the definition of the form elements for
10   format options.
11 * The final deprecation of xxx_delete_course callback means that this function will no longer be called.
12   Please use the observer for event \core\event\course_content_deleted instead.
14 === 3.5 ===
15 * Course formats should overwrite get_config_for_external function to return the course format settings viewable by the
16   current user.
17   If the course format does not have any setting that could be considerated private (like a private/access key/token),
18   is ok to return all the settigns via the get_format_options function.
20 === 3.3 ===
21 * Javascript code for editing activities and sections was moved to an AMD module, course/rest.php is no longer
22   responsible for editing actions, instead it is done in web services. Carefully test all editing actions during upgrade.
23 * The new method format_base::allow_stealth_module_visibility() can indicate whether course format supports "stealth"
24   activities mode when they are available but not visible on course page. Course format that supports stealth mode
25   must check $cm->is_visible_on_course_page() when displaying activities list on the course page instead of $cm->uservisible.
26   For all other plugins except course formats the same property $cm->uservisible indicates if the activity contents
27   is actually available to student.
28 * Option "Number of sections" (numsections) was removed from topics and weeks formats, instead the actual number of records
29   in the course_sections table is treated as a number of sections (excluding section 0 that should always be present).
30 * Method create_course() will populate the new course with empty sections if $data->numsections is provided even if
31   "numsections" is not an option defined by the course format.
32 * course/changenumsections.php can now be used to insert sections at any positions.
33 * The variable SECTIONLEFTSIDE was changed from '.left .section-handle img' to '.left .section-handle .icon' in
34   course/format/topics/format.js and course/format/weeks/format.js due to the introduction of Font Awesome (see MDL-40759)
35   which altered the HTML. Please check if your course format relies on this selector, and if so, update it.
37 === 3.2 ===
38 * Callback delete_course is deprecated and should be replaced with observer for event \core\event\course_content_deleted
39 * Course formats can overwrite get_default_course_enddate function to set the default course end date for new courses.
40   format_base::get_default_course_enddate uses the new "Course duration" site setting to calculate the default course end date
41   from the default course start date.
42 * New method format_base::supports_news() which is used to determine whether an Announcements forum will be automatically created on
43   course creation. For course format plugin developers, please override format_base::supports_news() to return true if you want the
44   Announcements forum to be created upon course creation and remove the block names defined in format_base::get_default_blocks().
46 === 3.1 ===
47 * Course format may use the inplace_editable template to allow quick editing of section names, see
48   https://docs.moodle.org/dev/Inplace_editable and MDL-51802 for example implementation.
50 === 3.0 ===
51 * Course formats should now use section_edit_control_items and use the returned array of controls items and their attributes to create a
52   renderable menu or array of links.  Plugin calls to section_edit_controls will now include the section edit control in the returned array.
53 * The section name is now wrapped in a new span (.sectionname > span), process_sections method in format.js should be updated so .sectionname
54   DOM node's wraps the section title in a span. You can look at how to implement the change in course/format/topics/format.js or MDL-48947.
55 * New method format_base::get_default_section_name retrieves the default section name for the given course format. The base
56   implementation basically uses the implementation of format_base::get_section_name. The method can be overridden in
57   format_base subclasses that use sections (i.e. format_topics, format_weeks). In relation to the changes made for the default
58   section name, the default section name is now being shown when editing the section information.
60 === 2.9 ===
61 * Course formats may support deleting sections, see MDL-10405 for more details.
62   format_section_renderer_base::section_edit_controls() is now also called for
63   stealth sections and it also returns "delete" control.
65 === 2.8 ===
66 * The activity chooser now uses M.course.format.get_sectionwrapperclass()
67   to determine the section selector, rather than a hard-coded `li.section`.
68 * Activity duplication in /course/modduplicate.php is deprecated and is now done in /course/mod.php.  Deprecated calls will be honored by
69   redirecting to /course/mod.php for 3rd party plugin support.
70 * New method format_base::section_get_available_hook() allows plugins to override section availability.
72 === 2.7 ===
73 * The ->testedbrowsers array no longer needs to be defined in supports_ajax().
74 * format_section_renderer_base::section_hidden has an new second optional argument $courseorid.
75   If provided the section name is printed in the not available string when displaying the hidden section.
77 === 2.6 ===
79 * core_course_renderer::course_section_cm_edit_actions has two new optional arguments and now uses and action_menu component.
80 * core_course_renderer::course_section_cm has been altered to call core_course_renderer::course_section_cm_edit_actions with the two new arguments
81 * An additional course renderer function has been created which allows you to
82   specify the wrapper for a course module within a section (e.g. the <li>).  This can be
83   found in core_course_renderer::course_section_cm_list_item().
85 === 2.5 ===
87 * Functions responsible for output in course/lib.php are deprecated, the code is moved to
88   appropriate renderers: print_section(), print_section_add_menus(), get_print_section_cm_text(),
89   make_editing_buttons()
90   See functions' phpdocs in lib/deprecatedlib.php
91 * Function get_print_section_cm_text() is deprecated, replaced with methods in cm_info
93 === 2.4 ===
95 Course format API has been changed significantly. Instead of implementing callbacks course formats
96 may overwrite the class format_base. See format_legacy class for a template for upgrading course
97 format.
99 * Function settings_navigation::add_course_editing_links() is completely removed, course format
100   functions callback_XXXX_request_key() are no longer used (where XXXX is the course format name)
101 * functions get_generic_section_name(), get_all_sections(), add_mod_to_section(), get_all_mods()
102   are deprecated. See their phpdocs in lib/deprecatedlib.php on how to replace them
103 * Course formats may now have their settings.php file as the most of other plugin types
104 * Function format_section_renderer_base::is_section_current() is deprecated, overwrite/use
105   function is_section_current in format class
107 === 2.3 ===
109 * The new $course->coursedisplay option was introduced, users can now choose to display
110   a section at a time if the course formats support it:
111  - COURSE_DISPLAY_SINGLEPAGE indicates the teacher has chosen to display all sections on one page
112  - COURSE_DISPLAY_MULTIPAGE indicates the teacher has chose to have seperate pages with each section.
114 * The parameter for 'currently active section' was standardised in core:
115   - The course format is passed the currently live section through the $displaysection varaible to format.php
116   - A 'section' paramter is the standardised way to pass around the current section in a course
117   - Navigation no longer looks for custom parameters defined in callback_format_request_key