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;
+  }
+
+}