diff --git a/core/modules/system/lib/Drupal/system/Controller/AdminController.php b/core/modules/system/lib/Drupal/system/Controller/AdminController.php new file mode 100644 index 0000000..6bda138 --- /dev/null +++ b/core/modules/system/lib/Drupal/system/Controller/AdminController.php @@ -0,0 +1,87 @@ +moduleHandler = $module_handler; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('module_handler') + ); + } + + /** + * Prints a listing of admin tasks, organized by module. + * + * @return array + * A render array containing the listing. + */ + public function index() { + $module_info = system_get_info('module'); + foreach ($module_info as $module => $info) { + $module_info[$module] = new \stdClass(); + $module_info[$module]->info = $info; + } + + $this->moduleHandler->loadInclude('system', 'admin.inc'); + + uasort($module_info, 'system_sort_modules_by_info_name'); + $menu_items = array(); + + foreach ($module_info as $module => $info) { + // Only display a section if there are any available tasks. + if ($admin_tasks = system_get_module_admin_tasks($module, $info->info)) { + // Sort links by title. + uasort($admin_tasks, 'drupal_sort_title'); + // Move 'Configure permissions' links to the bottom of each section. + $permission_key = "admin/people/permissions#module-$module"; + if (isset($admin_tasks[$permission_key])) { + $permission_task = $admin_tasks[$permission_key]; + unset($admin_tasks[$permission_key]); + $admin_tasks[$permission_key] = $permission_task; + } + + $menu_items[$info->info['name']] = array($info->info['description'], $admin_tasks); + } + } + + $output = array( + '#theme' => 'system_admin_index', + '#menu_items' => $menu_items, + ); + + return $output; + } +} diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc index 1566c80..6761689 100644 --- a/core/modules/system/system.admin.inc +++ b/core/modules/system/system.admin.inc @@ -90,37 +90,6 @@ function system_admin_menu_block_page() { } /** - * Menu callback; prints a listing of admin tasks, organized by module. - */ -function system_admin_index() { - $module_info = system_get_info('module'); - foreach ($module_info as $module => $info) { - $module_info[$module] = new stdClass(); - $module_info[$module]->info = $info; - } - uasort($module_info, 'system_sort_modules_by_info_name'); - $menu_items = array(); - - foreach ($module_info as $module => $info) { - // Only display a section if there are any available tasks. - if ($admin_tasks = system_get_module_admin_tasks($module, $info->info)) { - // Sort links by title. - uasort($admin_tasks, 'drupal_sort_title'); - // Move 'Configure permissions' links to the bottom of each section. - $permission_key = "admin/people/permissions#module-$module"; - if (isset($admin_tasks[$permission_key])) { - $permission_task = $admin_tasks[$permission_key]; - unset($admin_tasks[$permission_key]); - $admin_tasks[$permission_key] = $permission_task; - } - - $menu_items[$info->info['name']] = array($info->info['description'], $admin_tasks); - } - } - return theme('system_admin_index', array('menu_items' => $menu_items)); -} - -/** * Menu callback; displays a listing of all themes. */ function system_themes_page() { diff --git a/core/modules/system/system.module b/core/modules/system/system.module index 0d472e5..44e5b00 100644 --- a/core/modules/system/system.module +++ b/core/modules/system/system.module @@ -669,11 +669,9 @@ function system_menu() { ); $items['admin/index'] = array( 'title' => 'Index', - 'page callback' => 'system_admin_index', - 'access arguments' => array('access administration pages'), + 'route_name' => 'system_admin_index', 'type' => MENU_LOCAL_TASK, 'weight' => -18, - 'file' => 'system.admin.inc', ); // Menu items that are basically just menu blocks. diff --git a/core/modules/system/system.routing.yml b/core/modules/system/system.routing.yml index 9859d6a..5f66188 100644 --- a/core/modules/system/system.routing.yml +++ b/core/modules/system/system.routing.yml @@ -87,3 +87,10 @@ date_format_localize_reset: _form: '\Drupal\system\Form\DateFormatLocalizeResetForm' requirements: _permission: 'administer site configuration' + +system_admin_index: + pattern: 'admin/index' + defaults: + _content: 'Drupal\system\Controller\AdminController::index' + requirements: + _permission: 'access administration pages'