From bda1473afae76162695ea55ef34d9c64310519f6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20Mudr=C3=A1k?= Date: Fri, 9 Oct 2020 14:01:00 +0200 Subject: [PATCH] MDL-69906 admin: Display Setup search engine as link only if it is valid We use auto-generated admin section name here so we need to check that the target section actually exists. --- lib/adminlib.php | 12 ++++++---- .../tests/behat/setup_search_engine.feature | 22 +++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 search/tests/behat/setup_search_engine.feature diff --git a/lib/adminlib.php b/lib/adminlib.php index bfdd78767a6..4d55c9f17bd 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -11118,7 +11118,7 @@ class admin_setting_searchsetupinfo extends admin_setting { * @return string */ public function output_html($data, $query='') { - global $CFG, $OUTPUT; + global $CFG, $OUTPUT, $ADMIN; $return = ''; $brtag = html_writer::empty_tag('br'); @@ -11180,9 +11180,13 @@ class admin_setting_searchsetupinfo extends admin_setting { $row[0] = '3. ' . get_string('setupsearchengine', 'admin'); $row[1] = html_writer::tag('span', get_string('no'), array('class' => 'badge badge-danger')); } else { - $url = new moodle_url('/admin/settings.php?section=search' . $CFG->searchengine); - $row[0] = '3. ' . html_writer::tag('a', get_string('setupsearchengine', 'admin'), - array('href' => $url)); + if ($ADMIN->locate('search' . $CFG->searchengine)) { + $url = new moodle_url('/admin/settings.php?section=search' . $CFG->searchengine); + $row[0] = '3. ' . html_writer::link($url, get_string('setupsearchengine', 'core_admin')); + } else { + $row[0] = '3. ' . get_string('setupsearchengine', 'core_admin'); + } + // Check the engine status. $searchengine = \core_search\manager::search_engine_instance(); try { diff --git a/search/tests/behat/setup_search_engine.feature b/search/tests/behat/setup_search_engine.feature new file mode 100644 index 00000000000..0d906313901 --- /dev/null +++ b/search/tests/behat/setup_search_engine.feature @@ -0,0 +1,22 @@ +@core @core_search +Feature: Plugins > Search > Search setup contains Setup search engine only if the target section actually exists + In order to set up the selected search engine + As an admin + I need to be able to click the link 'Setup search engine' but only if the target section actually exists + + Scenario: Selected search engine has an admin section + Given the following config values are set as admin: + | enableglobalsearch | 1 | + | searchengine | solr | + And I log in as "admin" + When I navigate to "Plugins > Search" in site administration + Then "Setup search engine" "link" should exist + + Scenario: Selected search engine does not have an admin section + Given the following config values are set as admin: + | enableglobalsearch | 1 | + | searchengine | simpledb | + And I log in as "admin" + When I navigate to "Plugins > Search" in site administration + Then I should see "Setup search engine" + And "Setup search engine" "link" should not exist -- 2.43.0