Without this relative URLs passed (like /message/index.php)
were being redirected to HOST/message/index.php rather than
$CFG->wwwroot/message/index.php.
If you pass a URL that is not a valid URL (for example
';') it is cleaned to an empty string which redirects to
$CFG->wwwroot/message/output/popup/ which is not a valid
page.
We allow notifications to have a null value for the 'contexturl'.
In this case we should not be appending a 'redirecturl' param to
the URL when it is going to be empty.
* The maximum of users to be displayed raised from 30 to 100. This is
consistent with the legacy users selector available via enrolment
methods page.
* If there are more users found matching the search criteria, notify the
user instead of displaying them. This is to prevent false impression
that there are only that many users.
* Added behat tests for the new behaviour.
Custom AJAX handlers for the form autocomplete fields can now optionally
return string in their processResults() callback. If a string is
returned, it is displayed instead of the list of suggested items.
The string is displayed same way as we inform about no available
suggestions.
Before this change if only a folder was submitted the submission_is_empty
check would return true. This meant that the draft area would be saved.
The is_empty check would then be called which would return false. This
caused the submission form to indicate to the user that the submission
had failed.
Now is_empty and submission_is_empty should both return false if only
folders are submitted.
Fix GIFT import to respect default answernumbering for new multichoice
questions (introduced in MDL-50011). Default for shuffleanswers is still
ignored, as this is a rather coarse-grained way to do it, and the wrong
setting for shuffleanswers would irreversibly alter the meaning of some
questions.
This is not an ideal long-term fix, but will save significant effort
for anyone who needs to be able to set answernumbering style for
questions imported in GIFT format.
The regexes to detect the optional prefixes at the start of some
interaction types are constructed to optionally match the prefix, so we
need to ensure that the matched group is really there when trying to
strip it from the given value in CRCheckValueNodes.
also remove "check for prefix" from CRcheckValueNodes
prefixes on correct responses patterns are removed in the section above
by CRremovePrefixes, so this block was redundant.
The `.pre` property for each correct_response is not used anywhere
else, so this removes their definitions too.