Commit Graph

55 Commits

Author SHA1 Message Date
Mihail Geshoski 451614016e MDL-79531 mod_quiz: Fix exception when adding random questions
Moves the data-filtercondition property to an element that always
exists regardless of whether the selected category from the filter
has questions or not. This will effectively solve the exception
that is being thrown due to the non-existing element and also
enable creation of random questions in a category that does not
have any questions yet. Also, the data-filtercondition attribute
is no longer used when creating a random question in a new category
as this value is not relevant in this case. Instead, a default
filter condition is generated in the webservice for the random
question based on the newly created category.
2023-10-04 12:31:12 +02:00
Mark Johnson 0ac2936c11 MDL-74054 questions: Fix question bank header widths
Chrome ignores min-width on table headers with table-layout:fixed,
meaning that question bank headers could be resized so that the controls
were overlapping, and could be too narrow by default.

This removes min-width: min-content in the headers and instead uses
Javascript to calculate a constrain a min width based on the content of
the headers.
2023-09-22 22:52:36 +08:00
Andrew Nicols a3cfd50482 MDL-74054 qbank: Miscellaneous coding style fixes 2023-09-22 10:53:53 +08:00
Mark Johnson 33e52fe4ed MDL-74054 qbank_viewquestiontext: Convert from filter to question bank control
This replaces the "Show question text in the question list?" filter, which was
never really a filter, with a new widget displayed alongside other question bank
controls like "Create a new question" and "Reset columns".

It also refactors the logic of displaying the question text field or not, so that
it is all handled within the qbank_viewquestiontext plugin rather than relying on
code in the view.
2023-09-22 10:53:53 +08:00
Mark Johnson 63894ec2fe MDL-74054 qbank_columnsortorder: Progressively enhance question bank actions
This modifies the question_data fragment used by the filter code to make its
parameters closer to the URL parameters of the question/edit.php page. This
Allows us to progressively enhance the add, remove and reset actions on the
question bank page, using this same fragment to reload the question table after
each change. This re-uses the same actions.js module used for enhancing these
actions on the qbank_columnsortorder admin screen.
2023-09-22 10:53:52 +08:00
Mark Johnson 37d69fff6b MDL-74054 qbank_columnsortorder: Implement add, remove and resize
This updates the admin interface, and hooks into the question bank view
for users to override admin defaults with their preferences.
2023-09-22 10:53:52 +08:00
Mark Johnson 6001ee3dfd MDL-74054 core_question: Define unique question bank column IDs
This also resolves MDL-78829.
Some question bank plugins use a separate class for each plugin they
define. However, qbank_customfields (and potentially others in the
future) uses a single class to define multiple fields. Using the class
name as an ID for the column doesn't give us a way of reliable
instantiating an object for the column. Previously, qbank_customfields
appended the field name as though it was a namespaced class, but this
had to be manually constructed and deconstructed by detecting this
particular column class.

This change introduces a standard way of constructing a unique ID for
each question bank column, in the form
pluginname\columnclass-columnname. This ensures that the ID will be
unique for each column, and the ID can be used to instatiate the
column's object.
2023-09-22 10:53:51 +08:00
Nathan Nguyen 2be0e10a80 MDL-74054 core_question: Add additional plugin points
This refactors the question bank view class to support new plugin points
required for the question bank UI customisation features.
2023-09-22 10:53:51 +08:00
Mark Johnson feef716c91 MDL-74054 core_question: Re-apply filters when performing a qbank action
This changes the root element used by the fragment when
applying filters, so that the whole of display_question_list()
is reloaded.

This ensures that the returnurl will be updated correctly on the
question actions and bulk actions without manipulating then
further in Javascript.
2023-09-22 10:53:46 +08:00
Mark Johnson 823af3a8f1 MDL-72321 core_question: Replace old conditions with new datafilters 2023-08-31 15:00:39 +01:00
Jun Pataleta 26905eeb93 MDL-77328 question: Declare $qbank as a proper view_component property 2023-07-21 11:57:14 +08:00
Andrew Nicols 3ed796bc10 Merge branch 'MDL-75125_master' of https://github.com/marxjohnson/moodle 2023-07-13 16:51:03 +02:00
Tim Hunt 931a4cbd56 MDL-76996 question bank: fix errors when qbank_statistics is disabled 2023-07-12 11:46:38 +01:00
Jun Pataleta d3767cb9f6 Merge branch 'MDL-78488' of https://github.com/t-schroeder/moodle 2023-07-06 11:17:03 +08:00
Tim Schroeder b42ca2cbbd MDL-78488 question bank: don't load statistics when they are disabled 2023-06-30 11:39:04 +02:00
Tim Hunt 3534b31745 MDL-78608 question stats: avoid loading data for missing contexts
It turns out that there are plugins which don't (currently)
clean up their question attempts when a context is deleted.
Therefore, we need to make Moodle core robust to that.
2023-06-28 17:16:48 +01:00
Mark Johnson 0fd25d1edd MDL-75125 core_question: Deprecate old action column classes
Final removal in Moodle 4.7 MDL-78090
2023-06-02 11:42:02 +01:00
Mark Johnson 359bb7e31a MDL-75125 qbank: Convert qbank plugins to new actions API 2023-06-02 11:15:40 +01:00
Safat Shahin be1bc85028 MDL-75125 core_question: Add action as a feature
This commit will implement question bank actions as a feature.
Previously, it used to implement columns and actions together in one
feature.
With this change it will have actions a different feature which will
allow
developers to implement actions in an easier way.

