You are here

function nodequeue_node_tab in Nodequeue 7.2

Same name and namespace in other branches
  1. 5.2 nodequeue.module \nodequeue_node_tab()
  2. 6.2 includes/nodequeue.admin.inc \nodequeue_node_tab()
  3. 7.3 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.

Return value

string return data in html table

1 string reference to 'nodequeue_node_tab'
nodequeue_menu in ./nodequeue.module
Implements hook_menu().

File

includes/nodequeue.admin.inc, line 112
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' => array(
      'nodequeue-title',
    ),
  );
  $header[] = array(
    'data' => t('Max nodes'),
    'field' => 'size',
    'class' => array(
      'nodequeue-max-nodes',
    ),
  );
  $header[] = array(
    'data' => t('In queue'),
    'field' => 'count',
    'class' => array(
      'nodequeue-in-queue',
    ),
  );
  $header[] = array(
    'data' => t('Operation'),
    'class' => array(
      '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'), "nodequeue/{$queue->qid}/add-node/{$subqueue->sqid}/{$id}", array(
        'attributes' => array(
          'class' => array(
            'nodequeue-ajax-toggle',
          ),
        ),
        'query' => nodequeue_get_query_string($id, TRUE, array(
          'tab' => '1',
        )),
        'purl' => array(
          'disabled' => TRUE,
        ),
      ));
    }
    else {
      $op = l(t('Remove from queue'), "nodequeue/{$queue->qid}/remove-node/{$subqueue->sqid}/{$id}", array(
        'attributes' => array(
          'class' => array(
            'nodequeue-ajax-toggle',
          ),
        ),
        'query' => nodequeue_get_query_string($id, TRUE, array(
          'tab' => '1',
        )),
        'purl' => array(
          'disabled' => TRUE,
        ),
      ));
    }
    $row = array();
    $row[] = array(
      'class' => array(
        'nodequeue-title',
      ),
      'data' => l(nodequeue_title_substitute($queue->subqueue_title, $queue, $subqueue), "admin/structure/nodequeue/{$queue->qid}/view/{$subqueue->sqid}"),
    );
    $row[] = array(
      'class' => array(
        'nodequeue-max-nodes',
      ),
      'data' => $queue->size ? $queue->size : t('Infinite'),
    );
    $row[] = array(
      'id' => 'nodequeue-count-' . $subqueue->sqid,
      'class' => array(
        'nodequeue-in-queue',
      ),
      'data' => nodequeue_subqueue_size_text($queue->size, $subqueue->count, FALSE),
    );
    $row[] = array(
      'class' => array(
        'nodequeue-operation',
      ),
      'data' => $op,
    );
    $rows[] = $row;
  }
  $output .= theme('table', array(
    'header' => $header,
    'rows' => $rows,
    'attributes' => array(
      'class' => array(
        'nodequeue-table',
      ),
    ),
  ));
  drupal_add_js(drupal_get_path('module', 'nodequeue') . '/nodequeue.js');
  drupal_add_css(drupal_get_path('module', 'nodequeue') . '/nodequeue.css');
  return $output;
}