From af360dbf2ede9cd429d59970d5a281c2ef1f2eb1 Mon Sep 17 00:00:00 2001 From: hieuvu Date: Fri, 10 Oct 2025 12:03:09 +0700 Subject: [PATCH] MDL-86621 core_question: remove incorrect navigation nodes. --- .../behat/adminnistration_navigation.feature | 36 +++++++++++++++++++ .../navigation/settings_navigation.php | 4 +-- public/lib/questionlib.php | 17 +++++++-- 3 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 public/blocks/navigation/tests/behat/adminnistration_navigation.feature diff --git a/public/blocks/navigation/tests/behat/adminnistration_navigation.feature b/public/blocks/navigation/tests/behat/adminnistration_navigation.feature new file mode 100644 index 00000000000..b43346b029e --- /dev/null +++ b/public/blocks/navigation/tests/behat/adminnistration_navigation.feature @@ -0,0 +1,36 @@ +@block @block_navigation +Feature: Test that admin can see related nodes in Administration block + In order to manage + As an admin + I need to be able to see related nodes in Administration block + + Background: + Given the following "categories" exist: + | name | category | idnumber | visible | + | cat1 | 0 | cat1 | 1 | + And the following "courses" exist: + | fullname | shortname | category | visible | + | Course 1 | c1 | cat1 | 1 | + And the following config values are set as admin: + | unaddableblocks | | theme_boost | + And I log in as "admin" + And I am on site homepage + And I turn editing mode on + And I add the "Administration" block if not present + And I configure the "Administration" block + And I set the following fields to these values: + | Page contexts | Display throughout the entire site | + And I press "Save changes" + + @javascript + Scenario: As admin I must not see question related nodes in Administration. + Given the following "activities" exist: + | activity | name | intro | course | idnumber | + | quiz | Quiz 1 | Quiz 1 for testing the Add menu | c1 | quiz1 | + And I am on "Course 1" course homepage + Then I should see "Question bank" + And I should not see "Questions" + And I am on the "Quiz 1" "mod_quiz > view" page + And "Question bank" "link" should exist + And "Questions" "link" should exist + And "Categories" "link" should exist diff --git a/public/lib/classes/navigation/settings_navigation.php b/public/lib/classes/navigation/settings_navigation.php index a943b34d120..d01238e51ca 100644 --- a/public/lib/classes/navigation/settings_navigation.php +++ b/public/lib/classes/navigation/settings_navigation.php @@ -596,7 +596,7 @@ class settings_navigation extends navigation_node { // Questions. require_once($CFG->libdir . '/questionlib.php'); $baseurl = \core_question\local\bank\question_bank_helper::get_url_for_qbank_list($course->id); - question_extend_settings_navigation($coursenode, $coursecontext, $baseurl)->trim_if_empty(); + question_extend_settings_navigation($coursenode, $coursecontext, $baseurl); if ($adminoptions->update) { // Repository Instances. @@ -1834,7 +1834,7 @@ class settings_navigation extends navigation_node { // Questions. require_once($CFG->libdir . '/questionlib.php'); $baseurl = \core_question\local\bank\question_bank_helper::get_url_for_qbank_list($course->id); - question_extend_settings_navigation($frontpage, $coursecontext, $baseurl)->trim_if_empty(); + question_extend_settings_navigation($frontpage, $coursecontext, $baseurl); // Manage files. if ($adminoptions->files) { diff --git a/public/lib/questionlib.php b/public/lib/questionlib.php index 4868e961aa2..7f93acfa8a0 100644 --- a/public/lib/questionlib.php +++ b/public/lib/questionlib.php @@ -1417,7 +1417,13 @@ function question_extend_settings_navigation(navigation_node $navigationnode, $c $iscourse = $context->contextlevel === CONTEXT_COURSE; if ($iscourse) { - $params = ['courseid' => $context->instanceid]; + return $navigationnode->add( + get_string('questionbank_plural', 'question'), + new moodle_url($baseurl, ['courseid' => $context->instanceid]), + navigation_node::TYPE_CONTAINER, + null, + 'questionbank' + ); } else if ($context->contextlevel == CONTEXT_MODULE) { $params = ['cmid' => $context->instanceid]; } else { @@ -1428,8 +1434,13 @@ function question_extend_settings_navigation(navigation_node $navigationnode, $c $params['cat'] = $cat; } - $questionnode = $navigationnode->add(get_string($iscourse ? 'questionbank_plural' : 'questionbank', 'question'), - new moodle_url($baseurl, $params), navigation_node::TYPE_CONTAINER, null, 'questionbank'); + $questionnode = $navigationnode->add( + get_string('questionbank', 'question'), + new moodle_url($baseurl, $params), + navigation_node::TYPE_CONTAINER, + null, + 'questionbank' + ); $corenavigations = [ 'questions' => [