function express_dashboards_menu in Express 7.2
Implements hook_menu().
Add menu items for dashboards, set default dashboard.
File
- modules/
custom/ express_dashboards/ express_dashboards.module, line 8
Code
function express_dashboards_menu() {
$items = array();
$weights = array();
// Get all hook_express_dashboard functions.
if ($cache = cache_get('express_dashboards')) {
$dashboards = $cache->data;
}
else {
$dashboards = module_invoke_all('express_dashboard', $variables = NULL);
// Save this for 30 days - it should only be cleared on a code update
cache_set('express_dashboards', $dashboards, 'cache', time() + 60 * 60 * 24 * 30);
}
//$dashboards = module_invoke_all('express_dashboard', $variables = NULL);
// Get default dashbaord
$default_dashboard = variable_get('express_dashboard_default', NULL);
// Loop through dashboards to add menu items
foreach ($dashboards as $key => $dashboard) {
$path = 'admin/dashboard/' . $key;
$weight = isset($dashboard['weight']) ? $dashboard['weight'] : 0;
$items[$path] = array(
'title' => $dashboard['title'],
'page callback' => 'express_dashboards_dashboard_output',
'page arguments' => array(
$dashboard['callback'],
$key,
),
'access arguments' => $dashboard['access arguments'],
'type' => MENU_LOCAL_TASK,
'weight' => $weight,
);
// Get dashbaord weights in case no dafault is set
$weights[$key] = $weight;
// if this is the default dashboard, add as default task.
if (isset($default_dashboard) && $key == $default_dashboard) {
$items[$path]['type'] = MENU_DEFAULT_LOCAL_TASK;
$items['admin/dashboard'] = array(
'title' => 'Dashboard',
'page callback' => 'express_dashboards_dashboard_output',
'page arguments' => array(
$dashboard['callback'],
$key,
),
'access arguments' => $dashboard['access arguments'],
'weight' => -500,
);
}
}
// If no default dashboard, set default to lowest weight dashboard.
if (!isset($default_dashboard)) {
asort($weights);
$key = key($weights);
$path = 'admin/dashboard/' . $key;
$items[$path]['type'] = MENU_DEFAULT_LOCAL_TASK;
$items['admin/dashboard'] = array(
'title' => 'Dashboard',
'page callback' => 'express_dashboards_dashboard_output',
'page arguments' => array(
$dashboards[$key]['callback'],
$key,
),
'access arguments' => $dashboards[$key]['access arguments'],
'weight' => -500,
);
}
return $items;
}