function _ctools_menu_add_dynamic_items in Chaos Tool Suite (ctools) 7
Same name and namespace in other branches
- 6 includes/menu.inc \_ctools_menu_add_dynamic_items()
1 call to _ctools_menu_add_dynamic_items()
- ctools_menu_local_tasks_alter in ./
ctools.module - Implements hook_menu_local_tasks_alter().
File
- includes/
menu.inc, line 60 - General menu helper functions.
Code
function _ctools_menu_add_dynamic_items(&$data, &$router_item, &$root_path) {
if ($additions = ctools_menu_add_tab()) {
// If none of the static local tasks are active allow one of the dynamic
// active tasks to be marked as such.
$has_active = FALSE;
if (!empty($data['tabs'][0]['output'])) {
foreach ($data['tabs'][0]['output'] as $element) {
if (!empty($element['#link']['#active'])) {
$has_active = TRUE;
}
}
}
foreach ($additions as $addition) {
$addition['localized_options'] = isset($addition['options']) ? $addition['options'] : array();
if (isset($addition['type']) && $addition['type'] == MENU_LOCAL_ACTION) {
$data['actions']['output'][] = array(
'#theme' => 'menu_local_action',
'#link' => $addition,
);
}
else {
$data['tabs'][0]['output'][] = array(
'#theme' => 'menu_local_task',
'#link' => $addition,
'#active' => !$has_active && $root_path === $addition['href'],
);
}
}
if (!empty($data['tabs'][0]['output'])) {
uasort($data['tabs'][0]['output'], 'ctools_menu_sort');
$data['tabs'][0]['count'] = count($data['tabs'][0]['output']);
}
if (!empty($data['actions']['output'])) {
uasort($data['actions']['output'], 'ctools_menu_sort');
$data['actions']['count'] = count($data['actions']['output']);
}
}
}