MDL-85002 mod_quiz: Navigation with standard tertiary nav elements.

This commit is contained in:
Luca Bösch
2026-03-11 15:28:00 +01:00
parent 534bde05f8
commit 79ccace5f2
4 changed files with 40 additions and 25 deletions
@@ -20,7 +20,7 @@ use moodle_url;
use renderable;
use renderer_base;
use templatable;
use url_select;
use core\output\select_menu;
/**
* Represents the tertiary navigation around the quiz edit pages.
@@ -64,15 +64,18 @@ class edit_nav_actions implements renderable, templatable {
$gradeitemsetupurl->out(false) => get_string('gradeitemsetup', 'quiz'),
];
$overridesnav = new url_select(
$overridesnav = new select_menu(
'quizsetupnavigation',
$menu,
$this->whichpage === self::SUMMARY ? $questionsurl->out(false) : $gradeitemsetupurl->out(false),
null
);
$overridesnav->set_label(get_string('quizsetupnavigation', 'quiz'), ['class' => 'visually-hidden']);
$overridesnav->set_label(
get_string('quizsetupnavigation', 'quiz'),
['class' => 'visually-hidden']
);
return [
'navmenu' => $overridesnav->export_for_template($output),
'navigation' => $overridesnav->export_for_template($output),
];
}
}
@@ -20,7 +20,7 @@ use moodle_url;
use renderable;
use renderer_base;
use templatable;
use url_select;
use core\output\select_menu;
/**
* Render overrides action in the quiz secondary navigation
@@ -98,8 +98,17 @@ class overrides_actions implements renderable, templatable {
$groupoverridesurl->out(false) => get_string('groupoverrides', 'quiz')
];
$overridesnav = new url_select($menu, $PAGE->url->out(false), null, 'quizoverrides');
$templatecontext['overridesnav'] = $overridesnav->export_for_template($output);
$overridesnav = new select_menu(
'quizoverrides',
$menu,
$PAGE->url->out(false),
);
$overridesnav->set_label(
get_string('overrides', 'quiz'),
['class' => 'visually-hidden']
);
$templatecontext['navigation'] = $overridesnav->export_for_template($output);
// Build the add button - but only if the user can edit.
if ($this->canedit) {
@@ -25,28 +25,30 @@
* none
Context variables required for this template:
* overridesnav - must alwasy be present.
* navigation - must always be present.
* addoverridebutton - should only be present if the user has permission to add a new override.
Example context (json):
{
"overridesnav": {
"id": "url_select_test",
"action": "https://example.com/post",
"formid": "url_select_form",
"sesskey": "sesskey",
"label": "core/url_select",
"options": [{
"navigation": {
"name": "tertiarynavigation",
"value": "/mod/quiz/overrides.php?cmid=71&mode=group",
"baseid": "select-menu56789",
"selectedoption": "Group overrides",
"options": [
{
"name": "User overrides",
"value": "/mod/quiz/overrides.php?cmid=71&mode=user"
"value": "/mod/quiz/overrides.php?cmid=71&mode=user",
"id": "select-menu-option1",
"selected": false
},
{
"name": "Group overrides",
"value": "/mod/quiz/overrides.php?cmid=71&mode=group"
"value": "/mod/quiz/overrides.php?cmid=71&mode=group",
"id": "select-menu-option2",
"selected": true
}
],
"disabled": false,
"title": "Some cool title"
]
},
"addoverridebutton": {
"id": "single_button1234",
@@ -71,11 +73,11 @@
}}
<div class="tertiary-navigation">
<div class="d-flex">
{{#overridesnav}}
{{#navigation}}
<div class="navitem">
{{>core/url_select}}
{{>core/tertiary_navigation_selector}}
</div>
{{/overridesnav}}
{{/navigation}}
{{#addoverridebutton}}
<div class="navitem">
{{>core/single_button}}
@@ -118,6 +118,7 @@ Feature: Quiz group override
And "Copy" "link" should not exist in the "Group 1" "table_row"
And "Delete" "link" should not exist in the "Group 1" "table_row"
@javascript
Scenario: "Not visible" groups should not be available for group overrides
Given the following "groups" exist:
| name | course | idnumber | visibility | participation |
@@ -129,7 +130,7 @@ Feature: Quiz group override
| Only visible to members/Non-Participation | C1 | MN | 1 | 0 |
When I am on the "quiz1" Activity page logged in as teacher1
And I navigate to "Overrides" in current page administration
And I select "Group overrides" from the "jump" singleselect
And I set the field "Overrides" to "Group overrides"
And I press "Add group override"
Then I should see "Visible to everyone/Participation" in the "Override group" "select"
And I should see "Visible to everyone/Non-Participation" in the "Override group" "select"