forum_menu_local_tasks_alter(&$data, $router_item, $root_path)Implements hook_menu_local_tasks_alter().
modules/forum/forum.module, line 159
<?php
function forum_menu_local_tasks_alter(&$data, $router_item, $root_path) {
global $user;
// Add action link to 'node/add/forum' on 'forum' page.
if ($root_path == 'forum') {
$tid = (isset($router_item['page_arguments'][0]) ? $router_item['page_arguments'][0] : 0);
$forums = forum_get_forums($tid);
$parents = taxonomy_get_parents_all($tid);
if ($forums || $parents) {
$vid = variable_get('forum_nav_vocabulary', 0);
$vocabulary = taxonomy_vocabulary_load($vid);
$links = array();
// Loop through all bundles for forum taxonomy vocabulary field.
$field = field_info_field('taxonomy_' . $vocabulary->machine_name);
foreach ($field['bundles']['node'] as $type) {
if (node_access('create', $type)) {
$links[$type] = array(
'#theme' => 'menu_local_action',
'#link' => array(
'title' => t('Add new @node_type', array('@node_type' => node_type_get_name($type))),
'href' => 'node/add/' . str_replace('_', '-', $type) . '/' . $tid,
),
);
}
}
if (empty($links)) {
// Authenticated user does not have access to create new topics.
if ($user->uid) {
$links['disallowed'] = array(
'#theme' => 'menu_local_action',
'#link' => array(
'title' => t('You are not allowed to post new content in the forum.'),
),
);
}
// Anonymous user does not have access to create new topics.
else {
$links['login'] = array(
'#theme' => 'menu_local_action',
'#link' => array(
'title' => t('<a href="@login">Log in</a> to post new content in the forum.', array(
'@login' => url('user/login', array('query' => drupal_get_destination())),
)),
'localized_options' => array('html' => TRUE),
),
);
}
}
$data['actions']['output'] = array_merge($data['actions']['output'], $links);
}
}
}
?>