Mercurial > hg > isophonics-drupal-site
diff core/modules/system/src/Controller/AdminController.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/system/src/Controller/AdminController.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,53 @@ +<?php + +namespace Drupal\system\Controller; + +use Drupal\Core\Controller\ControllerBase; + +/** + * Controller for admin section. + */ +class AdminController extends ControllerBase { + + /** + * 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; + } + + uasort($module_info, 'system_sort_modules_by_info_name'); + $menu_items = []; + + 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\Component\Utility\SortArray', 'sortByTitleElement']); + // Move 'Configure permissions' links to the bottom of each section. + $permission_key = "user.admin_permissions.$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']] = [$info->info['description'], $admin_tasks]; + } + } + + $output = [ + '#theme' => 'system_admin_index', + '#menu_items' => $menu_items, + ]; + + return $output; + } + +}