This is a result of a pretty intensive effort to make the form less
sucky, given the completion strings mess around. It partially solves
MDL-39419 too as it clarifies the course completion link in the course
administration block.
I must admit and record here that I'm pretty desperate by the current
state of the core_completion and how strings from it are inconsistently
used at various places with different meanings. For example the 'Completion
tracking' may mean the mode of how activities are tracked within the
course as well as the overall feature of course and activities tracking.
While a same phrase can be used in English for both this meanings, not
all languages have such luck and translating it is a pain in the ass.
Finally, let me give the credit for wording and UI design suggestions to
Helen Foster and all others who helped with this. This has been one of
the most ugliest forms in Moodle and we believe we made it better
(although we know it's far from perfect).
When a step closes a popup window the page DOM is not available
until we switch again to the main window; we should avoid exceptions
at framework level when hooking the after step process, this
includes the new exceptions catcher modification.
This patch does not alter the code, only some syntax fixes and
coding guidelines rules are applied. Strings are re-ordered
alphabetically with no change of their wording. PHP doc blocks
reconstructed using the Git log records.
This prevents the upgraderunning lock from not being cleared when there are
no plugins to upgrade (reproducable bug with memcache as the application cache store)
1. Change behaviour admin settings so you can only select enabled
behaviours.
2. During the upgrade, change admin settings that might be currently set
to manual graded, so that instead they are set to deferredfeedback (if
that is available. If not, we just take the first alphabetically.)
The solution to this issue was to make the disabled cache factory
return a proper cache writer object when requested rather than a
disabled cache object.
This only changes things when CACHE_DISABLE_ALL has been defined.