Moodle 4.0 developer update: Difference between revisions
Line 4: | Line 4: | ||
== Navigation == | == Navigation == | ||
== The core_courseformat subsystem == | == The core_courseformat subsystem == | ||
Most of the logic for rendering and editing a course has been moved to a new subsystem called courseformat. The subsystem is located | Most of the logic for rendering and editing a course has been moved to a new subsystem called courseformat. The subsystem is located in "course/format" folder so it includes all the format plugins inside. The methods and modules which are distributed between the course and the course/format folders are now rearranged or refactored to be aligned with the current Moodle coding style. The major affected specifications are: | ||
* Now format plugins must provide a renderer, which is not optional anymore | * Now format plugins must provide a renderer, which is not optional anymore | ||
* The old base_format which plugins | * The old base_format which plugins extend is now core_courseformat\base | ||
* The methods to render a course are now deprecated and moved to output classes | * The previous methods to render a course are now deprecated and moved to output classes | ||
* The majority of the javascript logic of the course editing is replaced by a new course editor AMD module. The old libraries are still available for third party formats but will eventually replace the previous ones. | * The majority of the javascript logic of the course editing is replaced by a new course editor AMD module. The old libraries are still available for third-party formats but will eventually replace the previous ones. | ||
* Gradually, all tests and templates are being moved to the subsystem folder | * Gradually, all tests and templates are being moved to the subsystem folder | ||
Revision as of 09:10, 2 September 2021
Moodle 4.0 This page will highlight the important changes that are coming in Moodle 4.0 for developers. Including how the UX improvements impact custom themes, relevant API changes, and what you can do as developer to prepare for the 4.0 release.
UX and theme changes
Component library
The core_courseformat subsystem
Most of the logic for rendering and editing a course has been moved to a new subsystem called courseformat. The subsystem is located in "course/format" folder so it includes all the format plugins inside. The methods and modules which are distributed between the course and the course/format folders are now rearranged or refactored to be aligned with the current Moodle coding style. The major affected specifications are:
- Now format plugins must provide a renderer, which is not optional anymore
- The old base_format which plugins extend is now core_courseformat\base
- The previous methods to render a course are now deprecated and moved to output classes
- The majority of the javascript logic of the course editing is replaced by a new course editor AMD module. The old libraries are still available for third-party formats but will eventually replace the previous ones.
- Gradually, all tests and templates are being moved to the subsystem folder
API changes
Behat changes
To make behat tests more readable and easy to maintain, it is recommended to use the most direct steps to get what the test needs. So since MDL-66335 was integrated, and the step was improved in MDL-72179 is highly recommended to use
I am on the "Activity name" "[modname] activity" page
or
I am on the "Activity name" "[modname] activity" page logged in as "user"
instead of navigating to the activity via
I am on "Course" course homepage I follow "Activity name"
Now that Course index (MDL-71209) is integrated but the project is not stable, these behat steps
I am on "Course" course homepage I follow "Activity name"
will fail using Boost theme.
The reason for it is that the drawer used in Boost is hiding the course index. So when the test is trying to follow an "Activity name" link, it finds two different links:
- one in the course index
- another one in the course main content.
But the first one, the one in the course index, is hidden by the drawer, and the test fails.
However the recommended behat steps
I am on the "Activity name" "[modname] activity" page
or
I am on the "Activity name" "[modname] activity" page logged in as "user"
work fine.
Some of the failing behats are fixed in https://github.com/ferranrecio/moodle/commit/c79d58a50b48aa6891ff1d3ba92a7b0ab2393c88#diff-fdf8b0b1eade3b69eaad038de0ddd7c8dec2be7afa32dc693fb929739a49fa9dR32 - MDL-71209
For example:
And I am on the "Test assignment name" "assign activity" page logged in as teacher1
instead of:
When I log in as "teacher1" And I am on "Course" course homepage And I follow "Test assignment name"
Core plugins review
A few plugins from core Moodle LMS which are no longer or hardly used have been removed and, if appropriate, added to the Moodle plugins directory.
More information about this project, the list of plugins to be removed and the process to follow for keeping them before upgrading to 4.0 can be found in the Core plugins review page.