diff --git a/admin/settings/plugins.php b/admin/settings/plugins.php index 8def3d77223..883539b957c 100644 --- a/admin/settings/plugins.php +++ b/admin/settings/plugins.php @@ -401,55 +401,6 @@ if ($hassiteconfig) { /** @var \core\plugininfo\repository $plugin */ $plugin->load_settings($ADMIN, 'repositorysettings', $hassiteconfig); } - -/// Web services - $ADMIN->add('modules', new admin_category('webservicesettings', new lang_string('webservices', 'webservice'))); - - /// overview page - $temp = new admin_settingpage('webservicesoverview', new lang_string('webservicesoverview', 'webservice')); - $temp->add(new admin_setting_webservicesoverview()); - $ADMIN->add('webservicesettings', $temp); - //API documentation - $ADMIN->add('webservicesettings', new admin_externalpage('webservicedocumentation', new lang_string('wsdocapi', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/documentation.php", 'moodle/site:config', false)); - /// manage service - $temp = new admin_settingpage('externalservices', new lang_string('externalservices', 'webservice')); - $temp->add(new admin_setting_heading('manageserviceshelpexplaination', new lang_string('information', 'webservice'), new lang_string('servicehelpexplanation', 'webservice'))); - $temp->add(new admin_setting_manageexternalservices()); - $ADMIN->add('webservicesettings', $temp); - $ADMIN->add('webservicesettings', new admin_externalpage('externalservice', new lang_string('editaservice', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/service.php", 'moodle/site:config', true)); - $ADMIN->add('webservicesettings', new admin_externalpage('externalservicefunctions', new lang_string('externalservicefunctions', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/service_functions.php", 'moodle/site:config', true)); - $ADMIN->add('webservicesettings', new admin_externalpage('externalserviceusers', new lang_string('externalserviceusers', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/service_users.php", 'moodle/site:config', true)); - $ADMIN->add('webservicesettings', new admin_externalpage('externalserviceusersettings', new lang_string('serviceusersettings', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/service_user_settings.php", 'moodle/site:config', true)); - /// manage protocol page link - $temp = new admin_settingpage('webserviceprotocols', new lang_string('manageprotocols', 'webservice')); - $temp->add(new admin_setting_managewebserviceprotocols()); - if (empty($CFG->enablewebservices)) { - $temp->add(new admin_setting_heading('webservicesaredisabled', '', new lang_string('disabledwarning', 'webservice'))); - } - - // We cannot use $OUTPUT this early, doing so means that we lose the ability - // to set the page layout on all admin pages. - // $wsdoclink = $OUTPUT->doc_link('How_to_get_a_security_key'); - $url = new moodle_url(get_docs_url('How_to_get_a_security_key')); - $wsdoclink = html_writer::tag('a', new lang_string('supplyinfo', 'webservice'), array('href'=>$url)); - $temp->add(new admin_setting_configcheckbox('enablewsdocumentation', new lang_string('enablewsdocumentation', - 'admin'), new lang_string('configenablewsdocumentation', 'admin', $wsdoclink), false)); - $ADMIN->add('webservicesettings', $temp); - /// links to protocol pages - $plugins = core_plugin_manager::instance()->get_plugins_of_type('webservice'); - core_collator::asort_objects_by_property($plugins, 'displayname'); - foreach ($plugins as $plugin) { - /** @var \core\plugininfo\webservice $plugin */ - $plugin->load_settings($ADMIN, 'webservicesettings', $hassiteconfig); - } - /// manage token page link - $ADMIN->add('webservicesettings', new admin_externalpage('addwebservicetoken', new lang_string('managetokens', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/tokens.php", 'moodle/site:config', true)); - $temp = new admin_settingpage('webservicetokens', new lang_string('managetokens', 'webservice')); - $temp->add(new admin_setting_managewebservicetokens()); - if (empty($CFG->enablewebservices)) { - $temp->add(new admin_setting_heading('webservicesaredisabled', '', new lang_string('disabledwarning', 'webservice'))); - } - $ADMIN->add('webservicesettings', $temp); } // Question type settings diff --git a/admin/settings/server.php b/admin/settings/server.php index 179cc982abb..1ae55f217d1 100644 --- a/admin/settings/server.php +++ b/admin/settings/server.php @@ -546,4 +546,76 @@ if ($hassiteconfig) { new lang_string('updatenotifybuilds_desc', 'core_admin'), 0)); $ADMIN->add('server', $temp); } + + // Web services. + $ADMIN->add('server', new admin_category('webservicesettings', new lang_string('webservices', 'webservice'))); + + // Web services > Overview. + $temp = new admin_settingpage('webservicesoverview', new lang_string('webservicesoverview', 'webservice')); + $temp->add(new admin_setting_webservicesoverview()); + $ADMIN->add('webservicesettings', $temp); + + // Web services > API documentation. + $ADMIN->add('webservicesettings', new admin_externalpage('webservicedocumentation', new lang_string('wsdocapi', 'webservice'), + "{$CFG->wwwroot}/{$CFG->admin}/webservice/documentation.php", 'moodle/site:config', false)); + + // Web services > External services. + $temp = new admin_settingpage('externalservices', new lang_string('externalservices', 'webservice')); + + $temp->add(new admin_setting_heading('manageserviceshelpexplaination', new lang_string('information', 'webservice'), + new lang_string('servicehelpexplanation', 'webservice'))); + + $temp->add(new admin_setting_manageexternalservices()); + + $ADMIN->add('webservicesettings', $temp); + + $ADMIN->add('webservicesettings', new admin_externalpage('externalservice', new lang_string('editaservice', 'webservice'), + "{$CFG->wwwroot}/{$CFG->admin}/webservice/service.php", 'moodle/site:config', true)); + + $ADMIN->add('webservicesettings', new admin_externalpage('externalservicefunctions', + new lang_string('externalservicefunctions', 'webservice'), "{$CFG->wwwroot}/{$CFG->admin}/webservice/service_functions.php", + 'moodle/site:config', true)); + + $ADMIN->add('webservicesettings', new admin_externalpage('externalserviceusers', + new lang_string('externalserviceusers', 'webservice'), "{$CFG->wwwroot}/{$CFG->admin}/webservice/service_users.php", + 'moodle/site:config', true)); + + $ADMIN->add('webservicesettings', new admin_externalpage('externalserviceusersettings', + new lang_string('serviceusersettings', 'webservice'), "{$CFG->wwwroot}/{$CFG->admin}/webservice/service_user_settings.php", + 'moodle/site:config', true)); + + // Web services > Manage protocols. + $temp = new admin_settingpage('webserviceprotocols', new lang_string('manageprotocols', 'webservice')); + $temp->add(new admin_setting_managewebserviceprotocols()); + if (empty($CFG->enablewebservices)) { + $temp->add(new admin_setting_heading('webservicesaredisabled', '', new lang_string('disabledwarning', 'webservice'))); + } + + // We cannot use $OUTPUT->doc_link() this early, we would lose the ability to set the page layout on all admin pages. + $url = new moodle_url(get_docs_url('How_to_get_a_security_key')); + $wsdoclink = html_writer::link($url, new lang_string('supplyinfo', 'webservice'), ['target' => '_blank']); + $temp->add(new admin_setting_configcheckbox('enablewsdocumentation', new lang_string('enablewsdocumentation', 'admin'), + new lang_string('configenablewsdocumentation', 'admin', $wsdoclink), false)); + + $ADMIN->add('webservicesettings', $temp); + + $plugins = core_plugin_manager::instance()->get_plugins_of_type('webservice'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { + /** @var \core\plugininfo\webservice $plugin */ + $plugin->load_settings($ADMIN, 'webservicesettings', $hassiteconfig); + } + + // Web services > Manage tokens. + $ADMIN->add('webservicesettings', new admin_externalpage('addwebservicetoken', new lang_string('managetokens', 'webservice'), + "{$CFG->wwwroot}/{$CFG->admin}/webservice/tokens.php", 'moodle/site:config', true)); + + $temp = new admin_settingpage('webservicetokens', new lang_string('managetokens', 'webservice')); + $temp->add(new admin_setting_managewebservicetokens()); + + if (empty($CFG->enablewebservices)) { + $temp->add(new admin_setting_heading('webservicesaredisabled', '', new lang_string('disabledwarning', 'webservice'))); + } + + $ADMIN->add('webservicesettings', $temp); } diff --git a/admin/tests/behat/manage_tokens.feature b/admin/tests/behat/manage_tokens.feature index dc1cd948a60..20fda05f54d 100644 --- a/admin/tests/behat/manage_tokens.feature +++ b/admin/tests/behat/manage_tokens.feature @@ -15,7 +15,7 @@ Feature: Manage tokens @javascript Scenario: Add & delete a token - Given I navigate to "Plugins > Web services > Manage tokens" in site administration + Given I navigate to "Server > Web services > Manage tokens" in site administration And I follow "Add" And I set the field "User" to "Joe Bloggs" And I set the field "IP restriction" to "127.0.0.1" diff --git a/admin/upgrade.txt b/admin/upgrade.txt index c3ab30f87e4..6beeb3a0f42 100644 --- a/admin/upgrade.txt +++ b/admin/upgrade.txt @@ -4,6 +4,9 @@ This files describes API changes in /admin/*. * New admin setting admin_setting_encryptedpassword allows passwords in admin settings to be encrypted (with the new \core\encryption API) so that even the admin cannot read them. +* Web services administration has been moved from Plugins into the Server category. If you have + Behat tests containing steps like `Given I navigate to "Plugins > Web services > ..."`, you will + want to replace them with `Given I navigate to "Server > Web services > ..."`. === 3.9 === diff --git a/webservice/lib.php b/webservice/lib.php index 5257640e944..4ffac8253f4 100644 --- a/webservice/lib.php +++ b/webservice/lib.php @@ -1416,7 +1416,7 @@ abstract class webservice_base_server extends webservice_server { 7. The function is called with username/password (no user token is sent) and none of the services has the function to allow the user. These settings can be found in Administration > Site administration - > Plugins > Web services > External services and Manage tokens.'); + > Server > Web services > External services and Manage tokens.'); } // we have all we need now