From 7025aeed030fb011060068a1d6d3fb12e2e77a3b Mon Sep 17 00:00:00 2001 From: Vadim Dvorovenko Date: Mon, 16 May 2016 18:09:59 +0700 Subject: [PATCH] MDL-54599 Navigation: Sorting plugins by visible name Sorting plugins name in admin settings tree by visible (localized) name. --- admin/settings/plugins.php | 68 +++++++++++++++++++++++++++++--------- 1 file changed, 52 insertions(+), 16 deletions(-) diff --git a/admin/settings/plugins.php b/admin/settings/plugins.php index 1beaca5858f..680bd3dc995 100644 --- a/admin/settings/plugins.php +++ b/admin/settings/plugins.php @@ -40,7 +40,9 @@ if ($hassiteconfig) { get_string('requiremodintro', 'admin'), get_string('requiremodintro_desc', 'admin'), 0)); $ADMIN->add('modsettings', $temp); - foreach (core_plugin_manager::instance()->get_plugins_of_type('mod') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('mod'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /** @var \core\plugininfo\mod $plugin */ $plugin->load_settings($ADMIN, 'modsettings', $hassiteconfig); } @@ -50,7 +52,9 @@ if ($hassiteconfig) { $temp = new admin_settingpage('manageformats', new lang_string('manageformats', 'core_admin')); $temp->add(new admin_setting_manageformats()); $ADMIN->add('formatsettings', $temp); - foreach (core_plugin_manager::instance()->get_plugins_of_type('format') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('format'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /** @var \core\plugininfo\format $plugin */ $plugin->load_settings($ADMIN, 'formatsettings', $hassiteconfig); } @@ -58,7 +62,9 @@ if ($hassiteconfig) { // blocks $ADMIN->add('modules', new admin_category('blocksettings', new lang_string('blocks'))); $ADMIN->add('blocksettings', new admin_page_manageblocks()); - foreach (core_plugin_manager::instance()->get_plugins_of_type('block') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('block'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /** @var \core\plugininfo\block $plugin */ $plugin->load_settings($ADMIN, 'blocksettings', $hassiteconfig); } @@ -67,7 +73,9 @@ if ($hassiteconfig) { $ADMIN->add('modules', new admin_category('messageoutputs', new lang_string('messageoutputs', 'message'))); $ADMIN->add('messageoutputs', new admin_page_managemessageoutputs()); $ADMIN->add('messageoutputs', new admin_page_defaultmessageoutputs()); - foreach (core_plugin_manager::instance()->get_plugins_of_type('message') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('message'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /** @var \core\plugininfo\message $plugin */ $plugin->load_settings($ADMIN, 'messageoutputs', $hassiteconfig); } @@ -108,7 +116,9 @@ if ($hassiteconfig) { $temp = new admin_externalpage('authtestsettings', get_string('testsettings', 'core_auth'), new moodle_url("/auth/test_settings.php"), 'moodle/site:config', true); $ADMIN->add('authsettings', $temp); - foreach (core_plugin_manager::instance()->get_plugins_of_type('auth') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('auth'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /** @var \core\plugininfo\auth $plugin */ $plugin->load_settings($ADMIN, 'authsettings', $hassiteconfig); } @@ -122,7 +132,9 @@ if ($hassiteconfig) { $temp = new admin_externalpage('enroltestsettings', get_string('testsettings', 'core_enrol'), new moodle_url("/enrol/test_settings.php"), 'moodle/site:config', true); $ADMIN->add('enrolments', $temp); - foreach(core_plugin_manager::instance()->get_plugins_of_type('enrol') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('enrol'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /** @var \core\plugininfo\enrol $plugin */ $plugin->load_settings($ADMIN, 'enrolments', $hassiteconfig); } @@ -133,7 +145,9 @@ if ($hassiteconfig) { $temp = new admin_settingpage('manageeditors', new lang_string('editorsettings', 'editor')); $temp->add(new admin_setting_manageeditors()); $ADMIN->add('editorsettings', $temp); - foreach (core_plugin_manager::instance()->get_plugins_of_type('editor') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('editor'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /** @var \core\plugininfo\editor $plugin */ $plugin->load_settings($ADMIN, 'editorsettings', $hassiteconfig); } @@ -143,7 +157,9 @@ if ($hassiteconfig) { $temp = new admin_settingpage('manageantiviruses', new lang_string('antivirussettings', 'antivirus')); $temp->add(new admin_setting_manageantiviruses()); $ADMIN->add('antivirussettings', $temp); - foreach (core_plugin_manager::instance()->get_plugins_of_type('antivirus') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('antivirus'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /* @var \core\plugininfo\antivirus $plugin */ $plugin->load_settings($ADMIN, 'antivirussettings', $hassiteconfig); } @@ -182,7 +198,9 @@ if ($hassiteconfig) { } $ADMIN->add('filtersettings', $temp); - foreach (core_plugin_manager::instance()->get_plugins_of_type('filter') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('filter'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /** @var \core\plugininfo\filter $plugin */ $plugin->load_settings($ADMIN, 'filtersettings', $hassiteconfig); } @@ -283,7 +301,9 @@ if ($hassiteconfig) { new lang_string('createrepository', 'repository'), $url, 'moodle/site:config', true)); $ADMIN->add('repositorysettings', new admin_externalpage('repositoryinstanceedit', new lang_string('editrepositoryinstance', 'repository'), $url, 'moodle/site:config', true)); - foreach (core_plugin_manager::instance()->get_plugins_of_type('repository') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('repository'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /** @var \core\plugininfo\repository $plugin */ $plugin->load_settings($ADMIN, 'repositorysettings', $hassiteconfig); } @@ -337,7 +357,9 @@ if ($hassiteconfig) { 'admin'), new lang_string('configenablewsdocumentation', 'admin', $wsdoclink), false)); $ADMIN->add('webservicesettings', $temp); /// links to protocol pages - foreach (core_plugin_manager::instance()->get_plugins_of_type('webservice') as $plugin) { + $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); } @@ -409,7 +431,9 @@ if ($hassiteconfig || has_capability('moodle/question:config', $systemcontext)) get_string('responsehistory', 'question'), '', 0, $hiddenofvisible)); // Settings for particular question types. - foreach (core_plugin_manager::instance()->get_plugins_of_type('qtype') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('qtype'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /** @var \core\plugininfo\qtype $plugin */ $plugin->load_settings($ADMIN, 'qtypesettings', $hassiteconfig); } @@ -421,7 +445,9 @@ if ($hassiteconfig && !empty($CFG->enableplagiarism)) { $ADMIN->add('plagiarism', new admin_externalpage('manageplagiarismplugins', new lang_string('manageplagiarism', 'plagiarism'), $CFG->wwwroot . '/' . $CFG->admin . '/plagiarism.php')); - foreach (core_plugin_manager::instance()->get_plugins_of_type('plagiarism') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('plagiarism'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /** @var \core\plugininfo\plagiarism $plugin */ $plugin->load_settings($ADMIN, 'plagiarism', $hassiteconfig); } @@ -445,6 +471,7 @@ if ($hassiteconfig) { } if (!empty($pages)) { $ADMIN->add('modules', new admin_category('coursereports', new lang_string('coursereports'))); + core_collator::asort_objects_by_property($pages, 'visiblename'); foreach ($pages as $page) { $ADMIN->add('coursereports', $page); } @@ -468,6 +495,7 @@ foreach (core_component::get_plugin_list('report') as $report => $plugindir) { $ADMIN->add('modules', new admin_category('reportplugins', new lang_string('reports'))); $ADMIN->add('reportplugins', new admin_externalpage('managereports', new lang_string('reportsmanage', 'admin'), $CFG->wwwroot . '/' . $CFG->admin . '/reports.php')); +core_collator::asort_objects_by_property($pages, 'visiblename'); foreach ($pages as $page) { $ADMIN->add('reportplugins', $page); } @@ -510,6 +538,7 @@ if ($hassiteconfig) { } $ADMIN->add('searchplugins', $temp); + core_collator::asort_objects_by_property($pages, 'visiblename'); foreach ($pages as $page) { $ADMIN->add('searchplugins', $page); } @@ -523,7 +552,9 @@ if ($hassiteconfig) { } // Now add various admin tools. -foreach (core_plugin_manager::instance()->get_plugins_of_type('tool') as $plugin) { +$plugins = core_plugin_manager::instance()->get_plugins_of_type('tool'); +core_collator::asort_objects_by_property($plugins, 'displayname'); +foreach ($plugins as $plugin) { /** @var \core\plugininfo\tool $plugin */ $plugin->load_settings($ADMIN, null, $hassiteconfig); } @@ -534,6 +565,7 @@ if ($hassiteconfig) { $ADMIN->add('cache', new admin_externalpage('cacheconfig', new lang_string('cacheconfig', 'cache'), $CFG->wwwroot .'/cache/admin.php')); $ADMIN->add('cache', new admin_externalpage('cachetestperformance', new lang_string('testperformance', 'cache'), $CFG->wwwroot . '/cache/testperformance.php')); $ADMIN->add('cache', new admin_category('cachestores', new lang_string('cachestores', 'cache'))); + $ADMIN->locate('cachestores')->set_sorting(true); foreach (core_component::get_plugin_list('cachestore') as $plugin => $path) { $settingspath = $path.'/settings.php'; if (file_exists($settingspath)) { @@ -547,7 +579,9 @@ if ($hassiteconfig) { // Add Calendar type settings. if ($hassiteconfig) { $ADMIN->add('modules', new admin_category('calendartype', new lang_string('calendartypes', 'calendar'))); - foreach (core_plugin_manager::instance()->get_plugins_of_type('calendartype') as $plugin) { + $plugins = core_plugin_manager::instance()->get_plugins_of_type('calendartype'); + core_collator::asort_objects_by_property($plugins, 'displayname'); + foreach ($plugins as $plugin) { /** @var \core\plugininfo\calendartype $plugin */ $plugin->load_settings($ADMIN, 'calendartype', $hassiteconfig); } @@ -562,7 +596,9 @@ if ($hassiteconfig) { // Extend settings for each local plugin. Note that their settings may be in any part of the // settings tree and may be visible not only for administrators. -foreach (core_plugin_manager::instance()->get_plugins_of_type('local') as $plugin) { +$plugins = core_plugin_manager::instance()->get_plugins_of_type('local'); +core_collator::asort_objects_by_property($plugins, 'displayname'); +foreach ($plugins as $plugin) { /** @var \core\plugininfo\local $plugin */ $plugin->load_settings($ADMIN, null, $hassiteconfig); } -- 2.43.0