diff --git a/core/modules/system/lib/Drupal/system/Controller/ConfigController.php b/core/modules/system/lib/Drupal/system/Controller/ConfigController.php deleted file mode 100644 index bc8ef55..0000000 --- a/core/modules/system/lib/Drupal/system/Controller/ConfigController.php +++ /dev/null @@ -1,141 +0,0 @@ -get('system.manager'), - $container->get('entity.query'), - $container->get('plugin.manager.entity') - ); - } - - /** - * Constructs a SystemInfoController object. - * - * @param \Drupal\system\SystemManager $systemManager - * System manager service. - * - * @param \Drupal\Core\Entity\Query\QueryFactory $queryFactory - * The entity query object. - * - * @param \Drupal\Core\Entity\EntityManager $entityManager - * The entity manager. - */ - public function __construct(SystemManager $systemManager, QueryFactory $queryFactory, EntityManager $entityManager) { - $this->systemManager = $systemManager; - $this->queryFactory = $queryFactory; - $this->entityManager = $entityManager; - } - - /** - * Provide the administration overview page. - * - * @return array - * A renderable array of the administraion 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(); - // Load all links on admin/config and menu links below it. - $query = $this->queryFactory->get('menu_link') - ->condition('link_path', 'admin/config') - ->condition('module', 'system'); - $result = $query->execute(); - if ($system_link = $this->entityManager->getStorageController('menu_link')->loadMultiple($result)) { - $system_link = reset($system_link); - $query = $this->queryFactory->get('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 = $this->entityManager - ->getStorageController('menu_link') - ->loadMultiple($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'] = 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 array( - '#theme' => 'admin_page', - '#blocks' => $blocks, - ); - } - else { - return array( - '#markup' => t('You do not have any administrative items.'), - ); - } - } - -} diff --git a/core/modules/system/lib/Drupal/system/Controller/SystemController.php b/core/modules/system/lib/Drupal/system/Controller/SystemController.php index 7054e95..03041bd 100644 --- a/core/modules/system/lib/Drupal/system/Controller/SystemController.php +++ b/core/modules/system/lib/Drupal/system/Controller/SystemController.php @@ -7,21 +7,122 @@ namespace Drupal\system\Controller; +use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Controller\ControllerInterface; +use Drupal\Core\Entity\Query\QueryFactory; +use Drupal\system\SystemManager; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\RedirectResponse; - /** * Returns responses for System routes. */ -class SystemController implements ControllerInterface { +class SystemController extends ControllerBase implements ControllerInterface { + + /** + * The entity query factory object. + * + * @var \Drupal\Core\Entity\Query\QueryFactory + */ + protected $queryFactory; + + /** + * System Manager Service. + * + * @var \Drupal\system\SystemManager + */ + protected $systemManager; + + /** + * Constructs a new ConfigController. + * + * @param \Drupal\system\SystemManager $systemManager + * System manager service. + * @param \Drupal\Core\Entity\Query\QueryFactory $queryFactory + * The entity query object. + */ + public function __construct(SystemManager $systemManager, QueryFactory $queryFactory) { + $this->systemManager = $systemManager; + $this->queryFactory = $queryFactory; + } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { - return new static(); + return new static( + $container->get('system.manager'), + $container->get('entity.query') + ); + } + + /** + * Provide the administration overview page. + * + * @return array + * A renderable array of the administration overview page. + */ + public function overview() { + // Check for status report errors. + if ($this->systemManager->checkRequirements() && $this->currentUser()->hasPermission('administer site configuration')) { + drupal_set_message($this->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(); + // Load all links on admin/config and menu links below it. + $query = $this->queryFactory->get('menu_link') + ->condition('link_path', 'admin/config') + ->condition('module', 'system'); + $result = $query->execute(); + $menu_link_storage = $this->entityManager()->getStorageController('menu_link'); + if ($system_link = $menu_link_storage->loadMultiple($result)) { + $system_link = reset($system_link); + $query = $this->queryFactory->get('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_storage->loadMultiple($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'] = array( + '#theme' => 'admin_block_content', + '#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 array( + '#theme' => 'admin_page', + '#blocks' => $blocks, + ); + } + else { + return array( + '#markup' => $this->t('You do not have any administrative items.'), + ); + } } /** @@ -32,9 +133,9 @@ public static function create(ContainerInterface $container) { * * @return \Symfony\Component\HttpFoundation\RedirectResponse */ - function compactPage($mode) { + public function compactPage($mode) { user_cookie_save(array('admin_compact_mode' => ($mode == 'on'))); - return new RedirectResponse(url('', array('absolute' => TRUE))); + return $this->redirect('front'); } } diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc index 1fbc87e..df7ef6f 100644 --- a/core/modules/system/system.admin.inc +++ b/core/modules/system/system.admin.inc @@ -346,7 +346,7 @@ function theme_admin_block($variables) { $output .= '

' . $block['title'] . '

'; } if (!empty($block['content'])) { - $output .= '
' . $block['content'] . '
'; + $output .= '
' . render($block['content']) . '
'; } else { $output .= '
' . $block['description'] . '
'; diff --git a/core/modules/system/system.routing.yml b/core/modules/system/system.routing.yml index b08d0c5..9b27c08 100644 --- a/core/modules/system/system.routing.yml +++ b/core/modules/system/system.routing.yml @@ -231,6 +231,6 @@ system_timezone: system_admin_config: pattern: '/admin/config' defaults: - _content: '\Drupal\system\Controller\ConfigController::overview' + _content: '\Drupal\system\Controller\SystemController::overview' requirements: _permission: 'access administration pages'