Menu callback; Provide the administration overview page.
function system_admin_config_page() {
// Check for status report errors.
// @todo Use depedancy injection in http://drupal.org/node/1987810.
if (Drupal::service('system.manager')
->checkRequirements() && user_access('administer site configuration')) {
drupal_set_message(t('One or more problems were detected with your Drupal installation. Check the <a href="@status">status report</a> 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.');
}
}