The existing "action column" API will be deprecated in a separate
commit.

Co-authored-by: Mark Johnson <mark.johnson@catalyst-eu.net>
2023-06-02 11:14:23 +01:00
Tim Hunt 056db339d6 MDL-75576 question bank: bulk-load statistics for all questions at once
There is a new method on the column class, for the column to declare any
statistics it requires. The question then efficiently loads all those
statistics in one go, and makes them available as the columns are
rendererd, or do any subsequent processing.
2023-05-15 09:59:34 +01:00
Mark Johnson 23630ece3d MDL-75301 question: Add "always latest" option to previews 2023-04-05 10:23:47 +01:00
Tim Hunt 94a584bf38 MDL-75017 questions: give a clear error if the context type is invalid 2023-03-24 12:59:22 +00:00
Tim Hunt 3088bc6600 MDL-58945 qbank: showing q text should give option of plain or full 2023-02-22 11:15:02 +00:00
Jun Pataleta 8013961452 Merge branch 'master_MDL-75126-allow-multiple-bulk-action-41' of https://github.com/catalyst/moodle-MDL-72752 2022-11-10 22:09:12 +08:00
Safat Shahin cf7d6131ad MDL-75126 core_question: Deprecate get_bulk_action_key
This commit will deprecate get_bulk_action_key and move
the implementation in the get_key method entirely by
making this an absract method.
2022-11-10 23:41:03 +11:00
Safat Shahin c3245f6f52 MDL-75126 core_question: Allow multiple bulk action from qbank plugins
This commit implements the bulk action api to allow multiple bulk
actions from the qbank plugins instead of one. Any qbank plugin
wants to implement bulk action can now define an array of bulk
actions as a plugin feature.
2022-11-10 00:34:48 +11:00
Paul Holden 3971b69bb4 MDL-75312 question: predictable ordering of available questions.
This solves sporadic test failure that tried to assert their order.
2022-07-26 17:12:48 +01:00
Tim Hunt aac5b47cea MDL-74041 quiz: use own size for paging the question bank 2022-05-04 11:01:44 +01:00
Luca Bösch ac2e962f61 MDL-74412 question: Not every column needs pr-3 in question bank. 2022-04-05 16:16:23 +02:00
Tim Hunt d3ef035706 MDL-74295 question bank: add help icons to columns that need it 2022-03-28 09:33:02 +01:00
Luca Bösch 96581087a9 MDL-74091 core_question: 'table-responsive' qtable avoids overlap. 2022-03-22 14:19:42 +01:00
Andrew Nicols b15051a55f Merge branch 'MDL-71636' of https://github.com/timhunt/moodle 2022-03-02 19:56:24 +08:00
Marc-Alexandre Ghaly 6dc1084c47 MDL-71636 qbank_columnsortorder: Add a columnsortorder settings page
This implementation will introduce a feature "columnsortorder"
which will add the column sort order feature in an external page.
Having this feature will give users the flexibility of sorting plugin
columns in the question bank view.
2022-03-02 09:08:50 +00:00
Marc-Alexandre Ghaly 7c016b3451 MDL-71636 core_question : API changes for column_base
This commit implements methods visibility changes to column_base class
and its child classes.
2022-03-02 08:14:48 +00:00
Safat Shahin 6c923f4bf0 MDL-72448 qbank_history: Add history plugin to core
This implementation will introduce history plugin to
show the versions of a question. This plugin uses the
actual qbank api to implement the feature.
2022-03-01 14:39:51 +11:00
Sara Arjona dc8b6a84a1 MDL-71696 question: Fix Oracle failures with ambiguous colum 2022-02-03 19:28:27 +01:00
Sara Arjona b841a811be Merge branch 'master_MDL-71696-versioning-integration' of https://github.com/catalyst/moodle-MDL-70329 2022-02-03 13:25:27 +01:00
Safat Shahin bf55e5a481 MDL-71696 core_question: class autoload changes
This commit implements some class autoloading
fixes to align with core question structure.
2022-02-03 22:22:50 +11:00
Safat Shahin 3008edd366 MDL-71696 core_question: Implement question status change
This commit implements the status change pop up for a question
in the base view. This feature update will allow the change of
status of a question without creating a new version.
This commit also implements the status as a char rather than
an int value.
2022-02-03 22:22:50 +11:00
Marc-Alexandre Ghaly b1ad75aef5 MDL-71696 qbank_preview: previewquestion plugin update
This commit implements versioning and associated features
in the previewquestion plugin. There have been some major
changes in the random question and version selection for
questions. This commit made those changes as well as added
some more features in the preview for version selection
and adds more behat coverage.
2022-02-03 22:22:50 +11:00
Safat Shahin 111951d861 MDL-71696 mod_quiz: quiz updates and behat coverage
The versioning changes will require some major changes
in the backup and restore of question bank and its
elements. This change introduces those changes to make
it compatible with the new world of versioning in question
bank. This commit also removes quiz_slots fields and
quiz_slot_tags table.
This commit will also introduce the versioning db
structure and some major changes to the quiz
and quiz attempts for the question, random
question and the view.
This commit implements the behat changes for versioning
in core question and associated locations.
2022-02-03 22:22:44 +11:00
Guillermo Gomez c6cfca2a08 MDL-71696 core_question: Changes for versioning
This commit adds the changes in questiontype base
to work with new question tables and the new structure in the
databse. Also needed for versioning.
This implementation will also introduct the question status
which allows a question to be in draft and ready status.
I also introduces changes to the base view where it shows
the latest version of the questions. The view of versions
for a question is not implemented in this commit.
This implementation will also introduce changes in the core
qtype plugins to support versioning and the changed
db schema.
2022-02-03 22:22:44 +11:00
Guillermo Gomez c34b89a3c2 MDL-71696 core_question: Implement new database schema
This commit implements the new database structure for
versioning in question. It also does the migration of
current data to the new structure.

