diff --git a/core/modules/system/lib/Drupal/system/Controller/ConfigController.php b/core/modules/system/lib/Drupal/system/Controller/ConfigController.php new file mode 100644 index 0000000..d50f60d --- /dev/null +++ b/core/modules/system/lib/Drupal/system/Controller/ConfigController.php @@ -0,0 +1,99 @@ +get('system.manager') + ); + } + + /** + * Constructs a SystemInfoController object. + * + * @param \Drupal\system\SystemManager $systemManager + * System manager service. + */ + public function __construct(SystemManager $systemManager) { + $this->systemManager = $systemManager; + } + + /** + * Menu callback; Provide the administration overview page. + */ + public function overview() { + // Check for status report errors. + if ($this->systemManager->checkRequirements() && user_access('administer site configuration')) { + drupal_set_message(t('One or more problems were detected with your Drupal installation. Check the status report for more information.', array('@status' => url('admin/reports/status'))), 'error'); + } + $blocks = array(); + if ($system_link = entity_load_multiple_by_properties('menu_link', array('link_path' => 'admin/config', 'module' => 'system'))) { + $system_link = reset($system_link); + $query = \Drupal::entityQuery('menu_link') + ->condition('link_path', 'admin/help', '<>') + ->condition('menu_name', $system_link->menu_name) + ->condition('plid', $system_link->id()) + ->condition('hidden', 0); + $result = $query->execute(); + if (!empty($result)) { + $menu_links = menu_link_load_multiple($result); + + foreach ($menu_links as $item) { + _menu_link_translate($item); + if (!$item['access']) { + continue; + } + // The link description, either derived from 'description' in hook_menu() + // or customized via menu module is used as title attribute. + if (!empty($item['localized_options']['attributes']['title'])) { + $item['description'] = $item['localized_options']['attributes']['title']; + unset($item['localized_options']['attributes']['title']); + } + $block = $item; + $block['content'] = ''; + $block['content'] .= theme('admin_block_content', array('content' => system_admin_menu_block($item))); + if (!empty($block['content'])) { + $block['show'] = TRUE; + } + + // Prepare for sorting as in function _menu_tree_check_access(). + // The weight is offset so it is always positive, with a uniform 5-digits. + $blocks[(50000 + $item['weight']) . ' ' . $item['title'] . ' ' . $item['mlid']] = $block; + } + } + } + if ($blocks) { + ksort($blocks); + return theme('admin_page', array('blocks' => $blocks)); + } + else { + return t('You do not have any administrative items.'); + } + } + +}