function nodequeue_menu in Nodequeue 5.2
Same name and namespace in other branches
- 5 nodequeue.module \nodequeue_menu()
- 6.2 nodequeue.module \nodequeue_menu()
- 7.3 nodequeue.module \nodequeue_menu()
- 7.2 nodequeue.module \nodequeue_menu()
Implementation of hook_menu
File
- ./
nodequeue.module, line 40
Code
function nodequeue_menu($may_cache) {
$items = array();
global $user;
$admin_access = user_access('administer nodequeue');
$access = user_access('manipulate queues');
if ($may_cache) {
$manipulate = user_access('manipulate all queues');
// administrative items
$items[] = array(
'path' => 'admin/content/nodequeue',
'title' => t('Node queue'),
'access' => $admin_access || $access,
'callback' => 'nodequeue_view_queues',
'description' => t('Create and maintain simple node queues.'),
'type' => MENU_NORMAL_ITEM,
);
$items[] = array(
'path' => 'admin/content/nodequeue/list',
'title' => t('List'),
'access' => $admin_access || $access,
'callback' => 'nodequeue_view_queues',
'weight' => -1,
'type' => MENU_DEFAULT_LOCAL_TASK,
);
$items[] = array(
'path' => 'admin/content/nodequeue/settings',
'title' => t('Settings'),
'access' => $admin_access,
'callback' => 'drupal_get_form',
'callback arguments' => array(
'nodequeue_admin_settings',
),
'type' => MENU_LOCAL_TASK,
);
$items[] = array(
'path' => 'nodequeue/autocomplete',
'title' => t('Autocomplete'),
'access' => $access,
'callback' => 'nodequeue_autocomplete',
'type' => MENU_CALLBACK,
);
$items[] = array(
'path' => 'nodequeue/ajax/add',
'title' => t('ajax add'),
'access' => $access,
'callback' => 'nodequeue_ajax_add',
'type' => MENU_CALLBACK,
);
$info = nodequeue_api_info();
foreach ($info as $key => $data) {
$items[] = array(
'path' => 'admin/content/nodequeue/add/' . $key,
'title' => t('Add @type', array(
'@type' => strtolower($data['title']),
)),
'access' => $admin_access,
'callback' => 'drupal_get_form',
'callback arguments' => array(
'nodequeue_edit_queue_form',
$key,
),
'type' => MENU_LOCAL_TASK,
);
}
}
else {
if ($user && arg(0) == 'node' && is_numeric(arg(1)) && arg(1) > 0 && $access && variable_get('nodequeue_use_tab', 1)) {
$node = node_load(arg(1));
// nodequeue tab for a node.
if ($node && ($queues = nodequeue_load_queues_by_type($node->type, 'tab'))) {
$items[] = array(
'path' => 'node/' . arg(1) . '/nodequeue',
'title' => variable_get('nodequeue_tab_name', t('Node queue')),
'access' => $access,
'callback' => 'nodequeue_node_tab',
'callback arguments' => array(
$node,
$queues,
),
'type' => MENU_LOCAL_TASK,
'weight' => 5,
);
}
}
// Administrative items for an individual queue.
if ($access && arg(0) == 'admin' && arg(1) == 'content' && arg(2) == 'nodequeue' && is_numeric(arg(3)) && ($queue = nodequeue_load(arg(3)))) {
$access = nodequeue_queue_access($queue);
drupal_set_title(t("Nodequeue '@title'", array(
'@title' => $queue->title,
)));
$items[] = array(
'path' => 'admin/content/nodequeue/' . $queue->qid,
'access' => $access,
'callback' => 'nodequeue_admin_view',
'callback arguments' => array(
$queue,
),
'type' => MENU_CALLBACK,
);
$items[] = array(
'path' => 'admin/content/nodequeue/' . $queue->qid . '/view',
'title' => t('View'),
'access' => $access,
'callback' => 'nodequeue_admin_view',
'callback arguments' => array(
$queue,
),
'weight' => -10,
'type' => MENU_DEFAULT_LOCAL_TASK,
);
// Actual administrative items.
$items[] = array(
'path' => 'admin/content/nodequeue/' . $queue->qid . '/edit',
'title' => t('Edit'),
'access' => $admin_access,
'callback' => 'drupal_get_form',
'callback arguments' => array(
'nodequeue_edit_queue_form',
$queue,
),
'type' => MENU_LOCAL_TASK,
);
$items[] = array(
'path' => 'admin/content/nodequeue/' . $queue->qid . '/delete',
'title' => t('Delete'),
'access' => $admin_access,
'callback' => 'drupal_get_form',
'callback arguments' => array(
'nodequeue_admin_delete',
$queue,
),
'weight' => 5,
'type' => MENU_CALLBACK,
);
$sqid = arg(5);
if (is_numeric($sqid) && ($subqueue = nodequeue_load_subqueue($sqid))) {
$access = $access && nodequeue_api_subqueue_access($subqueue, $user, $queue);
// The following operations require a sqid and a nid.
$nid = arg(6);
if (in_array(arg(4), array(
'add',
'remove-node',
)) && is_numeric($nid)) {
$node = node_load($nid);
}
if ($node && nodequeue_node_access($node->type)) {
$items[] = array(
'path' => "admin/content/nodequeue/{$queue->qid}/add/{$sqid}/{$nid}",
'access' => $access,
'callback' => 'nodequeue_admin_add_node',
'callback arguments' => array(
$queue,
$subqueue,
$node,
),
'type' => MENU_CALLBACK,
);
$items[] = array(
'path' => "admin/content/nodequeue/{$queue->qid}/remove-node/{$sqid}/{$nid}",
'access' => $access,
'callback' => 'nodequeue_admin_remove_node',
'callback arguments' => array(
$queue,
$subqueue,
$node,
),
'type' => MENU_CALLBACK,
);
}
if (is_numeric($nid)) {
// IN this case, $nid is actually $pos but why rename the var?
$items[] = array(
'path' => "admin/content/nodequeue/{$queue->qid}/up/{$sqid}",
'access' => $access,
'callback' => 'nodequeue_admin_up',
'callback arguments' => array(
$queue,
$subqueue,
$nid,
),
'type' => MENU_CALLBACK,
);
$items[] = array(
'path' => "admin/content/nodequeue/{$queue->qid}/down/{$sqid}",
'access' => $access,
'callback' => 'nodequeue_admin_down',
'callback arguments' => array(
$queue,
$subqueue,
$nid,
),
'type' => MENU_CALLBACK,
);
$items[] = array(
'path' => "admin/content/nodequeue/{$queue->qid}/front/{$sqid}",
'access' => $access,
'callback' => 'nodequeue_admin_front',
'callback arguments' => array(
$queue,
$subqueue,
$nid,
),
'type' => MENU_CALLBACK,
);
$items[] = array(
'path' => "admin/content/nodequeue/{$queue->qid}/back/{$sqid}",
'access' => $access,
'callback' => 'nodequeue_admin_back',
'callback arguments' => array(
$queue,
$subqueue,
$nid,
),
'type' => MENU_CALLBACK,
);
$items[] = array(
'path' => "admin/content/nodequeue/{$queue->qid}/remove/{$sqid}",
'access' => $access,
'callback' => 'nodequeue_admin_remove',
'callback arguments' => array(
$queue,
$subqueue,
$nid,
),
'type' => MENU_CALLBACK,
);
}
$items[] = array(
'path' => "admin/content/nodequeue/{$queue->qid}/clear/{$sqid}",
'title' => t('Clear'),
'access' => $access,
'callback' => 'drupal_get_form',
'callback arguments' => array(
'nodequeue_clear_confirm',
$queue,
$subqueue,
),
'type' => MENU_CALLBACK,
);
}
}
}
return $items;
}