Co-Authored-By: Safat Shahin <safatshahin@catalyst-au.net>
Co-Authored-By: Guillermo Gomez Arias <guillermogomez@catalyst-au.net>
2022-02-03 22:22:38 +11:00
Bas Brands 7c76e1c349 MDL-72466 core_output: dropdown menu alignment 2022-01-27 17:24:20 +01:00
Matt Porritt 556e2f1aec MDL-72553 qbank_customfields: Add custom fields for question types
Custom fields can now be added to question types.
Site administrators can configure the custom fields and
filed types available. Teachers and question creators can
then use these fields for extra question metadata when
creating questions. Question creators can control if
the fields are displayed to students when they are
taking a quiz or not.
This features uses the core Moodle custom field API.

Co-Authored-By: Matt Porritt <mattp@catalyst-au.net>
Co-Authored-By: Safat Shahin <safatshahin@catalyst-au.net>
Co-Authored-By: Marc-Alexandre Ghaly <marc-alexandreghaly@catalyst-ca.net>
2021-12-07 18:32:41 +11:00
Safat Shahin 0805e387b7 MDL-72076 bulk actions ui: Implement bulk actions in qbank API
This implementation will introduce bulk actions qbank
plugins which can grab the selected question and perform
actions according to the selected option from dropdown
in the base view.

Co-Authored-By: Safat Shahin <safatshahin@catalyst-au.net>
Co-Authored-By: Matt Porritt <mattp@catalyst-au.net>
2021-11-22 11:35:21 +11:00
Safat Shahin f9fc355ec7 MDL-71679 mod_quiz: Updates for new qbank api
This implementation will introduct changes to
the mod_quiz to implement the new qbank api
for view. Major changes are introduced in
the custom view and also all the legacy points
to the old qbank are changed to qbank plugins
where needed. It also deprecated and deletes
classes and scripts which were kept not to
break mod_quiz for the new api implementation.
2021-10-04 15:44:25 +11:00
Sara Arjona 5c78efaaea Merge branch 'master_MDL-71614-previewquestion' of https://github.com/catalyst/moodle-MDL-70329 2021-09-08 09:29:22 +02:00
Safat Shahin 0d55b26da8 MDL-71614 qbank_previewquestion: Add Preview question plugin to core
This implementation will introduce a qbank plugin "previewquestion"
which will view the preview question action in the question bank
actions by replacing the core classes, scripts and yui modules.
This plugin will also replace the preview option in the edit
question form. Having this plugin will give users the
flexibility of enabling or disabling this feature from
the question bank view.
This change will also allow other qbank plugins to add
elements or information in the preview question page
by implementing a callback. It also changes the pop
up to page redirect from base view page to make sure
any changes in preview reflects in the base view, for
example, comments added and the number of comments in
the comments colum changes while back from the preview
page. Other locations like edit and qtype plugins where
the preview is implemented, stays the same.

Co-Authored-By: Guillermo Gomez Arias <guillermogomez@catalyst-au.net>
Co-Authored-By: Safat Shahin <safatshahin@catalyst-au.net>
2021-09-08 16:21:06 +10:00
Guillermo Gomez fb10b36c04 MDL-71585 qbank_managecategories: Add managecategories to core
This implementation will introduce a qbank plugin "managecategories"
which will add the question categories feature in the question bank view
by replacing the core classes. Having this plugin will give users
the flexibility of enabling or disabling the category tab.
2021-09-03 09:41:18 +10:00