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.
This commit is contained in:
David Mudrák 2020-10-09 14:01:00 +02:00
parent 46f977a8bf
commit b295a88821
2 changed files with 30 additions and 4 deletions

View File

@ -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 {

View File

@ -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