function nodequeue_node_tab in Nodequeue 6.2
Same name and namespace in other branches
- 5.2 nodequeue.module \nodequeue_node_tab()
- 7.3 includes/nodequeue.admin.inc \nodequeue_node_tab()
- 7.2 includes/nodequeue.admin.inc \nodequeue_node_tab()
Display the queue controls for a node.
Parameters
$node: The loaded $node; will be loaded by the hook_menu.
1 string reference to 'nodequeue_node_tab'
- nodequeue_menu in ./
nodequeue.module - Implementation of hook_menu
File
- includes/
nodequeue.admin.inc, line 108 - Admin page callbacks for the nodequeue module.
Code
function nodequeue_node_tab($node) {
$output = '';
// moved from hook_menu due to architecture change. This function seems to only be called from menu anyway...
$queues = nodequeue_load_queues_by_type($node->type, 'tab');
if (!$queues) {
return FALSE;
}
$header = array();
$header[] = array(
'data' => t('Title'),
'field' => 'title',
'sort' => 'asc',
'class' => 'nodequeue-title',
);
if (variable_get('nodequeue_tab_display_max', 1)) {
$header[] = array(
'data' => t('Max nodes'),
'field' => 'size',
'class' => 'nodequeue-max-nodes',
);
}
$header[] = array(
'data' => t('In queue'),
'field' => 'count',
'class' => 'nodequeue-in-queue',
);
$header[] = array(
'data' => t('Operation'),
'class' => 'nodequeue-operation',
);
$table_sort = tablesort_init($header);
$subqueues = nodequeue_get_subqueues_by_node($queues, $node);
nodequeue_set_subqueue_positions($subqueues, $node->nid);
$sort_primary = array();
$sort_secondary = array();
$sort_direction_regular = array(
'asc' => SORT_ASC,
'desc' => SORT_DESC,
);
$sort_direction_reverse = array(
'asc' => SORT_DESC,
'desc' => SORT_ASC,
);
foreach ($subqueues as $subqueue) {
$queue = $queues[$subqueue->qid];
$sort_secondary[] = $queue->title;
switch ($table_sort['sql']) {
case 'title':
default:
$sort_primary[] = $queue->title;
$sort_direction = $sort_direction_regular;
break;
case 'size':
$sort_primary[] = $queue->size;
$sort_direction = $sort_direction_reverse;
break;
case 'count':
$sort_primary[] = $subqueue->count;
$sort_direction = $sort_direction_reverse;
break;
}
}
if (!empty($table_sort)) {
if (strtolower($table_sort['sort']) == 'desc') {
array_multisort($sort_primary, $sort_direction['desc'], $sort_secondary, $subqueues);
// Re-indexes array keys; key no longer equals qid.
}
else {
array_multisort($sort_primary, $sort_direction['asc'], $sort_secondary, $subqueues);
// Re-indexes array keys; key no longer equals qid.
}
}
$rows = array();
foreach ($subqueues as $subqueue) {
$queue = $queues[$subqueue->qid];
$id = nodequeue_get_content_id($queue, $node);
if (module_exists('translation')) {
$subqueue = array(
$subqueue->sqid => $subqueue,
);
nodequeue_set_subqueue_positions($subqueue, $id);
$subqueue = array_shift($subqueue);
}
if (empty($subqueue->position)) {
$op = l(t('Add to queue'), "admin/content/nodequeue/{$queue->qid}/add/{$subqueue->sqid}/{$id}", array(
'attributes' => array(
'class' => 'nodequeue-ajax-toggle',
),
'query' => drupal_get_destination() . '&tab&' . nodequeue_get_token($id),
'purl' => array(
'disabled' => TRUE,
),
));
}
else {
$op = l(t('Remove from queue'), "admin/content/nodequeue/{$queue->qid}/remove-node/{$subqueue->sqid}/{$id}", array(
'attributes' => array(
'class' => 'nodequeue-ajax-toggle',
),
'query' => drupal_get_destination() . '&tab&' . nodequeue_get_token($id),
'purl' => array(
'disabled' => TRUE,
),
));
}
$row = array();
$row[] = array(
'class' => 'nodequeue-title',
'data' => l(nodequeue_title_substitute($queue->subqueue_title, $queue, $subqueue), "admin/content/nodequeue/{$queue->qid}/view/{$subqueue->sqid}"),
);
if (variable_get('nodequeue_tab_display_max', 1)) {
$row[] = array(
'class' => 'nodequeue-max-nodes',
'data' => $queue->size ? $queue->size : t('Infinite'),
);
}
$row[] = array(
'id' => 'nodequeue-count-' . $subqueue->sqid,
'class' => 'nodequeue-in-queue',
'data' => nodequeue_subqueue_size_text($queue->size, $subqueue->count, FALSE),
);
$row[] = array(
'class' => 'nodequeue-operation',
'data' => $op,
);
$rows[] = $row;
}
$output .= theme('table', $header, $rows, array(
'class' => 'nodequeue-table',
));
drupal_add_js(drupal_get_path('module', 'nodequeue') . '/nodequeue.js');
drupal_add_css(drupal_get_path('module', 'nodequeue') . '/nodequeue.css');
return $output;
}