This ensures that:
- Plugins are only used once,
- Group names are unique,
- Lines match: group = plugin[, plugin[, plugin ...]],
- There are some groups and plugins defined,
- The plugins used are installed.
Previously, we hardcoded a list of icons for Atto plugins. This is not
a good idea as it would be very quickly outdated, or incomplete. Now,
we proceed as we often do: if the image pix/icon exists in the plugin
it is displayed, else nothing is displayed.
Before the patch it was happening that the undo or redo buttons
were enabled even though clicking on them didn't produce anything.
This is partly because we were not storing the initial value, we
allowed for the stack to be empty, and we were using not clean
HTML.
Both the database auth and enrol plugins use ADOdb
to perform connections. Socket and port are allowed
there if passed as "socket:port", so, when both are
configured in CFG, we pass them that way. Else
ADOdb defaults to standard port (5432).
This change is logically the same as changing
$this->has_capability('mod/quiz:viewreports')
to
$this->has_capability('mod/quiz:viewreports') || $this->has_capability('mod/quiz:preview')
in the original code. However, I rewrote the logic so that we test the
most common and performance-critical case first - that of a student
lookign at their own attempt.
question_type::save_question_answers function added, supporting
saving answers and extra answer fields. It can be called from
save_question_options function for the questions, using
question_answers table. Special functions created for overloading
so that every question could tune it to it's own form.
Shortanswer qtype save_question_options() converted as a proof of
concept and for testing purposes.
Now question_edit_form can load extra answer fields. If a question
type need to do something more complex for particular field, it
can overload added functions without duplicating other code.
Extra answer data may be optional, saving DB space - i.e. not every row in
question_answers will have respective row in extra answers table. Current
implementation of question_type::get_question_options() won't return such
answers at all. This commit fix that, changing join type for db query.
Also fixed coding style violation in the variable name in get_question_options.
We set a min-height and a height in JavaScript to force the editor
to start at a certain height, but then it can be expanded thanks
to the CSS property resize. Though as IE does not support the resize
property we ignore we do not set a height so that the editor expands
as we type.