function admin_menu_alter in Admin 6.2
Same name and namespace in other branches
- 6 admin.module \admin_menu_alter()
- 7.2 admin.module \admin_menu_alter()
Implementation of hook_menu_alter().
File
- ./
admin.module, line 148
Code
function admin_menu_alter(&$items) {
// Move admin theme item under ours as a local task.
$items['admin/settings/admin/theme'] = $items['admin/settings/admin'];
$items['admin/settings/admin/theme']['type'] = MENU_LOCAL_TASK;
$items['admin/settings/admin/theme']['weight'] = 10;
// Generate our own admin settings page.
$items['admin/settings/admin'] = $items['admin/settings/admin/settings'] = array(
'title' => 'Administration tools',
'description' => 'Settings for site administration tools.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'admin_settings_form',
),
'access callback' => 'user_access',
'access arguments' => array(
'administer site configuration',
),
'type' => MENU_NORMAL_ITEM,
'file' => 'admin.admin.inc',
'module' => 'admin',
);
$items['admin/settings/admin/settings']['title'] = 'Settings';
$items['admin/settings/admin/settings']['type'] = MENU_DEFAULT_LOCAL_TASK;
$items['admin/settings/admin/rebuild'] = array(
'title' => 'Rebuild',
'description' => 'Wipe and rebuild the administrative menu.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'admin_settings_rebuild',
),
'access callback' => 'user_access',
'access arguments' => array(
'administer site configuration',
),
'type' => MENU_LOCAL_TASK,
'file' => 'admin.admin.inc',
'module' => 'admin',
'weight' => 10,
);
foreach ($items as $path => $item) {
$item['type'] = isset($item['type']) ? $item['type'] : MENU_NORMAL_ITEM;
// Move all admin/* items to admin menu links except local tasks, callbacks.
$args = explode('/', $path);
if ($path === 'admin' || $item['type'] & MENU_NORMAL_ITEM && $args && $args[0] === 'admin') {
$items[$path]['menu_name'] = 'admin';
}
// Smarter access callback for poorly checked landing pages
if (!empty($item['access arguments']) && !empty($item['page callback']) && $item['access arguments'] === array(
'access administration pages',
) && in_array($item['page callback'], array(
'system_admin_menu_block_page',
'system_settings_overview',
))) {
$items[$path]['access callback'] = 'admin_landing_page_access';
$items[$path]['access arguments'] = array(
$path,
);
}
}
}