Since Moodle 4.0, most course edit actions can be executed using the
core_courseformat_course_edit webservice using only four parameters
(courseid, ids, targetsectionid and targetcmid). However, some actions
logic is still replicated and embed in course/view.php and
course/mod.php files since the beginning of time. Now the
course/update.php offers a non-ajax way of executing the same actions
and replace the old replicated ways of doing the same.
- Add new 'FEATURE_QUICKCREATE' plugin feature that indicates the module can
be created with a single click. It will use its own 'quickcreatename' defined
string as the initial default name.
- Add new 'core_courseformat\external\create_module' web service to create new
modules with the quickcreate featuer in the course page.
- Add a new 'create_module' state action.
core_courseformat\external\get_state calls export_for_tempalte for each
course module, which in turn calls completion_info::is_tracked_user()
for the current user on the current course. The result of this call will
be the same for every course module, so does not need to be called what
may be several hundred times.
This change allows the result of is_tracked_user to be passed to the cm
state object, then calls it once and passes it to each cm's object. If
it is not passed in, it will be computed on demand as before.
In 4.0- version each time the course page is loaded the file handlers
are calculate din the backend and injected directly into JS using a json
encapsulation. With this new webservice the handlers can be obtained
directly from the frontend when needed.
- Linking classes/methods mentioned in PHPDoc with @see tags help devs
checking the PHPDoc to quickly navigate to the class/method mentioned
and also helps us ensure that it points to the correct class/method.
- Some typo/grammar fixes as well in existing PHPDoc descriptions.
- Fixed parameter type in execute()'s PHPDoc block.
Move the section visible logic to the format base class. This way format
plugins can decide whenever a section is visible or not instead of using
format custom settings from core.