You are here

function nodequeue_link in Nodequeue 5.2

Same name and namespace in other branches
  1. 5 nodequeue.module \nodequeue_link()
  2. 6.2 nodequeue.module \nodequeue_link()

Implementation of hook_link

1 call to nodequeue_link()
nodequeue_views_ajax_link in ./nodequeue.views.inc
Views field handler for "NodeQueue: AJAX Add/Remove Link"

File

./nodequeue.module, line 260

Code

function nodequeue_link($type, $node = NULL, $teaser = FALSE) {
  if ($type == 'node' && variable_get('nodequeue_links', FALSE) && user_access('manipulate queues')) {
    $queues = nodequeue_load_queues_by_type($node->type, 'links');
    $subqueues = nodequeue_get_subqueues_by_node($queues, $node);
    if (empty($subqueues)) {
      return;
    }

    // resort the subqueues to retain consistent ordering:
    ksort($subqueues);

    // Due to caching, we can accidentally get positions leftover
    // from previous iterations on teaser list pages, so we must
    // remove any existing positions here.
    foreach ($subqueues as $id => $subqueue) {
      unset($subqueues[$id]->position);
    }
    nodequeue_set_subqueue_positions($subqueues, $node->nid);
    foreach ($subqueues as $subqueue) {
      $queue = $queues[$subqueue->qid];
      $query_string = nodequeue_get_query_string($node->nid, TRUE);
      $class = 'nodequeue-ajax-toggle nodequeue-toggle-q-' . $queue->qid . ' nodequeue-toggle-sq-' . $subqueue->sqid . ' nodequeue-toggle-ref-' . $subqueue->reference;
      if (!isset($subqueue->position)) {
        $links[$class] = array(
          'title' => nodequeue_title_substitute($queue->link, $queue, $subqueue),
          'href' => "admin/content/nodequeue/{$queue->qid}/add/{$subqueue->sqid}/{$node->nid}",
          'attributes' => array(
            'class' => 'toggle-add',
          ),
          'query' => $query_string,
        );
      }
      else {
        if ($queue->link_remove) {
          $links[$class] = array(
            'title' => nodequeue_title_substitute($queue->link_remove, $queue, $subqueue),
            'href' => "admin/content/nodequeue/{$queue->qid}/remove-node/{$subqueue->sqid}/{$node->nid}",
            'attributes' => array(
              'class' => 'toggle-remove',
            ),
            'query' => $query_string,
          );
        }
      }
    }
    drupal_add_js(drupal_get_path('module', 'nodequeue') . '/nodequeue.js');
    drupal_add_css(drupal_get_path('module', 'nodequeue') . '/nodequeue.css');
  }
  return $links;
}