diff --git a/html/profiles/openpublic/modules/wilsoncenter/wilson_theme_helper/inc/wilson_theme_helper.preprocess_nodes.inc b/html/profiles/openpublic/modules/wilsoncenter/wilson_theme_helper/inc/wilson_theme_helper.preprocess_nodes.inc
index c179b49..4b0218c 100644
--- a/html/profiles/openpublic/modules/wilsoncenter/wilson_theme_helper/inc/wilson_theme_helper.preprocess_nodes.inc
+++ b/html/profiles/openpublic/modules/wilsoncenter/wilson_theme_helper/inc/wilson_theme_helper.preprocess_nodes.inc
@@ -421,7 +421,12 @@ function wilson_theme_helper_preprocess_node_program_page(&$vars) {
   
     $multimedia = views_embed_view('multimedia', 'page_2', $term_name);
     if (stripos($multimedia, 'view-content')) {
-      $more_links[] = l(t('Multimedia'), 'program-tv-and-radio/' . $term_name, array('attributes' => array('class' => array('more-strip-link', 'last'))));
+      $more_links[] = l(t('Multimedia'), 'program-tv-and-radio/' . $term_name, array('attributes' => array('class' => array('more-strip-link'))));
+    }
+    
+    $experts = views_embed_view('experts', 'page_2', $term_name);
+    if (stripos($experts, 'view-content')) {
+      $more_links[] = l(t('Scholars'), 'program-scholars/' . $term_name, array('attributes' => array('class' => array('more-strip-link', 'last'))));
     }
   
     $vars['more_strip'] = t('More') . ' ' . implode(' ', $more_links);
diff --git a/html/scripts/import_book.php b/html/scripts/import_book.php
index d575121..8a47edf 100644
--- a/html/scripts/import_book.php
+++ b/html/scripts/import_book.php
@@ -1,6 +1,9 @@
 <?php
 
-$import_file = drupal_realpath('public://import-book.txt');
+require_once '/opt/development/brenk/wilsoncenter/html/includes/bootstrap.inc';
+drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
+
+$import_file = drupal_realpath('public://import-book.xml');
 
 /**
  * Attempt to pull from local file if available
@@ -82,13 +85,13 @@ foreach ($xmldata as $xml){
     'isbn' => (string)$xml->isbn,
     'publication_year' => (string)$xml->publication_year,
     'price' => (string)$xml->price,
-    'summary' => (string)$xml->summary,
+    'summary' => _cleanse_text((string)$xml->summary),
     'body' => (string)$xml->body,
     'thumbnail' => $thumbnail,
     'mainimage' => $mainimage,
     'buynowurl' => (string)$xml->buynowurl,
-    'reviews' => (string)$xml->reviews,
-    'toc' => (string)$xml->other_meta->toc
+    'reviews' => _cleanse_text((string)$xml->reviews),
+    'toc' => _cleanse_text((string)$xml->other_meta->toc)
   );
 
   /**
@@ -107,7 +110,7 @@ foreach ($xmldata as $xml){
           '0' => array(
             'value' => $book->body,
             'summary' => '',
-            'format' => 'full_html',
+            'format' => 'filtered_html',
             'safe_value' => $book->body,
             'safe_summary' => '',
           ),
@@ -175,7 +178,7 @@ foreach ($xmldata as $xml){
         ),
       ),
     ),
-    'toc' => array(
+    'field_chapter_list' => array(
       'und' => array(
         '0' => array(
           'value' => $book->toc,
@@ -202,5 +205,9 @@ foreach ($xmldata as $xml){
   /** Save node **/
   node_save($node);
 
-  if(++$x == 3) break;//for debugging
+  //if(++$x == 3) break;//for debugging
+}
+
+function _cleanse_text($text) {
+  return str_ireplace('<br>', '<br />', $text);
 }
\ No newline at end of file
diff --git a/html/sites/all/modules/contrib/nodequeue/1023606-qid-to-name-6.patch b/html/sites/all/modules/contrib/nodequeue/1023606-qid-to-name-6.patch
deleted file mode 100644
index 6345a7c..0000000
--- a/html/sites/all/modules/contrib/nodequeue/1023606-qid-to-name-6.patch
+++ /dev/null
@@ -1,279 +0,0 @@
-Index: nodequeue.install
-===================================================================
-RCS file: /cvs/drupal-contrib/contributions/modules/nodequeue/nodequeue.install,v
-retrieving revision 1.23
-diff -u -p -r1.23 nodequeue.install
---- nodequeue.install	7 Oct 2010 02:50:35 -0000	1.23
-+++ nodequeue.install	31 Jan 2011 17:29:00 -0000
-@@ -13,8 +13,8 @@ function nodequeue_schema() {
-     'fields' => array(
-       'qid' => array(
-         'description' => 'The primary identifier for a queue.',
--        'type' => 'serial',
--        'unsigned' => TRUE,
-+        'type' => 'varchar',
-+        'length' => 255,
-         'not null' => TRUE
-       ),
-       'title' => array(
-@@ -92,9 +92,8 @@ function nodequeue_schema() {
-     'fields' => array(
-       'qid' => array(
-         'description' => 'Primary key for {nodequeue_queue}',
--        'type' => 'int',
--        'size' => 'big',
--        'unsigned' => TRUE,
-+        'type' => 'varchar',
-+        'length' => 255,
-         'not null' => TRUE
-       ),
-       'rid' => array(
-@@ -115,9 +114,8 @@ function nodequeue_schema() {
-     'fields' => array(
-       'qid' => array(
-         'description' => 'Primary key for {nodequeue_queue}',
--        'type' => 'int',
--        'size' => 'big',
--        'unsigned' => TRUE,
-+        'type' => 'varchar',
-+        'length' => 255,
-         'not null' => TRUE
-       ),
-       'type' => array(
-@@ -142,14 +140,14 @@ function nodequeue_schema() {
-     'fields' => array(
-       'sqid' => array(
-         'description' => 'Subqueue identifier',
--        'type' => 'serial',
--        'unsigned' => TRUE,
-+        'type' => 'varchar',
-+        'length' => 255,
-         'not null' => TRUE,
-       ),
-       'qid' => array(
-         'description' => 'Queue identifier.',
--        'type' => 'int',
--        'unsigned' => TRUE,
-+        'type' => 'varchar',
-+        'length' => 255,
-         'not null' => TRUE,
-       ),
-       'reference' => array(
-@@ -180,14 +178,14 @@ function nodequeue_schema() {
-     'fields' => array(
-       'qid' => array(
-         'description' => 'Queue id',
--        'type' => 'int',
--        'unsigned' => TRUE,
-+        'type' => 'varchar',
-+        'length' => 255,
-         'not null' => TRUE,
-       ),
-       'sqid' => array(
-         'description' => 'Subqueue this node is in',
--        'type' => 'int',
--        'unsigned' => TRUE,
-+        'type' => 'varchar',
-+        'length' => 255,
-         'not null' => TRUE,
-       ),
-       'nid' => array(
-@@ -290,8 +288,8 @@ function nodequeue_update_5201() {
-     'fields' => array(
-       'sqid' => array(
-         'description' => t('Subqueue identifier'),
--        'type' => 'serial',
--        'unsigned' => TRUE,
-+        'type' => 'varchar',
-+        'length' => 255,
-         'not null' => TRUE,
-       ),
-       'qid' => array(
-@@ -446,6 +444,11 @@ function nodequeue_update_6005() {
-   $ret[] = update_sql("UPDATE {system} set name = 'nodequeue_view_per_queue' where name = 'nodequeue_automatic_views_generation'");
-   return $ret;
- }
-+
-+function nodequeue_update_7001() {
-+}
-+
-+
- /**
-  * Implements hook_requirements().
-  *
-Index: nodequeue.module
-===================================================================
-RCS file: /cvs/drupal-contrib/contributions/modules/nodequeue/nodequeue.module,v
-retrieving revision 1.116
-diff -u -p -r1.116 nodequeue.module
---- nodequeue.module	5 Jan 2011 06:13:22 -0000	1.116
-+++ nodequeue.module	31 Jan 2011 17:29:01 -0000
-@@ -193,12 +193,18 @@ function nodequeue_node_delete($node) {
- }
- 
- /**
-- * Implements hook_node_view().
-+ * Implements hook_nodeapi().
-  */
-+function nodequeue_nodeapi_OLD(&$node, $op, $teaser = NULL, $page = NULL) { }
- 
--function nodequeue_node_view(&$node, $view_mode) {
-+/**
-+ * Implements hook_link().
-+ */
-+function nodequeue_link($type, $node = NULL, $teaser = FALSE) {
-   $links = array();
--  if (variable_get('nodequeue_links', 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);
-@@ -248,12 +254,7 @@ function nodequeue_node_view(&$node, $vi
-     drupal_add_js(drupal_get_path('module', 'nodequeue') . '/nodequeue.js');
-     drupal_add_css(drupal_get_path('module', 'nodequeue') . '/nodequeue.css');
-   }
--  if (!empty($links)) {
--    $node->content['links']['nodequeue'] = array(
--      '#links' => $links,
--      '#theme' => 'links__node__nodequeue',
--    );
--  }
-+  return $links;
- }
- 
- /**
-@@ -612,11 +613,11 @@ function nodequeue_view_queues() {
-     if ($queue->subqueues == 1) {
-       $qids[] = $queue->qid;
-     }
--    $sort_secondary[] = drupal_strtolower($queue->title);
-+    $sort_secondary[] = $queue->title;
-     switch ($table_sort['sql']) {
-       case 'title':
-       default:
--        $sort_primary[] = drupal_strtolower($queue->title);
-+        $sort_primary[] = $queue->title;
-         $sort_direction = $sort_direction_regular;
-         break;
-       case 'size':
-@@ -737,6 +738,18 @@ function nodequeue_edit_queue_form($form
-     '#description' => t('Enter the name of the queue'),
-   );
- 
-+  $form['name'] = array(
-+    '#type' => 'textfield',
-+    '#title' => t('Name'),
-+    '#default_value' => isset($queue->qid) ? $queue->qid : '',
-+    '#disabled' => isset($queue->qid) ? TRUE : FALSE,
-+    '#size' => 50,
-+    '#maxlength' => 64,
-+    '#description' => t('Enter the machine name of the queue'),
-+  );
-+
-+  // This is a value; as the default nodequeue implementation has just one
-+
-   // This is a value; as the default nodequeue implementation has just one
-   // queue per nodequeue, this field is totally redundant. Plugins can
-   // override this.
-@@ -1392,10 +1405,7 @@ function nodequeue_clear_confirm_submit(
- /**
-  * Page callback for autocomplete.
-  */
--function nodequeue_autocomplete() {
--  $args = func_get_args();
--  $sqid = array_shift($args);
--  $string = implode('/', $args);
-+function nodequeue_autocomplete($sqid = NULL, $string = NULL) {
-   $matches = _nodequeue_autocomplete($sqid, $string);
-   drupal_json_output(drupal_map_assoc($matches));
- }
-@@ -1403,7 +1413,7 @@ function nodequeue_autocomplete() {
- function _nodequeue_autocomplete($sqid, $string) {
-   $output = array();
- 
--  if (!is_numeric($sqid) || !$string) {
-+  if (!$sqid || empty($sqid) || !$string) {
-     return $output;
-   }
- 
-@@ -1778,8 +1788,7 @@ function subqueue_load($sqid) {
-   if (!$sqid) {
-     return NULL;
-   }
--  $queues = nodequeue_load_subqueues(array($sqid));
--  return !empty($queues) ? array_shift($queues) : array();
-+  return array_shift(nodequeue_load_subqueues(array($sqid)));
- }
- 
- /**
-@@ -1926,7 +1935,7 @@ function nodequeue_save(&$queue) {
-     'link' => $queue->link,
-     'link_remove' => $queue->link_remove,
-     'owner' => $queue->owner,
--    'show_in_links' => ($queue->show_in_links) ? 1 : 0,
-+    'show_in_links' => $queue->show_in_links,
-     'show_in_tab' => $queue->show_in_tab,
-     'show_in_ui' => $queue->show_in_ui,
-     'i18n' => $queue->i18n,
-@@ -1935,7 +1944,9 @@ function nodequeue_save(&$queue) {
-   );
-   
-   if (!isset($queue->qid)) {
--    $queue->qid = db_insert('nodequeue_queue')
-+    $queue->qid = isset($queue->name) ? $queue->name : uniqid();
-+    $nodequeue_queue_fields['qid'] = $queue->qid;
-+    db_insert('nodequeue_queue')
-       ->fields($nodequeue_queue_fields)
-       ->execute();
-     
-@@ -2030,13 +2041,11 @@ function nodequeue_delete($qid) {
- /**
-  * Add a new subqueue to a queue.
-  *
-- * @param $queue
-- *   The queue object that is the parent of this subqueue.
-- * @param $title
-- *   The title of the subqueue.
-+ * @param $qid
-+ *   The queue id. This should not be the full queue object.
-  * @param $reference
-  *   A reference that uniquely identifies this subqueue. If NULL it will
-- *   be assigned the sqid.
-+ *   be assigned to the sqid.
-  */
- function nodequeue_add_subqueue(&$queue, $title, $reference = NULL) {
-   if (empty($reference)) {
-@@ -2051,9 +2060,10 @@ function nodequeue_add_subqueue(&$queue,
-   $subqueue->qid = $queue->qid;
-   $subqueue->title = $title;
- 
--  
--  $subqueue->sqid = db_insert('nodequeue_subqueue')
-+  $subqueue->sqid = isset($subqueue->name) ? $subqueue->name : uniqid();
-+  db_insert('nodequeue_subqueue')
-     ->fields(array(
-+      'sqid' =>$subqueue->sqid,
-       'qid' => $queue->qid,
-       'reference' => $insert_reference,
-       'title' => $title,
-@@ -2449,7 +2459,7 @@ function nodequeue_subqueue_size_text($m
-   }
-   else {
-     if ($long) {
--      $message = theme('nodequeue_subqueue_count_text', $count);
-+      $message = theme('nodequeue_subqueue_count_text', array('count' => $count));
-     }
-     else {
-       $message = $count;
-@@ -3058,6 +3068,7 @@ function theme_nodequeue_subqueue_full_t
-  *
-  * @ingroup themeable
-  */
--function theme_nodequeue_subqueue_count_text($count) {
--  return t('@count in queue', array('@count' => $count));
-+function theme_nodequeue_subqueue_count_text($vars) {
-+  return t('@count in queue', array('@count' => $vars['count']));
- }
-+
diff --git a/html/sites/all/modules/contrib/nodequeue/PATCHES.txt b/html/sites/all/modules/contrib/nodequeue/PATCHES.txt
deleted file mode 100644
index b442ea5..0000000
--- a/html/sites/all/modules/contrib/nodequeue/PATCHES.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-http://drupal.org/files/issues/nodequeue_dd_js_994996_1.patch
-http://drupal.org/files/issues/1023606-qid-to-name-6.patch
-http://drupal.org/files/issues/nodequeue_d7_autocomplete-872444-6.patch
-http://drupal.org/files/issues/nodequeue-d7-db-insert-errors-fix.patch
-http://drupal.org/files/issues/nodequeue-apachesolor-1015104-2.patch
diff --git a/html/sites/all/modules/contrib/nodequeue/README.txt b/html/sites/all/modules/contrib/nodequeue/README.txt
index e4c0e03..1635e93 100644
--- a/html/sites/all/modules/contrib/nodequeue/README.txt
+++ b/html/sites/all/modules/contrib/nodequeue/README.txt
@@ -1,4 +1,3 @@
-$Id: README.txt,v 1.7 2009/12/20 00:00:27 ezrag Exp $
 The Node Queue module allows an administrator to arbitrarily put nodes in a
 group for some purpose; examples of this might be to highlight one particular
 node, as in a typical news site's Lead Article. Another use might be to create
@@ -20,7 +19,6 @@ When a node is added to the queue, it is added to the back of the queue. If a
 queue is full when a node is added, the front of the queue is removed. 
 
 Nodequeue has support for nodes with i18n Internationalizations.
-You must install the Translation Helpers module from http://drupal.org/project/translation_helpers to use this functionality.
 
 It is highly recommended that you use the Views module to display your queues.
 However, if you choose not to, here is an alternative: Writing a PHP snippet.
diff --git a/html/sites/all/modules/contrib/nodequeue/addons/nodequeue_service/nodequeue_service.inc b/html/sites/all/modules/contrib/nodequeue/addons/nodequeue_service/nodequeue_service.inc
index 091abf0..3fdcb60 100644
--- a/html/sites/all/modules/contrib/nodequeue/addons/nodequeue_service/nodequeue_service.inc
+++ b/html/sites/all/modules/contrib/nodequeue/addons/nodequeue_service/nodequeue_service.inc
@@ -1,5 +1,4 @@
 <?php
-// $Id: nodequeue_service.inc,v 1.2 2010/10/07 02:50:35 ezrag Exp $
 
 /**
  * @author Greg Harvey - http://www.drupaler.co.uk
diff --git a/html/sites/all/modules/contrib/nodequeue/addons/nodequeue_service/nodequeue_service.info b/html/sites/all/modules/contrib/nodequeue/addons/nodequeue_service/nodequeue_service.info
index 12d31b4..1ddb6e0 100644
--- a/html/sites/all/modules/contrib/nodequeue/addons/nodequeue_service/nodequeue_service.info
+++ b/html/sites/all/modules/contrib/nodequeue/addons/nodequeue_service/nodequeue_service.info
@@ -8,9 +8,9 @@ package         = "Nodequeue"
 files[] = nodequeue_service.inc
 files[] = nodequeue_service.module
 
-; Information added by drupal.org packaging script on 2011-01-05
-version = "7.x-2.0-alpha1"
+; Information added by drupal.org packaging script on 2011-05-20
+version = "7.x-2.0-alpha2"
 core = "7.x"
 project = "nodequeue"
-datestamp = "1294208465"
+datestamp = "1305929516"
 
diff --git a/html/sites/all/modules/contrib/nodequeue/addons/nodequeue_service/nodequeue_service.module b/html/sites/all/modules/contrib/nodequeue/addons/nodequeue_service/nodequeue_service.module
index 3d471c1..9366dd6 100644
--- a/html/sites/all/modules/contrib/nodequeue/addons/nodequeue_service/nodequeue_service.module
+++ b/html/sites/all/modules/contrib/nodequeue/addons/nodequeue_service/nodequeue_service.module
@@ -1,5 +1,4 @@
 <?php
-// $Id: nodequeue_service.module,v 1.2 2010/10/07 02:50:35 ezrag Exp $
 
 /**
  * @author Greg Harvey - http://www.drupaler.co.uk
diff --git a/html/sites/all/modules/contrib/nodequeue/help/api.html b/html/sites/all/modules/contrib/nodequeue/help/api.html
index e615a75..a9f7e09 100644
--- a/html/sites/all/modules/contrib/nodequeue/help/api.html
+++ b/html/sites/all/modules/contrib/nodequeue/help/api.html
@@ -1,4 +1,3 @@
-<!-- $Id: api.html,v 1.1 2008/05/30 18:41:50 merlinofchaos Exp $ -->
 Various API functions can be used as PHP snippets to include nodequeue functionality without Views. These are not nearly as powerful as simply using Nodequeue with Views, but they are available. Mostly these are leftover from older versions of nodequeue and they have not really been updated for Nodequeue 2.
 
 <h2>To create a block to display node titles of a queue</h2>
diff --git a/html/sites/all/modules/contrib/nodequeue/help/smartqueue.html b/html/sites/all/modules/contrib/nodequeue/help/smartqueue.html
index 40bad90..1208bdd 100644
--- a/html/sites/all/modules/contrib/nodequeue/help/smartqueue.html
+++ b/html/sites/all/modules/contrib/nodequeue/help/smartqueue.html
@@ -1,4 +1,3 @@
-<!-- $Id: smartqueue.html,v 1.1 2008/05/30 18:41:50 merlinofchaos Exp $ -->
 Smartqueues are a collection of subqueues wrapped up into a single queue; each subqueue within a smartqueue has some special attachment. For example, taxonomy smartqueues are attached to terms; nodes with a specific term can only be added to subqueues that match that term.
 
 What this means is that if you have a taxonomy vocabulary named 'fruit', and in that vocabulary you have the terms 'apple', 'orange' and 'banana that you can create a taxonomy smartqueue associated with this vocabulary. A node tagged 'apple' will only be eligible to be added to the 'apple' subqueue. You could call this queue "Top %subqueues" and each taxonomy term will have its own top ten list. Each node will still only have a manageable number of queues listed on its nodequeue tab or on the links page.
diff --git a/html/sites/all/modules/contrib/nodequeue/includes/nodequeue.actions.inc b/html/sites/all/modules/contrib/nodequeue/includes/nodequeue.actions.inc
index 0a27380..d00bd54 100644
--- a/html/sites/all/modules/contrib/nodequeue/includes/nodequeue.actions.inc
+++ b/html/sites/all/modules/contrib/nodequeue/includes/nodequeue.actions.inc
@@ -1,5 +1,4 @@
 <?php
-// $Id: nodequeue.actions.inc,v 1.5 2010/10/07 02:50:35 ezrag Exp $
 
 /**
  * @file nodequeue.actions.inc
@@ -16,8 +15,9 @@ function nodequeue_action_info() {
       'label' => t('Add to Nodequeues'),
       'configurable' => TRUE,
       'triggers' => array(
-        'nodeapi_insert',
-        'nodeapi_update',
+        'node_presave',
+        'node_insert',
+        'node_update',
       ),
     ),
     'nodequeue_remove_action' => array(
@@ -25,8 +25,7 @@ function nodequeue_action_info() {
       'label' => t('Remove from Nodequeues'),
       'configurable' => TRUE,
       'triggers' => array(
-        'nodeapi_insert',
-        'nodeapi_update',
+        'node_delete',
       ),
     ),
   );
@@ -41,7 +40,7 @@ function nodequeue_add_action_form($context) {
     $context['qids'] = '';
   }
 
-  $queues = nodequeue_load_queues(nodequeue_get_all_qids(500, TRUE), TRUE);
+  $queues = nodequeue_load_queues(nodequeue_get_all_qids(0, 0, TRUE), TRUE);
   foreach ($queues as $qid => $queue) {
     $options[$qid] = $queue->title;
   }
@@ -144,7 +143,7 @@ function action_nodequeue_add($op, $edit = array(), $node) {
       if (!isset($edit['qids'])) {
         $edit['qids'] = '';
       }
-      $queues = nodequeue_load_queues(nodequeue_get_all_qids(500, TRUE), TRUE);
+      $queues = nodequeue_load_queues(nodequeue_get_all_qids(0, 0, TRUE), TRUE);
       foreach ($queues as $qid => $queue) {
         $options[$qid] = $queue->title;
       }
@@ -187,7 +186,7 @@ function nodequeue_remove_action_form($context) {
     $context['qids'] = array();
   }
 
-  $queues = nodequeue_load_queues(nodequeue_get_all_qids(500, TRUE), TRUE);
+  $queues = nodequeue_load_queues(nodequeue_get_all_qids(0, 0, TRUE), TRUE);
   foreach ($queues as $qid => $queue) {
     $options[$qid] = $queue->title;
   }
@@ -217,10 +216,14 @@ function nodequeue_remove_action_submit($form, &$form_state) {
 function nodequeue_remove_action($node, $context) {
   $qids = $context['qids'];
   // If a node is being deleted, ensure it's also removed from any queues.
-  $placeholders = implode(',', array_fill(0, count($qids), '%d'));
   $args = $qids;
-  $args[] = $node->nid;
-  $result = db_query("SELECT * FROM {nodequeue_nodes} WHERE qid IN ($placeholders) AND nid = %d", $args);
+  $result = db_select('nodequeue_nodes', 'n')
+    ->fields('n')
+    ->condition('nid', $node->nid)
+    ->condition('qid', $args)
+    ->execute()
+    ->fetchAll();
+
   foreach ($result as $obj) {
     // This removes by nid, not position, because if we happen to have a
     // node in a queue twice, the 2nd position would be wrong.
@@ -245,10 +248,14 @@ function action_nodequeue_remove($op, $edit = array(), $node) {
     case 'do':
       $qids = $edit['qids'];
       // If a node is being deleted, ensure it's also removed from any queues.
-      $placeholders = implode(',', array_fill(0, count($qids), '%d'));
       $args = $qids;
-      $args[] = $node->nid;
-      $result = db_query("SELECT * FROM {nodequeue_nodes} WHERE qid IN ($placeholders) AND nid = %d", $args);
+      $result = db_select('nodequeue_nodes', 'n')
+        ->fields('n')
+        ->condition('nid', $node->nid)
+        ->condition('qid', $args)
+        ->execute()
+        ->fetchAll();
+
       foreach ($result as $obj) {
         // This removes by nid, not position, because if we happen to have a
         // node in a queue twice, the 2nd position would be wrong.
@@ -263,7 +270,7 @@ function action_nodequeue_remove($op, $edit = array(), $node) {
         $edit['qids'] = array();
       }
 
-      $queues = nodequeue_load_queues(nodequeue_get_all_qids(500, TRUE), TRUE);
+      $queues = nodequeue_load_queues(nodequeue_get_all_qids(0, 0, TRUE), TRUE);
       foreach ($queues as $qid => $queue) {
         $options[$qid] = $queue->title;
       }
diff --git a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue.views.inc b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue.views.inc
index b2d41ca..a7ea7cb 100644
--- a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue.views.inc
+++ b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue.views.inc
@@ -1,5 +1,4 @@
 <?php
-// $Id: nodequeue.views.inc,v 1.6 2010/12/24 20:55:09 ezrag Exp $
 
 /**
  * @file nodequeue.views.inc
@@ -110,6 +109,24 @@ function nodequeue_views_data() {
     ),
   );
 
+  $data['nodequeue_queue']['name'] = array(
+    'title' => t('Queue machine name'),
+    'help' => t('The machine name of the queue.'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
   // ----------------------------------------------------------------
   // nodequeue_queue table
   $data['nodequeue_queue']['table']['group'] = t('Nodequeue');
diff --git a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue.views_default.inc b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue.views_default.inc
index 337f789..961034d 100644
--- a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue.views_default.inc
+++ b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue.views_default.inc
@@ -1,5 +1,4 @@
 <?php
-// $Id: nodequeue.views_default.inc,v 1.7 2010/12/24 20:55:09 ezrag Exp $
 
 /**
  * @file
diff --git a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_all_queues.inc b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_all_queues.inc
index 8014465..257dd68 100644
--- a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_all_queues.inc
+++ b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_all_queues.inc
@@ -1,5 +1,4 @@
 <?php
-//$Id: nodequeue_handler_field_all_queues.inc,v 1.3 2010/12/24 20:55:09 ezrag Exp $
 /**
  * Field handler for all queues.
  *
diff --git a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_all_subqueues.inc b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_all_subqueues.inc
index f4703da..c44c991 100644
--- a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_all_subqueues.inc
+++ b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_all_subqueues.inc
@@ -1,5 +1,4 @@
 <?php
-//$Id: nodequeue_handler_field_all_subqueues.inc,v 1.3 2010/10/07 02:50:35 ezrag Exp $
 /**
  * Field handler for all subqueues
  *
diff --git a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_links.inc b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_links.inc
index f030cd5..f25ff0f 100644
--- a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_links.inc
+++ b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_links.inc
@@ -1,5 +1,4 @@
 <?php
-//$Id: nodequeue_handler_field_links.inc,v 1.4 2010/10/07 02:50:35 ezrag Exp $
 /**
  * Views field handler for the nodequeue queue links
  */
diff --git a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_queue_tab.inc b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_queue_tab.inc
index a11feee..0732770 100644
--- a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_queue_tab.inc
+++ b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_field_queue_tab.inc
@@ -1,5 +1,4 @@
 <?php
-//$Id: nodequeue_handler_field_queue_tab.inc,v 1.2 2010/10/07 02:50:35 ezrag Exp $
 /**
  * Views field handler for the nodequeue queue links
  */
diff --git a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_filter_in_queue.inc b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_filter_in_queue.inc
index 0b75617..5b7c289 100644
--- a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_filter_in_queue.inc
+++ b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_filter_in_queue.inc
@@ -1,5 +1,4 @@
 <?php
-//$Id: nodequeue_handler_filter_in_queue.inc,v 1.2 2010/12/24 20:55:09 ezrag Exp $
 /**
  * Handler to filter for nodes that are not in a queue.
  */
diff --git a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_relationship_nodequeue.inc b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_relationship_nodequeue.inc
index 142403a..5f01029 100644
--- a/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_relationship_nodequeue.inc
+++ b/html/sites/all/modules/contrib/nodequeue/includes/views/nodequeue_handler_relationship_nodequeue.inc
@@ -1,14 +1,31 @@
 <?php
-//$Id: nodequeue_handler_relationship_nodequeue.inc,v 1.4 2010/12/24 20:55:09 ezrag Exp $
+
 /**
  * Specialized relationship handler to add nodequeues.
  */
 class nodequeue_handler_relationship_nodequeue extends views_handler_relationship {
+  /**
+   * Init handler to let relationships live on tables other than
+   * the table they operate on.
+   */
+  function init(&$view, &$options) {
+    parent::init($view, $options);
+
+    // Tranlate an older setting which was using qids instead of machine names.
+    if (!empty($options['qids'])) {
+      $map = array_flip(nodequeue_get_qid_map());
+      foreach ($options['qids'] as $key => $value) {
+        $this->options['names'][$map[$key]] = ($value) ? $map[$key] : 0;
+      }
+      unset($this->options['qids']);
+    }
+  }
+
   function option_definition() {
     $options = parent::option_definition();
 
     $options['limit']['default'] = FALSE;
-    $options['qids']['default'] = array();
+    $options['names']['default'] = array();
     return $options;
   }
 
@@ -19,8 +36,6 @@ class nodequeue_handler_relationship_nodequeue extends views_handler_relationshi
   function options_form(&$form, &$form_state) {
     parent::options_form($form, $form_state);
 
-    $queues = nodequeue_load_queues(nodequeue_get_all_qids());
-
     $form['limit'] = array(
       '#type' => 'checkbox',
       '#title' => t('Limit to one or more queues (recommended)'),
@@ -28,21 +43,20 @@ class nodequeue_handler_relationship_nodequeue extends views_handler_relationshi
     );
 
     $options = array();
-
+    $queues = nodequeue_load_queues(nodequeue_get_all_qids(0, 0, TRUE), TRUE);
     foreach ($queues as $queue) {
-      $options[$queue->qid] = $queue->title;
+      $options[$queue->name] = $queue->title;
     }
 
-    $form['qids'] = array(
+    $form['names'] = array(
+      '#prefix' => '<div><div id="edit-options-names">',
+      '#suffix' => '</div></div>',
       '#type' => 'checkboxes',
       '#title' => t('Queues'),
       '#options' => $options,
-      '#default_value' => $this->options['qids'],
-      '#states' => array(
-        'visible' => array(
-          ':input[name="options[limit]"]' => array('checked' => TRUE)
-        ),
-      ),
+      '#default_value' => $this->options['names'],
+      '#process' => array('form_process_checkboxes', 'ctools_dependent_process'),
+      '#dependency' => array('edit-options-limit' => array(TRUE)),
     );
   }
 
@@ -64,17 +78,23 @@ class nodequeue_handler_relationship_nodequeue extends views_handler_relationshi
     }
 
     if (!empty($this->options['limit'])) {
+      $names = array_keys(array_filter($this->options['names']));
+      $qids = array();
+      $map = nodequeue_get_qid_map();
+      foreach ($names as $name) {
+        if (isset($map[$name])) {
+          $qids[] = $map[$name];
+        }
+      }
+
       $join->definition['extra'] = array(array(
         'field' => 'qid',
-        'value' => array_filter($this->options['qids']),
-        'numeric' => TRUE,
+        'value' => $qids,
       ));
     }
 
     $join->construct();
-
     $alias = $join->definition['table'] . '_' . $join->definition['left_table'];
-
     $this->alias = $this->query->add_relationship($alias, $join, 'nodequeue_nodes', $this->relationship);
   }
 }
diff --git a/html/sites/all/modules/contrib/nodequeue/nodequeue-apachesolor-1015104-2.patch b/html/sites/all/modules/contrib/nodequeue/nodequeue-apachesolor-1015104-2.patch
deleted file mode 100644
index b3ca243..0000000
--- a/html/sites/all/modules/contrib/nodequeue/nodequeue-apachesolor-1015104-2.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- nodequeue.module	2011-02-16 16:50:30.000000000 -0500
-+++ nodequeue.module.fixed	2011-02-16 16:50:43.000000000 -0500
-@@ -405,16 +405,16 @@ function _nodequeue_solr_qid_key() {
- /**
-  * Implements hook_apachesolr_modify_query().
-  */
--function nodequeue_apachesolr_modify_query($query, &$params, $caller) {
-+function nodequeue_apachesolr_modify_query(&$query, $caller) {
-   $queues = nodequeue_load_subqueues_by_queue(array_keys(nodequeue_get_all_qids()));
-   $added = FALSE;
-   foreach ($queues as $sqid => $queue) {
-     $boost = variable_get("nodequeue_apachesolr_boost_$sqid", 0);
-     if (!empty($boost)) {
--      $params['bq'][] = _nodequeue_solr_qid_key() . ":$sqid^$boost";
-+      $query->params['bq'][] = _nodequeue_solr_qid_key() . ":$sqid^$boost";
-       if (!$added) {
-         // Only want to add the facet.field once. no need to repeat it
--        $params['facet.field'][] = _nodequeue_solr_qid_key();
-+        $query->params['facet.field'][] = _nodequeue_solr_qid_key();
-         $added = TRUE;
-       }
-     }
diff --git a/html/sites/all/modules/contrib/nodequeue/nodequeue-d7-db-insert-errors-fix.patch b/html/sites/all/modules/contrib/nodequeue/nodequeue-d7-db-insert-errors-fix.patch
deleted file mode 100644
index 0ba1400..0000000
--- a/html/sites/all/modules/contrib/nodequeue/nodequeue-d7-db-insert-errors-fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- nodequeue.module	2010-10-25 11:08:26.000000000 -0400
-+++ nodequeue.module.fixed	2010-10-25 10:57:11.000000000 -0400
-@@ -1922,7 +1922,7 @@ function nodequeue_save(&$queue) {
-     'link' => $queue->link,
-     'link_remove' => $queue->link_remove,
-     'owner' => $queue->owner,
--    'show_in_links' => $queue->show_in_links,
-+    'show_in_links' => ($queue->show_in_links) ? 1 : 0,
-     'show_in_tab' => $queue->show_in_tab,
-     'show_in_ui' => $queue->show_in_ui,
-     'i18n' => $queue->i18n,
diff --git a/html/sites/all/modules/contrib/nodequeue/nodequeue.css b/html/sites/all/modules/contrib/nodequeue/nodequeue.css
index 83340d4..e03c7cc 100644
--- a/html/sites/all/modules/contrib/nodequeue/nodequeue.css
+++ b/html/sites/all/modules/contrib/nodequeue/nodequeue.css
@@ -1,4 +1,3 @@
-/* $Id: nodequeue.css,v 1.3 2009/08/17 21:37:05 ezrag Exp $ */
 
 .nodequeue-dragdrop .position {
   font-weight: bold;
diff --git a/html/sites/all/modules/contrib/nodequeue/nodequeue.info b/html/sites/all/modules/contrib/nodequeue/nodequeue.info
index d760a28..98239a6 100644
--- a/html/sites/all/modules/contrib/nodequeue/nodequeue.info
+++ b/html/sites/all/modules/contrib/nodequeue/nodequeue.info
@@ -1,9 +1,8 @@
-; $Id: nodequeue.info,v 1.9 2010/12/24 20:55:09 ezrag Exp $
 name = Nodequeue
 description = Create queues which can contain nodes in arbitrary order
 package = Nodequeue
 core = 7.x
-files[] = nodequeue.module
+configure = admin/structure/nodequeue/settings
 
 ; Includes
 files[] = includes/views/nodequeue.views.inc
@@ -18,9 +17,9 @@ files[] = includes/views/nodequeue_handler_field_queue_tab.inc
 files[] = includes/views/nodequeue_handler_filter_in_queue.inc
 files[] = includes/views/nodequeue_handler_relationship_nodequeue.inc
 
-; Information added by drupal.org packaging script on 2011-01-05
-version = "7.x-2.0-alpha1"
+; Information added by drupal.org packaging script on 2011-05-20
+version = "7.x-2.0-alpha2"
 core = "7.x"
 project = "nodequeue"
-datestamp = "1294208465"
+datestamp = "1305929516"
 
diff --git a/html/sites/all/modules/contrib/nodequeue/nodequeue.install b/html/sites/all/modules/contrib/nodequeue/nodequeue.install
index 8ac1a25..5e998ac 100644
--- a/html/sites/all/modules/contrib/nodequeue/nodequeue.install
+++ b/html/sites/all/modules/contrib/nodequeue/nodequeue.install
@@ -1,22 +1,28 @@
 <?php
-// $Id: nodequeue.install,v 1.23 2010/10/07 02:50:35 ezrag Exp $
 
 /**
  * @file
  * Install, update and uninstall functions for the nodequeue module.
- *
  */
 
+/**
+ * Implements hook_schema().
+ */
 function nodequeue_schema() {
   $schema['nodequeue_queue'] = array(
     'description' => 'Base table for queues, storing global information for each queue',
     'fields' => array(
       'qid' => array(
         'description' => 'The primary identifier for a queue.',
-        'type' => 'varchar',
-        'length' => 255,
+        'type' => 'serial',
+        'unsigned' => TRUE,
         'not null' => TRUE
       ),
+      'name' => array(
+        'description' => 'The machine name for the queue.',
+        'type' => 'varchar',
+        'length' => 128,
+      ),
       'title' => array(
         'description' => 'Title of a queue.',
         'type' => 'varchar',
@@ -24,7 +30,7 @@ function nodequeue_schema() {
         'not null' => TRUE,
       ),
       'subqueue_title' => array(
-        'description' => '',
+        'description' => 'Title of a subqueue.',
         'type' => 'varchar',
         'length' => 255,
         'not null' => TRUE,
@@ -77,6 +83,7 @@ function nodequeue_schema() {
         'description' => '',
         'type' => 'int',
         'size' => 'tiny',
+        'default' => 0,
       ),
       'i18n' => array(
         'description' => '',
@@ -86,14 +93,18 @@ function nodequeue_schema() {
       ),
     ), // fields
     'primary key' => array('qid'),
+    'unique keys' => array(
+      'name' => array('name'),
+    ),
   ); // nodequeue_queue.
   $schema['nodequeue_roles'] = array(
     'description' => 'Defines the roles which are allowed to use a particular nodequeue.',
     'fields' => array(
       'qid' => array(
         'description' => 'Primary key for {nodequeue_queue}',
-        'type' => 'varchar',
-        'length' => 255,
+        'type' => 'int',
+        'size' => 'big',
+        'unsigned' => TRUE,
         'not null' => TRUE
       ),
       'rid' => array(
@@ -105,8 +116,8 @@ function nodequeue_schema() {
       ),
     ), // fields
     'indexes' => array(
-      '{nodequeue_roles}_qid_idx' => array('qid'),
-      '{nodequeue_roles}_rid_idx' => array('rid'),
+      'qid' => array('qid'),
+      'rid' => array('rid'),
     ), // indexes
   ); // nodequeue_roles
   $schema['nodequeue_types'] = array(
@@ -114,8 +125,9 @@ function nodequeue_schema() {
     'fields' => array(
       'qid' => array(
         'description' => 'Primary key for {nodequeue_queue}',
-        'type' => 'varchar',
-        'length' => 255,
+        'type' => 'int',
+        'size' => 'big',
+        'unsigned' => TRUE,
         'not null' => TRUE
       ),
       'type' => array(
@@ -126,8 +138,8 @@ function nodequeue_schema() {
       ),
     ), // fields
     'indexes' => array(
-      '{nodequeue_types}_qid_idx' => array('qid'),
-      '{nodequeue_types}_type_idx' => array('type'),
+      'qid' => array('qid'),
+      'type' => array('type'),
     ), // indexes
   ); // nodequeue_types
 
@@ -140,14 +152,14 @@ function nodequeue_schema() {
     'fields' => array(
       'sqid' => array(
         'description' => 'Subqueue identifier',
-        'type' => 'varchar',
-        'length' => 255,
+        'type' => 'serial',
+        'unsigned' => TRUE,
         'not null' => TRUE,
       ),
       'qid' => array(
         'description' => 'Queue identifier.',
-        'type' => 'varchar',
-        'length' => 255,
+        'type' => 'int',
+        'unsigned' => TRUE,
         'not null' => TRUE,
       ),
       'reference' => array(
@@ -167,9 +179,9 @@ function nodequeue_schema() {
     ), // fields
     'primary key' => array('sqid'),
     'indexes' => array(
-      '{nodequeue_subqueue}_qid_idx' => array('qid'),
-      '{nodequeue_subqueue}_reference_idx' => array('reference'),
-      '{nodequeue_subqueue}_title_idx' => array('title'),
+      'qid' => array('qid'),
+      'reference' => array('reference'),
+      'title' => array('title'),
     ), // indexes
   ); // nodequeue_subqueue
 
@@ -178,14 +190,14 @@ function nodequeue_schema() {
     'fields' => array(
       'qid' => array(
         'description' => 'Queue id',
-        'type' => 'varchar',
-        'length' => 255,
+        'type' => 'int',
+        'unsigned' => TRUE,
         'not null' => TRUE,
       ),
       'sqid' => array(
         'description' => 'Subqueue this node is in',
-        'type' => 'varchar',
-        'length' => 255,
+        'type' => 'int',
+        'unsigned' => TRUE,
         'not null' => TRUE,
       ),
       'nid' => array(
@@ -209,186 +221,19 @@ function nodequeue_schema() {
       ),
     ), // fields
     'indexes' => array(
-      '{nodequeue_nodes}_sqid_idx' => array('sqid', 'position'),
-      '{nodequeue_subqueue}_nid_idx' => array('nid'),
-      '{nodequeue_nodes}_qid_nid_idx' => array('qid', 'nid'),
+      'sqid' => array('sqid', 'position'),
+      'nid' => array('nid'),
+      'qid_nid' => array('qid', 'nid'),
     ), // indexes
   ); // nodequeue_nodes
 
   return $schema;
 }
 
-// TODO: Figure out what to fix here?
-/**
- * @todo Please insert a Doxygen style comment for this hook_update_N.
- *
- */
-function nodequeue_update_1() {
-  if ($GLOBALS['db_type'] == 'pgsql') {
-    db_query("CREATE SEQUENCE nodequeue_queue_qid_seq INCREMENT 1 START 1");
-  }
-}
-
-/**
- * @todo Please insert a Doxygen style comment for this hook_update_N.
- *
- */
-function nodequeue_update_5000() {
-  $ret = array();
-  $ret[] = array('success' => TRUE, 'query' => t('Some of the following queries may appear to fail. This is not a problem.'));
-
-  db_add_field("nodequeue_queue", "link", array(
-        'description' => t('The link text to show under a node to add it to the queue.'),
-        'type' => 'varchar',
-        'length' => 40,
-      ));
-  db_add_field("nodequeue_queue", "link_remove", array(
-        'description' => t('The link text to show under a node to remove it from the queue.'),
-        'type' => 'varchar',
-        'length' => 40,
-      ));
-
-  db_add_index('nodequeue_roles', "{nodequeue_roles}_qid", array('qid'));
-  db_add_index("nodequeue_roles", "{nodequeue_roles}_rid", array('rid'));
-  db_add_index("nodequeue_types", "{nodequeue_types}_qid", array('qid'));
-  db_add_index("nodequeue_nodes", "{nodequeue_nodes}_qid", array('qid', 'position'));
-  db_add_index("nodequeue_nodes", "{nodequeue_nodes}_nid", array('nid'));
-
-  return $ret;
-}
-
-/**
- * @todo Please insert a Doxygen style comment for this hook_update_N.
- *
- */
-function nodequeue_update_5001() {
-  $ret = array();
-  db_add_column($ret, 'nodequeue_nodes', 'timestamp', array('type' => 'int', 'default' => 0, 'not null' => TRUE));
-  return $ret;
-}
-
-/**
- * @todo Please insert a Doxygen style comment for this hook_update_N.
- *
- */
-function nodequeue_update_5201() {
-  $ret = array();
-  // Add new columns to the nodequeue_queue table.
-  db_add_column($ret, 'nodequeue_queue', 'owner', array('type' => 'varchar', 'length' => 255, 'default' => "'nodequeue'"));
-  db_add_column($ret, 'nodequeue_queue', 'show_in_ui', array('type' => 'int', 'default' => 1));
-  db_add_column($ret, 'nodequeue_queue', 'show_in_tab', array('type' => 'int', 'default' => 1));
-  db_add_column($ret, 'nodequeue_queue', 'show_in_links', array('type' => 'int', 'default' => 1));
-  db_add_column($ret, 'nodequeue_queue', 'reference', array('type' => 'varchar', 'length' => 255, 'default' => 0));
-
-  // Create the nodequeue_subqueue table.
-  $ret[] = update_sql("UPDATE {nodequeue_queue} SET owner = 'nodequeue', show_in_ui = 1, show_in_tab = 1, show_in_links = 1, reference = 0");
-
-  db_create_table('nodequeue_subqueue', array(
-    'description' => t('Subqueues are minor queues that inherit all of the properties of the parent queue. A parent queue must have at least 1 subqueue to do anything. Reference is for the use of whatever is creating the subqueues in order to link it to some other ID easily.'),
-    'fields' => array(
-      'sqid' => array(
-        'description' => t('Subqueue identifier'),
-        'type' => 'varchar',
-        'length' => 255,
-        'not null' => TRUE,
-      ),
-      'qid' => array(
-        'description' => t('Queue identifier.'),
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-      ),
-      'reference' => array(
-        'description' => '',
-        'type' => 'varchar',
-        'length' => 255,
-        'default' => '0',
-      ),
-      'title' => array(
-        'description' => '',
-        'type' => 'varchar',
-        'length' => 255,
-        'default' => '',
-      ),
-    ), // fields
-    'primary key' => array('sqid'),
-    'indexes' => array(
-      '{nodequeue_subqueue}_qid_idx' => array('qid'),
-      '{nodequeue_subqueue}_reference_idx' => array('reference'),
-      '{nodequeue_subqueue}_title_idx' => array('title'),
-    ), // indexes
-  ));
-
-  // Populate the nodequeue_subqueue table.
-  $result = db_query("SELECT * FROM {nodequeue_queue}");
-  while ($queue = db_fetch_object($result)) {
-    // Keep the qid so that we can update our sequence table later on.
-    $last_qid = $queue->qid;
-    $ret[] = update_sql("INSERT INTO {nodequeue_subqueue} (sqid, qid, reference, title) VALUES (%d, %d, %d, '%s')", $queue->qid, $queue->qid, $queue->qid, $queue->title);
-  }
-
-  // Transform the nodequeue_nodes table.
-  db_add_field('nodequeue_nodes', 'sqid', array('type' => 'int'));
-  $ret[] = update_sql("UPDATE {nodequeue_nodes} SET sqid = qid");
-  db_add_index('nodequeue_nodes', '{nodequeue_nodes}_sqid', array('sqid', 'position'));
-
-  return $ret;
-}
-
-/**
- * @todo Please insert a Doxygen style comment for this hook_update_N.
- *
- */
-function nodequeue_update_5202() {
-  $ret = array();
-  db_add_field('nodequeue_queue', 'subqueue_title', array('type' => 'varchar', 'length' => 255));
-  return $ret;
-}
-
-/**
- * @todo Please insert a Doxygen style comment for this hook_update_N.
- *
- */
-function nodequeue_update_5203() {
-  $ret = array();
-  db_add_field('nodequeue_queue', 'reverse', array(type => 'int'));
-  return $ret;
-}
-
 /**
- * @todo Please insert a Doxygen style comment for this hook_update_N.
- *
- */
-function nodequeue_update_5204() {
-  $ret = array();
-  db_change_field('nodequeue_queue', 'reverse', 'reverse', array('type' => 'int', 'size' => 'tiny'));
-  return $ret;
-}
-
-/**
- * @todo Please insert a Doxygen style comment for this hook_update_N.
- *
- */
-function nodequeue_update_5205() {
-  $ret = array();
-  db_drop_primary_key('nodequeue_queue');
-  db_change_field('nodequeue_queue', 'qid', 'qid',
-  array('type' => 'serial', 'not null' => TRUE),
-  array('primary key' => array('qid')));
-
-  db_drop_primary_key('nodequeue_subqueue');
-  db_change_field('nodequeue_subqueue', 'sqid', 'sqid',
-  array('type' => 'serial', 'not null' => TRUE),
-  array('primary key' => array('sqid')));
-  //When these quries don't fail, the function fails to return the empty array, causing an array merge error in update.php on line 174.
-  if (empty($ret)) {
-    return array();
-  }
-  return $ret;
-}
-/**
- * There was a discrepancy between the link/link_remove fields created with node_install/node_schema, and the ones created with nodequeue_update_5000.  This forces everyone to 40 characters.
- *
+ * There was a discrepancy between the link/link_remove fields created with
+ * node_install/node_schema, and the ones created with nodequeue_update_5000.
+ * This forces everyone to 40 characters.
  */
 function nodequeue_update_6000() {
   $ret = array();
@@ -399,7 +244,6 @@ function nodequeue_update_6000() {
 
 /**
  * @todo Please insert a Doxygen style comment for this hook_update_N.
- *
  */
 function nodequeue_update_6001() {
   $ret = array();
@@ -407,10 +251,11 @@ function nodequeue_update_6001() {
   return $ret;
 }
 
-//The previous 6002 update has been moved to 5205.
+// The previous 6002 update has been moved to 5205.
 
-/*
- * Remove invalid entries from the nodequeue_nodes table created as a result of bugs like http://drupal.org/node/593858.
+/**
+ * Remove invalid entries from the nodequeue_nodes table created as a result of
+ * bugs like http://drupal.org/node/593858.
  */
 function nodequeue_update_6003() {
   $ret = array();
@@ -435,7 +280,7 @@ function nodequeue_update_6004() {
   return $ret;
 }
 
-/*
+/**
  * Rename the 'nodequeue_automatic_views_generation'
  * to 'nodequeue_view_per_queue'.
  */
@@ -445,23 +290,108 @@ function nodequeue_update_6005() {
   return $ret;
 }
 
-function nodequeue_update_7001() {
-}
+/**
+ * Renaming indices so that they're consistent with what Schema module would
+ * expect.
+ */
+function nodequeue_update_7200() {
+  // Check if the indices weren't already renamed by a 6.x-2.x-dev version
+  // prior to 6.x-2.10.
+  if (!db_index_exists('nodequeue_nodes', 'sqid')) {
+    // Delete existing indexes
+    $del_indices = array(
+      'nodequeue_roles' => array('qid', 'rid'),
+      'nodequeue_types' => array('qid', 'type'),
+      'nodequeue_subqueue' => array('qid', 'reference', 'title'),
+      'nodequeue_nodes' => array('sqid', 'qid_nid'),
+    );
+    foreach($del_indices as $table => $indices) {
+      foreach($indices as $k => $index) {
+        db_drop_index($table, $table . "_" . $index . "_idx");
+      }
+    }
+    // Naming convention incorrect for this one
+    db_drop_index("nodequeue_nodes", "nodequeue_subqueue_nid_idx");
 
+    // Create new indexes
+    $add_indexes = array(
+       'nodequeue_roles' => array(
+         'qid' => array('qid'),
+         'rid' => array('rid'),
+       ),
+       'nodequeue_types' => array(
+         'qid' => array('qid'),
+         'type' => array('type'),
+       ),
+       'nodequeue_subqueue' => array(
+         'qid' => array('qid'),
+         'reference' => array('reference'),
+         'title' => array('title'),
+       ),
+       'nodequeue_nodes' => array(
+         'sqid' => array('sqid', 'position'),
+         'qid_nid' => array('qid', 'nid'),
+         'nid' => array('nid'),
+       ),
+    );
+    foreach($add_indexes as $table => $indices) {
+      foreach($indices as $name => $columns) {
+        db_add_index($table, $name, $columns);
+      }
+    }
+  }
+}
 
 /**
- * Implements hook_requirements().
- *
- * We need the translation_helpers module to enable internationalization for queues.
+ * Provide machine names and auto-generation of machine names for existing
+ * queues.
  */
-function nodequeue_requirements($phase) {
-  $requirements = array();
-  $t = get_t();
-  if (($phase == 'install' || $phase == 'runtime') && module_exists('translation') && !module_exists('translation_helpers')) {
-    $requirements['nodequeue_translation']['title'] = $t('Nodequeue');
-    $requirements['nodequeue_translation']['severity'] = REQUIREMENT_WARNING;
-    $requirements['nodequeue_translation']['description'] = $t('To have the nodequeue module work with translations, you need to install and enable the !url module.', array('!url' => l('translation_helpers', 'http://drupal.org/project/translation_helpers')));
-    $requirements['nodequeue_translation']['value'] = $t('Translation helpers module not found.');
+function nodequeue_update_7201() {
+  // Check that the name field hasn't been created by a 6.x-2.x-dev version
+  // prior to 6.x-2.10.
+  if (!db_field_exists('nodequeue_queue', 'name')) {
+    $name_field = array(
+      'description' => 'The machine name for the queue.',
+      'type' => 'varchar',
+      'length' => 128,
+    );
+    db_add_field('nodequeue_queue', 'name', $name_field);
+    db_add_unique_key('nodequeue_queue', 'name', array('name'));
+
+    // Auto-generate machine names for existing queues and subqueues. Existing
+    // queues will be given the first 128 characters of the title, with all
+    // spaces replaced with underline characters, made lowercase and trimmed
+    // of excess whitespace. Nodequeues with empty titles will receive a name
+    // like 'queue_$qid'.
+    $result = db_query("SELECT qid, title FROM {nodequeue_queue}");
+    foreach ($result as $queue) {
+      if (!empty($queue->title)) {
+        // Basic formatting.
+        $new_name = strtolower(trim(substr($queue->title, 0, 128)));
+        // Regex to strip out all unwanted characters.
+        $new_name = preg_replace('/[^a-z0-9_]+/', '_', $new_name);
+
+        // Check if this queue name already exists.
+        if (nodequeue_machine_name_exists($new_name)) {
+          $tmp_name = $new_name;
+          $i = 0;
+          do {
+            // Append an incrementing numeric suffix until we find a unique name.
+            $unique_suffix = '_' . $i;
+            $new_name = truncate_utf8($tmp_name, 128 - drupal_strlen($unique_suffix, TRUE)) . $unique_suffix;
+            $i++;
+          } while (nodequeue_machine_name_exists($new_name));
+        }
+      }
+      else {
+        // Default to a name like 'queue_$qid' for queues that don't have a title.
+        $new_name = 'queue_' . $queue->qid;
+      }
+
+      db_update('nodequeue_queue')
+        ->fields(array('name' => $new_name))
+        ->condition('qid', $queue->qid)
+        ->execute();
+    }
   }
-  return $requirements;
 }
diff --git a/html/sites/all/modules/contrib/nodequeue/nodequeue.js b/html/sites/all/modules/contrib/nodequeue/nodequeue.js
index ff4e344..6faee09 100644
--- a/html/sites/all/modules/contrib/nodequeue/nodequeue.js
+++ b/html/sites/all/modules/contrib/nodequeue/nodequeue.js
@@ -1,4 +1,3 @@
-// $Id: nodequeue.js,v 1.5 2009/01/11 16:18:31 ezrag Exp $
 
 /**
  * Nodequeue object
diff --git a/html/sites/all/modules/contrib/nodequeue/nodequeue.module b/html/sites/all/modules/contrib/nodequeue/nodequeue.module
index dac59a5..f909009 100644
--- a/html/sites/all/modules/contrib/nodequeue/nodequeue.module
+++ b/html/sites/all/modules/contrib/nodequeue/nodequeue.module
@@ -1,5 +1,4 @@
 <?php
-// $Id: nodequeue.module,v 1.116 2011/01/05 06:13:22 ezrag Exp $
 
 /**
  *  NOTES
@@ -65,29 +64,33 @@ function nodequeue_menu() {
   // administrative items
   $items['admin/structure/nodequeue'] = array(
     'title' => 'Nodequeues',
-    'access callback' => '_nodequeue_access_admin_or_manipulate',
     'page callback' => 'nodequeue_view_queues',
+    'access callback' => '_nodequeue_access_admin_or_manipulate',
     'description' => 'Create and maintain simple nodequeues.',
+    'file' => 'includes/nodequeue.admin.inc',
     'type' => MENU_NORMAL_ITEM
   );
   $items['admin/structure/nodequeue/list'] = array(
     'title' => 'List',
-    'access callback' => '_nodequeue_access_admin_or_manipulate',
     'page callback' => 'nodequeue_view_queues',
+    'access callback' => '_nodequeue_access_admin_or_manipulate',
+    'file' => 'includes/nodequeue.admin.inc',
     'weight' => -1,
     'type' => MENU_DEFAULT_LOCAL_TASK
   );
   $items['admin/structure/nodequeue/settings'] = array(
     'title' => 'Settings',
-    'access arguments' => $admin_access,
     'page callback' => 'drupal_get_form',
     'page arguments' => array('nodequeue_admin_settings'),
+    'access arguments' => $admin_access,
+    'file' => 'includes/nodequeue.admin.inc',
     'type' => MENU_LOCAL_TASK
   );
   $items['nodequeue/autocomplete'] = array(
     'title' => 'Autocomplete',
-    'access arguments' => $access,
     'page callback' => 'nodequeue_autocomplete',
+    'access arguments' => $access,
+    'file' => 'includes/nodequeue.admin.inc',
     'type' => MENU_CALLBACK
   );
   $info = nodequeue_api_info();
@@ -95,81 +98,121 @@ function nodequeue_menu() {
     $items['admin/structure/nodequeue/add/' . $key] = array(
       'title' => 'Add @type',
       'title arguments' => array('@type' => strtolower($data['title'])),
-      'access arguments' => $admin_access,
       'page callback' => 'drupal_get_form',
       'page arguments' => array('nodequeue_edit_queue_form', $key),
-      'type' => MENU_LOCAL_TASK
+      'access arguments' => $admin_access,
+      'file' => 'includes/nodequeue.admin.inc',
+      'type' => MENU_LOCAL_ACTION
     );
   }
   $items['node/%node/nodequeue'] = array(
     'title' => '@tab',
     'title arguments' => array('@tab' => variable_get('nodequeue_tab_name', 'Nodequeue')),
-    'access callback' => 'nodequeue_node_tab_access',
-    'access arguments' => array(1),
     'page callback' => 'nodequeue_node_tab',
     'page arguments' => array(1),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 5
+    'access callback' => 'nodequeue_node_tab_access',
+    'access arguments' => array(1),
+    'file' => 'includes/nodequeue.admin.inc',
+    'weight' => 5,
+    'type' => MENU_LOCAL_TASK
   );
 
   // Administrative items for an individual queue.
   $items['admin/structure/nodequeue/%nodequeue'] = array(
-    'access arguments' => array(3),
-    'access callback' => 'nodequeue_queue_access',
     'page callback' => 'nodequeue_admin_view',
     'page arguments' => array(3),
+    'access callback' => 'nodequeue_queue_access',
+    'access arguments' => array(3),
+    'file' => 'includes/nodequeue.admin.inc',
     'type' => MENU_CALLBACK
   );
-  $items['admin/structure/nodequeue/%nodequeue/view/%subqueue'] = array(
+  $items['admin/structure/nodequeue/%nodequeue/view'] = array(
     'title' => 'View',
-    'access arguments' => array(3, 5),
+    'page callback' => 'nodequeue_admin_view',
+    'page arguments' => array(3),
     'access callback' => 'nodequeue_queue_access',
+    'access arguments' => array(3),
+    'file' => 'includes/nodequeue.admin.inc',
+    'weight' => -10,
+    'type' => MENU_DEFAULT_LOCAL_TASK
+  );
+  $items['admin/structure/nodequeue/%nodequeue/view/%subqueue'] = array(
+    'title' => 'View',
     'page callback' => 'nodequeue_admin_view',
     'page arguments' => array(3, 5),
+    'access callback' => 'nodequeue_queue_access',
+    'access arguments' => array(3, 5),
+    'file' => 'includes/nodequeue.admin.inc',
     'weight' => -10,
-    'type' => MENU_DEFAULT_LOCAL_TASK
+    'tab parent' => 'admin/structure/nodequeue/%',
+    'type' => MENU_CALLBACK
   );
   // Actual administrative items.
   $items['admin/structure/nodequeue/%nodequeue/edit'] = array(
     'title' => 'Edit',
-    'access arguments' => $admin_access,
     'page callback' => 'drupal_get_form',
     'page arguments' => array('nodequeue_edit_queue_form', 3),
+    'access arguments' => $admin_access,
+    'file' => 'includes/nodequeue.admin.inc',
     'type' => MENU_LOCAL_TASK
   );
   $items['admin/structure/nodequeue/%nodequeue/delete'] = array(
     'title' => 'Delete',
-    'access arguments' => $admin_access,
     'page callback' => 'drupal_get_form',
     'page arguments' => array('nodequeue_admin_delete', 3),
+    'access arguments' => $admin_access,
+    'file' => 'includes/nodequeue.admin.inc',
     'weight' => 5,
     'type' => MENU_CALLBACK
   );
-  $items["admin/structure/nodequeue/%nodequeue/add/%subqueue/%node"] = array(
-    'access arguments' => array(6, 3, 5),
-    'access callback' => 'nodequeue_node_and_queue_access',
+  $items['nodequeue/%nodequeue/add-node/%subqueue/%node'] = array(
     'page callback' => 'nodequeue_admin_add_node',
-    'page arguments' => array(3, 5, 6),
+    'page arguments' => array(1, 3, 4),
+    'access callback' => 'nodequeue_node_and_queue_access',
+    'access arguments' => array(4, 1, 3),
+    'file' => 'includes/nodequeue.admin.inc',
     'type' => MENU_CALLBACK
   );
-  $items["admin/structure/nodequeue/%nodequeue/remove-node/%subqueue/%node"] = array(
-    'access arguments' => array(6, 3, 5),
-    'access callback' => 'nodequeue_node_and_queue_access',
+  $items['nodequeue/%nodequeue/remove-node/%subqueue/%node'] = array(
     'page callback' => 'nodequeue_admin_remove_node',
-    'page arguments' => array(3, 5, 6),
+    'page arguments' => array(1, 3, 4),
+    'access callback' => 'nodequeue_node_and_queue_access',
+    'access arguments' => array(4, 1, 3),
+    'file' => 'includes/nodequeue.admin.inc',
     'type' => MENU_CALLBACK
   );
   $items["admin/structure/nodequeue/%nodequeue/clear/%subqueue"] = array(
     'title' => 'Clear',
-    'access arguments' => array(3, 5),
-    'access callback' => 'nodequeue_queue_access',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('nodequeue_clear_confirm', 3, 5),
+    'access callback' => 'nodequeue_queue_access',
+    'access arguments' => array(3, 5),
+    'file' => 'includes/nodequeue.admin.inc',
     'type' => MENU_CALLBACK
   );
 
   return $items;
 }
+
+/**
+ * Helper function for a _menu_translate() bug.
+ */
+function subqueue_to_arg() {
+  return '';
+}
+
+/**
+ * Implements hook_admin_paths().
+ */
+function nodequeue_admin_paths() {
+  if (variable_get('node_admin_theme')) {
+    $paths = array(
+      'node/*/nodequeue' => TRUE,
+    );
+    return $paths;
+  }
+}
+
 /**
  * Implements hook_node_delete.
  */
@@ -193,18 +236,11 @@ function nodequeue_node_delete($node) {
 }
 
 /**
- * Implements hook_nodeapi().
- */
-function nodequeue_nodeapi_OLD(&$node, $op, $teaser = NULL, $page = NULL) { }
-
-/**
- * Implements hook_link().
+ * Implements hook_node_view().
  */
-function nodequeue_link($type, $node = NULL, $teaser = FALSE) {
+function nodequeue_node_view($node, $view_mode) {
   $links = array();
-
-  if ($type == 'node' &&
-      variable_get('nodequeue_links', FALSE) &&
+  if (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);
@@ -239,22 +275,31 @@ function nodequeue_link($type, $node = NULL, $teaser = FALSE) {
       if (!isset($subqueue->position)) {
         $links[$class] = array(
           'title' => nodequeue_title_substitute($queue->link, $queue, $subqueue),
-          'href' => "admin/structure/nodequeue/$queue->qid/add/$subqueue->sqid/$id",
+          'href' => "nodequeue/$queue->qid/add-node/$subqueue->sqid/$id",
           'attributes' => array('class' => array($class . ' toggle-add')),
-          'query' => $query_string);
+          'query' => $query_string,
+          'purl' => array('disabled' => TRUE),
+        );
       }
       else if ($queue->link_remove) {
         $links[$class] = array(
           'title' => nodequeue_title_substitute($queue->link_remove, $queue, $subqueue),
-          'href' => "admin/structure/nodequeue/$queue->qid/remove-node/$subqueue->sqid/$id",
+          'href' => "nodequeue/$queue->qid/remove-node/$subqueue->sqid/$id",
           'attributes' => array('class' => array($class . ' toggle-remove')),
-          'query' => $query_string);
+          'query' => $query_string,
+          'purl' => array('disabled' => TRUE),
+        );
       }
     }
     drupal_add_js(drupal_get_path('module', 'nodequeue') . '/nodequeue.js');
     drupal_add_css(drupal_get_path('module', 'nodequeue') . '/nodequeue.css');
   }
-  return $links;
+  if (!empty($links)) {
+    $node->content['links']['nodequeue'] = array(
+      '#links' => $links,
+      '#theme' => 'links__node__nodequeue',
+    );
+  }
 }
 
 /**
@@ -272,7 +317,7 @@ function nodequeue_theme() {
       'variables' => array(),
     ),
     'nodequeue_subqueue_count_text' => array(
-      'variables' => array(),
+      'variables' => array('count' => 0),
     ),
   );
 }
@@ -334,16 +379,19 @@ function nodequeue_views_api() {
   );
 }
 
+// --------------------------------------------------------------------------
+// Nodequeue Apache Solr Search Integration
+
 /**
- * Implements hook_form_$form-id_alter().
+ * Implements hook_form_FORM_ID_alter().
  */
-function nodequeue_form_apachesolr_search_bias_form_alter(&$form, $form_state) {
-  // setup for the form building
+function nodequeue_form_apachesolr_search_bias_form_alter(&$form, &$form_state, $form_id) {
+  // Setup for the form building.
   $weights = drupal_map_assoc(array('21.0', '13.0', '8.0', '5.0', '3.0', '2.0', '1.0', '0.8', '0.5', '0.3', '0.2', '0.1'));
   $weights['0'] = t('Normal');
   $queues = nodequeue_load_subqueues_by_queue(array_keys(nodequeue_get_all_qids()));
 
-  // build the form
+  // Build the form.
   $form['biasing']['nodequeue_boost'] = array(
     '#type' => 'fieldset',
     '#title' => t('Nodequeue Biasing'),
@@ -357,7 +405,7 @@ function nodequeue_form_apachesolr_search_bias_form_alter(&$form, $form_state) {
   );
   foreach ($queues as $sqid => $queue) {
     $boost = variable_get("nodequeue_apachesolr_boost_$sqid", 0);
-    // add in setting for each queue
+    // Add in setting for each queue.
     $form['biasing']['nodequeue_boost']['nodequeue_apachesolr_boost']["nodequeue_apachesolr_boost_$sqid"] = array(
       '#type' => 'select',
       '#title' => t('Weight for %title nodequeue', array('%title' => $queue->title)),
@@ -390,11 +438,11 @@ function nodequeue_apachesolr_update_index(&$document, $node) {
 }
 
 /**
- * return the apachesolr index key for group id
+ * Returns the apachesolr index key for group id.
  */
 function _nodequeue_solr_qid_key() {
   $qid_key = array(
-    'index_type' => 'sint',
+    'index_type' => 'string',
     'multiple' => TRUE,
     'name' => "nodequeue",
   );
@@ -403,9 +451,9 @@ function _nodequeue_solr_qid_key() {
 }
 
 /**
- * Implements hook_apachesolr_modify_query().
+ * Implements hook_apachesolr_query_alter().
  */
-function nodequeue_apachesolr_modify_query(&$query, $caller) {
+function nodequeue_apachesolr_query_alter(DrupalSolrQueryInterface $query) {
   $queues = nodequeue_load_subqueues_by_queue(array_keys(nodequeue_get_all_qids()));
   $added = FALSE;
   foreach ($queues as $sqid => $queue) {
@@ -413,7 +461,7 @@ function nodequeue_apachesolr_modify_query(&$query, $caller) {
     if (!empty($boost)) {
       $query->params['bq'][] = _nodequeue_solr_qid_key() . ":$sqid^$boost";
       if (!$added) {
-        // Only want to add the facet.field once. no need to repeat it
+        // Only want to add the facet.field once. no need to repeat it.
         $query->params['facet.field'][] = _nodequeue_solr_qid_key();
         $added = TRUE;
       }
@@ -422,1180 +470,57 @@ function nodequeue_apachesolr_modify_query(&$query, $caller) {
 }
 
 // --------------------------------------------------------------------------
-// Nodequeue Admin operations
-
-/**
- * Print the JSON output for our AJAX calls.
- */
-function nodequeue_js_output($label, $href, $count = NULL, $sqid = NULL) {
-  $return = new stdClass();
-  $return->status = 1;
-  $return->label = check_plain($label);
-  $return->href = $href;
-  if (isset($count)) {
-    $return->count = $count;
-  }
-  if (isset($sqid)) {
-    $return->sqid = $sqid;
-  }
-
-  drupal_json_output($return);
-  exit;
-}
-
-/**
- * Return content id based on i18n settings
- */
-function nodequeue_get_content_id($queue, $node) {
-  return ($queue->i18n && !empty($node->tnid)) ? $node->tnid : $node->nid;
-}
-
-/**
- * Page callback to add a node to a queue.
- */
-function nodequeue_admin_add_node($queue, $subqueue, $node) {
-  if (!nodequeue_check_token($node->nid)) {
-    return drupal_goto();
-  }
-  $id = nodequeue_get_content_id($queue, $node);
-  nodequeue_subqueue_add($queue, $subqueue, $id);
-
-  // Provide a response if this is javascript.
-  if (!empty($_POST['js'])) {
-    if (isset($_GET['tab'])) {
-      nodequeue_js_output(t('Remove from queue'),
-        url("admin/structure/nodequeue/$queue->qid/remove-node/$subqueue->sqid/$node->nid", array('query' => nodequeue_get_query_string($node->nid, TRUE, array('tab' => '1')))),
-        nodequeue_subqueue_size_text($queue->size, $queue->size ? min($subqueue->count, $queue->size) : $subqueue->count, FALSE),
-        $subqueue->sqid);
-    }
-    else {
-      nodequeue_js_output(nodequeue_title_substitute($queue->link_remove, $queue, $subqueue),
-        url("admin/structure/nodequeue/$queue->qid/remove-node/$subqueue->sqid/$node->nid", array('query' => nodequeue_get_query_string($node->nid, TRUE))));
-    }
-  }
-
-  // There should always be a destination set for this, so just goto wherever.
-  drupal_goto();
-}
-
-/**
- * Page callback to remove a node from a queue.
- */
-function nodequeue_admin_remove_node($queue, $subqueue, $node) {
-  if (!nodequeue_check_token($node->nid)) {
-    return drupal_goto();
-  }
-  $id = nodequeue_get_content_id($queue, $node);
-  nodequeue_subqueue_remove_node($subqueue->sqid, $id);
-
-  // Provide a response if this is javascript.
-  if (!empty($_POST['js'])) {
-    if (isset($_GET['tab'])) {
-      nodequeue_js_output(t('Add to queue'),
-        url("admin/structure/nodequeue/$queue->qid/add/$subqueue->sqid/$node->nid", array('query' => nodequeue_get_query_string($node->nid, TRUE, array('tab' => '1')))),
-        nodequeue_subqueue_size_text($queue->size, $subqueue->count - 1, FALSE),
-        $subqueue->sqid);
-    }
-    else {
-      nodequeue_js_output(nodequeue_title_substitute($queue->link, $queue, $subqueue),
-        url("admin/structure/nodequeue/$queue->qid/add/$subqueue->sqid/$node->nid", array('query' => nodequeue_get_query_string($node->nid, TRUE))));
-    }
-  }
-
-  // There should always be a destination set for this, so just goto wherever.
-  drupal_goto();
-}
-
-/**
- * Display the queue controls for a node.
- *
- * @param $node
- *   The loaded $node; will be loaded by the hook_menu.
- */
-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'), 'class' => array('nodequeue-title'));
-  if (variable_get('nodequeue_tab_display_max', 1)) {
-    $header[] = array('data' => t('Max nodes'), 'class' => array('nodequeue-max-nodes'));
-  }
-  $header[] = array('data' => t('In queue'), 'class' => array('nodequeue-in-queue'));
-  $header[] = array('data' => t('Operation'), 'class' => array('nodequeue-operation'));
-  $subqueues = nodequeue_get_subqueues_by_node($queues, $node);
-
-  nodequeue_set_subqueue_positions($subqueues, $node->nid);
-
-  $rows = array();
-  foreach ($subqueues as $subqueue) {
-    $queue = $queues[$subqueue->qid];
-    if (empty($subqueue->position)) {
-      $op = l(
-        t('Add to queue'),
-        "admin/structure/nodequeue/$queue->qid/add/$subqueue->sqid/$node->nid",
-        array('attributes' => array('class' => array('nodequeue-ajax-toggle')),
-          'query' => nodequeue_get_query_string($node->nid, TRUE, array('tab' => '1')))
-      );
-    }
-    else {
-      $op = l(
-        t('Remove from queue'),
-        "admin/structure/nodequeue/$queue->qid/remove-node/$subqueue->sqid/$node->nid",
-        array('attributes' => array('class' => array('nodequeue-ajax-toggle')),
-          'query' => nodequeue_get_query_string($node->nid, TRUE, array('tab' => '1')))
-      );
-    }
-    $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"),
-    );
-    if (variable_get('nodequeue_tab_display_max', 1)) {
-      $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;
-}
-
-/**
- * Display a list of queues and their status for the administrator.
- */
-function nodequeue_view_queues() {
-  // TODO Please change this theme call to use an associative array for the $variables parameter.
-  // TODO Please change this theme call to use an associative array for the $variables parameter.
-  $output = theme('advanced_help_topic', 'nodequeue', 'about', 'icon') . '&nbsp;' . theme('advanced_help_topic', 'nodequeue', 'about', t('Click here for information about this module'));
-
-  // Fetch all of the queues.
-  $queues = nodequeue_load_queues(nodequeue_get_all_qids(25));
-  
-  foreach ($queues as $queue) {
-    if (!nodequeue_queue_access($queue)) {
-      unset($queues[$queue->qid]);
-    }
-  }
-
-  if (empty($queues)) {
-    return $output . t('No nodequeues exist.');
-  }
-
-  $header = array(
-    array('data' => t('Title'), 'field' => 'title', 'sort' => 'asc'),
-    array('data' => t('Max nodes'), 'field' => 'size'),
-    array('data' => t('Subqueues'), 'field' => 'subqueues'),
-    array('data' => t('Operation')),
-  );
-  $table_sort = tablesort_init($header);
-
-  $qids = array();
-  $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 ($queues as $queue) {
-    // If a queue has only one subqueue, store the qid so we can display
-    // the number of nodes in the subqueue.
-    if ($queue->subqueues == 1) {
-      $qids[] = $queue->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 'subqueues':
-        $sort_primary[] = $queue->subqueues;
-        $sort_direction = $sort_direction_regular;
-        break;
-    }
-  }
-
-  $subqueues = nodequeue_load_subqueues_by_queue($qids);
-  // Relate all the subqueues we loaded back to our queues.
-  foreach ($subqueues as $subqueue) {
-    if (nodequeue_api_subqueue_access($subqueue, NULL, $queues[$subqueue->qid])) {
-      $queues[$subqueue->qid]->subqueue = $subqueue;
-    }
-  }
-
-  if (!empty($table_sort)) {
-    if (strtolower($table_sort['sort']) == 'desc') {
-      array_multisort($sort_primary, $sort_direction['desc'], $sort_secondary, $queues); // Re-indexes array keys; key no longer equals qid.
-    }
-    else {
-      array_multisort($sort_primary, $sort_direction['asc'], $sort_secondary, $queues); // Re-indexes array keys; key no longer equals qid.
-    }
-  }
-
-  $rows = array();
-  foreach ($queues as $queue) {
-    $sub_text = $queue->subqueues;
-    if ($sub_text == 1) {
-      $sub_text .= " (" . nodequeue_subqueue_size_text($queue->size, $queue->subqueue->count) . ")";
-    }
-
-    $operations = array(l(t('View'), "admin/structure/nodequeue/$queue->qid/view"));
-    if (user_access('administer nodequeue')) {
-      $operations[] = l(t('Edit'), "admin/structure/nodequeue/$queue->qid/edit");
-      $operations[] = l(t('Delete'), "admin/structure/nodequeue/$queue->qid/delete");
-    }
-
-    $rows[] = array(
-      array('class' => array('nodequeue-title'), 'data' => check_plain($queue->title)),
-      array('class' => array('nodequeue-max-nodes'), 'data' => $queue->size == 0 ? t('Infinite') : $queue->size),
-      array('class' => array('nodequeue-subqueues'), 'data' => $sub_text),
-      array('class' => array('nodequeue-operation'), 'data' => implode(' | ', $operations)),
-    );
-  }
-
-  $output .= theme('table', array('header' => $header, 'rows' => $rows));
-  $output .= theme('pager', array('tags' => NULL));
-
-  return $output;
-}
+// Nodequeue manipulation API.
 
 /**
- * Display a list of subqueues for a queue and their sizes
+ * @defgroup nodequeue_api
+ * @{
+ * Access to the internals of nodequeues are handled primarily through these
+ * API functions. They allow easy loading of queues for manipulation.
  */
-function nodequeue_view_subqueues($queue) {
-  // Fetch all of the subqueues.
-  $subqueues = nodequeue_load_subqueues_by_queue($queue->qid);
-
-  $header = array(t('Title'), t('In queue'), t('Operation'));
-
-  $rows = array();
-  foreach ($subqueues as $subqueue) {
-    if (nodequeue_api_subqueue_access($subqueue, NULL, $queue)) {
-      $sub_text = nodequeue_subqueue_size_text($queue->size, $subqueue->count, FALSE);
-      $rows[] = array(
-        array('class' => array('nodequeue-title'), 'data' => check_plain($subqueue->title)),
-        array('class' => array('nodequeue-subqueues'), 'data' => $sub_text),
-        array('class' => array('nodequeue-operation'), 'data' => l(t('View'), "admin/structure/nodequeue/$queue->qid/view/$subqueue->sqid"))
-      );
-    }
-  }
-
-  $output = '<p>' . t('Max nodes in queue: @size', array('@size' => $queue->size ? $queue->size : t("Infinite"))) . '</p>';
-  $output .= theme('table', array('header' => $header, 'rows' => $rows));
-  $output .= theme('pager', array('tags' => NULL));
-
-  return $output;
-}
 
 /**
- * Add or edit a queue.
+ * The nodequeue queue class; the constructor makes it so we don't have to
+ * always check to see if our variables are empty or not.
  */
-function nodequeue_edit_queue_form($form, &$form_state, $queue) {
-  $info = nodequeue_api_info();
-
-  // For adding queues.
-  if (is_string($queue)) {
-    // If the $queue is a string - name of a queue type, basically - then we test that it's a valid queue type.
-    $queue = strtolower($queue);
-    if (!isset($info[$queue])) {
-      return false;
-    }
-    drupal_set_title(t('Add @type', array('@type' => strtolower($info[$queue]['title']))), PASS_THROUGH);
-    $queue = new nodequeue_queue($queue);
-  }
-  else {
-    drupal_set_title(t("Nodequeue '@title'", array('@title' => $queue->title)), PASS_THROUGH);
-  }
-
-  $form['description'] = array(
-    '#type' => 'fieldset',
-    '#title' => $info[$queue->owner]['title'],
-    '#description' => $info[$queue->owner]['description'],
-  );
-
-  $form['title'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Title'),
-    '#default_value' => $queue->title,
-    '#size' => 50,
-    '#maxlength' => 64,
-    '#description' => t('Enter the name of the queue'),
-  );
-
-  $form['name'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Name'),
-    '#default_value' => isset($queue->qid) ? $queue->qid : '',
-    '#disabled' => isset($queue->qid) ? TRUE : FALSE,
-    '#size' => 50,
-    '#maxlength' => 64,
-    '#description' => t('Enter the machine name of the queue'),
-  );
-
-  // This is a value; as the default nodequeue implementation has just one
-
-  // This is a value; as the default nodequeue implementation has just one
-  // queue per nodequeue, this field is totally redundant. Plugins can
-  // override this.
-  $form['subqueue_title'] = array(
-    '#type' => 'value',
-    '#value' => $queue->subqueue_title,
-  );
-  // The placeholder is put here so that modifiers have an easy way to put
-  // additional form widgets in a prominent spot but not before the title of
-  // the queue.
-  $form['placeholder'] = array();
-
-  $form['size'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Queue size'),
-    '#default_value' => $queue->size,
-    '#size' => 2,
-    '#maxlength' => 2,
-    '#description' => t('The maximum number of nodes will appear in the queue. Enter 0 for no limit'),
-  );
-
-  $form['reverse'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Reverse in admin view'),
-    '#default_value' => $queue->reverse,
-    '#description' => t('Ordinarily queues are arranged with the front of the queue (where items will be removed) on top and the back (where items will be added) on the bottom. If checked, this will display the queue such that items will be added to the top and removed from the bottom.'),
-  );
-
-  $form['link'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Link "add to queue" text'),
-    '#default_value' => $queue->link,
-    '#size' => 40,
-    '#maxlength' => 40,
-    '#description' => t('If you want a link to add a node to a queue in the "links" section (next to "add new comment"), enter the text here. If left blank no link will be given; note that enabling this feature for any queue will cause an extra query to be run every time a node is loaded. "%subqueue" will be replaced with the subqueue title, if applicable.'),
-  );
-
-  $form['link_remove'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Link "remove from queue" text'),
-    '#default_value' => $queue->link_remove,
-    '#size' => 40,
-    '#maxlength' => 40,
-    '#description' => t('Enter the text for the corresponding link to remove a node from a queue. This may be blank (in which case no link will appear) but a remove link will only appear if link, above, is set.'),
-  );
-
-
-  $result = db_query("SELECT r.* FROM {role} r LEFT JOIN {role_permission} p ON p.rid = r.rid WHERE p.permission LIKE '%manipulate queues%' ORDER BY r.name");
-
-  $roles = array();
-  foreach ($result as $role) {
-    $roles[$role->rid] = $role->name;
-  }
-
-  if (!empty($roles)) {
-    $form['roles'] = array(
-      '#type' => 'checkboxes',
-      '#title' => t('Roles'),
-      '#default_value' => is_array($queue->roles) ? $queue->roles : array(),
-      '#options' => $roles,
-      '#description' => t('Check each role that can add nodes to the queue. Be sure that roles you want to appear here have "manipulate queues" access in the main access control panel.'),
-    );
-  }
-  else {
-    $form['roles'] = array(
-      '#type' => 'value',
-      '#value' => array(),
-    );
-
-    $form['roles_markup'] = array(
-      '#value' => t('No roles have the "manipulate queues" permission, so only the administrator account will be able to add or remove items from this queue.'),
-    );
-  }
-
-  $nodes = node_type_get_names();
-
-  $form['types'] = array(
-    '#type' => 'checkboxes',
-    '#title' => t('Types'),
-    '#default_value' => $queue->types,
-    '#options' => $nodes,
-    '#description' => t('Check each node type that can be added to this queue.'),
-  );
-
-  $form['i18n'] = array(
-    '#type' => 'radios',
-    '#title' => t('Internationalization'),
-    '#options' => array(
-      '1' => t('Treat translation nodes as a single node'),
-      '0' => t('Manually manage translated nodes'),
-    ),
-    '#default_value' => empty($queue->qid) && module_exists('translation_helpers') ? 0 : $queue->i18n,
-    '#description' => t('Treating translations as a single node allows users to add, remove and manipulate a node
-      in the queue regardless of which translation is acted upon; nodequeue will only act on the original node.
-      When manually managing translation nodes, Nodequeue will ignore the relationship between node translations;
-      each translation node must be added to the queue separately and will occupy a separate spot in the queue.
-      Changing this setting will <strong>not</strong> update content that is already in the queue.'),
-    '#access' => module_exists('translation_helpers'),
-  );
+class nodequeue_queue {
+  var $name = '';
+  var $title = '';
+  var $size = 0;
+  var $link = '';
+  var $link_remove = '';
+  var $roles = array();
+  var $types = array();
+  var $show_in_links = TRUE;
+  var $show_in_tab = TRUE;
+  var $show_in_ui = TRUE;
+  var $reference = 0;
+  var $i18n = 0;
 
-  $form['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Submit'),
-  );
-
-  $form['owner'] = array(
-    '#type' => 'value',
-    '#value' => $queue->owner,
-  );
-
-  $form['show_in_links'] = array(
-    '#type' => 'value',
-    '#value' => $queue->show_in_links,
-  );
-
-  $form['show_in_tab'] = array(
-    '#type' => 'value',
-    '#value' => $queue->show_in_tab,
-  );
-
-  $form['show_in_ui'] = array(
-    '#type' => 'value',
-    '#value' => $queue->show_in_ui,
-  );
-
-  $form['reference'] = array(
-    '#type' => 'value',
-    '#value' => $queue->reference,
-  );
-
-  $form['subqueues'] = array(
-    '#type' => 'value',
-    '#value' => $queue->subqueues,
-  );
-
-  if (isset($queue->qid)) {
-    $form[] = array(
-      '#type' => 'submit',
-      '#value' => t('Delete'),
-      '#validate' => array('nodequeue_edit_queue_form_delete_validate'),
-      '#submit' => array('nodequeue_edit_queue_form_delete_submit'),
-    );
-    $form['qid'] = array(
-      '#type' => 'value',
-      '#value' => $queue->qid,
-    );
-    $form['count'] = array(
-      '#type' => 'value',
-      '#value' => $queue->count,
-    );
-  }
-
-  nodequeue_api_queue_form($queue, $form);
-
-  return $form;
-}
-
-/**
- * Validate function for the nodequeue_queue form.
- */
-function nodequeue_edit_queue_form_validate($form, &$form_state) {
-  if (empty($form_state['values']['title'])) {
-    form_set_error('title', t('Please enter a title for this queue.'));
-  }
-  $queue = (object) $form_state['values'];
-  // fix checkboxes
-  $queue->roles = array_keys(array_filter($queue->roles));
-  $queue->types = array_keys(array_filter($queue->types));
-
-  if (!isset($queue->qid)) {
-    $queue->new = TRUE;
-  }
-
-  nodequeue_api_queue_form_validate($queue, $form_state, $form);
-}
-
-/**
- * Submit function for the nodequeue_queue form.
- */
-function nodequeue_edit_queue_form_submit($formid, &$form_state) {
-  $queue = (object) $form_state['values'];
-  // fix checkboxes
-  $queue->roles = array_keys(array_filter($queue->roles));
-  $queue->types = array_keys(array_filter($queue->types));
-
-  if (!isset($queue->qid)) {
-    $queue->new = TRUE;
-  }
-
-  // Modify show_in_links based on whether or not links are available.
-  $queue->show_in_links = !empty($queue->link) || !empty($queue->link_remove);
-
-  nodequeue_api_queue_form_submit($queue, $form_state);
-
-  $qid = nodequeue_save($queue); // sets $queue->qid if needed.
-
-  nodequeue_api_queue_form_submit_finish($queue, $form_state);
-
-  nodequeue_check_subqueue_sizes($queue);
-
-  if ($queue->new) {
-    $form_state['values']['qid'] = $qid;
-    drupal_set_message(t('The queue has been created.'));
-  }
-  else {
-    drupal_set_message(t('The queue has been updated.'));
-  }
-  $form_state['redirect'] = 'admin/structure/nodequeue';
-}
-
-/**
- * Delete-validate function for the nodequeue_queue form.
- */
-function nodequeue_edit_queue_form_delete_validate($form, &$form_state) {
-  // No validation for delete step!  But we need to have this so the default validation isn't called.
-}
-
-/**
- * Delete-submit function for the nodequeue_queue form.
- */
-function nodequeue_edit_queue_form_delete_submit($formid, &$form_state) {
-  $form_state['redirect'] = "admin/structure/nodequeue/" . $form_state['values']['qid'] . "/delete";
-}
-
-/**
- * Confirm form to delete a queue
- */
-function nodequeue_admin_delete($form, &$form_state, $queue) {
-  $form['qid'] = array('#type'  => 'value', '#value' => $queue->qid);
-  return confirm_form($form,
-    t('Are you sure you want to delete "%title"?', array('%title' => $queue->title)),
-    isset($_GET['destination']) ? $_GET['destination'] : 'admin/structure/nodequeue',
-    t('This action cannot be undone.'),
-    t('Delete'), t('Cancel')
-  );
-}
-
-/**
- * Submit function for nodequeue delete
- */
-function nodequeue_admin_delete_submit($formid, &$form_state) {
-  if ($form_state['values']['confirm']) {
-    nodequeue_delete($form_state['values']['qid']);
-    drupal_set_message(t('The queue has been deleted.'));
-  }
-  $form_state['redirect'] = 'admin/structure/nodequeue';
-}
-
-/**
- * Page callback to view a queue.
- */
-function nodequeue_admin_view($queue, $subqueue = array()) {
-  drupal_set_title(t("Nodequeue '@title'", array('@title' => $queue->title)), PASS_THROUGH);
-  $qid = $queue->qid;
-
-  // If the queue has just one subqueue, it gets special treatment.
-  if (empty($subqueue->sqid)) {
-    if ($queue->subqueues == 1) {
-      $subqueues = nodequeue_load_subqueues_by_queue($queue->qid);
-      $subqueue = array_shift($subqueues);
-    }
-    else {
-      // display subqueue list page.
-      return nodequeue_view_subqueues($queue);
-    }
-  }
-  else if ($subqueue->sqid) {
-    if (!nodequeue_api_subqueue_access($subqueue, NULL, $queue)) {
-      return drupal_not_found();
-    }
-    // Adjust properties of the page so our subqueue is in the right
-    // visual place.
-    drupal_set_title(t("Subqueue '@title'",
-      array('@title' => nodequeue_title_substitute($queue->subqueue_title, $queue, $subqueue))), PASS_THROUGH);
-    $breadcrumb = drupal_get_breadcrumb();
-    $breadcrumb[] = l($queue->title, "admin/structure/nodequeue/$queue->qid");
-    drupal_set_breadcrumb($breadcrumb);
-  }
-  return nodequeue_arrange_subqueue($queue, $subqueue);
-}
-
-/**
- * View the contents of a subqueue, with links to re-order the queue.
- */
-function nodequeue_arrange_subqueue($queue, $subqueue = NULL) {
-  // set title and load subqueue if it's not provided
-  drupal_set_title(t("Nodequeue '@title'", array('@title' => $queue->title)), PASS_THROUGH);
-  if (!$subqueue->sqid) {
-    if ($queue->subqueues == 1) {
-      $subqueues = nodequeue_load_subqueues_by_queue($queue->qid);
-      $subqueue = array_shift($subqueues);
-    }
-    else {
-      return drupal_not_found();
-    }
-  }
-  else if ($subqueue->sqid) {
-    if (!nodequeue_api_subqueue_access($subqueue, NULL, $queue)) {
-      return drupal_not_found();
-    }
-    drupal_set_title(t("Subqueue '@title'", array('@title' => nodequeue_title_substitute($queue->subqueue_title, $queue, $subqueue))), PASS_THROUGH);
-  }
-
-  // get nodes from the queue
-  $nodes = _nodequeue_dragdrop_get_nodes($queue, $subqueue);
-
-  return drupal_get_form('nodequeue_arrange_subqueue_form', $queue, $nodes, $subqueue);
-}
-
-/**
- * Return a list of nodes in a specific subqueue.
- */
-function _nodequeue_dragdrop_get_nodes($queue, $subqueue) {
-  $order = $queue->reverse ? 'DESC' : 'ASC';
-
-  $visible = nodequeue_nids_visible($subqueue->sqid);
-
-  // get a list of all nodes in the subqueue, regardless of access restrictions
-  $query = db_select('node', 'n')
-    ->distinct();
-    
-  $query->leftJoin('users', 'u', 'n.uid = u.uid');
-  $query->leftJoin('nodequeue_nodes', 'nq', 'nq.nid = n.nid');
-  $query->fields('n', array('nid', 'title', 'created'))
-    ->fields('nq', array('position'))
-    ->fields('u', array('name'))
-    ->condition('nq.sqid', $subqueue->sqid)
-    ->orderBy('nq.position', $order);
-  $result = $query->execute();
-  //$result = db_query('SELECT DISTINCT(n.nid), n.title, n.uid, u.name, n.created, nq.position FROM {node} n LEFT JOIN {users} u on n.uid = u.uid LEFT JOIN {nodequeue_nodes} nq ON nq.nid = n.nid WHERE nq.sqid = :sqid ORDER BY nq.position ' . $order, array(':sqid' => $subqueue->sqid));
-
-  $nodes = array();
-  foreach ($result as $node) {
-    $node->visible = isset($visible[$node->nid]) ? TRUE : FALSE;
-    $nodes[] = $node;
-  }
-
-  return $nodes;
-}
-
-/**
- * Form definition for nodequeue drag'n'drop form.
- */
-function nodequeue_arrange_subqueue_form($form, $form_state, $queue, $nodes, $subqueue) {
-  $form = array('#tree' => TRUE);
-
-  // prepare the main part of the form which will be themed as a table
-  $count = count($nodes);
-  $form['nodes'] = array();
-  $form['nodes']['#theme'] = 'nodequeue_arrange_subqueue_form_table';
-  
-  // Theme function needs these
-  $form['nodes']['#queue']    = (array) $queue;
-  $form['nodes']['#subqueue'] = (array) $subqueue;
-
-  foreach ($nodes as $node) {
-    $form['nodes'][$node->nid]['#node'] = (array) $node;
-    if ($node->visible) {
-      $form['nodes'][$node->nid]['#node'] = (array) $node;
-      $form['nodes'][$node->nid]['title'] = array('#markup' => l($node->title, 'node/' . $node->nid));
-      $form['nodes'][$node->nid]['author'] = array('#markup' => theme('username', array('account' => $node)));
-      $form['nodes'][$node->nid]['date'] = array('#markup' => format_date($node->created, 'short'));
-    }
-    else {
-      $form['nodes'][$node->nid]['title'] = array('#value' => t('Restricted node, NID: @nid', array('@nid' => $node->nid)));
-      $form['nodes'][$node->nid]['author'] = array('#value' => '');
-      $form['nodes'][$node->nid]['date'] = array('#value' => '');
-    }
-
-    $form['nodes'][$node->nid]['edit'] = array('#markup' => l(t('edit'), 'node/' . $node->nid . '/edit', array('attributes' => array('title' => t('Edit this node')))));
-    $form['nodes'][$node->nid]['position'] = array(
-      '#type' => 'position',
-      '#delta' => $count,
-      '#default_value' => $node->position,
-      '#attributes' => array(
-        'class' => array('node-position'),
-      ),
-    );
-
-    $attr = array(
-      '#attributes' => array(
-        'title' => t('Remove from queue'),
-        'style' => 'display: none;',
-        'class' => array('nodequeue-remove'),
-        'id' => 'nodequeue-remove-' . $node->nid,
-      ),
-      'query' => nodequeue_get_query_string($node->nid, TRUE),
-    );
-    $form['nodes'][$node->nid]['remove'] = array('#markup' => l(t('remove'), 'admin/structure/nodequeue/' . $queue->qid . '/remove-node/' . $subqueue->sqid . '/' . $node->nid, $attr));
-  }
-
-  // add a textfield for adding nodes to the queue
-  $form['add'] = array(
-    '#type'   => 'markup',
-  );
-  $form['add']['nid'] = array(
-    '#type' => 'textfield',
-    '#autocomplete_path' => 'nodequeue/autocomplete/' . $subqueue->sqid,
-    '#default_value' => t('Enter the title of a node to add it to the queue'),
-  );
-  $form['add']['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Add node & save queue'),
-    '#submit' => array('nodequeue_arrange_subqueue_form_add_submit'),
-  );
-
-  // add submit, reverse, shuffle, and clear buttons
-  $form['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Save')
-  );
-  $form['reverse'] = array(
-    '#type' => 'submit',
-    '#value' => t('Reverse'),
-    '#submit' => array('nodequeue_arrange_subqueue_form_reverse_submit'),
-  );
-  $form['shuffle'] = array(
-    '#type' => 'submit',
-    '#value' => t('Shuffle'),
-    '#submit' => array('nodequeue_arrange_subqueue_form_shuffle_submit'),
-  );
-  $form['clear'] = array(
-    '#type' => 'submit',
-    '#value' => t('Clear'),
-    '#submit' => array('nodequeue_arrange_subqueue_form_clear_submit'),
-  );
-  //$form['#validate'][] = 'nodequeue_arrange_subqueue_form_add_validate';
-  // disable all buttons if the queue is empty
-  if ($count == 0) {
-    $form['submit']['#disabled']  = TRUE;
-    $form['reverse']['#disabled'] = TRUE;
-    $form['shuffle']['#disabled'] = TRUE;
-    $form['clear']['#disabled']   = TRUE;
-  }
-
-  return $form;
-}
-
-/**
- * Validate handler for nodequeue_arrange_subqueue_form.
- */
-function nodequeue_arrange_subqueue_form_validate($form, &$form_state) {
-  $positions = array();
-  foreach ($form_state['values'] as $nid => $element) {
-    if (is_numeric($nid) && is_numeric($element['position'])) {
-      $positions[$nid] = $element['position'];
-    }
-  }
-  if (count(array_unique($positions)) < count($positions)) {
-    $seen = array();
-    foreach ($positions as $nid => $position) {
-      if (isset($seen[$position])) {
-        form_set_error($nid . '][position', t('Duplicate position value.'));
-      }
-      $seen[$position] = TRUE;
-    }
-  }
-}
-
-/**
- * Submit function for nodequeue_arrange_subqueue_form on 'Reverse' button.
- *
- * Yeah, this just calls the below function with a different parameter, but in D6 we're not supposed to use the $form['ops'].
- */
-function nodequeue_arrange_subqueue_form_reverse_submit($form, &$form_state) {
-  nodequeue_arrange_subqueue_form_submit($form, $form_state, TRUE, FALSE);
-}
-
-function nodequeue_arrange_subqueue_form_shuffle_submit($form, &$form_state) {
-  nodequeue_arrange_subqueue_form_submit($form, $form_state, FALSE, TRUE);
-}
-
-/**
- * Submit handler for nodequeue drag'n'drop form. Updates node positions in {nodequeue_nodes}.
- */
-function nodequeue_arrange_subqueue_form_submit($form, &$form_state, $reverse = FALSE, $shuffle = FALSE) {
-  $nodes = array();
-  foreach ($form_state['values']['nodes'] as $nid => $element) {
-    if (is_numeric($nid)) {
-      $nodes[$form_state['values']['nodes'][$nid]['position']] = $nid;
-    }
-  }
-
-  $message = t('The queue has been updated.');
-
-  if ($reverse || $shuffle) {
-    $keys = array_keys($nodes);
-    $values = array_values($nodes);
-
-    // reverse the list if the reverse button was pressed
-    if ($reverse) {
-      $values = array_reverse($values);
-      $message = t('The queue has been reversed.');
-    }
-
-    // shuffle the list if the shuffle button was pressed.
-    if ($shuffle) {
-      shuffle($values);
-      $message = t('The queue has been shuffled.');
-    }
-
-    $nodes = array_combine($keys, $values);
-  }
-
-  $qid  = $form['nodes']['#queue']['qid'];
-  $sqid = $form['nodes']['#subqueue']['sqid'];
-  nodequeue_save_subqueue_order($nodes, $qid, $sqid);
-
-  drupal_set_message($message);
-}
-
-/**
- * Validates new subqueue order information and if it passes validation,
- * deletes the old subqueue data from the database and saves the new data.
- *
- * @param $nodes:
- *   an array of nodes, keyed on the subqueue position.
- * @param $qid
- *   the queue id
- * @param unknown_type $sqid
- *   the subqueue id
- * @return An array where the first element is a numeric status code
- *   (0 means successfully saved) and the second element is a status message.
- */
-function nodequeue_save_subqueue_order($nodes, $qid, $sqid) {
-  $positions = array();
-  $now = REQUEST_TIME;
-
-  $queue = nodequeue_load($qid);
-  $subqueue = nodequeue_load_subqueue($sqid);
-
-  // cleanup the node array
-  $clean = array();
-  $count = 1;
-  ksort($nodes);
-  foreach ($nodes as $pos => $nid) {
-    if (!is_numeric($nid) || $nid < 1) {
-      return array(NODEQUEUE_INVALID_NID, 'Invalid nid value. New subqueue order not saved.');
-    }
-    if (is_numeric($pos)) {
-      $clean[$count] = $nid;
-      $count++;
-    }
-    else if ($pos == 'r') {
-      // call nodequeue_remove hook
-      module_invoke_all('nodequeue_remove', $sqid, $nid);
-    }
-    else {
-      return array(NODEQUEUE_INVALID_POSITION, 'Invalid position value. New subqueue order not saved.');
-    }
-  }
-  $nodes = $clean;
-
-  if (count(array_unique($nodes)) < count($nodes)) {
-    return array(NODEQUEUE_DUPLICATE_POSITION, 'Duplicate position values are not allowed. New subqueue order not saved.');
-  }
-
-  // clear the queue and save the new positions
-  db_delete('nodequeue_nodes')
-    ->condition('sqid', $sqid)
-    ->execute();
-  foreach ($nodes as $pos => $nid) {
-    $args = array();
-    if ($pos != 'r') {
-      $query = db_insert('nodequeue_nodes')
-        ->fields(array(
-          'sqid' => $sqid,
-          'qid' => $qid,
-          'nid' => $nid,
-          'position' => $pos,
-          'timestamp' => $now,
-        ))
-        ->execute();
-    }
-  }
-
-  if ($queue->size) {
-    // only necessary if the subqueue is of finite length
-    nodequeue_check_subqueue_size($queue, $subqueue);
-  }
-
-  return array(NODEQUEUE_OK, 'The queue has been updated.');
-}
-
-function nodequeue_arrange_subqueue_form_clear_submit($form, &$form_state) {
-  $form_state['redirect'] = 'admin/structure/nodequeue/' . $form['nodes']['#queue']['qid'] . '/clear/' . $form['#subqueue']['sqid'];
-}
-
-function nodequeue_arrange_subqueue_form_add_submit($form, &$form_state) {
-  $queue = nodequeue_load($form['nodes']['#queue']['qid']);
-  $subqueue = nodequeue_load_subqueue($form['nodes']['#subqueue']['sqid']);
-
-  if (!empty($form_state['values']['add']['nid'])) {
-    preg_match('/\[nid: (\d+)\]$/', $form_state['values']['add']['nid'], $matches);
-    $nid = $matches[1];
-    if (empty($nid)) {
-      form_set_error('', t('Please enter a valid node title.'));
-    }
-  }
-
-  nodequeue_subqueue_add($queue, $subqueue, $nid);
-}
-
-/**
- * Page callback to remove an item from a queue. This will be used only
- * if javascript is disabled in the client, and is a fallback technique.
- * This differs from nodequeue_admin_remove_node in that it removes a
- * specific position, which is necessary in case a node is in a queue
- * multiple times.
- */
-function nodequeue_admin_remove($queue, $subqueue, $pos) {
-  if (!is_numeric($pos) || !is_object($subqueue) || !nodequeue_check_token($pos)) {
-    return drupal_goto();
-  }
-
-  nodequeue_subqueue_remove($subqueue, $pos);
-
-  drupal_goto();
-}
-
-/**
- * Confirm form to clear a queue.
- */
-function nodequeue_clear_confirm($form, &$form_state, $queue, $subqueue) {
-  if (empty($subqueue)) {
-    return;
-  }
-
-  drupal_set_title(t("Nodequeue '@title'", array('@title' => $queue->title)), PASS_THROUGH);
-
-  $form['qid']  = array('#type' => 'value', '#value' => $queue->qid);
-  $form['sqid'] = array('#type' => 'value', '#value' => $subqueue->sqid);
-
-  return confirm_form($form,
-    t('Are you sure you want to clear the nodequeue %queue?', array('%queue' => nodequeue_title_substitute($queue->subqueue_title, $queue, $subqueue))),
-    isset($_GET['destination']) ? $_GET['destination'] : 'admin/structure/nodequeue/' . $queue->qid . '/view/' . $subqueue->sqid,
-    t('This action will remove all nodes from the queue and cannot be undone.'),
-    t('Clear'), t('Cancel')
-  );
-}
-
-/**
- * Submit function for nodequeue clear confirm
- */
-function nodequeue_clear_confirm_submit($form, &$form_state) {
-  if ($form_state['values']['confirm']) {
-    nodequeue_queue_clear($form_state['values']['sqid']);
-    drupal_set_message(t('The queue has been cleared.'));
-    $form_state['redirect'] = 'admin/structure/nodequeue/' . $form_state['values']['qid'] . '/view/' . $form_state['values']['sqid'];
-  }
-}
-
-/**
- * Page callback for autocomplete.
- */
-function nodequeue_autocomplete($sqid = NULL, $string = NULL) {
-  $matches = _nodequeue_autocomplete($sqid, $string);
-  drupal_json_output(drupal_map_assoc($matches));
-}
-
-function _nodequeue_autocomplete($sqid, $string) {
-  $output = array();
-
-  if (!$sqid || empty($sqid) || !$string) {
-    return $output;
-  }
-
-  $subqueue = nodequeue_load_subqueue($sqid);
-  if (!$subqueue) {
-    return $output;
-  }
-
-  $queue = nodequeue_load($subqueue->qid);
-  if (!$queue) {
-    return $output;
-  }
-
-  $nodes = nodequeue_api_autocomplete($queue, $subqueue, $string);
-  return $nodes;
-}
-
-/*
- * Get the list of nodes in the subqueue, taking into account node access restrictions.
- */
-function nodequeue_nids_visible($sqid = -1, $account = NULL) {
-  $node_status_sql = '';
-  if (!$account) {
-    global $user;
-    $account = $user;
-  }
-  $nids_visible = array();
-
-  $query = db_select('node', 'n')
-    ->fields('n', array('nid'))
-    ->addTag('node_access')
-    ->distinct()
-    ->condition('nq.sqid', $sqid)
-    ->orderBy('nq.position', 'ASC');
-  $query->leftJoin('nodequeue_nodes', 'nq', 'nq.nid = n.nid');
-
-  if (!user_access('administer nodes', $account)) {
-    $query->condition(db_or()->condition('n.status', 1)->condition('n.uid', $account->uid));
-  }
-
-  $query_restricted = $query->execute();
-  foreach ($query_restricted as $result_restricted) {
-    $nids_visible[$result_restricted->nid] = $result_restricted->nid;
-  }
-  return $nids_visible;
-}
-// --------------------------------------------------------------------------
-// Nodequeue manipulation API.
-
-/**
- * @defgroup nodequeue_api
- * @{
- * Access to the internals of nodequeues are handled primarily through these
- * API functions. They allow easy loading of queues for manipulation.
- */
-
-/**
- * The nodequeue queue class; the constructor makes it so we don't have to
- * always check to see if our variables are empty or not.
- */
-class nodequeue_queue {
-  var $title = '';
-  var $size = 0;
-  var $link = '';
-  var $link_remove = '';
-  var $roles = array();
-  var $types = array();
-  var $show_in_links = TRUE;
-  var $show_in_tab = TRUE;
-  var $show_in_ui = TRUE;
-  var $reference = 0;
-  var $i18n = 1;
-
-  var $subqueue_title = '';
-  var $reverse = FALSE;
+  var $subqueue_title = '';
+  var $reverse = 0;
 
   // runtime
-  var $subqueues = array();
-  var $subqueue = NULL;
-
-  var $current = NULL;
-
-  function nodequeue_queue($type) {
-    $this->owner = $type;
-  }
-}
-
-/**
- * Return TRUE If the specified account has access to manipulate this queue.
- */
-function nodequeue_queue_access($queue, $subqueue = NULL, $account = NULL) {
-  if (!$account) {
-    global $user;
-    $account = $user;
-  }
-
-  // Automatically true if all queues.
-  if (user_access('manipulate all queues', $account)) {
-    return TRUE;
-  }
-
-  // Automatically false if they can't manipulate queues at all.
-  if (!user_access('manipulate queues', $account) || empty($queue->roles)) {
-    return FALSE;
-  }
-
-  if ($subqueue) {
-    return nodequeue_api_subqueue_access($subqueue, $account);
-  }
-
-  if (!nodequeue_api_queue_access($queue, $account)) {
-    return FALSE;
-  }
-
-  $roles = array_keys((array) $account->roles) + array(DRUPAL_AUTHENTICATED_RID);
-  return (bool) array_intersect($roles, $queue->roles);
-}
-
-/**
- * Fetch a list of available queues for a given location. These queues
- * will be fully loaded and ready to go.
- */
-function nodequeue_load_queues_by_type($type, $location = NULL, $account = NULL, $bypass_cache = FALSE) {
-  $qids = nodequeue_get_qids($type, $account, $bypass_cache);
-  if ($location) {
-    nodequeue_filter_qids($qids, $location);
-  }
-  return nodequeue_load_queues(array_keys($qids), $bypass_cache);
-}
+  var $subqueues = array();
+  var $subqueue = NULL;
 
-/**
- * Used by menu system to determine access to the node and the queue in question.
- *
- * No, this isn't some odd hook_access implementation.
- *
- * @param unknown_type $node
- * @param unknown_type $queue
- * @return unknown
- */
-function nodequeue_node_and_queue_access($node, $queue, $subqueue = NULL) {
-  return nodequeue_nodequeue_access($node->type) && nodequeue_queue_access($queue, $subqueue);
-}
+  var $current = NULL;
 
-function nodequeue_node_tab_access($node) {
-  if (!user_access('manipulate queues')) {
-    //For performance reasons: If the user can't manipulate queues, there is no reason to run the rest of these queries.
-    return FALSE;
-  }
-  $queues = nodequeue_load_queues_by_type($node->type, 'tab');
-  $subqueues = nodequeue_get_subqueues_by_node($queues, $node);
-  if (empty($subqueues)) {
-    return FALSE;
-  }
-  foreach ($subqueues as $subqueue) {
-    if (!nodequeue_api_subqueue_access($subqueue)) {
-      unset($subqueues[$subqueue->sqid]);
-    }
+  function nodequeue_queue($type) {
+    $this->owner = $type;
   }
-  return (variable_get('nodequeue_use_tab', 1) && !empty($subqueues));
 }
 
 /**
- * Return TRUE if $user can queue(s) for this node.
- *
- * @param $type
- *   The node type.
- * @param $location
- *   Optional argument. May be one of:
- *   - 'links': Only check for queues that have node links.
- *   - 'tab': Only check for queues that appear on the node tab.
- *   - 'ui': Only check for queues that appear in the UI.
+ * Fetch a list of available queues for a given location. These queues
+ * will be fully loaded and ready to go.
  */
-function nodequeue_nodequeue_access($type, $location = NULL, $account = NULL) {
-  if (isset($type->type)) {
-    $type = $type->type;
-  }
-  $qids = nodequeue_get_qids($type, $account);
+function nodequeue_load_queues_by_type($type, $location = NULL, $account = NULL, $bypass_cache = FALSE) {
+  $qids = nodequeue_get_qids($type, $account, $bypass_cache);
   if ($location) {
     nodequeue_filter_qids($qids, $location);
   }
-
-  return !empty($qids);
+  return nodequeue_load_queues(array_keys($qids), $bypass_cache);
 }
 
 /**
@@ -1668,40 +593,39 @@ function nodequeue_get_qids($type, $account = NULL, $bypass_cache = FALSE) {
 }
 
 /**
- * Get an array all qids using the pager query. This administrative list
+ * Get an array of qids using the pager query. This administrative list
  * does no permission checking, so should only be available to users who
  * have passed the 'administer queues' check.
  *
  * @param $page_size
- *   The page size to use. If 0 will be all queues.
+ *   The page size to use. If this is 0 or NULL, all queues will be returned.
+ *   Defaults to 0.
  * @param $pager_element
  *   In the rare event this should use another pager element, set this..
- *
- * @return $qids
- *   An array in the format: @code { array($qid => array('qid' => $qid, 'show_in_tab' '
- *    => true/false, 'show_in_links' => true/false }
  * @param $bypass_cache
  *   Boolean value indicating whether to bypass the cache or not.
+ *
+ * @return $qids
+ *   An array in the format: @code { array($qid => $qid) }
  */
-function nodequeue_get_all_qids($page_size = 25, $pager_element = 0, $bypass_cache = FALSE) {
-  static $cache = NULL;
-  if ($bypass_cache || !isset($cache)) {
-    $result = db_select('nodequeue_queue', 'nq')
-      ->extend('PagerDefault')
-      ->extend('TableSort')
-      ->fields('nq', array('qid'))
-      ->limit($page_size)
-      ->execute();
+function nodequeue_get_all_qids($page_size = 0, $pager_element = 0, $bypass_cache = FALSE) {
+  $cache = &drupal_static(__FUNCTION__, array());
+  if ($bypass_cache || empty($cache[$page_size])) {
+    $query = db_select('nodequeue_queue', 'nq')
+      ->fields('nq', array('qid'));
 
-    $qids = array();
-    if (!empty($result)) {
-      foreach ($result as $qid) {
-        $qids[$qid->qid] = $qid->qid;
-      }
+    if (!empty($page_size)) {
+      $query->extend('PagerDefault')
+        ->extend('TableSort')
+        ->limit($page_size)
+        ->element($pager_element);
     }
-    $cache = $qids;
+
+    $qids = $query->execute()->fetchAllKeyed(0, 0);
+
+    $cache[$page_size] = $qids;
   }
-  return $cache;
+  return $cache[$page_size];
 }
 
 /**
@@ -1730,7 +654,7 @@ function nodequeue_load_queues($qids = array(), $bypass_cache = FALSE) {
 
   if (!empty($to_load)) {
     $result = db_query("SELECT q.*, COUNT(s.sqid) AS subqueues FROM {nodequeue_queue} q LEFT JOIN {nodequeue_subqueue} s ON q.qid = s.qid WHERE q.qid IN (:to_load) GROUP BY q.qid", array(':to_load' => $to_load));
-    
+
     foreach ($result as $queue) {
       $loaded[$queue->qid] = $queue;
       // ensure valid defaults:
@@ -1788,7 +712,8 @@ function subqueue_load($sqid) {
   if (!$sqid) {
     return NULL;
   }
-  return array_shift(nodequeue_load_subqueues(array($sqid)));
+  $queues = nodequeue_load_subqueues(array($sqid));
+  return !empty($queues) ? array_shift($queues) : array();
 }
 
 /**
@@ -1868,7 +793,7 @@ function nodequeue_load_subqueues_by_queue($qids, $page_size = 0) {
     return array();
   }
 
-  $query = "SELECT s.*, COUNT(n.position) AS count FROM {nodequeue_subqueue} s 
+  $query = "SELECT s.*, COUNT(n.position) AS count FROM {nodequeue_subqueue} s
   LEFT JOIN {nodequeue_nodes} n ON n.sqid = s.sqid WHERE s.qid IN (:qids) GROUP BY s.sqid";
   $result = db_query($query, array(':qids' => $qids));
 
@@ -1904,16 +829,12 @@ function nodequeue_load_subqueues_by_reference($references, $bypass_cache = FALS
       ->fields('s');
     $query->leftJoin('nodequeue_nodes', 'n', 'n.sqid = s.sqid');
     $query->addExpression('COUNT(n.position)', 'count');
-    
-    $where = '';
+
+    $where = db_or();
     foreach ($references as $qid => $reference) {
-      if ($where) {
-        $where .= ' OR ';
-      }
-      $where .= 's.qid = :qid AND s.reference IN (:reference)';
-      $query->where($where, array(':qid' => $qid, ':reference' => $reference));
+      $where->condition(db_and()->condition('s.qid', $qid)->condition('s.reference', $reference));
     }
-    
+    $query->condition($where);
     $result = $query->execute();
 
     foreach ($result as $subqueue) {
@@ -1925,10 +846,51 @@ function nodequeue_load_subqueues_by_reference($references, $bypass_cache = FALS
 }
 
 /**
+ * Return a queue by its machine name. This is obviously not ideal due to the
+ * extra queries, but probably preferable to changing current API calls.
+ *
+ * @param $name
+ *   The queue machine name
+ *
+ * @return
+ *   The queue definition, or an empty array if no queue was found with the
+ *   given machine name.
+ */
+function nodequeue_load_queue_by_name($name) {
+  $map = nodequeue_get_qid_map();
+  if (isset($map[$name])) {
+    $queues = nodequeue_load_queues(array($map[$name]));
+    if ($queues) {
+      return current($queues);
+    }
+  }
+
+  return array();
+}
+
+/**
+ * Return a map of queue name to qid values to aid in various lookups.
+ *
+ * @return array
+ *   A array of qids, keyed by machine name.
+ */
+function nodequeue_get_qid_map() {
+  static $map = array();
+  if (!$map) {
+    $result = db_query("SELECT qid, name FROM {nodequeue_queue}");
+    while ($get = $result->fetchObject()) {
+      $map[$get->name] = $get->qid;
+    }
+  }
+  return $map;
+}
+
+/**
  * Save a nodequeue. This does not save subqueues; those must be added separately.
  */
 function nodequeue_save(&$queue) {
   $nodequeue_queue_fields = array(
+    'name' => $queue->name,
     'title' => $queue->title,
     'subqueue_title' => $queue->subqueue_title,
     'size' => $queue->size,
@@ -1942,14 +904,12 @@ function nodequeue_save(&$queue) {
     'reverse' => $queue->reverse,
     'reference' => $queue->reference,
   );
-  
+
   if (!isset($queue->qid)) {
-    $queue->qid = isset($queue->name) ? $queue->name : uniqid();
-    $nodequeue_queue_fields['qid'] = $queue->qid;
-    db_insert('nodequeue_queue')
+    $queue->qid = db_insert('nodequeue_queue')
       ->fields($nodequeue_queue_fields)
       ->execute();
-    
+
     if (function_exists('views_invalidate_cache')) {
       views_invalidate_cache();
     }
@@ -1963,7 +923,7 @@ function nodequeue_save(&$queue) {
     db_delete('nodequeue_roles')
       ->condition('qid', $queue->qid)
       ->execute();
-      
+
     db_delete('nodequeue_types')
       ->condition('qid', $queue->qid)
       ->execute();
@@ -2020,7 +980,7 @@ function nodequeue_delete($qid) {
   db_delete('nodequeue_roles')
     ->condition('qid', $qid)
     ->execute();
-    
+
   db_delete('nodequeue_types')
     ->condition('qid', $qid)
     ->execute();
@@ -2041,11 +1001,13 @@ function nodequeue_delete($qid) {
 /**
  * Add a new subqueue to a queue.
  *
- * @param $qid
- *   The queue id. This should not be the full queue object.
+ * @param $queue
+ *   The queue object that is the parent of this subqueue.
+ * @param $title
+ *   The title of the subqueue.
  * @param $reference
  *   A reference that uniquely identifies this subqueue. If NULL it will
- *   be assigned to the sqid.
+ *   be assigned the sqid.
  */
 function nodequeue_add_subqueue(&$queue, $title, $reference = NULL) {
   if (empty($reference)) {
@@ -2060,10 +1022,9 @@ function nodequeue_add_subqueue(&$queue, $title, $reference = NULL) {
   $subqueue->qid = $queue->qid;
   $subqueue->title = $title;
 
-  $subqueue->sqid = isset($subqueue->name) ? $subqueue->name : uniqid();
-  db_insert('nodequeue_subqueue')
+
+  $subqueue->sqid = db_insert('nodequeue_subqueue')
     ->fields(array(
-      'sqid' =>$subqueue->sqid,
       'qid' => $queue->qid,
       'reference' => $insert_reference,
       'title' => $title,
@@ -2114,8 +1075,8 @@ function nodequeue_remove_subqueue($sqid) {
  * @param $queue
  *   The parent queue of the subqueue. This is required so that we can
  *   pop nodes out if the queue breaks size limits.
- * @param $sqid
- *   The subqueue ID to add the node to.
+ * @param $subqueue
+ *   The subqueue to add the node to.
  * @param $nid
  *   The node ID
  */
@@ -2134,13 +1095,13 @@ function nodequeue_subqueue_add($queue, &$subqueue, $nid) {
     // If adding this would make the queue too big, pop the front node
     // (or nodes) out.
     if (!empty($queue->size)) {
-      // 0 means infinity so never do this if false
+      // 0 means infinity so never do this if FALSE.
       nodequeue_check_subqueue_size($queue, $subqueue, $queue->size);
     }
     if (module_exists('apachesolr')) {
       apachesolr_mark_node($nid);
     }
-    //Invoke the hook to notify other modules of the node addition.
+    // Invoke the hook to notify other modules of the node addition.
     module_invoke_all('nodequeue_add', $subqueue->sqid, $nid);
   }
 }
@@ -2161,11 +1122,9 @@ function nodequeue_subqueue_remove_node($sqid, $nid) {
     if (module_exists('apachesolr')) {
       apachesolr_mark_node($nid);
     }
-
-    // Invoke the hook to notify other modules of the node removal.
-    module_invoke_all('nodequeue_remove', $sqid, $nid);
   }
 }
+
 /**
  * Remove a node or node(s) from a nodequeue by position.
  *
@@ -2188,7 +1147,7 @@ function nodequeue_subqueue_remove($sqid, $start, $end = NULL) {
   }
 
   // Retrieve the nodes that are being removed.
-  $result = db_query("SELECT nid FROM {nodequeue_nodes} WHERE sqid = :sqid AND position >= :start AND position <= :end", 
+  $result = db_query("SELECT nid FROM {nodequeue_nodes} WHERE sqid = :sqid AND position >= :start AND position <= :end",
     array(
       ':sqid' => $sqid,
       ':start' => $start,
@@ -2208,7 +1167,7 @@ function nodequeue_subqueue_remove($sqid, $start, $end = NULL) {
     ->condition('sqid', $sqid)
     ->condition('position', $end, '>')
     ->execute();
-    
+
   // Invoke the hook to let other modules know that the nodes were removed.
   foreach ($result as $node) {
     module_invoke_all('nodequeue_remove', $sqid, $node->nid);
@@ -2271,10 +1230,10 @@ function nodequeue_check_subqueue_sizes($queue) {
  */
 function nodequeue_queue_swap($subqueue, $pos1, $pos2) {
   // Grab the nid off one of the positions so we can more easily swap.
-  $nid = db_query("SELECT nid FROM {nodequeue_nodes} WHERE sqid = :sqid AND position = :position", 
+  $nid = db_query("SELECT nid FROM {nodequeue_nodes} WHERE sqid = :sqid AND position = :position",
     array(':sqid' => $subqueue->sqid, ':position' => $pos1))
     ->fetchField();
-    
+
   if (!$nid) {
     return;
   }
@@ -2328,7 +1287,7 @@ function nodequeue_queue_front($subqueue, $position) {
     ':position' => $position,
   ));
   $entry = $result->fetchObject();
-  
+
   db_delete('nodequeue_nodes')
     ->condition('sqid', $subqueue->sqid)
     ->condition('position', $position)
@@ -2339,7 +1298,7 @@ function nodequeue_queue_front($subqueue, $position) {
     ->condition('sqid', $subqueue->sqid)
     ->condition('position', $position, '<')
     ->execute();
-    
+
   db_insert('nodequeue_nodes')
     ->fields(array(
       'qid' => $entry->qid,
@@ -2348,7 +1307,7 @@ function nodequeue_queue_front($subqueue, $position) {
       'position' => 1,
       'timestamp' => $entry->timestamp,
     ))
-    ->execute(); 
+    ->execute();
 }
 
 /**
@@ -2358,13 +1317,13 @@ function nodequeue_queue_back($subqueue, $position) {
   if ($position < 1 || $position >= $subqueue->count) {
     return;
   }
-  
+
   $result = db_query("SELECT * FROM {nodequeue_nodes} WHERE sqid= :sqid AND position = :position", array(
     ':sqid' => $subqueue->sqid,
     ':position' => $position,
   ));
   $entry = $result->fetchObject();
-  
+
   db_delete('nodequeue_nodes')
     ->condition('sqid', $subqueue->sqid)
     ->condition('position', $position)
@@ -2375,7 +1334,7 @@ function nodequeue_queue_back($subqueue, $position) {
     ->condition('sqid', $subqueue->sqid)
     ->condition('position', $position, '<')
     ->execute();
-    
+
   db_insert('nodequeue_nodes')
     ->fields(array(
       'qid' => $entry->qid,
@@ -2384,7 +1343,7 @@ function nodequeue_queue_back($subqueue, $position) {
       'position' => $subqueue->count,
       'timestamp' => $entry->timestamp,
     ))
-    ->execute(); 
+    ->execute();
 }
 
 /**
@@ -2404,7 +1363,7 @@ function nodequeue_set_subqueue_positions(&$subqueues, $nid) {
   if (empty($subqueues)) {
     return;
   }
-  
+
   $query = db_select('nodequeue_nodes', 'n')
     ->fields('n', array('sqid'))
     ->condition('sqid', array_keys($subqueues), 'IN')
@@ -2555,7 +1514,7 @@ function nodequeue_node_titles($sqid, $title = '', $backward = true, $from = 0,
     ->orderBy('nn.position', $orderby)
     ->addTag('node_access');
   $query->leftJoin('nodequeue_nodes', 'nn', 'n.nid = nn.nid');
-  
+
   if ($published_only) {
     $query->condition('n.status', 1);
   }
@@ -2591,7 +1550,7 @@ function nodequeue_load_nodes($sqid, $backward = FALSE, $from = 0, $count = 5, $
     ->orderBy('nn.position', $orderby)
     ->addTag('node_access');
   $query->join('nodequeue_nodes', 'nn', 'n.nid = nn.nid');
-  
+
   if ($published_only) {
     $query->condition('n.status', 1);
   }
@@ -2638,7 +1597,7 @@ function nodequeue_view_random_node($sqid, $teaser = TRUE, $links = TRUE) {
     ->execute()
     ->fetchField();
   $query->join('nodequeue_nodes', 'nn', 'n.nid = nn.nid');
-  
+
   return nodequeue_view_nodes($sqid, FALSE, $teaser, $links, rand(0, $count - 1), 1);
 }
 
@@ -2655,7 +1614,7 @@ function nodequeue_load_random_node($sqid) {
     ->execute()
     ->fetchField();
   $query->join('nodequeue_nodes', 'nn', 'n.nid = nn.nid');
-  
+
   return array_shift(nodequeue_load_nodes($sqid, TRUE, rand(0, $count - 1), 1));
 }
 
@@ -2677,7 +1636,7 @@ function nodequeue_queue_position($qid, $nid) {
     ->range(0, 1)
     ->execute()
     ->fetchField();
-  
+
   return nodequeue_subqueue_position($sqid, $nid);
 }
 
@@ -2817,7 +1776,7 @@ function nodequeue_api_autocomplete($queue, $subqueue, $string) {
   }
   else {
     // Build the constant parts of the query.
-    $query->where('LOWER(n.title) LIKE LOWER(:string)', array(':string' => '%%%' . $string . '%%%'));
+    $query->where('LOWER(n.title) LIKE LOWER(:string)', array(':string' => '%' . db_like($string) . '%'));
   }
 
   // Call to the API.
@@ -2827,7 +1786,7 @@ function nodequeue_api_autocomplete($queue, $subqueue, $string) {
   }
   else {
     $result = $query->execute();
-      
+
     foreach ($result as $node) {
       $matches[$node->nid] = check_plain($node->title) . " [nid: $node->nid]";
     }
@@ -2888,36 +1847,6 @@ function nodequeue_api_subqueue_access($subqueue, $account = NULL, $queue = NULL
 
   return $access;
 }
-/**
- * Form builder for the nodequeue settings tab.
- */
-function nodequeue_admin_settings($form, &$form_state) {
-  $form = array();
-  $form['nodequeue_use_tab'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Create a menu tab for each node that could belong to any queues'),
-    '#default_value' => variable_get('nodequeue_use_tab', 1),
-  );
-  $form['nodequeue_tab_display_max'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Include a column on the nodequeue tab for the maximum number of nodes in each queue'),
-    '#default_value' => variable_get('nodequeue_tab_display_max', 1),
-  );
-  $form['nodequeue_tab_name'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Nodequeue tab label'),
-    '#default_value' => variable_get('nodequeue_tab_name', t('Nodequeue')),
-    '#description' => t('If nodes will have a menu tab for manipulating related nodequeues, what should that tab be called?'),
-  );
-  $form['nodequeue_view_per_queue'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Automatically create one view per queue'),
-    '#description' => t("Nodequeue can create a view for each queue. \n
-      If you wish to have fewer views, you can disable this option and use a single view with an argument for the qid."),
-    '#default_value' => variable_get('nodequeue_view_per_queue', 1),
-  );
-  return system_settings_form($form);
-}
 
 /**
  * Generate a query string to use on nodequeue's private links.
@@ -2976,6 +1905,157 @@ function _nodequeue_access_admin_or_manipulate() {
   return user_access('administer nodequeue') || user_access('manipulate queues');
 }
 
+/**
+ * Used by menu system to determine access to the node and the queue in question.
+ *
+ * No, this isn't some odd hook_access implementation.
+ *
+ * @param unknown_type $node
+ * @param unknown_type $queue
+ * @return unknown
+ */
+function nodequeue_node_and_queue_access($node, $queue, $subqueue = NULL) {
+  return nodequeue_nodequeue_access($node->type) && nodequeue_queue_access($queue, $subqueue);
+}
+
+/**
+ * Return TRUE if $user can queue(s) for this node.
+ *
+ * @param $type
+ *   The node type.
+ * @param $location
+ *   Optional argument. May be one of:
+ *   - 'links': Only check for queues that have node links.
+ *   - 'tab': Only check for queues that appear on the node tab.
+ *   - 'ui': Only check for queues that appear in the UI.
+ */
+function nodequeue_nodequeue_access($type, $location = NULL, $account = NULL) {
+  if (isset($type->type)) {
+    $type = $type->type;
+  }
+  $qids = nodequeue_get_qids($type, $account);
+  if ($location) {
+    nodequeue_filter_qids($qids, $location);
+  }
+
+  return !empty($qids);
+}
+
+/**
+ * Return TRUE If the specified account has access to manipulate this queue.
+ */
+function nodequeue_queue_access($queue, $subqueue = NULL, $account = NULL) {
+  if (!$account) {
+    global $user;
+    $account = $user;
+  }
+
+  // Automatically true if all queues.
+  if (user_access('manipulate all queues', $account)) {
+    return TRUE;
+  }
+
+  // Automatically false if they can't manipulate queues at all.
+  if (!user_access('manipulate queues', $account) || empty($queue->roles)) {
+    return FALSE;
+  }
+
+  if ($subqueue) {
+    return nodequeue_api_subqueue_access($subqueue, $account);
+  }
+
+  if (!nodequeue_api_queue_access($queue, $account)) {
+    return FALSE;
+  }
+
+  $roles = array_keys((array) $account->roles) + array(DRUPAL_AUTHENTICATED_RID);
+  return (bool) array_intersect($roles, $queue->roles);
+}
+
+function nodequeue_node_tab_access($node) {
+  if (!variable_get('nodequeue_use_tab', 1) || !user_access('manipulate queues')) {
+    // For performance reasons: If the menu tab is disabled or the user can't
+    // manipulate queues, there is no reason to run the rest of these queries.
+    return FALSE;
+  }
+  $queues = nodequeue_load_queues_by_type($node->type, 'tab');
+  $subqueues = nodequeue_get_subqueues_by_node($queues, $node);
+  if (empty($subqueues)) {
+    return FALSE;
+  }
+  foreach ($subqueues as $subqueue) {
+    if (nodequeue_api_subqueue_access($subqueue)) {
+      return TRUE;
+    }
+  }
+  return FALSE;
+}
+
+/**
+ * Print the JSON output for our AJAX calls.
+ */
+function nodequeue_js_output($label, $href, $count = NULL, $sqid = NULL) {
+  $return = new stdClass();
+  $return->status = 1;
+  $return->label = check_plain($label);
+  $return->href = $href;
+  if (isset($count)) {
+    $return->count = $count;
+  }
+  if (isset($sqid)) {
+    $return->sqid = $sqid;
+  }
+
+  drupal_json_output($return);
+  exit;
+}
+
+/**
+ * Return content id based on i18n settings
+ */
+function nodequeue_get_content_id($queue, $node) {
+  return ($queue->i18n && !empty($node->tnid)) ? $node->tnid : $node->nid;
+}
+
+/**
+ * Determine if the machine name is in use.
+ */
+function nodequeue_machine_name_exists($machine_name) {
+  $queue_exists = db_query_range('SELECT 1 FROM {nodequeue_queue} WHERE name = :name', 0, 1, array(':name' => $machine_name))->fetchField();
+
+  return $queue_exists;
+}
+
+/**
+ * Get the list of nodes in the subqueue, taking into account node access restrictions.
+ */
+function nodequeue_nids_visible($sqid = -1, $account = NULL) {
+  $node_status_sql = '';
+  if (!$account) {
+    global $user;
+    $account = $user;
+  }
+  $nids_visible = array();
+
+  $query = db_select('node', 'n')
+    ->fields('n', array('nid'))
+    ->addTag('node_access')
+    ->distinct()
+    ->condition('nq.sqid', $sqid)
+    ->orderBy('nq.position', 'ASC');
+  $query->leftJoin('nodequeue_nodes', 'nq', 'nq.nid = n.nid');
+
+  if (!user_access('administer nodes', $account)) {
+    $query->condition(db_or()->condition('n.status', 1)->condition('n.uid', $account->uid));
+  }
+
+  $query_restricted = $query->execute();
+  foreach ($query_restricted as $result_restricted) {
+    $nids_visible[$result_restricted->nid] = $result_restricted->nid;
+  }
+  return $nids_visible;
+}
+
 /* --- THEME ---------------------------------------------------------------- */
 
 /**
@@ -3001,9 +2081,9 @@ function theme_nodequeue_arrange_subqueue_form_table($variables) {
       'nodequeue' => array(
         'reverse' => (bool) $form['#queue']['reverse'],
       )
-    ), 
+    ),
     array(
-      'type' => 'setting', 
+      'type' => 'setting',
       'scope' => JS_DEFAULT,
     )
   );
@@ -3068,7 +2148,6 @@ function theme_nodequeue_subqueue_full_text() {
  *
  * @ingroup themeable
  */
-function theme_nodequeue_subqueue_count_text($vars) {
-  return t('@count in queue', array('@count' => $vars['count']));
+function theme_nodequeue_subqueue_count_text($variables) {
+  return t('@count in queue', array('@count' => $variables['count']));
 }
-
diff --git a/html/sites/all/modules/contrib/nodequeue/nodequeue.module.orig b/html/sites/all/modules/contrib/nodequeue/nodequeue.module.orig
deleted file mode 100644
index 6cd86c9..0000000
--- a/html/sites/all/modules/contrib/nodequeue/nodequeue.module.orig
+++ /dev/null
@@ -1,3074 +0,0 @@
-<?php
-// $Id: nodequeue.module,v 1.116 2011/01/05 06:13:22 ezrag Exp $
-
-/**
- *  NOTES
- *  Here are various notes I've taken about notable changes and/or ommissions
- *
- *  - Everything has been moved to admin/structure/nodequeue which seemed the
- *    most appropriate destination now that admin/content is out of the picture.
- *
- *  - None of the PagerQueries are working, they're all just normal queries for
- *    the time being.
- */
-
-/**
- * @file
- * Maintains queues of nodes in arbitrary order.
- */
-
-define('NODEQUEUE_OK', 0);
-define('NODEQUEUE_INVALID_POSITION', 1);
-define('NODEQUEUE_INVALID_NID', 2);
-define('NODEQUEUE_DUPLICATE_POSITION', 3);
-
-/* --- HOOKS ---------------------------------------------------------------- */
-
-/**
- * Implements hook_permission().
- */
-function nodequeue_permission() {
-  return array(
-    'manipulate queues' => array(
-      'title' => t('manipulate queues'),
-      'description' => t('Manipulate queues.'),
-    ),
-    'administer nodequeue' => array(
-      'title' => t('administer nodequeue'),
-      'description' => t('Administer the nodequeue module.'),
-    ),
-    'manipulate all queues' => array(
-      'title' => t('manipulate all queues'),
-      'description' => t('Manipulate all queues'),
-    ),
-  );
-}
-
-/**
- * Implements hook_init().
- *
- * Loads subsidiary includes for other modules.
- */
-function nodequeue_init() {
-  include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'nodequeue') . '/includes/nodequeue.actions.inc';
-}
-
-/**
- * Implements hook_menu().
- */
-function nodequeue_menu() {
-  $items = array();
-
-  $admin_access = array('administer nodequeue');
-  $access = array('manipulate queues');
-
-  // administrative items
-  $items['admin/structure/nodequeue'] = array(
-    'title' => 'Nodequeues',
-    'access callback' => '_nodequeue_access_admin_or_manipulate',
-    'page callback' => 'nodequeue_view_queues',
-    'description' => 'Create and maintain simple nodequeues.',
-    'type' => MENU_NORMAL_ITEM
-  );
-  $items['admin/structure/nodequeue/list'] = array(
-    'title' => 'List',
-    'access callback' => '_nodequeue_access_admin_or_manipulate',
-    'page callback' => 'nodequeue_view_queues',
-    'weight' => -1,
-    'type' => MENU_DEFAULT_LOCAL_TASK
-  );
-  $items['admin/structure/nodequeue/settings'] = array(
-    'title' => 'Settings',
-    'access arguments' => $admin_access,
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('nodequeue_admin_settings'),
-    'type' => MENU_LOCAL_TASK
-  );
-  $items['nodequeue/autocomplete'] = array(
-    'title' => 'Autocomplete',
-    'access arguments' => $access,
-    'page callback' => 'nodequeue_autocomplete',
-    'type' => MENU_CALLBACK
-  );
-  $info = nodequeue_api_info();
-  foreach ($info as $key => $data) {
-    $items['admin/structure/nodequeue/add/' . $key] = array(
-      'title' => 'Add @type',
-      'title arguments' => array('@type' => strtolower($data['title'])),
-      'access arguments' => $admin_access,
-      'page callback' => 'drupal_get_form',
-      'page arguments' => array('nodequeue_edit_queue_form', $key),
-      'type' => MENU_LOCAL_TASK
-    );
-  }
-  $items['node/%node/nodequeue'] = array(
-    'title' => '@tab',
-    'title arguments' => array('@tab' => variable_get('nodequeue_tab_name', 'Nodequeue')),
-    'access callback' => 'nodequeue_node_tab_access',
-    'access arguments' => array(1),
-    'page callback' => 'nodequeue_node_tab',
-    'page arguments' => array(1),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 5
-  );
-
-  // Administrative items for an individual queue.
-  $items['admin/structure/nodequeue/%nodequeue'] = array(
-    'access arguments' => array(3),
-    'access callback' => 'nodequeue_queue_access',
-    'page callback' => 'nodequeue_admin_view',
-    'page arguments' => array(3),
-    'type' => MENU_CALLBACK
-  );
-  $items['admin/structure/nodequeue/%nodequeue/view/%subqueue'] = array(
-    'title' => 'View',
-    'access arguments' => array(3, 5),
-    'access callback' => 'nodequeue_queue_access',
-    'page callback' => 'nodequeue_admin_view',
-    'page arguments' => array(3, 5),
-    'weight' => -10,
-    'type' => MENU_DEFAULT_LOCAL_TASK
-  );
-  // Actual administrative items.
-  $items['admin/structure/nodequeue/%nodequeue/edit'] = array(
-    'title' => 'Edit',
-    'access arguments' => $admin_access,
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('nodequeue_edit_queue_form', 3),
-    'type' => MENU_LOCAL_TASK
-  );
-  $items['admin/structure/nodequeue/%nodequeue/delete'] = array(
-    'title' => 'Delete',
-    'access arguments' => $admin_access,
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('nodequeue_admin_delete', 3),
-    'weight' => 5,
-    'type' => MENU_CALLBACK
-  );
-  $items["admin/structure/nodequeue/%nodequeue/add/%subqueue/%node"] = array(
-    'access arguments' => array(6, 3, 5),
-    'access callback' => 'nodequeue_node_and_queue_access',
-    'page callback' => 'nodequeue_admin_add_node',
-    'page arguments' => array(3, 5, 6),
-    'type' => MENU_CALLBACK
-  );
-  $items["admin/structure/nodequeue/%nodequeue/remove-node/%subqueue/%node"] = array(
-    'access arguments' => array(6, 3, 5),
-    'access callback' => 'nodequeue_node_and_queue_access',
-    'page callback' => 'nodequeue_admin_remove_node',
-    'page arguments' => array(3, 5, 6),
-    'type' => MENU_CALLBACK
-  );
-  $items["admin/structure/nodequeue/%nodequeue/clear/%subqueue"] = array(
-    'title' => 'Clear',
-    'access arguments' => array(3, 5),
-    'access callback' => 'nodequeue_queue_access',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('nodequeue_clear_confirm', 3, 5),
-    'type' => MENU_CALLBACK
-  );
-
-  return $items;
-}
-/**
- * Implements hook_node_delete.
- */
-function nodequeue_node_delete($node) {
-  // If a node is being deleted, ensure it's also removed from any queues.
-  $result = db_query("SELECT qid, sqid FROM {nodequeue_nodes} WHERE nid =:nid", array(
-    ':nid' => $node->nid,
-  ));
-  foreach ($result as $obj) {
-    // If the queue is being tracked by translation set and the node is part
-    // of a translation set, don't delete the queue record.
-    // Instead, data will be updated in the 'translation_change' op, below.
-    $queues = nodequeue_load_queues(array($obj->qid));
-    $queue = array_shift($queues);
-    if (!$queue->i18n || (isset($node->tnid) && empty($node->tnid))) {
-      // This removes by nid, not position, because if we happen to have a
-      // node in a queue twice, the 2nd position would be wrong.
-      nodequeue_subqueue_remove_node($obj->sqid, $node->nid);
-    }
-  }
-}
-
-/**
- * Implements hook_nodeapi().
- */
-function nodequeue_nodeapi_OLD(&$node, $op, $teaser = NULL, $page = NULL) { }
-
-/**
- * Implements hook_link().
- */
-function nodequeue_link($type, $node = NULL, $teaser = FALSE) {
-  $links = array();
-
-  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);
-    }
-
-    if (!module_exists('translation')) {
-      nodequeue_set_subqueue_positions($subqueues, $node->nid);
-    }
-
-    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);
-      }
-      $query_string = nodequeue_get_query_string($id, 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/structure/nodequeue/$queue->qid/add/$subqueue->sqid/$id",
-          'attributes' => array('class' => 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/structure/nodequeue/$queue->qid/remove-node/$subqueue->sqid/$id",
-          'attributes' => array('class' => 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;
-}
-
-/**
- * Implements hook_theme().
- */
-function nodequeue_theme() {
-  return array(
-    'nodequeue_arrange_subqueue_form_table' => array(
-      'render element' => 'form',
-    ),
-    'nodequeue_subqueue_empty_text' => array(
-      'variables' => array(),
-    ),
-    'nodequeue_subqueue_full_text' => array(
-      'variables' => array(),
-    ),
-    'nodequeue_subqueue_count_text' => array(
-      'variables' => array(),
-    ),
-  );
-}
-
-/**
- * Implements hook_element_info().
- */
-function nodequeue_element_info() {
-  $type = array();
-
-  $type['position'] = array(
-    '#input'         => TRUE,
-    '#delta'         => 10,
-    '#default_value' => 0,
-    '#process'       => array('process_position', 'ajax_process_form'),
-  );
-
-  return $type;
-}
-
-/**
- * Expand position elements into selects. Works like the weight element, except
- * only positive values are allowed.
- */
-function process_position($element) {
-  for ($n = 1; $n <= $element['#delta']; $n++) {
-    $positions[$n] = $n;
-  }
-
-  $element['#options']      = $positions;
-  $element['#options']['r'] = t('Remove');
-  $element['#type']         = 'select';
-
-  // add default properties for the select element
-  $element += element_info('select');
-
-  return $element;
-}
-
-/**
- * If no default value is set for position select boxes, use 1.
- */
-function position_value(&$form) {
-  if (isset($form['#default_value'])) {
-    $form['#value'] = $form['#default_value'];
-  }
-  else {
-    $form['#value'] = 1;
-  }
-}
-
-/**
- * Implements hook_views_api().
- */
-function nodequeue_views_api() {
-  return array(
-    'api' => 2,
-    'path' => drupal_get_path('module', 'nodequeue') . '/includes/views',
-  );
-}
-
-/**
- * Implements hook_form_$form-id_alter().
- */
-function nodequeue_form_apachesolr_search_bias_form_alter(&$form, $form_state) {
-  // setup for the form building
-  $weights = drupal_map_assoc(array('21.0', '13.0', '8.0', '5.0', '3.0', '2.0', '1.0', '0.8', '0.5', '0.3', '0.2', '0.1'));
-  $weights['0'] = t('Normal');
-  $queues = nodequeue_load_subqueues_by_queue(array_keys(nodequeue_get_all_qids()));
-
-  // build the form
-  $form['biasing']['nodequeue_boost'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Nodequeue Biasing'),
-    '#weight' => -5,
-    '#collapsible' => TRUE,
-    '#collapsed' => TRUE,
-  );
-  $form['biasing']['nodequeue_boost']['nodequeue_apachesolr_boost'] = array(
-    '#type' => 'item',
-    '#description' => t("Specify to bias the search result when a node is in a queue. Any value except <em>Normal</em> will increase the socre for the given queue in the search results"),
-  );
-  foreach ($queues as $sqid => $queue) {
-    $boost = variable_get("nodequeue_apachesolr_boost_$sqid", 0);
-    // add in setting for each queue
-    $form['biasing']['nodequeue_boost']['nodequeue_apachesolr_boost']["nodequeue_apachesolr_boost_$sqid"] = array(
-      '#type' => 'select',
-      '#title' => t('Weight for %title nodequeue', array('%title' => $queue->title)),
-      '#options' => $weights,
-      '#default_value' => $boost,
-    );
-  }
-}
-
-/**
- * Implements hook_apachesolr_update_index().
- */
-function nodequeue_apachesolr_update_index(&$document, $node) {
-  if (empty($document)) {
-    return;
-  }
-
-  $queues = nodequeue_load_queues(array_keys(nodequeue_get_all_qids()));
-  $subqueues = nodequeue_get_subqueues_by_node($queues, $node);
-
-  nodequeue_set_subqueue_positions($subqueues, $node->nid);
-  if (is_array($subqueues)) {
-    foreach ($subqueues as $sqid => $subqueue) {
-      if (!empty($subqueue->position)) {
-        $key = _nodequeue_solr_qid_key();
-        $document->setMultiValue($key, $sqid);
-      }
-    }
-  }
-}
-
-/**
- * return the apachesolr index key for group id
- */
-function _nodequeue_solr_qid_key() {
-  $qid_key = array(
-    'index_type' => 'sint',
-    'multiple' => TRUE,
-    'name' => "nodequeue",
-  );
-
-  return apachesolr_index_key($qid_key);
-}
-
-/**
- * Implements hook_apachesolr_modify_query().
- */
-function nodequeue_apachesolr_modify_query($query, &$params, $caller) {
-  $queues = nodequeue_load_subqueues_by_queue(array_keys(nodequeue_get_all_qids()));
-  $added = FALSE;
-  foreach ($queues as $sqid => $queue) {
-    $boost = variable_get("nodequeue_apachesolr_boost_$sqid", 0);
-    if (!empty($boost)) {
-      $params['bq'][] = _nodequeue_solr_qid_key() . ":$sqid^$boost";
-      if (!$added) {
-        // Only want to add the facet.field once. no need to repeat it
-        $params['facet.field'][] = _nodequeue_solr_qid_key();
-        $added = TRUE;
-      }
-    }
-  }
-}
-
-// --------------------------------------------------------------------------
-// Nodequeue Admin operations
-
-/**
- * Print the JSON output for our AJAX calls.
- */
-function nodequeue_js_output($label, $href, $count = NULL, $sqid = NULL) {
-  $return = new stdClass();
-  $return->status = 1;
-  $return->label = check_plain($label);
-  $return->href = $href;
-  if (isset($count)) {
-    $return->count = $count;
-  }
-  if (isset($sqid)) {
-    $return->sqid = $sqid;
-  }
-
-  drupal_json_output($return);
-  exit;
-}
-
-/**
- * Return content id based on i18n settings
- */
-function nodequeue_get_content_id($queue, $node) {
-  return ($queue->i18n && !empty($node->tnid)) ? $node->tnid : $node->nid;
-}
-
-/**
- * Page callback to add a node to a queue.
- */
-function nodequeue_admin_add_node($queue, $subqueue, $node) {
-  if (!nodequeue_check_token($node->nid)) {
-    return drupal_goto();
-  }
-  $id = nodequeue_get_content_id($queue, $node);
-  nodequeue_subqueue_add($queue, $subqueue, $id);
-
-  // Provide a response if this is javascript.
-  if (!empty($_POST['js'])) {
-    if (isset($_GET['tab'])) {
-      nodequeue_js_output(t('Remove from queue'),
-        url("admin/structure/nodequeue/$queue->qid/remove-node/$subqueue->sqid/$node->nid", array('query' => nodequeue_get_query_string($node->nid, TRUE, array('tab' => '1')))),
-        nodequeue_subqueue_size_text($queue->size, $queue->size ? min($subqueue->count, $queue->size) : $subqueue->count, FALSE),
-        $subqueue->sqid);
-    }
-    else {
-      nodequeue_js_output(nodequeue_title_substitute($queue->link_remove, $queue, $subqueue),
-        url("admin/structure/nodequeue/$queue->qid/remove-node/$subqueue->sqid/$node->nid", array('query' => nodequeue_get_query_string($node->nid, TRUE))));
-    }
-  }
-
-  // There should always be a destination set for this, so just goto wherever.
-  drupal_goto();
-}
-
-/**
- * Page callback to remove a node from a queue.
- */
-function nodequeue_admin_remove_node($queue, $subqueue, $node) {
-  if (!nodequeue_check_token($node->nid)) {
-    return drupal_goto();
-  }
-  $id = nodequeue_get_content_id($queue, $node);
-  nodequeue_subqueue_remove_node($subqueue->sqid, $id);
-
-  // Provide a response if this is javascript.
-  if (!empty($_POST['js'])) {
-    if (isset($_GET['tab'])) {
-      nodequeue_js_output(t('Add to queue'),
-        url("admin/structure/nodequeue/$queue->qid/add/$subqueue->sqid/$node->nid", array('query' => nodequeue_get_query_string($node->nid, TRUE, array('tab' => '1')))),
-        nodequeue_subqueue_size_text($queue->size, $subqueue->count - 1, FALSE),
-        $subqueue->sqid);
-    }
-    else {
-      nodequeue_js_output(nodequeue_title_substitute($queue->link, $queue, $subqueue),
-        url("admin/structure/nodequeue/$queue->qid/add/$subqueue->sqid/$node->nid", array('query' => nodequeue_get_query_string($node->nid, TRUE))));
-    }
-  }
-
-  // There should always be a destination set for this, so just goto wherever.
-  drupal_goto();
-}
-
-/**
- * Display the queue controls for a node.
- *
- * @param $node
- *   The loaded $node; will be loaded by the hook_menu.
- */
-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'), 'class' => array('nodequeue-title'));
-  if (variable_get('nodequeue_tab_display_max', 1)) {
-    $header[] = array('data' => t('Max nodes'), 'class' => array('nodequeue-max-nodes'));
-  }
-  $header[] = array('data' => t('In queue'), 'class' => array('nodequeue-in-queue'));
-  $header[] = array('data' => t('Operation'), 'class' => array('nodequeue-operation'));
-  $subqueues = nodequeue_get_subqueues_by_node($queues, $node);
-
-  nodequeue_set_subqueue_positions($subqueues, $node->nid);
-
-  $rows = array();
-  foreach ($subqueues as $subqueue) {
-    $queue = $queues[$subqueue->qid];
-    if (empty($subqueue->position)) {
-      $op = l(
-        t('Add to queue'),
-        "admin/structure/nodequeue/$queue->qid/add/$subqueue->sqid/$node->nid",
-        array('attributes' => array('class' => array('nodequeue-ajax-toggle')),
-          'query' => nodequeue_get_query_string($node->nid, TRUE, array('tab' => '1')))
-      );
-    }
-    else {
-      $op = l(
-        t('Remove from queue'),
-        "admin/structure/nodequeue/$queue->qid/remove-node/$subqueue->sqid/$node->nid",
-        array('attributes' => array('class' => array('nodequeue-ajax-toggle')),
-          'query' => nodequeue_get_query_string($node->nid, TRUE, array('tab' => '1')))
-      );
-    }
-    $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"),
-    );
-    if (variable_get('nodequeue_tab_display_max', 1)) {
-      $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;
-}
-
-/**
- * Display a list of queues and their status for the administrator.
- */
-function nodequeue_view_queues() {
-  // TODO Please change this theme call to use an associative array for the $variables parameter.
-  // TODO Please change this theme call to use an associative array for the $variables parameter.
-  $output = theme('advanced_help_topic', 'nodequeue', 'about', 'icon') . '&nbsp;' . theme('advanced_help_topic', 'nodequeue', 'about', t('Click here for information about this module'));
-
-  // Fetch all of the queues.
-  $queues = nodequeue_load_queues(nodequeue_get_all_qids(25));
-  
-  foreach ($queues as $queue) {
-    if (!nodequeue_queue_access($queue)) {
-      unset($queues[$queue->qid]);
-    }
-  }
-
-  if (empty($queues)) {
-    return $output . t('No nodequeues exist.');
-  }
-
-  $header = array(
-    array('data' => t('Title'), 'field' => 'title', 'sort' => 'asc'),
-    array('data' => t('Max nodes'), 'field' => 'size'),
-    array('data' => t('Subqueues'), 'field' => 'subqueues'),
-    array('data' => t('Operation')),
-  );
-  $table_sort = tablesort_init($header);
-
-  $qids = array();
-  $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 ($queues as $queue) {
-    // If a queue has only one subqueue, store the qid so we can display
-    // the number of nodes in the subqueue.
-    if ($queue->subqueues == 1) {
-      $qids[] = $queue->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 'subqueues':
-        $sort_primary[] = $queue->subqueues;
-        $sort_direction = $sort_direction_regular;
-        break;
-    }
-  }
-
-  $subqueues = nodequeue_load_subqueues_by_queue($qids);
-  // Relate all the subqueues we loaded back to our queues.
-  foreach ($subqueues as $subqueue) {
-    if (nodequeue_api_subqueue_access($subqueue, NULL, $queues[$subqueue->qid])) {
-      $queues[$subqueue->qid]->subqueue = $subqueue;
-    }
-  }
-
-  if (!empty($table_sort)) {
-    if (strtolower($table_sort['sort']) == 'desc') {
-      array_multisort($sort_primary, $sort_direction['desc'], $sort_secondary, $queues); // Re-indexes array keys; key no longer equals qid.
-    }
-    else {
-      array_multisort($sort_primary, $sort_direction['asc'], $sort_secondary, $queues); // Re-indexes array keys; key no longer equals qid.
-    }
-  }
-
-  $rows = array();
-  foreach ($queues as $queue) {
-    $sub_text = $queue->subqueues;
-    if ($sub_text == 1) {
-      $sub_text .= " (" . nodequeue_subqueue_size_text($queue->size, $queue->subqueue->count) . ")";
-    }
-
-    $operations = array(l(t('View'), "admin/structure/nodequeue/$queue->qid/view"));
-    if (user_access('administer nodequeue')) {
-      $operations[] = l(t('Edit'), "admin/structure/nodequeue/$queue->qid/edit");
-      $operations[] = l(t('Delete'), "admin/structure/nodequeue/$queue->qid/delete");
-    }
-
-    $rows[] = array(
-      array('class' => array('nodequeue-title'), 'data' => check_plain($queue->title)),
-      array('class' => array('nodequeue-max-nodes'), 'data' => $queue->size == 0 ? t('Infinite') : $queue->size),
-      array('class' => array('nodequeue-subqueues'), 'data' => $sub_text),
-      array('class' => array('nodequeue-operation'), 'data' => implode(' | ', $operations)),
-    );
-  }
-
-  $output .= theme('table', array('header' => $header, 'rows' => $rows));
-  $output .= theme('pager', array('tags' => NULL));
-
-  return $output;
-}
-
-/**
- * Display a list of subqueues for a queue and their sizes
- */
-function nodequeue_view_subqueues($queue) {
-  // Fetch all of the subqueues.
-  $subqueues = nodequeue_load_subqueues_by_queue($queue->qid);
-
-  $header = array(t('Title'), t('In queue'), t('Operation'));
-
-  $rows = array();
-  foreach ($subqueues as $subqueue) {
-    if (nodequeue_api_subqueue_access($subqueue, NULL, $queue)) {
-      $sub_text = nodequeue_subqueue_size_text($queue->size, $subqueue->count, FALSE);
-      $rows[] = array(
-        array('class' => array('nodequeue-title'), 'data' => check_plain($subqueue->title)),
-        array('class' => array('nodequeue-subqueues'), 'data' => $sub_text),
-        array('class' => array('nodequeue-operation'), 'data' => l(t('View'), "admin/structure/nodequeue/$queue->qid/view/$subqueue->sqid"))
-      );
-    }
-  }
-
-  $output = '<p>' . t('Max nodes in queue: @size', array('@size' => $queue->size ? $queue->size : t("Infinite"))) . '</p>';
-  $output .= theme('table', array('header' => $header, 'rows' => $rows));
-  $output .= theme('pager', array('tags' => NULL));
-
-  return $output;
-}
-
-/**
- * Add or edit a queue.
- */
-function nodequeue_edit_queue_form($form, &$form_state, $queue) {
-  $info = nodequeue_api_info();
-
-  // For adding queues.
-  if (is_string($queue)) {
-    // If the $queue is a string - name of a queue type, basically - then we test that it's a valid queue type.
-    $queue = strtolower($queue);
-    if (!isset($info[$queue])) {
-      return false;
-    }
-    drupal_set_title(t('Add @type', array('@type' => strtolower($info[$queue]['title']))), PASS_THROUGH);
-    $queue = new nodequeue_queue($queue);
-  }
-  else {
-    drupal_set_title(t("Nodequeue '@title'", array('@title' => $queue->title)), PASS_THROUGH);
-  }
-
-  $form['description'] = array(
-    '#type' => 'fieldset',
-    '#title' => $info[$queue->owner]['title'],
-    '#description' => $info[$queue->owner]['description'],
-  );
-
-  $form['title'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Title'),
-    '#default_value' => $queue->title,
-    '#size' => 50,
-    '#maxlength' => 64,
-    '#description' => t('Enter the name of the queue'),
-  );
-
-  $form['name'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Name'),
-    '#default_value' => isset($queue->qid) ? $queue->qid : '',
-    '#disabled' => isset($queue->qid) ? TRUE : FALSE,
-    '#size' => 50,
-    '#maxlength' => 64,
-    '#description' => t('Enter the machine name of the queue'),
-  );
-
-  // This is a value; as the default nodequeue implementation has just one
-
-  // This is a value; as the default nodequeue implementation has just one
-  // queue per nodequeue, this field is totally redundant. Plugins can
-  // override this.
-  $form['subqueue_title'] = array(
-    '#type' => 'value',
-    '#value' => $queue->subqueue_title,
-  );
-  // The placeholder is put here so that modifiers have an easy way to put
-  // additional form widgets in a prominent spot but not before the title of
-  // the queue.
-  $form['placeholder'] = array();
-
-  $form['size'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Queue size'),
-    '#default_value' => $queue->size,
-    '#size' => 2,
-    '#maxlength' => 2,
-    '#description' => t('The maximum number of nodes will appear in the queue. Enter 0 for no limit'),
-  );
-
-  $form['reverse'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Reverse in admin view'),
-    '#default_value' => $queue->reverse,
-    '#description' => t('Ordinarily queues are arranged with the front of the queue (where items will be removed) on top and the back (where items will be added) on the bottom. If checked, this will display the queue such that items will be added to the top and removed from the bottom.'),
-  );
-
-  $form['link'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Link "add to queue" text'),
-    '#default_value' => $queue->link,
-    '#size' => 40,
-    '#maxlength' => 40,
-    '#description' => t('If you want a link to add a node to a queue in the "links" section (next to "add new comment"), enter the text here. If left blank no link will be given; note that enabling this feature for any queue will cause an extra query to be run every time a node is loaded. "%subqueue" will be replaced with the subqueue title, if applicable.'),
-  );
-
-  $form['link_remove'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Link "remove from queue" text'),
-    '#default_value' => $queue->link_remove,
-    '#size' => 40,
-    '#maxlength' => 40,
-    '#description' => t('Enter the text for the corresponding link to remove a node from a queue. This may be blank (in which case no link will appear) but a remove link will only appear if link, above, is set.'),
-  );
-
-
-  $result = db_query("SELECT r.* FROM {role} r LEFT JOIN {role_permission} p ON p.rid = r.rid WHERE p.permission LIKE '%manipulate queues%' ORDER BY r.name");
-
-  $roles = array();
-  foreach ($result as $role) {
-    $roles[$role->rid] = $role->name;
-  }
-
-  if (!empty($roles)) {
-    $form['roles'] = array(
-      '#type' => 'checkboxes',
-      '#title' => t('Roles'),
-      '#default_value' => is_array($queue->roles) ? $queue->roles : array(),
-      '#options' => $roles,
-      '#description' => t('Check each role that can add nodes to the queue. Be sure that roles you want to appear here have "manipulate queues" access in the main access control panel.'),
-    );
-  }
-  else {
-    $form['roles'] = array(
-      '#type' => 'value',
-      '#value' => array(),
-    );
-
-    $form['roles_markup'] = array(
-      '#value' => t('No roles have the "manipulate queues" permission, so only the administrator account will be able to add or remove items from this queue.'),
-    );
-  }
-
-  $nodes = node_type_get_names();
-
-  $form['types'] = array(
-    '#type' => 'checkboxes',
-    '#title' => t('Types'),
-    '#default_value' => $queue->types,
-    '#options' => $nodes,
-    '#description' => t('Check each node type that can be added to this queue.'),
-  );
-
-  $form['i18n'] = array(
-    '#type' => 'radios',
-    '#title' => t('Internationalization'),
-    '#options' => array(
-      '1' => t('Treat translation nodes as a single node'),
-      '0' => t('Manually manage translated nodes'),
-    ),
-    '#default_value' => empty($queue->qid) && module_exists('translation_helpers') ? 0 : $queue->i18n,
-    '#description' => t('Treating translations as a single node allows users to add, remove and manipulate a node
-      in the queue regardless of which translation is acted upon; nodequeue will only act on the original node.
-      When manually managing translation nodes, Nodequeue will ignore the relationship between node translations;
-      each translation node must be added to the queue separately and will occupy a separate spot in the queue.
-      Changing this setting will <strong>not</strong> update content that is already in the queue.'),
-    '#access' => module_exists('translation_helpers'),
-  );
-
-  $form['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Submit'),
-  );
-
-  $form['owner'] = array(
-    '#type' => 'value',
-    '#value' => $queue->owner,
-  );
-
-  $form['show_in_links'] = array(
-    '#type' => 'value',
-    '#value' => $queue->show_in_links,
-  );
-
-  $form['show_in_tab'] = array(
-    '#type' => 'value',
-    '#value' => $queue->show_in_tab,
-  );
-
-  $form['show_in_ui'] = array(
-    '#type' => 'value',
-    '#value' => $queue->show_in_ui,
-  );
-
-  $form['reference'] = array(
-    '#type' => 'value',
-    '#value' => $queue->reference,
-  );
-
-  $form['subqueues'] = array(
-    '#type' => 'value',
-    '#value' => $queue->subqueues,
-  );
-
-  if (isset($queue->qid)) {
-    $form[] = array(
-      '#type' => 'submit',
-      '#value' => t('Delete'),
-      '#validate' => array('nodequeue_edit_queue_form_delete_validate'),
-      '#submit' => array('nodequeue_edit_queue_form_delete_submit'),
-    );
-    $form['qid'] = array(
-      '#type' => 'value',
-      '#value' => $queue->qid,
-    );
-    $form['count'] = array(
-      '#type' => 'value',
-      '#value' => $queue->count,
-    );
-  }
-
-  nodequeue_api_queue_form($queue, $form);
-
-  return $form;
-}
-
-/**
- * Validate function for the nodequeue_queue form.
- */
-function nodequeue_edit_queue_form_validate($form, &$form_state) {
-  if (empty($form_state['values']['title'])) {
-    form_set_error('title', t('Please enter a title for this queue.'));
-  }
-  $queue = (object) $form_state['values'];
-  // fix checkboxes
-  $queue->roles = array_keys(array_filter($queue->roles));
-  $queue->types = array_keys(array_filter($queue->types));
-
-  if (!isset($queue->qid)) {
-    $queue->new = TRUE;
-  }
-
-  nodequeue_api_queue_form_validate($queue, $form_state, $form);
-}
-
-/**
- * Submit function for the nodequeue_queue form.
- */
-function nodequeue_edit_queue_form_submit($formid, &$form_state) {
-  $queue = (object) $form_state['values'];
-  // fix checkboxes
-  $queue->roles = array_keys(array_filter($queue->roles));
-  $queue->types = array_keys(array_filter($queue->types));
-
-  if (!isset($queue->qid)) {
-    $queue->new = TRUE;
-  }
-
-  // Modify show_in_links based on whether or not links are available.
-  $queue->show_in_links = !empty($queue->link) || !empty($queue->link_remove);
-
-  nodequeue_api_queue_form_submit($queue, $form_state);
-
-  $qid = nodequeue_save($queue); // sets $queue->qid if needed.
-
-  nodequeue_api_queue_form_submit_finish($queue, $form_state);
-
-  nodequeue_check_subqueue_sizes($queue);
-
-  if ($queue->new) {
-    $form_state['values']['qid'] = $qid;
-    drupal_set_message(t('The queue has been created.'));
-  }
-  else {
-    drupal_set_message(t('The queue has been updated.'));
-  }
-  $form_state['redirect'] = 'admin/structure/nodequeue';
-}
-
-/**
- * Delete-validate function for the nodequeue_queue form.
- */
-function nodequeue_edit_queue_form_delete_validate($form, &$form_state) {
-  // No validation for delete step!  But we need to have this so the default validation isn't called.
-}
-
-/**
- * Delete-submit function for the nodequeue_queue form.
- */
-function nodequeue_edit_queue_form_delete_submit($formid, &$form_state) {
-  $form_state['redirect'] = "admin/structure/nodequeue/" . $form_state['values']['qid'] . "/delete";
-}
-
-/**
- * Confirm form to delete a queue
- */
-function nodequeue_admin_delete($form, &$form_state, $queue) {
-  $form['qid'] = array('#type'  => 'value', '#value' => $queue->qid);
-  return confirm_form($form,
-    t('Are you sure you want to delete "%title"?', array('%title' => $queue->title)),
-    isset($_GET['destination']) ? $_GET['destination'] : 'admin/structure/nodequeue',
-    t('This action cannot be undone.'),
-    t('Delete'), t('Cancel')
-  );
-}
-
-/**
- * Submit function for nodequeue delete
- */
-function nodequeue_admin_delete_submit($formid, &$form_state) {
-  if ($form_state['values']['confirm']) {
-    nodequeue_delete($form_state['values']['qid']);
-    drupal_set_message(t('The queue has been deleted.'));
-  }
-  $form_state['redirect'] = 'admin/structure/nodequeue';
-}
-
-/**
- * Page callback to view a queue.
- */
-function nodequeue_admin_view($queue, $subqueue = array()) {
-  drupal_set_title(t("Nodequeue '@title'", array('@title' => $queue->title)), PASS_THROUGH);
-  $qid = $queue->qid;
-
-  // If the queue has just one subqueue, it gets special treatment.
-  if (empty($subqueue->sqid)) {
-    if ($queue->subqueues == 1) {
-      $subqueues = nodequeue_load_subqueues_by_queue($queue->qid);
-      $subqueue = array_shift($subqueues);
-    }
-    else {
-      // display subqueue list page.
-      return nodequeue_view_subqueues($queue);
-    }
-  }
-  else if ($subqueue->sqid) {
-    if (!nodequeue_api_subqueue_access($subqueue, NULL, $queue)) {
-      return drupal_not_found();
-    }
-    // Adjust properties of the page so our subqueue is in the right
-    // visual place.
-    drupal_set_title(t("Subqueue '@title'",
-      array('@title' => nodequeue_title_substitute($queue->subqueue_title, $queue, $subqueue))), PASS_THROUGH);
-    $breadcrumb = drupal_get_breadcrumb();
-    $breadcrumb[] = l($queue->title, "admin/structure/nodequeue/$queue->qid");
-    drupal_set_breadcrumb($breadcrumb);
-  }
-  return nodequeue_arrange_subqueue($queue, $subqueue);
-}
-
-/**
- * View the contents of a subqueue, with links to re-order the queue.
- */
-function nodequeue_arrange_subqueue($queue, $subqueue = NULL) {
-  // set title and load subqueue if it's not provided
-  drupal_set_title(t("Nodequeue '@title'", array('@title' => $queue->title)), PASS_THROUGH);
-  if (!$subqueue->sqid) {
-    if ($queue->subqueues == 1) {
-      $subqueues = nodequeue_load_subqueues_by_queue($queue->qid);
-      $subqueue = array_shift($subqueues);
-    }
-    else {
-      return drupal_not_found();
-    }
-  }
-  else if ($subqueue->sqid) {
-    if (!nodequeue_api_subqueue_access($subqueue, NULL, $queue)) {
-      return drupal_not_found();
-    }
-    drupal_set_title(t("Subqueue '@title'", array('@title' => nodequeue_title_substitute($queue->subqueue_title, $queue, $subqueue))), PASS_THROUGH);
-  }
-
-  // get nodes from the queue
-  $nodes = _nodequeue_dragdrop_get_nodes($queue, $subqueue);
-
-  return drupal_get_form('nodequeue_arrange_subqueue_form', $queue, $nodes, $subqueue);
-}
-
-/**
- * Return a list of nodes in a specific subqueue.
- */
-function _nodequeue_dragdrop_get_nodes($queue, $subqueue) {
-  $order = $queue->reverse ? 'DESC' : 'ASC';
-
-  $visible = nodequeue_nids_visible($subqueue->sqid);
-
-  // get a list of all nodes in the subqueue, regardless of access restrictions
-  $query = db_select('node', 'n')
-    ->distinct();
-    
-  $query->leftJoin('users', 'u', 'n.uid = u.uid');
-  $query->leftJoin('nodequeue_nodes', 'nq', 'nq.nid = n.nid');
-  $query->fields('n', array('nid', 'title', 'created'))
-    ->fields('nq', array('position'))
-    ->fields('u', array('name'))
-    ->condition('nq.sqid', $subqueue->sqid)
-    ->orderBy('nq.position', $order);
-  $result = $query->execute();
-  //$result = db_query('SELECT DISTINCT(n.nid), n.title, n.uid, u.name, n.created, nq.position FROM {node} n LEFT JOIN {users} u on n.uid = u.uid LEFT JOIN {nodequeue_nodes} nq ON nq.nid = n.nid WHERE nq.sqid = :sqid ORDER BY nq.position ' . $order, array(':sqid' => $subqueue->sqid));
-
-  $nodes = array();
-  foreach ($result as $node) {
-    $node->visible = isset($visible[$node->nid]) ? TRUE : FALSE;
-    $nodes[] = $node;
-  }
-
-  return $nodes;
-}
-
-/**
- * Form definition for nodequeue drag'n'drop form.
- */
-function nodequeue_arrange_subqueue_form($form, $form_state, $queue, $nodes, $subqueue) {
-  $form = array('#tree' => TRUE);
-
-  // prepare the main part of the form which will be themed as a table
-  $count = count($nodes);
-  $form['nodes'] = array();
-  $form['nodes']['#theme'] = 'nodequeue_arrange_subqueue_form_table';
-  
-  // Theme function needs these
-  $form['nodes']['#queue']    = (array) $queue;
-  $form['nodes']['#subqueue'] = (array) $subqueue;
-
-  foreach ($nodes as $node) {
-    $form['nodes'][$node->nid]['#node'] = (array) $node;
-    if ($node->visible) {
-      $form['nodes'][$node->nid]['#node'] = (array) $node;
-      $form['nodes'][$node->nid]['title'] = array('#markup' => l($node->title, 'node/' . $node->nid));
-      $form['nodes'][$node->nid]['author'] = array('#markup' => theme('username', array('account' => $node)));
-      $form['nodes'][$node->nid]['date'] = array('#markup' => format_date($node->created, 'short'));
-    }
-    else {
-      $form['nodes'][$node->nid]['title'] = array('#value' => t('Restricted node, NID: @nid', array('@nid' => $node->nid)));
-      $form['nodes'][$node->nid]['author'] = array('#value' => '');
-      $form['nodes'][$node->nid]['date'] = array('#value' => '');
-    }
-
-    $form['nodes'][$node->nid]['edit'] = array('#markup' => l(t('edit'), 'node/' . $node->nid . '/edit', array('attributes' => array('title' => t('Edit this node')))));
-    $form['nodes'][$node->nid]['position'] = array(
-      '#type' => 'position',
-      '#delta' => $count,
-      '#default_value' => $node->position,
-      '#attributes' => array(
-        'class' => array('node-position'),
-      ),
-    );
-
-    $attr = array(
-      '#attributes' => array(
-        'title' => t('Remove from queue'),
-        'style' => 'display: none;',
-        'class' => array('nodequeue-remove'),
-        'id' => 'nodequeue-remove-' . $node->nid,
-      ),
-      'query' => nodequeue_get_query_string($node->nid, TRUE),
-    );
-    $form['nodes'][$node->nid]['remove'] = array('#markup' => l(t('remove'), 'admin/structure/nodequeue/' . $queue->qid . '/remove-node/' . $subqueue->sqid . '/' . $node->nid, $attr));
-  }
-
-  // add a textfield for adding nodes to the queue
-  $form['add'] = array(
-    '#type'   => 'markup',
-  );
-  $form['add']['nid'] = array(
-    '#type' => 'textfield',
-    '#autocomplete_path' => 'nodequeue/autocomplete/' . $subqueue->sqid,
-    '#default_value' => t('Enter the title of a node to add it to the queue'),
-  );
-  $form['add']['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Add node & save queue'),
-    '#submit' => array('nodequeue_arrange_subqueue_form_add_submit'),
-  );
-
-  // add submit, reverse, shuffle, and clear buttons
-  $form['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Save')
-  );
-  $form['reverse'] = array(
-    '#type' => 'submit',
-    '#value' => t('Reverse'),
-    '#submit' => array('nodequeue_arrange_subqueue_form_reverse_submit'),
-  );
-  $form['shuffle'] = array(
-    '#type' => 'submit',
-    '#value' => t('Shuffle'),
-    '#submit' => array('nodequeue_arrange_subqueue_form_shuffle_submit'),
-  );
-  $form['clear'] = array(
-    '#type' => 'submit',
-    '#value' => t('Clear'),
-    '#submit' => array('nodequeue_arrange_subqueue_form_clear_submit'),
-  );
-  //$form['#validate'][] = 'nodequeue_arrange_subqueue_form_add_validate';
-  // disable all buttons if the queue is empty
-  if ($count == 0) {
-    $form['submit']['#disabled']  = TRUE;
-    $form['reverse']['#disabled'] = TRUE;
-    $form['shuffle']['#disabled'] = TRUE;
-    $form['clear']['#disabled']   = TRUE;
-  }
-
-  return $form;
-}
-
-/**
- * Validate handler for nodequeue_arrange_subqueue_form.
- */
-function nodequeue_arrange_subqueue_form_validate($form, &$form_state) {
-  $positions = array();
-  foreach ($form_state['values'] as $nid => $element) {
-    if (is_numeric($nid) && is_numeric($element['position'])) {
-      $positions[$nid] = $element['position'];
-    }
-  }
-  if (count(array_unique($positions)) < count($positions)) {
-    $seen = array();
-    foreach ($positions as $nid => $position) {
-      if (isset($seen[$position])) {
-        form_set_error($nid . '][position', t('Duplicate position value.'));
-      }
-      $seen[$position] = TRUE;
-    }
-  }
-}
-
-/**
- * Submit function for nodequeue_arrange_subqueue_form on 'Reverse' button.
- *
- * Yeah, this just calls the below function with a different parameter, but in D6 we're not supposed to use the $form['ops'].
- */
-function nodequeue_arrange_subqueue_form_reverse_submit($form, &$form_state) {
-  nodequeue_arrange_subqueue_form_submit($form, $form_state, TRUE, FALSE);
-}
-
-function nodequeue_arrange_subqueue_form_shuffle_submit($form, &$form_state) {
-  nodequeue_arrange_subqueue_form_submit($form, $form_state, FALSE, TRUE);
-}
-
-/**
- * Submit handler for nodequeue drag'n'drop form. Updates node positions in {nodequeue_nodes}.
- */
-function nodequeue_arrange_subqueue_form_submit($form, &$form_state, $reverse = FALSE, $shuffle = FALSE) {
-  $nodes = array();
-  foreach ($form_state['values']['nodes'] as $nid => $element) {
-    if (is_numeric($nid)) {
-      $nodes[$form_state['values']['nodes'][$nid]['position']] = $nid;
-    }
-  }
-
-  $message = t('The queue has been updated.');
-
-  if ($reverse || $shuffle) {
-    $keys = array_keys($nodes);
-    $values = array_values($nodes);
-
-    // reverse the list if the reverse button was pressed
-    if ($reverse) {
-      $values = array_reverse($values);
-      $message = t('The queue has been reversed.');
-    }
-
-    // shuffle the list if the shuffle button was pressed.
-    if ($shuffle) {
-      shuffle($values);
-      $message = t('The queue has been shuffled.');
-    }
-
-    $nodes = array_combine($keys, $values);
-  }
-
-  $qid  = $form['nodes']['#queue']['qid'];
-  $sqid = $form['nodes']['#subqueue']['sqid'];
-  nodequeue_save_subqueue_order($nodes, $qid, $sqid);
-
-  drupal_set_message($message);
-}
-
-/**
- * Validates new subqueue order information and if it passes validation,
- * deletes the old subqueue data from the database and saves the new data.
- *
- * @param $nodes:
- *   an array of nodes, keyed on the subqueue position.
- * @param $qid
- *   the queue id
- * @param unknown_type $sqid
- *   the subqueue id
- * @return An array where the first element is a numeric status code
- *   (0 means successfully saved) and the second element is a status message.
- */
-function nodequeue_save_subqueue_order($nodes, $qid, $sqid) {
-  $positions = array();
-  $now = REQUEST_TIME;
-
-  $queue = nodequeue_load($qid);
-  $subqueue = nodequeue_load_subqueue($sqid);
-
-  // cleanup the node array
-  $clean = array();
-  $count = 1;
-  ksort($nodes);
-  foreach ($nodes as $pos => $nid) {
-    if (!is_numeric($nid) || $nid < 1) {
-      return array(NODEQUEUE_INVALID_NID, 'Invalid nid value. New subqueue order not saved.');
-    }
-    if (is_numeric($pos)) {
-      $clean[$count] = $nid;
-      $count++;
-    }
-    else if ($pos == 'r') {
-      // call nodequeue_remove hook
-      module_invoke_all('nodequeue_remove', $sqid, $nid);
-    }
-    else {
-      return array(NODEQUEUE_INVALID_POSITION, 'Invalid position value. New subqueue order not saved.');
-    }
-  }
-  $nodes = $clean;
-
-  if (count(array_unique($nodes)) < count($nodes)) {
-    return array(NODEQUEUE_DUPLICATE_POSITION, 'Duplicate position values are not allowed. New subqueue order not saved.');
-  }
-
-  // clear the queue and save the new positions
-  db_delete('nodequeue_nodes')
-    ->condition('sqid', $sqid)
-    ->execute();
-  foreach ($nodes as $pos => $nid) {
-    $args = array();
-    if ($pos != 'r') {
-      $query = db_insert('nodequeue_nodes')
-        ->fields(array(
-          'sqid' => $sqid,
-          'qid' => $qid,
-          'nid' => $nid,
-          'position' => $pos,
-          'timestamp' => $now,
-        ))
-        ->execute();
-    }
-  }
-
-  if ($queue->size) {
-    // only necessary if the subqueue is of finite length
-    nodequeue_check_subqueue_size($queue, $subqueue);
-  }
-
-  return array(NODEQUEUE_OK, 'The queue has been updated.');
-}
-
-function nodequeue_arrange_subqueue_form_clear_submit($form, &$form_state) {
-  $form_state['redirect'] = 'admin/structure/nodequeue/' . $form['nodes']['#queue']['qid'] . '/clear/' . $form['#subqueue']['sqid'];
-}
-
-function nodequeue_arrange_subqueue_form_add_submit($form, &$form_state) {
-  $queue = nodequeue_load($form['nodes']['#queue']['qid']);
-  $subqueue = nodequeue_load_subqueue($form['nodes']['#subqueue']['sqid']);
-
-  if (!empty($form_state['values']['add']['nid'])) {
-    preg_match('/\[nid: (\d+)\]$/', $form_state['values']['add']['nid'], $matches);
-    $nid = $matches[1];
-    if (empty($nid)) {
-      form_set_error('', t('Please enter a valid node title.'));
-    }
-  }
-
-  nodequeue_subqueue_add($queue, $subqueue, $nid);
-}
-
-/**
- * Page callback to remove an item from a queue. This will be used only
- * if javascript is disabled in the client, and is a fallback technique.
- * This differs from nodequeue_admin_remove_node in that it removes a
- * specific position, which is necessary in case a node is in a queue
- * multiple times.
- */
-function nodequeue_admin_remove($queue, $subqueue, $pos) {
-  if (!is_numeric($pos) || !is_object($subqueue) || !nodequeue_check_token($pos)) {
-    return drupal_goto();
-  }
-
-  nodequeue_subqueue_remove($subqueue, $pos);
-
-  drupal_goto();
-}
-
-/**
- * Confirm form to clear a queue.
- */
-function nodequeue_clear_confirm($form, &$form_state, $queue, $subqueue) {
-  if (empty($subqueue)) {
-    return;
-  }
-
-  drupal_set_title(t("Nodequeue '@title'", array('@title' => $queue->title)), PASS_THROUGH);
-
-  $form['qid']  = array('#type' => 'value', '#value' => $queue->qid);
-  $form['sqid'] = array('#type' => 'value', '#value' => $subqueue->sqid);
-
-  return confirm_form($form,
-    t('Are you sure you want to clear the nodequeue %queue?', array('%queue' => nodequeue_title_substitute($queue->subqueue_title, $queue, $subqueue))),
-    isset($_GET['destination']) ? $_GET['destination'] : 'admin/structure/nodequeue/' . $queue->qid . '/view/' . $subqueue->sqid,
-    t('This action will remove all nodes from the queue and cannot be undone.'),
-    t('Clear'), t('Cancel')
-  );
-}
-
-/**
- * Submit function for nodequeue clear confirm
- */
-function nodequeue_clear_confirm_submit($form, &$form_state) {
-  if ($form_state['values']['confirm']) {
-    nodequeue_queue_clear($form_state['values']['sqid']);
-    drupal_set_message(t('The queue has been cleared.'));
-    $form_state['redirect'] = 'admin/structure/nodequeue/' . $form_state['values']['qid'] . '/view/' . $form_state['values']['sqid'];
-  }
-}
-
-/**
- * Page callback for autocomplete.
- */
-function nodequeue_autocomplete($sqid = NULL, $string = NULL) {
-  $matches = _nodequeue_autocomplete($sqid, $string);
-  drupal_json_output(drupal_map_assoc($matches));
-}
-
-function _nodequeue_autocomplete($sqid, $string) {
-  $output = array();
-
-  if (!$sqid || empty($sqid) || !$string) {
-    return $output;
-  }
-
-  $subqueue = nodequeue_load_subqueue($sqid);
-  if (!$subqueue) {
-    return $output;
-  }
-
-  $queue = nodequeue_load($subqueue->qid);
-  if (!$queue) {
-    return $output;
-  }
-
-  $nodes = nodequeue_api_autocomplete($queue, $subqueue, $string);
-  return $nodes;
-}
-
-/*
- * Get the list of nodes in the subqueue, taking into account node access restrictions.
- */
-function nodequeue_nids_visible($sqid = -1, $account = NULL) {
-  $node_status_sql = '';
-  if (!$account) {
-    global $user;
-    $account = $user;
-  }
-  $nids_visible = array();
-
-  $query = db_select('node', 'n')
-    ->fields('n', array('nid'))
-    ->addTag('node_access')
-    ->distinct()
-    ->condition('nq.sqid', $sqid)
-    ->orderBy('nq.position', 'ASC');
-  $query->leftJoin('nodequeue_nodes', 'nq', 'nq.nid = n.nid');
-
-  if (!user_access('administer nodes', $account)) {
-    $query->condition(db_or()->condition('n.status', 1)->condition('n.uid', $account->uid));
-  }
-
-  $query_restricted = $query->execute();
-  foreach ($query_restricted as $result_restricted) {
-    $nids_visible[$result_restricted->nid] = $result_restricted->nid;
-  }
-  return $nids_visible;
-}
-// --------------------------------------------------------------------------
-// Nodequeue manipulation API.
-
-/**
- * @defgroup nodequeue_api
- * @{
- * Access to the internals of nodequeues are handled primarily through these
- * API functions. They allow easy loading of queues for manipulation.
- */
-
-/**
- * The nodequeue queue class; the constructor makes it so we don't have to
- * always check to see if our variables are empty or not.
- */
-class nodequeue_queue {
-  var $title = '';
-  var $size = 0;
-  var $link = '';
-  var $link_remove = '';
-  var $roles = array();
-  var $types = array();
-  var $show_in_links = TRUE;
-  var $show_in_tab = TRUE;
-  var $show_in_ui = TRUE;
-  var $reference = 0;
-  var $i18n = 1;
-
-  var $subqueue_title = '';
-  var $reverse = FALSE;
-
-  // runtime
-  var $subqueues = array();
-  var $subqueue = NULL;
-
-  var $current = NULL;
-
-  function nodequeue_queue($type) {
-    $this->owner = $type;
-  }
-}
-
-/**
- * Return TRUE If the specified account has access to manipulate this queue.
- */
-function nodequeue_queue_access($queue, $subqueue = NULL, $account = NULL) {
-  if (!$account) {
-    global $user;
-    $account = $user;
-  }
-
-  // Automatically true if all queues.
-  if (user_access('manipulate all queues', $account)) {
-    return TRUE;
-  }
-
-  // Automatically false if they can't manipulate queues at all.
-  if (!user_access('manipulate queues', $account) || empty($queue->roles)) {
-    return FALSE;
-  }
-
-  if ($subqueue) {
-    return nodequeue_api_subqueue_access($subqueue, $account);
-  }
-
-  if (!nodequeue_api_queue_access($queue, $account)) {
-    return FALSE;
-  }
-
-  $roles = array_keys((array) $account->roles) + array(DRUPAL_AUTHENTICATED_RID);
-  return (bool) array_intersect($roles, $queue->roles);
-}
-
-/**
- * Fetch a list of available queues for a given location. These queues
- * will be fully loaded and ready to go.
- */
-function nodequeue_load_queues_by_type($type, $location = NULL, $account = NULL, $bypass_cache = FALSE) {
-  $qids = nodequeue_get_qids($type, $account, $bypass_cache);
-  if ($location) {
-    nodequeue_filter_qids($qids, $location);
-  }
-  return nodequeue_load_queues(array_keys($qids), $bypass_cache);
-}
-
-/**
- * Used by menu system to determine access to the node and the queue in question.
- *
- * No, this isn't some odd hook_access implementation.
- *
- * @param unknown_type $node
- * @param unknown_type $queue
- * @return unknown
- */
-function nodequeue_node_and_queue_access($node, $queue, $subqueue = NULL) {
-  return nodequeue_nodequeue_access($node->type) && nodequeue_queue_access($queue, $subqueue);
-}
-
-function nodequeue_node_tab_access($node) {
-  if (!user_access('manipulate queues')) {
-    //For performance reasons: If the user can't manipulate queues, there is no reason to run the rest of these queries.
-    return FALSE;
-  }
-  $queues = nodequeue_load_queues_by_type($node->type, 'tab');
-  $subqueues = nodequeue_get_subqueues_by_node($queues, $node);
-  if (empty($subqueues)) {
-    return FALSE;
-  }
-  foreach ($subqueues as $subqueue) {
-    if (!nodequeue_api_subqueue_access($subqueue)) {
-      unset($subqueues[$subqueue->sqid]);
-    }
-  }
-  return (variable_get('nodequeue_use_tab', 1) && !empty($subqueues));
-}
-
-/**
- * Return TRUE if $user can queue(s) for this node.
- *
- * @param $type
- *   The node type.
- * @param $location
- *   Optional argument. May be one of:
- *   - 'links': Only check for queues that have node links.
- *   - 'tab': Only check for queues that appear on the node tab.
- *   - 'ui': Only check for queues that appear in the UI.
- */
-function nodequeue_nodequeue_access($type, $location = NULL, $account = NULL) {
-  if (isset($type->type)) {
-    $type = $type->type;
-  }
-  $qids = nodequeue_get_qids($type, $account);
-  if ($location) {
-    nodequeue_filter_qids($qids, $location);
-  }
-
-  return !empty($qids);
-}
-
-/**
- * Filter a list of qids returned by nodequeue_get_qids to a location.
- *
- * @param $qids
- *   An array of $qids from @see nodequeue_get_qids()
- * @param $location
- *   One of:
- *   - 'links': Only check for queues that have node links.
- *   - 'tab': Only check for queues that appear on the node tab.
- *   - 'ui': Only check for queues that appear in the UI.
- */
-function nodequeue_filter_qids(&$qids, $location) {
-  $var = "show_in_$location";
-  foreach ($qids as $qid => $info) {
-    if (empty($info->$var)) {
-      unset($qids[$qid]);
-    }
-  }
-}
-
-/**
- * Get an array of qids applicable to this node type.
- *
- * @param $type
- *   The node type.
- * @param $account
- *   The account to test against. Defaults to the currently logged in user.
- *
- * @return $qids
- *   An array in the format: @code { array($qid => array('qid' => $qid, 'show_in_tab' '
- *   => true/false, 'show_in_links' => true/false }
- *
- * @param $bypass_cache
- *  Boolean value indicating whether to bypass the cache or not.
- */
-function nodequeue_get_qids($type, $account = NULL, $bypass_cache = FALSE) {
-  if (!isset($account)) {
-    global $user;
-    $account = $user;
-  }
-
-  static $cache = array();
-  if ($bypass_cache || !isset($cache[$type])) {
-    $roles_join = $roles_where = '';
-    $roles = array();
-
-    // superuser always has access.
-    if (!user_access('manipulate all queues', $account)) {
-      $roles_join = "INNER JOIN {nodequeue_roles} nr ON nr.qid = nq.qid ";
-      $roles = array_keys((array) $account->roles) + array(DRUPAL_AUTHENTICATED_RID);
-
-      $roles_where .= "AND nr.rid IN (:roles)";
-    }
-
-    $sql = 'SELECT nq.qid, nq.show_in_tab, nq.show_in_links, nq.show_in_ui, nq.i18n ' .
-      'FROM {nodequeue_queue} nq ' .
-      'INNER JOIN {nodequeue_types} nt ON nt.qid = nq.qid ' . $roles_join .
-      "WHERE nt.type = :type " . $roles_where;
-    $result = db_query($sql, array(':type' => $type, ':roles' => $roles));
-
-    $qids = array();
-    foreach ($result as $qid) {
-      $qids[$qid->qid] = $qid;
-    }
-    $cache[$type] = $qids;
-  }
-  return $cache[$type];
-}
-
-/**
- * Get an array all qids using the pager query. This administrative list
- * does no permission checking, so should only be available to users who
- * have passed the 'administer queues' check.
- *
- * @param $page_size
- *   The page size to use. If 0 will be all queues.
- * @param $pager_element
- *   In the rare event this should use another pager element, set this..
- *
- * @return $qids
- *   An array in the format: @code { array($qid => array('qid' => $qid, 'show_in_tab' '
- *    => true/false, 'show_in_links' => true/false }
- * @param $bypass_cache
- *   Boolean value indicating whether to bypass the cache or not.
- */
-function nodequeue_get_all_qids($page_size = 25, $pager_element = 0, $bypass_cache = FALSE) {
-  static $cache = NULL;
-  if ($bypass_cache || !isset($cache)) {
-    $result = db_select('nodequeue_queue', 'nq')
-      ->extend('PagerDefault')
-      ->extend('TableSort')
-      ->fields('nq', array('qid'))
-      ->limit($page_size)
-      ->execute();
-
-    $qids = array();
-    if (!empty($result)) {
-      foreach ($result as $qid) {
-        $qids[$qid->qid] = $qid->qid;
-      }
-    }
-    $cache = $qids;
-  }
-  return $cache;
-}
-
-/**
- * Load an array of $qids.
- *
- * This exists to provide a way of loading a bunch of queues with
- * the fewest queries. Loading 5 queues results in only 4 queries,
- * not 20. This also caches queues so that they don't get loaded
- * repeatedly.
- *
- * @param $qids
- *   An array of queue IDs to load.
- *
- * @param $bypass_cache
- *   Boolean value indicating whether to bypass the cache or not.
- */
-function nodequeue_load_queues($qids = array(), $bypass_cache = FALSE) {
-  static $cache = array();
-  $to_load = $loaded = array();
-
-  foreach ($qids as $qid) {
-    if ($bypass_cache || !isset($cache[$qid])) {
-      $to_load[] = $qid;
-    }
-  }
-
-  if (!empty($to_load)) {
-    $result = db_query("SELECT q.*, COUNT(s.sqid) AS subqueues FROM {nodequeue_queue} q LEFT JOIN {nodequeue_subqueue} s ON q.qid = s.qid WHERE q.qid IN (:to_load) GROUP BY q.qid", array(':to_load' => $to_load));
-    
-    foreach ($result as $queue) {
-      $loaded[$queue->qid] = $queue;
-      // ensure valid defaults:
-      $loaded[$queue->qid]->types = array();
-      $loaded[$queue->qid]->roles = array();
-      $loaded[$queue->qid]->count = 0;
-    }
-
-    $result = db_query("SELECT qid, rid FROM {nodequeue_roles} WHERE qid IN (:to_load)", array(':to_load' =>$to_load));
-    foreach ($result as $obj) {
-      $loaded[$obj->qid]->roles[] = $obj->rid;
-    }
-
-    $result = db_query("SELECT qid, type FROM {nodequeue_types} WHERE qid IN (:to_load)", array(':to_load' =>$to_load));
-    foreach ($result as $obj) {
-      $loaded[$obj->qid]->types[] = $obj->type;
-    }
-
-    $context = 'load_queues';
-    drupal_alter('nodequeue', $loaded, $context);
-  }
-
-  if ($bypass_cache) {
-    return $loaded;
-  }
-  else {
-    if (!empty($loaded)) {
-      $cache += $loaded;
-    }
-    $queues = array();
-    foreach ($qids as $qid) {
-      if (isset($cache[$qid])) {
-        $queues[$qid] = $cache[$qid];
-      }
-    }
-    return $queues;
-  }
-}
-
-/**
- * Load a nodequeue.
- *
- * @param $qid
- *   The qid of the queue to load.
- */
-function nodequeue_load($qid) {
-  $queues = nodequeue_load_queues(array($qid));
-  return !empty($queues) ? array_shift($queues) : array();
-}
-
-/**
- * This function exists so that %subqueue will work in hook_menu.
- */
-function subqueue_load($sqid) {
-  if (!$sqid) {
-    return NULL;
-  }
-  return array_shift(nodequeue_load_subqueues(array($sqid)));
-}
-
-/**
- * Load a list of subqueues
- *
- * This exists to provide a way of loading a bunch of queues with
- * the fewest queries. Loading 5 queues results in only 4 queries,
- * not 20. This also caches queues so that they don't get loaded
- * repeatedly.
- *
- * @param $sqids
- *   An array of subqueue IDs to load.
- * @param $bypass_cache
- *   Boolean value indicating whether to bypass the cache or not.
- */
-function nodequeue_load_subqueues($sqids, $bypass_cache = FALSE) {
-  static $cache = array();
-  $to_load = array();
-
-  foreach ($sqids as $sqid) {
-    if ($bypass_cache || !isset($cache[$sqid])) {
-      $to_load[] = $sqid;
-    }
-  }
-
-  if (!empty($to_load)) {
-    $result = db_query("SELECT s.*, COUNT(n.position) AS count FROM {nodequeue_subqueue} s LEFT JOIN {nodequeue_nodes} n ON n.sqid = s.sqid WHERE s.sqid IN (:to_load) GROUP BY s.sqid", array(':to_load' => $to_load));
-    foreach ($result as $obj) {
-      // Sometimes we want to get to subqueues by reference, sometimes by sqid.
-      // sqid is always unique, but reference is sometimes more readily available.
-      $cache[$obj->sqid] = $obj;
-    }
-  }
-
-  foreach ($sqids as $sqid) {
-    if (isset($cache[$sqid])) {
-      $subqueues[$sqid] = $cache[$sqid];
-    }
-  }
-  return $subqueues;
-}
-
-/**
- * Load a single subqueue.
- *
- * @param $sqid
- *   The subqueue ID to load.
- * @param $bypass_cache
- *   Boolean value indicating whether to bypass the cache or not.
- */
-function nodequeue_load_subqueue($sqid, $bypass_cache = FALSE) {
-  $subqueues = nodequeue_load_subqueues(array($sqid), $bypass_cache);
-  if ($subqueues) {
-    return array_shift($subqueues);
-  }
-
-}
-
-/**
- * Load the entire set of subqueues for a queue.
- *
- * This will load the entire set of subqueues for a given queue (and can
- * respect the pager, if desired). It does NOT cache the subqueues like
- * nodequeue_load_subqueues does, so beware of this mixed caching.
- *
- * @param $qids
- *   A $qid or array of $qids
- * @param $page_size
- *   If non-zero, use the pager_query and limit the page-size to the parameter.
- */
-function nodequeue_load_subqueues_by_queue($qids, $page_size = 0) {
-  if (is_numeric($qids)) {
-    $qids = array($qids);
-  }
-
-  if (empty($qids)) {
-    return array();
-  }
-
-  $query = "SELECT s.*, COUNT(n.position) AS count FROM {nodequeue_subqueue} s 
-  LEFT JOIN {nodequeue_nodes} n ON n.sqid = s.sqid WHERE s.qid IN (:qids) GROUP BY s.sqid";
-  $result = db_query($query, array(':qids' => $qids));
-
-  $subqueues = array();
-
-  foreach ($result as $subqueue) {
-    $subqueues[$subqueue->sqid] = $subqueue;
-  }
-
-  return $subqueues;
-}
-
-/**
- * Load a set of subqueues by reference.
- *
- * This can be used to load a set of subqueues by reference; it will primarily
- * be used by plugins that are managing subqueues.
- *
- * @param $references
- *   A keyed array of references to load. The key is the $qid and each value
- *   is another array of references.
- */
-function nodequeue_load_subqueues_by_reference($references, $bypass_cache = FALSE) {
-  static $cache = array();
-  $subqueues = array();
-  if ($bypass_cache) {
-    $cache = array();
-  }
-
-  if (!empty($references)) {
-    $query = db_select('nodequeue_subqueue', 's')
-      ->groupBy('s.sqid')
-      ->fields('s');
-    $query->leftJoin('nodequeue_nodes', 'n', 'n.sqid = s.sqid');
-    $query->addExpression('COUNT(n.position)', 'count');
-    
-    $where = '';
-    foreach ($references as $qid => $reference) {
-      if ($where) {
-        $where .= ' OR ';
-      }
-      $where .= 's.qid = :qid AND s.reference IN (:reference)';
-      $query->where($where, array(':qid' => $qid, ':reference' => $reference));
-    }
-    
-    $result = $query->execute();
-
-    foreach ($result as $subqueue) {
-      $cache[$subqueue->qid][$subqueue->reference] = $subqueues[$subqueue->sqid] = $subqueue;
-    }
-  }
-
-  return $subqueues;
-}
-
-/**
- * Save a nodequeue. This does not save subqueues; those must be added separately.
- */
-function nodequeue_save(&$queue) {
-  $nodequeue_queue_fields = array(
-    'title' => $queue->title,
-    'subqueue_title' => $queue->subqueue_title,
-    'size' => $queue->size,
-    'link' => $queue->link,
-    'link_remove' => $queue->link_remove,
-    'owner' => $queue->owner,
-    'show_in_links' => $queue->show_in_links,
-    'show_in_tab' => $queue->show_in_tab,
-    'show_in_ui' => $queue->show_in_ui,
-    'i18n' => $queue->i18n,
-    'reverse' => $queue->reverse,
-    'reference' => $queue->reference,
-  );
-  
-  if (!isset($queue->qid)) {
-    $queue->qid = isset($queue->name) ? $queue->name : uniqid();
-    $nodequeue_queue_fields['qid'] = $queue->qid;
-    db_insert('nodequeue_queue')
-      ->fields($nodequeue_queue_fields)
-      ->execute();
-    
-    if (function_exists('views_invalidate_cache')) {
-      views_invalidate_cache();
-    }
-  }
-  else {
-    db_update('nodequeue_queue')
-      ->fields($nodequeue_queue_fields)
-      ->condition('qid', $queue->qid)
-      ->execute();
-
-    db_delete('nodequeue_roles')
-      ->condition('qid', $queue->qid)
-      ->execute();
-      
-    db_delete('nodequeue_types')
-      ->condition('qid', $queue->qid)
-      ->execute();
-  }
-
-  if (is_array($queue->roles)) {
-    foreach ($queue->roles as $rid) {
-      db_insert('nodequeue_roles')
-        ->fields(array(
-          'qid' => $queue->qid,
-          'rid' => $rid,
-        ))
-        ->execute();
-    }
-  }
-
-  if (is_array($queue->types)) {
-    foreach ($queue->types as $type) {
-      db_insert('nodequeue_types')
-        ->fields(array(
-          'qid' => $queue->qid,
-          'type' => $type,
-        ))
-        ->execute();
-    }
-  }
-
-  // set our global that tells us whether or not we need to activate hook_link
-  if (db_query("SELECT COUNT(*) FROM {nodequeue_queue} WHERE link <> ''")->fetchField()) {
-    variable_set('nodequeue_links', TRUE);
-  }
-  else {
-    variable_set('nodequeue_links', FALSE);
-  }
-
-  if (isset($queue->add_subqueue) && is_array($queue->add_subqueue)) {
-    foreach ($queue->add_subqueue as $reference => $title) {
-      // If reference is unset it should be set to the qid; this is generally
-      // used for a single subqueue; setting the reference to the qid makes
-      // it easy to find that one subqueue.
-      if ($reference == 0) {
-        $reference = $queue->qid;
-      }
-      nodequeue_add_subqueue($queue, $title, $reference);
-    }
-  }
-  return $queue->qid;
-}
-
-/**
- * Delete a nodequeue.
- */
-function nodequeue_delete($qid) {
-  db_delete('nodequeue_roles')
-    ->condition('qid', $qid)
-    ->execute();
-    
-  db_delete('nodequeue_types')
-    ->condition('qid', $qid)
-    ->execute();
-
-  db_delete('nodequeue_queue')
-    ->condition('qid', $qid)
-    ->execute();
-
-  db_delete('nodequeue_nodes')
-    ->condition('qid', $qid)
-    ->execute();
-
-  db_delete('nodequeue_subqueue')
-    ->condition('qid', $qid)
-    ->execute();
-}
-
-/**
- * Add a new subqueue to a queue.
- *
- * @param $qid
- *   The queue id. This should not be the full queue object.
- * @param $reference
- *   A reference that uniquely identifies this subqueue. If NULL it will
- *   be assigned to the sqid.
- */
-function nodequeue_add_subqueue(&$queue, $title, $reference = NULL) {
-  if (empty($reference)) {
-    $insert_reference = "";
-  }
-  else {
-    $insert_reference = $reference;
-  }
-
-  $subqueue = new stdClass();
-  $subqueue->reference = $reference;
-  $subqueue->qid = $queue->qid;
-  $subqueue->title = $title;
-
-  $subqueue->sqid = isset($subqueue->name) ? $subqueue->name : uniqid();
-  db_insert('nodequeue_subqueue')
-    ->fields(array(
-      'sqid' =>$subqueue->sqid,
-      'qid' => $queue->qid,
-      'reference' => $insert_reference,
-      'title' => $title,
-    ))
-    ->execute();
-
-  // If somehow the $reference is null, here we set it to the sqid.
-  // We have to do it here, because before the insert we don't know what the sqid will be.
-  if (empty($reference)) {
-    db_update('nodequeue_subqueue')
-      ->fields(array('reference' => $subqueue->sqid))
-      ->condition('sqid', $subqueue->sqid)
-      ->execute();
-  }
-
-  return $subqueue;
-}
-
-/**
- * Change the title of a subqueue.
- *
- * Note that only the title of a subqueue is changeable; it can change to
- * reflect updates in taxonomy term names, for example.
- */
-function nodequeue_subqueue_update_title($sqid, $title) {
-  db_update('nodequeue_subqueue')
-    ->fields(array('title' => $title))
-    ->condition('sqid', $sqid)
-    ->execute();
-}
-
-/**
- * Remove a subqueue.
- */
-function nodequeue_remove_subqueue($sqid) {
-  nodequeue_queue_clear($sqid);
-  db_delete('nodequeue_subqueue')
-    ->condition('sqid', $sqid)
-    ->execute();
-}
-
-// --------------------------------------------------------------------------
-// Queue position control
-
-/**
- * Add a node to a queue.
- *
- * @param $queue
- *   The parent queue of the subqueue. This is required so that we can
- *   pop nodes out if the queue breaks size limits.
- * @param $sqid
- *   The subqueue ID to add the node to.
- * @param $nid
- *   The node ID
- */
-function nodequeue_subqueue_add($queue, &$subqueue, $nid) {
-  if (!empty($nid)) {
-    db_insert('nodequeue_nodes')
-      ->fields(array(
-        'sqid' => $subqueue->sqid,
-        'qid' => $queue->qid,
-        'nid' => $nid,
-        'position' => $subqueue->count + 1,
-        'timestamp' => REQUEST_TIME,
-      ))
-      ->execute();
-    $subqueue->count++;
-    // If adding this would make the queue too big, pop the front node
-    // (or nodes) out.
-    if (!empty($queue->size)) {
-      // 0 means infinity so never do this if false
-      nodequeue_check_subqueue_size($queue, $subqueue, $queue->size);
-    }
-    if (module_exists('apachesolr')) {
-      apachesolr_mark_node($nid);
-    }
-    //Invoke the hook to notify other modules of the node addition.
-    module_invoke_all('nodequeue_add', $subqueue->sqid, $nid);
-  }
-}
-
-/**
- * Remove a node from the queue. If a node is in the queue more than once,
- * only the first (closest to 0 position, or the front of the queue) will
- * be removed.
- *
- * @param $sqid
- *   The subqueue to remove nodes from.
- * @param $nid
- *   The node to remove.
- */
-function nodequeue_subqueue_remove_node($sqid, $nid) {
-  if ($pos = nodequeue_get_subqueue_position($sqid, $nid)) {
-    nodequeue_subqueue_remove($sqid, $pos);
-    if (module_exists('apachesolr')) {
-      apachesolr_mark_node($nid);
-    }
-
-    // Invoke the hook to notify other modules of the node removal.
-    module_invoke_all('nodequeue_remove', $sqid, $nid);
-  }
-}
-/**
- * Remove a node or node(s) from a nodequeue by position.
- *
- * If you know the nid but but not the position, use
- * @see nodequeue_subqueue_remove_node() instead.
- *
- * @param $sqid
- *   The subqueue to remove nodes from.
- * @param $start
- *   The first position (starting from 1) to remove.
- * @param $end
- *   The last position to remove. If NULL or equal to $start,
- *   only one node will be removed. Thus if $start is 1 and $end is 2,
- *   the first and second items will be removed from the queue.
- *
- */
-function nodequeue_subqueue_remove($sqid, $start, $end = NULL) {
-  if (!isset($end)) {
-    $end = $start;
-  }
-
-  // Retrieve the nodes that are being removed.
-  $result = db_query("SELECT nid FROM {nodequeue_nodes} WHERE sqid = :sqid AND position >= :start AND position <= :end", 
-    array(
-      ':sqid' => $sqid,
-      ':start' => $start,
-      ':end' => $end,
-    )
-  );
-
-  $diff = $end - $start + 1;
-  db_delete('nodequeue_nodes')
-    ->condition('sqid', $sqid)
-    ->condition('position', $start, '>=')
-    ->condition('position', $end, '<=')
-    ->execute();
-
-  db_update('nodequeue_nodes')
-    ->expression('position', 'position - ' . $diff)
-    ->condition('sqid', $sqid)
-    ->condition('position', $end, '>')
-    ->execute();
-    
-  // Invoke the hook to let other modules know that the nodes were removed.
-  foreach ($result as $node) {
-    module_invoke_all('nodequeue_remove', $sqid, $node->nid);
-  }
-}
-
-/**
- * Empty a subqueue.
- *
- * @param $sqid
- *   The sqid to empty.
- */
-function nodequeue_queue_clear($sqid) {
-  db_delete('nodequeue_nodes')
-    ->condition('sqid', $sqid)
-    ->execute();
-}
-
-/**
- * Guarantee that a subqueue has not gotten too big. It's important to call
- * this after an operation that might have reduced a queue's maximum size.
- * It stores the count to save a query if this is to be followed by an add
- * operation.
- *
- * @param $queue
- *   The queue object.
- * @param $reference
- *   The subqueue to check.
- *
- */
-function nodequeue_check_subqueue_size($queue, &$subqueue, $size = NULL) {
-  if (!isset($size)) {
-    $size = $queue->size;
-  }
-
-  if ($queue->size && $subqueue->count > $size) {
-    nodequeue_subqueue_remove($subqueue->sqid, 1, $subqueue->count - $size);
-    $subqueue->count = $size;
-  }
-}
-
-/**
- * Guarantee that all subqueues are within the size constraints set
- * by $queue->size.
- */
-function nodequeue_check_subqueue_sizes($queue) {
-  // Don't check if size is 0, as that means infinite size.
-  if (!$queue->size) {
-    return;
-  }
-
-  $subqueues = nodequeue_load_subqueues_by_queue($queue->qid);
-  foreach ($subqueues as $subqueue) {
-    nodequeue_check_subqueue_size($queue, $subqueue);
-  }
-}
-
-/**
- * Swap two positions within a subqueue.
- */
-function nodequeue_queue_swap($subqueue, $pos1, $pos2) {
-  // Grab the nid off one of the positions so we can more easily swap.
-  $nid = db_query("SELECT nid FROM {nodequeue_nodes} WHERE sqid = :sqid AND position = :position", 
-    array(':sqid' => $subqueue->sqid, ':position' => $pos1))
-    ->fetchField();
-    
-  if (!$nid) {
-    return;
-  }
-
-  db_update('nodequeue_nodes')
-    ->fields(array('position' => $pos1))
-    ->condition('position', $pos2)
-    ->condition('sqid', $subqueue->sqid)
-    ->execute();
-
-  db_update('nodequeue_nodes')
-    ->fields(array('position' => $pos2))
-    ->condition('nid', $nid)
-    ->condition('sqid', $subqueue->sqid)
-    ->execute();
-
-  // notify other modules of the swap
-  module_invoke_all('nodequeue_swap', $sqid, $nid);
-
-}
-
-/**
- * Move a position within a subqueue up by one.
- */
-function nodequeue_queue_up($subqueue, $position) {
-  if ($position < 2 || $position > $subqueue->count) {
-    return;
-  }
-  nodequeue_queue_swap($subqueue, $position - 1, $position);
-}
-
-/**
- * Move a position within a subqueue down by one.
- */
-function nodequeue_queue_down($subqueue, $position) {
-  if ($position < 1 || $position >= $subqueue->count) {
-    return;
-  }
-  nodequeue_queue_swap($subqueue, $position + 1, $position);
-}
-
-/**
- * Move an item to the front of the queue.
- */
-function nodequeue_queue_front($subqueue, $position) {
-  if ($position < 2 || $position > $subqueue->count) {
-    return;
-  }
-  $result = db_query("SELECT * FROM {nodequeue_nodes} WHERE sqid= :sqid AND position = :position", array(
-    ':sqid' => $subqueue->sqid,
-    ':position' => $position,
-  ));
-  $entry = $result->fetchObject();
-  
-  db_delete('nodequeue_nodes')
-    ->condition('sqid', $subqueue->sqid)
-    ->condition('position', $position)
-    ->execute();
-
-  db_update('nodequeue_nodes')
-    ->expression('position', 'position + 1')
-    ->condition('sqid', $subqueue->sqid)
-    ->condition('position', $position, '<')
-    ->execute();
-    
-  db_insert('nodequeue_nodes')
-    ->fields(array(
-      'qid' => $entry->qid,
-      'sqid' => $subqueue->sqid,
-      'nid' => $entry->nid,
-      'position' => 1,
-      'timestamp' => $entry->timestamp,
-    ))
-    ->execute(); 
-}
-
-/**
- * Move an item to the back of the queue.
- */
-function nodequeue_queue_back($subqueue, $position) {
-  if ($position < 1 || $position >= $subqueue->count) {
-    return;
-  }
-  
-  $result = db_query("SELECT * FROM {nodequeue_nodes} WHERE sqid= :sqid AND position = :position", array(
-    ':sqid' => $subqueue->sqid,
-    ':position' => $position,
-  ));
-  $entry = $result->fetchObject();
-  
-  db_delete('nodequeue_nodes')
-    ->condition('sqid', $subqueue->sqid)
-    ->condition('position', $position)
-    ->execute();
-
-  db_update('nodequeue_nodes')
-    ->expression('position', 'position - 1')
-    ->condition('sqid', $subqueue->sqid)
-    ->condition('position', $position, '<')
-    ->execute();
-    
-  db_insert('nodequeue_nodes')
-    ->fields(array(
-      'qid' => $entry->qid,
-      'sqid' => $subqueue->sqid,
-      'nid' => $entry->nid,
-      'position' => $subqueue->count,
-      'timestamp' => $entry->timestamp,
-    ))
-    ->execute(); 
-}
-
-/**
- * Get the position of a node in a subqueue, or 0 if not found.
- */
-function nodequeue_get_subqueue_position($sqid, $nid) {
-  // We use MIN to make sure we always get the closes to the front of the
-  // queue in case the queue has nodes in it multiple times.
-  $pos = db_query("SELECT MIN(position) FROM {nodequeue_nodes} WHERE sqid = :sqid AND nid = :nid", array(':sqid' => $sqid, ':nid' => $nid))->fetchField();
-  return $pos;
-}
-
-/**
- * Get the position of a node in several subqueues.
- */
-function nodequeue_set_subqueue_positions(&$subqueues, $nid) {
-  if (empty($subqueues)) {
-    return;
-  }
-  
-  $query = db_select('nodequeue_nodes', 'n')
-    ->fields('n', array('sqid'))
-    ->condition('sqid', array_keys($subqueues), 'IN')
-    ->condition('nid', $nid)
-    ->groupBy('sqid');
-  $query->addExpression('MIN(position)', 'position');
-  $result = $query->execute();
-
-  foreach ($result as $obj) {
-    $subqueues[$obj->sqid]->position = $obj->position;
-  }
-}
-
-/**
- * Get a list of valid subqueues for a node, along with the position of the node.
- *
- * @param $queues
- *   An array of fully loaded queue objects.
- * @param $node
- *   A fully loaded node object.
- *
- */
-function nodequeue_get_subqueues_by_node($queues, $node) {
-  // Determine which subqueues are valid for each queue.
-  $references = array();
-  static $last_nid = 0;
-  foreach ($queues as $queue) {
-    if ($result = nodequeue_api_subqueues($queue, $node)) {
-      $references[$queue->qid] = is_array($result) ? $result : array($result);
-    }
-  }
-
-  if (empty($references)) {
-    return array();
-  }
-  // only allow the static cache to be used if the nid is the same as the last
-  $subqueues = nodequeue_load_subqueues_by_reference($references, ($last_nid != $node->nid));
-  $last_nid = $node->nid;
-
-  return $subqueues;
-}
-
-/**
- * Get a textual representation of a nodequeue's queue size.
- */
-function nodequeue_subqueue_size_text($max, $count, $long = TRUE) {
-  if (empty($count)) {
-    $message = theme('nodequeue_subqueue_empty_text');
-  }
-  else if ($count == $max) {
-    $message = theme('nodequeue_subqueue_full_text');
-  }
-  else {
-    if ($long) {
-      $message = theme('nodequeue_subqueue_count_text', array('count' => $count));
-    }
-    else {
-      $message = $count;
-    }
-  }
-  return $message;
-}
-
-/**
- * Substitute the subqueue title into some other string.
- *
- * This function does NOT check_plain the title! The output MUST be checked
- * after this is complete.
- */
-function nodequeue_title_substitute($text, $queue, $subqueue) {
-  if (empty($text)) {
-    return $subqueue->title;
-  }
-  $text = str_replace('%subqueue', $subqueue->title, $text);
-  return $text;
-}
-
-/**
- * Shuffle a queue.
- *
- * @param $subqueue
- *   The subqueue to shuffle. May be a sqid or the loaded object.
- */
-function nodequeue_subqueue_shuffle($subqueue) {
-  // Load the queue
-  if (!is_object($subqueue)) {
-    $subqueue = nodequeue_load_subqueue($subqueue);
-  }
-
-  if (empty($subqueue)) {
-    return;
-  }
-
-  $count = $subqueue->count;
-  // Swap each item with another randomly picked one.
-  foreach (range(1, $count) as $i) {
-    nodequeue_queue_swap($subqueue, $i, rand(1, $count));
-  }
-}
-
-/**
- * @} End of defgroup "nodequeue_api"
- */
-
-// --------------------------------------------------------------------------
-// Hooks to implement the default nodequeue type.
-
-/**
- * Implements hook_nodequeue_info().
- */
-function nodequeue_nodequeue_info() {
-  return array('nodequeue' => array(
-    'title' => t('Nodequeue'),
-    'description' => t('Standard nodequeues have just one subqueue. Nodes put into a queue are added to the back of the queue; when a node is added to a full queue, the node in the front of the queue will be popped out to make room.'),
-    ));
-}
-
-/**
- * Implements hook_nodequeue_form_submit().
- */
-function nodequeue_nodequeue_form_submit(&$queue, $form_state) {
-  // This will add a single subqueue to our new queue.
-  if (!isset($queue->qid) && !isset($queue->add_subqueue)) {
-    // A 0 will set the reference to the sqid of the queue.
-    $queue->add_subqueue = array(0 => $queue->title);
-  }
-  //If the qid is set at this point, we're saving an existing queue.
-  if (isset($queue->qid)) {
-    //We don't check to see if the title has been updated since the $queue object already matches $form_state['values'].
-    db_update('nodequeue_subqueue')
-      ->fields(array('title' => $form_state['values']['title']))
-      ->condition('qid', $queue->qid)
-      ->execute();
-  }
-}
-
-// --------------------------------------------------------------------------
-// External queue fetching
-
-/**
- * in general it's preferable to use Views for this functionality.
- */
-function nodequeue_node_titles($sqid, $title = '', $backward = true, $from = 0, $count = 0, $published_only = TRUE) {
-  $orderby = ($backward ? "DESC" : "ASC");
-  $query = db_select('node', 'n')
-    ->fields('n', array('nid', 'title'))
-    ->condition('nn.sqid', $sqid)
-    ->orderBy('nn.position', $orderby)
-    ->addTag('node_access');
-  $query->leftJoin('nodequeue_nodes', 'nn', 'n.nid = nn.nid');
-  
-  if ($published_only) {
-    $query->condition('n.status', 1);
-  }
-
-  if ($count) {
-    $result = $query->range($from, $count)->execute();
-  }
-  else {
-    $result = $query->execute();
-  }
-  return node_title_list($result, $title);
-}
-
-/**
- * Get node_view output from a nodequeue
- */
-function nodequeue_view_nodes($sqid, $backward = TRUE, $teaser = TRUE, $links = TRUE, $from = 0, $count = 0) {
-  $nodes = nodequeue_load_nodes($sqid, $backward, $from, $count);
-  foreach ($nodes as $node) {
-    $output .= node_view($node, $teaser, FALSE, $links);
-  }
-  return $output;
-}
-
-/**
- * Load an array of node objects belonging to a particular nodequeue.
- */
-function nodequeue_load_nodes($sqid, $backward = FALSE, $from = 0, $count = 5, $published_only = TRUE) {
-  $orderby = ($backward ? "DESC" : "ASC");
-  $query = db_select('node', 'n')
-    ->fields('n', array('nid'))
-    ->condition('nn.sqid', $sqid)
-    ->orderBy('nn.position', $orderby)
-    ->addTag('node_access');
-  $query->join('nodequeue_nodes', 'nn', 'n.nid = nn.nid');
-  
-  if ($published_only) {
-    $query->condition('n.status', 1);
-  }
-
-  if ($count) {
-    $result = $query->range($from, $count)->execute();
-  }
-  else {
-    $result = $query->execute();
-  }
-
-  $nodes = array();
-  foreach ($result as $nid) {
-    $nodes[] = node_load($nid->nid);
-  }
-
-  return $nodes;
-}
-
-/**
- * Load the first node of a queue
- */
-function nodequeue_load_front($sqid) {
-  return array_shift(nodequeue_load_nodes($sqid, FALSE, 0, 1));
-}
-
-/**
- * Load the last node of a queue
- */
-function nodequeue_load_back($sqid, $teaser = TRUE, $links = TRUE) {
-  return array_shift(nodequeue_load_nodes($sqid, TRUE, 0, 1));
-}
-
-/**
- * View a random node from a queue
- */
-function nodequeue_view_random_node($sqid, $teaser = TRUE, $links = TRUE) {
-  $count = db_select('node', 'n')
-    ->fields('n', array('nid'))
-    ->addTag('node_access')
-    ->condition('nn.sqid', $sqid)
-    ->condition('n.status', 1)
-    ->countQuery()
-    ->execute()
-    ->fetchField();
-  $query->join('nodequeue_nodes', 'nn', 'n.nid = nn.nid');
-  
-  return nodequeue_view_nodes($sqid, FALSE, $teaser, $links, rand(0, $count - 1), 1);
-}
-
-/**
- * Load a random node object from a queue
- */
-function nodequeue_load_random_node($sqid) {
-  $count = db_select('node', 'n')
-    ->fields('n', array('nid'))
-    ->addTag('node_access')
-    ->condition('nn.sqid', $sqid)
-    ->condition('n.status', 1)
-    ->countQuery()
-    ->execute()
-    ->fetchField();
-  $query->join('nodequeue_nodes', 'nn', 'n.nid = nn.nid');
-  
-  return array_shift(nodequeue_load_nodes($sqid, TRUE, rand(0, $count - 1), 1));
-}
-
-/**
- * Get the position of a node in a subqueue, or FALSE if not found.
- */
-function nodequeue_subqueue_position($sqid, $nid) {
-  return db_query("SELECT position FROM {nodequeue_nodes} WHERE sqid = %d AND nid = %d", $sqid, $nid)->fetchField();
-}
-
-/**
- * Get the position of a node in a queue; this queue MUST have only one
- * subqueue or the results of this function will be unpredictable.
- */
-function nodequeue_queue_position($qid, $nid) {
-  $sqid = db_select('nodequeue_subqueue', 'ns')
-    ->fields('ns', array('sqid'))
-    ->condition('qid', $qid)
-    ->range(0, 1)
-    ->execute()
-    ->fetchField();
-  
-  return nodequeue_subqueue_position($sqid, $nid);
-}
-
-// --------------------------------------------------------------------------
-// API for modules implementing subqueues.
-
-/**
- * Send the nodequeue edit form to the owning module for modification.
- *
- * @param $queue
- *   The queue being edited.
- * @param &$form
- *   The form. This may be modified.
- */
-function nodequeue_api_queue_form($queue, &$form) {
-  $function = $queue->owner . "_nodequeue_form";
-  if (function_exists($function)) {
-    $function($queue, $form);
-  }
-}
-
-/**
- * Validate the nodequeue edit form.
- *
- * @param $queue
- *   The queue being edited.
- * @param $form_state
- *   The form values that were submitted.
- * @param &$form
- *   The actual form object. This may be modified.
- */
-function nodequeue_api_queue_form_validate($queue, &$form_state, &$form) {
-  $function = $queue->owner . "_nodequeue_form_validate";
-  if (function_exists($function)) {
-    $function($queue, $form_state, $form);
-  }
-}
-
-/**
- * Send the nodequeue edit form to the owning module upon submit.
- *
- * @param &$queue
- *   The queue being edited. This may be modified prior to being
- *   saved.
- * @param $form_state
- *   The form values that were submitted.
- */
-function nodequeue_api_queue_form_submit(&$queue, &$form_state) {
-  $function = $queue->owner . "_nodequeue_form_submit";
-  if (function_exists($function)) {
-    $function($queue, $form_state);
-  }
-}
-
-/**
- * Send the nodequeue edit form to the owning module after the queue
- * has been saved.
- *
- * @param &$queue
- *   The queue being edited. This may be modified prior to being
- *   saved.
- * @param $form_state
- *   The form values that were submitted.
- */
-function nodequeue_api_queue_form_submit_finish($queue, &$form_state) {
-  $function = $queue->owner . "_nodequeue_form_submit_finish";
-  if (function_exists($function)) {
-    $function($queue, $form_state);
-  }
-}
-
-/**
- * Fetch a list of subqueues that are valid for this node from
- * the owning module.
- *
- * @param $queue
- *   The queue being edited.
- * @param $node
- *   The loaded node object being checked.
- *
- * @return
- *   An array of subqueues. This will be keyed by $sqid.
- */
-function nodequeue_api_subqueues(&$queue, $node) {
-  $function = $queue->owner . "_nodequeue_subqueues";
-  // This will return an array of references.
-  if (function_exists($function)) {
-    return $function($queue, $node);
-  }
-  else {
-    return $queue->qid;
-  }
-}
-
-/**
- * Fetch a list of nodes available to a given subqueue
- * for autocomplete.
- *
- * @param $queue
- *   The queue that owns the subqueue
- * @param $subqueue
- *   The subqueue
- * @param $string
- *   The string being matched.
- *
- * @return
- *   An keyed array $nid => $title
- */
-function nodequeue_api_autocomplete($queue, $subqueue, $string) {
-  $matches = array();
-  if (empty($string)) {
-    return $matches;
-  }
-
-  $query = db_select('node', 'n')
-    ->addTag('node_access')
-    ->fields('n', array('nid', 'title'))
-    ->condition('n.type', $queue->types, 'IN')
-    ->range(0, 10);
-
-  $where_args = array();
-  global $user;
-  if (!user_access('administer nodes', $user)) {
-    $query->condition(db_or()->condition('n.status', 1)->condition('n.uid', $user->uid));
-  }
-
-  // Run a match to see if they're specifying by nid.
-  $preg_matches = array();
-  $match = preg_match('/\[nid: (\d+)\]/', $string, $preg_matches);
-  if (!$match) {
-    $match = preg_match('/^nid: (\d+)/', $string, $preg_matches);
-  }
-
-  if ($match) {
-    // If it found a nid via specification, reduce our resultset to just that nid.
-    $query->condition('n.nid', $preg_matches[1]);
-  }
-  else {
-    // Build the constant parts of the query.
-    $query->where('LOWER(n.title) LIKE LOWER(:string)', array(':string' => '%%%' . $string . '%%%'));
-  }
-
-  // Call to the API.
-  $function = $queue->owner . "_nodequeue_autocomplete";
-  if (function_exists($function)) {
-    return $function($queue, $subqueue, $string, $where, $where_args);
-  }
-  else {
-    $result = $query->execute();
-      
-    foreach ($result as $node) {
-      $matches[$node->nid] = check_plain($node->title) . " [nid: $node->nid]";
-    }
-  }
-
-  return $matches;
-}
-
-/**
- * Collect info about all of the possible nodequeue types from owning
- * modules.
- */
-function nodequeue_api_info() {
-  return module_invoke_all('nodequeue_info');
-}
-
-function nodequeue_api_queue_access($queue, $account = NULL) {
-  if (!$account) {
-    global $user;
-    $account = $user;
-  }
-
-  if ($queue->owner != 'nodequeue') { // Avoids an infinite loop.
-    $function = $queue->owner . '_queue_access';
-    if (function_exists($function)) {
-      $access = $function($queue, $account);
-    }
-  }
-
-  if (!isset($access)) {
-    $access = TRUE;
-  }
-  return $access;
-}
-
-/**
- * Allows the owning module of a subqueue to restrict access to viewing and
- * manipulating the queue.
- */
-function nodequeue_api_subqueue_access($subqueue, $account = NULL, $queue = NULL) {
-  if (!$account) {
-    global $user;
-    $account = $user;
-  }
-
-  if (!$queue) {
-    $queue = nodequeue_load($subqueue->qid);
-  }
-
-  $function = $queue->owner . '_subqueue_access';
-  if (function_exists($function)) {
-    $access = $function($subqueue, $account, $queue);
-  }
-
-  if (!isset($access)) {
-    $access = TRUE;
-  }
-
-  return $access;
-}
-/**
- * Form builder for the nodequeue settings tab.
- */
-function nodequeue_admin_settings($form, &$form_state) {
-  $form = array();
-  $form['nodequeue_use_tab'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Create a menu tab for each node that could belong to any queues'),
-    '#default_value' => variable_get('nodequeue_use_tab', 1),
-  );
-  $form['nodequeue_tab_display_max'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Include a column on the nodequeue tab for the maximum number of nodes in each queue'),
-    '#default_value' => variable_get('nodequeue_tab_display_max', 1),
-  );
-  $form['nodequeue_tab_name'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Nodequeue tab label'),
-    '#default_value' => variable_get('nodequeue_tab_name', t('Nodequeue')),
-    '#description' => t('If nodes will have a menu tab for manipulating related nodequeues, what should that tab be called?'),
-  );
-  $form['nodequeue_view_per_queue'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Automatically create one view per queue'),
-    '#description' => t("Nodequeue can create a view for each queue. \n
-      If you wish to have fewer views, you can disable this option and use a single view with an argument for the qid."),
-    '#default_value' => variable_get('nodequeue_view_per_queue', 1),
-  );
-  return system_settings_form($form);
-}
-
-/**
- * Generate a query string to use on nodequeue's private links.
- *
- * @param $seed
- *   The seed to use when generating a token. If NULL no token will
- *   be generated.
- * @param $destination
- *   The destination to use. If FALSE one won't be used; if TRUE
- *   one will be generated from drupal_get_destination().
- * @param $query
- *   An array of additional items to add to the query.
- *
- * @return
- *   The query string suitable for use in the l() function.
- */
-function nodequeue_get_query_string($seed, $destination = FALSE, $query = array()) {
-  $dest = drupal_get_destination();
-  foreach ($dest as $key => $value) {
-    $query[$key] = $value;
-  }
-
-  if (isset($seed)) {
-    $token = explode('=', nodequeue_get_token($seed));
-    $query[$token[0]] = $token[1];
-  }
-
-  return $query;
-
-  return implode('&', $query);
-}
-
-/**
- * Get a private token used to protect nodequeue's links from spoofing.
- */
-function nodequeue_get_token($nid) {
-  return 'token=' . drupal_get_token($nid);
-}
-
-/**
- * Check to see if the token generated from seed matches.
- */
-function nodequeue_check_token($seed) {
-  return drupal_get_token($seed) == $_GET['token'];
-}
-
-/* --- UTILITY -------------------------------------------------------------- */
-
-/**
- * Helper function - since hook_menu now takes a function instead of a boolean,
- * this function is used to compute the user's access.
- *
- * @return boolean
- */
-function _nodequeue_access_admin_or_manipulate() {
-  return user_access('administer nodequeue') || user_access('manipulate queues');
-}
-
-/* --- THEME ---------------------------------------------------------------- */
-
-/**
- * Theme the subqueue overview as a sortable list.
- *
- * @ingroup themeable
- */
-function theme_nodequeue_arrange_subqueue_form_table($variables) {
-  $form = $variables['form'];
-
-  $output = '';
-
-  // get css to hide some of the help text if javascript is disabled
-  drupal_add_css(drupal_get_path('module', 'nodequeue') . '/nodequeue.css');
-
-  // TODO: Would be nice to expose qid, sqid, reference as classes for more custom theming :).
-  // TODO: Create unique ID to make multiple tabledrag forms on a page possible
-  drupal_add_tabledrag('nodequeue-dragdrop', 'order', 'sibling', 'node-position');
-  drupal_add_js(drupal_get_path('module', 'nodequeue') . '/nodequeue_dragdrop.js');
-
-  drupal_add_js(
-    array(
-      'nodequeue' => array(
-        'reverse' => (bool) $form['#queue']['reverse'],
-      )
-    ), 
-    array(
-      'type' => 'setting', 
-      'scope' => JS_DEFAULT,
-    )
-  );
-
-  // render form as table rows
-  $rows = array();
-  $counter = 1;
-  foreach (element_children($form) as $key) {
-    if (isset($form[$key]['title'])) {
-      $row = array();
-
-      $row[] = drupal_render($form[$key]['title']);
-      $row[] = drupal_render($form[$key]['author']);
-      $row[] = drupal_render($form[$key]['date']);
-      $row[] = drupal_render($form[$key]['position']);
-      $row[] = drupal_render($form[$key]['edit']);
-      $row[] = drupal_render($form[$key]['remove']);
-      $row[] = array(
-        'data' => $counter,
-        'class' => array('position')
-      );
-
-      $rows[] = array(
-        'data'  => $row,
-        'class' => array('draggable'),
-      );
-    }
-
-    $counter++;
-  }
-  if (empty($rows)) {
-    $rows[] = array(array('data' => t('No nodes in this queue.'), 'colspan' => 7));
-  }
-
-  // render the main nodequeue table
-  $header = array(t('Title'), t('Author'), t('Post Date'), t('Position'), array('data' => t('Operations'), 'colspan' => 2), t('Position'));
-  $output .= theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => array('nodequeue-dragdrop'), 'class' => array('nodequeue-dragdrop'))));
-
-  return $output;
-}
-
-/**
- * Return a "queue is empty" message.
- *
- * @ingroup themeable
- */
-function theme_nodequeue_subqueue_empty_text() {
-  return t('Queue empty');
-}
-
-/**
- * Return a "queue is full" message.
- *
- * @ingroup themeable
- */
-function theme_nodequeue_subqueue_full_text() {
-  return t('Queue full');
-}
-
-/**
- * Return a count of elements in the queue.
- *
- * @ingroup themeable
- */
-function theme_nodequeue_subqueue_count_text($vars) {
-  return t('@count in queue', array('@count' => $vars['count']));
-}
-
diff --git a/html/sites/all/modules/contrib/nodequeue/nodequeue_d7_autocomplete-872444-6.patch b/html/sites/all/modules/contrib/nodequeue/nodequeue_d7_autocomplete-872444-6.patch
deleted file mode 100644
index f23b3d6..0000000
--- a/html/sites/all/modules/contrib/nodequeue/nodequeue_d7_autocomplete-872444-6.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-? nodequeue_autocomplete.patch
-Index: nodequeue.module
-===================================================================
-RCS file: /cvs/drupal-contrib/contributions/modules/nodequeue/nodequeue.module,v
-retrieving revision 1.116
-diff -u -p -r1.116 nodequeue.module
---- nodequeue.module	5 Jan 2011 06:13:22 -0000	1.116
-+++ nodequeue.module	17 Jan 2011 22:59:39 -0000
-@@ -2807,7 +2807,7 @@ function nodequeue_api_autocomplete($que
-   }
-   else {
-     // Build the constant parts of the query.
--    $query->where('LOWER(n.title) LIKE LOWER(:string)', array(':string' => $string . '%'));
-+    $query->where('LOWER(n.title) LIKE LOWER(:string)', array(':string' => '%%%' . $string . '%%%'));
-   }
- 
-   // Call to the API.
diff --git a/html/sites/all/modules/contrib/nodequeue/nodequeue_dd_js_994996_1.patch b/html/sites/all/modules/contrib/nodequeue/nodequeue_dd_js_994996_1.patch
deleted file mode 100644
index 264966b..0000000
--- a/html/sites/all/modules/contrib/nodequeue/nodequeue_dd_js_994996_1.patch
+++ /dev/null
@@ -1,221 +0,0 @@
---- nodequeue_dragdrop.js	2011-01-05 13:48:49.000000000 -0500
-+++ nodequeue_dragdrop.js	2011-01-05 13:47:58.000000000 -0500
-@@ -1,113 +1,126 @@
- // $Id: nodequeue_dragdrop.js,v 1.5 2011/01/05 05:37:02 ezrag Exp $
- 
--Drupal.behaviors.nodequeueDrag = function(context) {
--  var tableDrag = Drupal.tableDrag['nodequeue-dragdrop'];
--
--  tableDrag.onDrop = function() {
--    $('td.position').each(function(i){
--      $(this).html(i + 1);
--    });
-+(function ($) {
-+Drupal.behaviors.nodequeueDrag = {
-+  attach: function (context, settings) {
-+    var tableDrag = Drupal.tableDrag['nodequeue-dragdrop'];
-+
-+    tableDrag.onDrop = function() {
-+      $('td.position').each(function(i){
-+        $(this).html(i + 1);
-+      });
-+    }
-   }
- }
- 
--Drupal.behaviors.nodequeueReverse = function(context) {
--  $('#edit-reverse').click(function(){
--    // reverse table rows...
--    $('tr.draggable').each(function(i){
--      $('.nodequeue-dragdrop tbody').prepend(this);
--    });
-+Drupal.behaviors.nodequeueReverse = {
-+  attach: function (context, settings) {
-+    $('#edit-reverse').click(function(){
-+      // reverse table rows...
-+      $('tr.draggable').each(function(i){
-+        $('.nodequeue-dragdrop tbody').prepend(this);
-+      });
-+
-+      // ...and update node positions
-+      var size = $('.node-position').size();
-+      $('.node-position').each(function(i){
-+        var val = $(this).val();
-+        $(this).val(size - val + 1);
-+      });
- 
--    // ...and update node positions
--    var size = $('.node-position').size();
--    $('.node-position').each(function(i){
--      var val = $(this).val();
--      $(this).val(size - val + 1);
--    });
-+      nodequeueInsertChangedWarning();
-+      nodequeueRestripeTable();
- 
--    nodequeueInsertChangedWarning();
--    nodequeueRestripeTable();
--
--    return false;
--  });
-+      return false;
-+    });
-+  }
- };
- 
--Drupal.behaviors.nodequeueShuffle = function(context) {
--  $('#edit-shuffle').click(function(){
--    // randomize table rows...
--    var rows = $('table.nodequeue-dragdrop tbody tr:not(:hidden)').get();
--    rows.sort(function(){return (Math.round(Math.random())-0.5);});
--    $.each(rows, function(i, row) {
--      $('.nodequeue-dragdrop tbody').prepend(this);
--    });
-+Drupal.behaviors.nodequeueShuffle = {
-+  attach: function (context, settings) {
-+    $('#edit-shuffle').click(function(){
-+      // randomize table rows...
-+      var rows = $('table.nodequeue-dragdrop tbody tr:not(:hidden)').get();
-+      rows.sort(function(){return (Math.round(Math.random())-0.5);});
-+      $.each(rows, function(i, row) {
-+        $('.nodequeue-dragdrop tbody').prepend(this);
-+      });
- 
--    var reverse = Drupal.settings.nodequeue.reverse;
-+      var reverse = Drupal.settings.nodequeue.reverse;
-  
--    // ...and update node positions
--    var size = reverse ? $('.node-position').size() : 1;
--    $('.node-position').each(function(i){
--      var val = $(this).val();
--      $(this).val(size);
--      reverse ? size-- : size++;
--    });
-+      // ...and update node positions
-+      var size = reverse ? $('.node-position').size() : 1;
-+      $('.node-position').each(function(i){
-+        var val = $(this).val();
-+        $(this).val(size);
-+        reverse ? size-- : size++;
-+      });
- 
--    nodequeueInsertChangedWarning();
--    nodequeueRestripeTable();
-+      nodequeueInsertChangedWarning();
-+      nodequeueRestripeTable();
- 
--    return false;
--  });
-+      return false;
-+    });
-+  }  
- };
- 
--Drupal.behaviors.nodequeueClear = function(context) {
--  $('#edit-clear').click(function(){
--    // mark nodes for removal
--    $('.node-position').each(function(i){
--      $(this).val('r');
--    });
-+Drupal.behaviors.nodequeueClear = {
-+  attach: function (context, settings) {
-+    $('#edit-clear').click(function(){
-+      // mark nodes for removal
-+      $('.node-position').each(function(i){
-+        $(this).val('r');
-+      });
- 
--    // remove table rows...
--    rows = $('table.nodequeue-dragdrop tbody tr:not(:hidden)').hide();
-+      // remove table rows...
-+      rows = $('table.nodequeue-dragdrop tbody tr:not(:hidden)').hide();
- 
--    nodequeuePrependEmptyMessage();
--    nodequeueInsertChangedWarning();
-+      nodequeuePrependEmptyMessage();
-+      nodequeueInsertChangedWarning();
- 
--    return false;
--  });
-+      return false;
-+    });
-+  }
- };
- 
--Drupal.behaviors.nodequeueRemoveNode = function(context) {
--  $('a.nodequeue-remove').css('display', 'block');
--  $('a.nodequeue-remove').click(function() {
--    a = $(this).attr('id');
--    a = '#' + a.replace('nodequeue-remove-', 'edit-') + '-position';
--    $(a).val('r');
--
--    // hide the current row
--    $(this).parent().parent().fadeOut('fast', function(){
--      if ($('table.nodequeue-dragdrop tbody tr:not(:hidden)').size() == 0) {
--        nodequeuePrependEmptyMessage();
--      }
--      else {
--        nodequeueRestripeTable()
--        nodequeueInsertChangedWarning();
--      }
--    });
-+Drupal.behaviors.nodequeueRemoveNode = {
-+  attach: function (context, settings) {
-+    $('a.nodequeue-remove').css('display', 'block');
-+    $('a.nodequeue-remove').click(function() {
-+      a = $(this).attr('id');
-+      a = '#' + a.replace('nodequeue-remove-', 'edit-') + '-position';
-+      $(a).val('r');
-+
-+      // hide the current row
-+      $(this).parent().parent().fadeOut('fast', function(){
-+        if ($('table.nodequeue-dragdrop tbody tr:not(:hidden)').size() == 0) {
-+          nodequeuePrependEmptyMessage();
-+        }
-+        else {
-+          nodequeueRestripeTable()
-+          nodequeueInsertChangedWarning();
-+        }
-+      });
- 
--    return false;
--  });
-+      return false;
-+    });
-+  }
- }
- 
--Drupal.behaviors.nodequeueClearTitle = function(context) {
--  $('#edit-add-nid').focus(function(){
--    if (this.value == this.defaultValue) {
--			this.value = '';
--      $(this).css('color', '#000');
--		}
--  }).blur(function(){
--    if (!this.value.length) {
--      $(this).css('color', '#999');
--			this.value = this.defaultValue;
--		}
--  });
-+Drupal.behaviors.nodequeueClearTitle = {
-+  attach: function (context, settings) {
-+    $('#edit-add-nid').focus(function(){
-+      if (this.value == this.defaultValue) {
-+	    this.value = '';
-+        $(this).css('color', '#000');
-+      }
-+    }).blur(function(){
-+      if (!this.value.length) {
-+        $(this).css('color', '#999');
-+	    this.value = this.defaultValue;
-+	  }
-+    });
-+  }
- }
- 
- /**
-@@ -144,3 +157,4 @@ function nodequeueInsertChangedWarning()
-     Drupal.tableDrag['nodequeue-dragdrop'].changed = true;
-   }
- }
-+})(jQuery);
diff --git a/html/sites/all/modules/contrib/nodequeue/nodequeue_dragdrop.js b/html/sites/all/modules/contrib/nodequeue/nodequeue_dragdrop.js
index e8f98f0..514fd05 100644
--- a/html/sites/all/modules/contrib/nodequeue/nodequeue_dragdrop.js
+++ b/html/sites/all/modules/contrib/nodequeue/nodequeue_dragdrop.js
@@ -1,33 +1,28 @@
-// $Id: nodequeue_dragdrop.js,v 1.5 2011/01/05 05:37:02 ezrag Exp $
-
 (function ($) {
+
 Drupal.behaviors.nodequeueDrag = {
-  attach: function (context, settings) {
+  attach: function(context) {
     var tableDrag = Drupal.tableDrag['nodequeue-dragdrop'];
 
     tableDrag.onDrop = function() {
       $('td.position').each(function(i){
         $(this).html(i + 1);
       });
+
+      nodequeueUpdateNodePositions();
     }
   }
-}
+};
 
 Drupal.behaviors.nodequeueReverse = {
-  attach: function (context, settings) {
+  attach: function(context) {
     $('#edit-reverse').click(function(){
       // reverse table rows...
       $('tr.draggable').each(function(i){
         $('.nodequeue-dragdrop tbody').prepend(this);
       });
 
-      // ...and update node positions
-      var size = $('.node-position').size();
-      $('.node-position').each(function(i){
-        var val = $(this).val();
-        $(this).val(size - val + 1);
-      });
-
+      nodequeueUpdateNodePositions();
       nodequeueInsertChangedWarning();
       nodequeueRestripeTable();
 
@@ -37,7 +32,7 @@ Drupal.behaviors.nodequeueReverse = {
 };
 
 Drupal.behaviors.nodequeueShuffle = {
-  attach: function (context, settings) {
+  attach: function(context) {
     $('#edit-shuffle').click(function(){
       // randomize table rows...
       var rows = $('table.nodequeue-dragdrop tbody tr:not(:hidden)').get();
@@ -46,26 +41,17 @@ Drupal.behaviors.nodequeueShuffle = {
         $('.nodequeue-dragdrop tbody').prepend(this);
       });
 
-      var reverse = Drupal.settings.nodequeue.reverse;
- 
-      // ...and update node positions
-      var size = reverse ? $('.node-position').size() : 1;
-      $('.node-position').each(function(i){
-        var val = $(this).val();
-        $(this).val(size);
-        reverse ? size-- : size++;
-      });
-
+      nodequeueUpdateNodePositions();
       nodequeueInsertChangedWarning();
       nodequeueRestripeTable();
 
       return false;
     });
-  }  
+  }
 };
 
 Drupal.behaviors.nodequeueClear = {
-  attach: function (context, settings) {
+  attach: function(context) {
     $('#edit-clear').click(function(){
       // mark nodes for removal
       $('.node-position').each(function(i){
@@ -84,7 +70,7 @@ Drupal.behaviors.nodequeueClear = {
 };
 
 Drupal.behaviors.nodequeueRemoveNode = {
-  attach: function (context, settings) {
+  attach: function(context) {
     $('a.nodequeue-remove').css('display', 'block');
     $('a.nodequeue-remove').click(function() {
       a = $(this).attr('id');
@@ -108,22 +94,37 @@ Drupal.behaviors.nodequeueRemoveNode = {
 }
 
 Drupal.behaviors.nodequeueClearTitle = {
-  attach: function (context, settings) {
-    $('#edit-add-nid').focus(function(){
+  attach: function(context) {
+    $('#edit-add-nid').focus(function() {
       if (this.value == this.defaultValue) {
-	    this.value = '';
+        this.value = '';
         $(this).css('color', '#000');
       }
     }).blur(function(){
       if (!this.value.length) {
+        this.value = this.defaultValue;
         $(this).css('color', '#999');
-	    this.value = this.defaultValue;
-	  }
+      }
     });
   }
 }
 
 /**
+ * Updates node positions after nodequeue has been rearranged.
+ * It cares about the reverse order and populates nodes the other way round.
+ */
+function nodequeueUpdateNodePositions() {
+  // Check if reverse option is set.
+  var reverse = Drupal.settings.nodequeue.reverse;
+  var size = reverse ? $('.node-position').size() : 1;
+
+  $('.node-position').each(function(i){
+    $(this).val(size);
+    reverse ? size-- : size++;
+  });
+}
+
+/**
  * Restripe the nodequeue table after removing an element or changing the
  * order of the elements.
  */
@@ -157,4 +158,5 @@ function nodequeueInsertChangedWarning() {
     Drupal.tableDrag['nodequeue-dragdrop'].changed = true;
   }
 }
+
 })(jQuery);
diff --git a/html/sites/all/modules/contrib/nodequeue/nodequeue_generate.info b/html/sites/all/modules/contrib/nodequeue/nodequeue_generate.info
index 6e5e9ee..a14ae87 100644
--- a/html/sites/all/modules/contrib/nodequeue/nodequeue_generate.info
+++ b/html/sites/all/modules/contrib/nodequeue/nodequeue_generate.info
@@ -1,4 +1,3 @@
-; $Id: nodequeue_generate.info,v 1.5 2010/10/07 02:50:35 ezrag Exp $
 name = Nodequeue generate
 description = Bulk assign nodes into queues for quickly populating a site.
 package = Development
@@ -7,9 +6,9 @@ core = 7.x
 
 files[] = nodequeue_generate.module
 
-; Information added by drupal.org packaging script on 2011-01-05
-version = "7.x-2.0-alpha1"
+; Information added by drupal.org packaging script on 2011-05-20
+version = "7.x-2.0-alpha2"
 core = "7.x"
 project = "nodequeue"
-datestamp = "1294208465"
+datestamp = "1305929516"
 
diff --git a/html/sites/all/modules/contrib/nodequeue/smartqueue.info b/html/sites/all/modules/contrib/nodequeue/smartqueue.info
index b225e01..8932af3 100644
--- a/html/sites/all/modules/contrib/nodequeue/smartqueue.info
+++ b/html/sites/all/modules/contrib/nodequeue/smartqueue.info
@@ -1,4 +1,3 @@
-; $Id: smartqueue.info,v 1.6 2010/10/07 02:50:35 ezrag Exp $
 name = Smartqueue taxonomy
 description = Creates a node queue for each taxonomy vocabulary
 package = Nodequeue
@@ -6,25 +5,9 @@ core = 7.x
 dependencies[] = nodequeue 
 dependencies[] = taxonomy
 
-files[] = nodequeue.install
-files[] = nodequeue.module
-files[] = nodequeue_generate.module
-files[] = smartqueue.install
-files[] = smartqueue.module
-files[] = includes/nodequeue.actions.inc
-files[] = views/nodequeue.views.inc
-files[] = views/nodequeue.views_default.inc
-files[] = views/nodequeue_handler_argument_subqueue_qid.inc
-files[] = views/nodequeue_handler_field_all_queues.inc
-files[] = views/nodequeue_handler_field_all_subqueues.inc
-files[] = views/nodequeue_handler_field_links.inc
-files[] = views/nodequeue_handler_field_queue_tab.inc
-files[] = views/nodequeue_handler_filter_in_queue.inc
-files[] = views/nodequeue_handler_relationship_nodequeue.inc
-
-; Information added by drupal.org packaging script on 2011-01-05
-version = "7.x-2.0-alpha1"
+; Information added by drupal.org packaging script on 2011-05-20
+version = "7.x-2.0-alpha2"
 core = "7.x"
 project = "nodequeue"
-datestamp = "1294208465"
+datestamp = "1305929516"
 
diff --git a/html/sites/all/modules/contrib/nodequeue/smartqueue.install b/html/sites/all/modules/contrib/nodequeue/smartqueue.install
index 293236e..0b9fa2d 100644
--- a/html/sites/all/modules/contrib/nodequeue/smartqueue.install
+++ b/html/sites/all/modules/contrib/nodequeue/smartqueue.install
@@ -1,18 +1,19 @@
 <?php
-// $Id: smartqueue.install,v 1.4 2010/10/07 02:50:35 ezrag Exp $
 
 /**
  * @file
- * Install, update and uninstall functions for the nodequeue module.
- *
+ * Install, update and uninstall functions for the smartqueue module.
  */
 
+/**
+ * Implements hook_schema().
+ */
 function smartqueue_schema() {
   $schema['smartqueue'] = array(
     'description' => 'Table for smartqueues, storing global information for each queue.',
     'fields' => array(
       'qid' => array(
-        'description' => t('The primary identifier for a queue.'),
+        'description' => 'The primary identifier for a queue.',
         'type' => 'serial',
         'unsigned' => TRUE,
         'not null' => TRUE
@@ -30,28 +31,40 @@ function smartqueue_schema() {
   return $schema;
 }
 
+/**
+ * Implements hook_update_N().
+ *
+ * Adds the smartqueue table.
+ */
 function smartqueue_update_6003() {
-  $ret = array();
   // Don't use hook_schema for database updates per http://drupal.org/node/150220.
-  $schema = array(
-    'description' => 'Table for smartqueues, storing global information for each queue.',
-    'fields' => array(
-      'qid' => array(
-        'description' => 'The primary identifier for a queue.',
-        'type' => 'serial',
-        'unsigned' => TRUE,
-        'not null' => TRUE
+  // It's possible that users who installed the 2.7 or 2.8 versions of
+  // smartqueue will already have this table.
+  if (!db_table_exists('smartqueue')) {
+    $schema = array(
+      'description' => 'Table for smartqueues, storing global information for each queue.',
+      'fields' => array(
+        'qid' => array(
+          'description' => 'The primary identifier for a queue.',
+          'type' => 'serial',
+          'unsigned' => TRUE,
+          'not null' => TRUE
+        ),
+        'use_parents' => array(
+          'description' => "Whether a queue is to use the terms' parents when displaying the queue selection.",
+          'type' => 'int',
+          'size' => 'tiny',
+          'default' => 0,
+        ),
       ),
-      'use_parents' => array(
-        'description' => "Whether a queue is to use the terms' parents when displaying the queue selection.",
-        'type' => 'int',
-        'size' => 'tiny',
-        'default' => 0,
-      ),
-    ),
-    'primary key' => array('qid'),
-  );
-  db_create_table('smartqueue', $schema);
-  update_sql('INSERT INTO {smartqueue} (qid) SELECT qid FROM {nodequeue_queue}');
-  return $ret;
+      'primary key' => array('qid'),
+    );
+    db_create_table('smartqueue', $schema);
+  }
+  $result = db_query('SELECT q.qid FROM {nodequeue_queue} q LEFT JOIN {smartqueue} s ON q.qid = s.qid WHERE s.qid IS NULL');
+  foreach ($result as $queue) {
+    db_insert('smartqueue')
+      ->fields(array('qid' => $queue->qid))
+      ->execute();
+  }
 }
diff --git a/html/sites/all/modules/contrib/nodequeue/smartqueue.module b/html/sites/all/modules/contrib/nodequeue/smartqueue.module
index 9461cc3..990ca33 100644
--- a/html/sites/all/modules/contrib/nodequeue/smartqueue.module
+++ b/html/sites/all/modules/contrib/nodequeue/smartqueue.module
@@ -1,5 +1,4 @@
 <?php
-// $Id: smartqueue.module,v 1.11 2010/10/07 02:50:35 ezrag Exp $
 
 /**
  * Implementation of hook_nodequeue_info()
@@ -41,8 +40,7 @@ function smartqueue_taxonomy_nodequeue_form($queue, &$form) {
     '#description' => t('What to display for the subqueue title; use %subqueue to embed the actual subqueue title. This is used to distinguish multiple nodequeues with subqueues from each other, as internal subqueue title is filled automatically.'),
   );
 
-
-  if ($queue->qid) {
+  if (!empty($queue->qid)) {
     $form['placeholder']['vocabularies']['#disabled'] = TRUE;
     $form['placeholder']['vocabularies']['#default_value'] = explode('-', $queue->reference);
   }
@@ -283,20 +281,24 @@ function smartqueue_taxonomy($op, $type, $array = NULL) {
  */
 function smartqueue_taxonomy_get_parents($tids) {
   if ($tids) {
-    $placeholders = db_placeholders($tids);
-    $result = db_query(db_rewrite_sql("SELECT t.tid, t.* FROM {term_data} t INNER JOIN {term_hierarchy} h ON h.parent = t.tid WHERE h.tid IN ($placeholders) ORDER BY weight, name", 't', 'tid'), $tids);
-    $parents = array();
-    // this will filter out duplicates.
-    foreach ($result as $parent) {
-      $parents[$parent->tid] = $parent->tid;
-    }
-    if (count($parents)) {
-      return smartqueue_taxonomy_get_parents($parents);
-    }
-    // we there weren't any matches, hand back the original tids.
-    else {
-      return $tids;
+    $top_level_tids = array();
+    foreach ($tids as $tid) {
+      $result = db_query(db_rewrite_sql("SELECT t.tid, t.* FROM {term_data} t INNER JOIN {term_hierarchy} h ON h.parent = t.tid WHERE h.tid = %d ORDER BY weight, name", 't', 'tid'), $tid);
+      $parents = array();
+      // This will filter out some duplicates.
+      while ($parent = db_fetch_object($result)) {
+        $parents[$parent->tid] = $parent->tid;
+      }
+      if (count($parents)) {
+        $parent_tid = smartqueue_taxonomy_get_parents($parents);
+        $top_level_tids = array_merge($parent_tid, $top_level_tids);
+      }
+      // When there aren't any matches, hand back the original tids.
+      else {
+        $top_level_tids[] = $tid;
+      }
     }
+    return array_unique($top_level_tids);
   }
   else {
     return array();
diff --git a/html/sites/all/modules/contrib/nodequeue/translations/fr.po b/html/sites/all/modules/contrib/nodequeue/translations/fr.po
deleted file mode 100644
index 4045148..0000000
--- a/html/sites/all/modules/contrib/nodequeue/translations/fr.po
+++ /dev/null
@@ -1,740 +0,0 @@
-# French Translation of Nodequeue module
-msgid ""
-msgstr ""
-"Project-Id-Version: nodequeue (6.x-2.5)\n"
-"PO-Revision-Date: 2009-11-12 10:52+0100\n"
-"Last-Translator: Florent VRECORD-MITEL <florent.vrecord-mitel@capgemini.com>\n"
-"Language-Team: Capgemini Drupal Factory <drupal-factory@capgemini.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n>1);\n"
-
-#: nodequeue.module:286
-msgid "Remove"
-msgstr "Retirer"
-
-#: nodequeue.module:323
-msgid "Normal"
-msgstr "Normal"
-
-#: nodequeue.module:329
-msgid "Nodequeue Biasing"
-msgstr "Polarisation de Nodequeue"
-
-#: nodequeue.module:336
-msgid "Specify to bias the search result when a node is in a queue. Any value except <em>Normal</em> will increase the socre for the given queue in the search results"
-msgstr " Spécifiez pour polariser le résultat de la recherche quand un noeud est dans une queue. N'importe quelle valeur à l'exception de <em>Normal</em> augmentera le score de la queue donnée par les résultats de la recherche"
-
-#: nodequeue.module:343
-msgid "Weight for %title nodequeue"
-msgstr "Poids pour la nodequeue %title"
-
-#: nodequeue.module:440;521;1078
-msgid "Remove from queue"
-msgstr "Retirer de la queue"
-
-#: nodequeue.module:468;513
-msgid "Add to queue"
-msgstr "Ajouter à la queue"
-
-#: nodequeue.module:498;568;655;704;2756
-#: nodequeue_generate.module:84
-msgid "Title"
-msgstr "Titre"
-
-#: nodequeue.module:500;569
-#: nodequeue_generate.module:84
-msgid "Max nodes"
-msgstr "Nombre maximale de noeuds"
-
-#: nodequeue.module:502;655
-#: includes/views/nodequeue.views.inc:137;141
-msgid "In queue"
-msgstr "Dans la queue"
-
-#: nodequeue.module:503;571;655
-msgid "Operation"
-msgstr "Opération"
-
-#: nodequeue.module:533;636;669
-#: nodequeue_generate.module:45
-msgid "Infinite"
-msgstr "Infini"
-
-#: nodequeue.module:554
-msgid "Click here for information about this module"
-msgstr "Clicquez ici pour plus d'informations sur ce module"
-
-#: nodequeue.module:564
-#: nodequeue_generate.module:20
-msgid "No nodequeues exist."
-msgstr "Aucune nodequeues n'existent"
-
-#: nodequeue.module:570
-#: nodequeue_generate.module:84
-msgid "Subqueues"
-msgstr "Sous-queues"
-
-#: nodequeue.module:628;664;100
-msgid "View"
-msgstr "Vue"
-
-#: nodequeue.module:630;110
-msgid "Edit"
-msgstr "Éditer"
-
-#: nodequeue.module:631;849;944;117
-msgid "Delete"
-msgstr "Supprimer"
-
-#: nodequeue.module:669
-msgid "Max nodes in queue: @size"
-msgstr "Nombre max de de noeuds dans la queue: @size"
-
-#: nodequeue.module:689;72
-msgid "Add @type"
-msgstr "Ajouter @type"
-
-#: nodequeue.module:693;963;997;1314
-msgid "Nodequeue '@title'"
-msgstr "Nodequeue '@title'"
-
-#: nodequeue.module:708
-msgid "Enter the name of the queue"
-msgstr "Saisir le nom de la queue"
-
-#: nodequeue.module:725
-msgid "Queue size"
-msgstr "taille de la queue"
-
-#: nodequeue.module:729
-msgid "The maximum number of nodes will appear in the queue. Enter 0 for no limit"
-msgstr "Le nombre maximal de noeuds qui apparaitront dans la queue. Saisissez 0 pour un nombre illimité"
-
-#: nodequeue.module:734
-msgid "Reverse in admin view"
-msgstr "Reversez dans la vue d'administration"
-
-#: nodequeue.module:736
-msgid "Ordinarily queues are arranged with the front of the queue (where items will be removed) on top and the back (where items will be added) on the bottom. If checked, this will display the queue such that items will be added to the top and removed from the bottom."
-msgstr "Habituellement, les queues sont disposées avec l'avant de la queue (où les éléments seront retirés) en haut et l'arrière (où les élémentsseront ajoutés) en bas. Si cette case est cochée, la queue sera affichée de telel sorte que les éléments seront ajoutés par le haut et retirés par le bas."
-
-#: nodequeue.module:741
-msgid "Link \"add to queue\" text"
-msgstr "Texte du lien \"Ajouter à la queue\""
-
-#: nodequeue.module:745
-msgid "If you want a link to add a node to a queue in the \"links\" section (next to \"add new comment\"), enter the text here. If left blank no link will be given; note that enabling this feature for any queue will cause an extra query to be run every time a node is loaded. \"%subqueue\" will be replaced with the subqueue title, if applicable."
-msgstr "Si vous voulez un len pour ajouter un noeud dans une queue dans la section \"liens\" (après \"ajouter un nouveau commentaire\"), saisissez le texte ici. Si il reste vide, aucun lien ne sera donné; Notez qu'en activant cette fonction entrainera pour n'importe quelle queue une requête supplémentaire qui sera executée à chaque fois que le noeud est chargé. \"%subqueue\" sera remplacée avec letitre dela sous-queue, si possible."
-
-#: nodequeue.module:750
-msgid "Link \"remove from queue\" text"
-msgstr "texte du lien \"Supprimer de la queue\""
-
-#: nodequeue.module:754
-msgid "Enter the text for the corresponding link to remove a node from a queue. This may be blank (in which case no link will appear) but a remove link will only appear if link, above, is set."
-msgstr "Saisissez le texte pour la lien correspondant à retirer un noeud d'une queue. Il peut être vide (dans ce cas là, aucun n'apparaitra pas) mais un lien de retrait apparaitra seulement si le lien, au-dessus, est rempli."
-
-#: nodequeue.module:768
-msgid "Roles"
-msgstr "Rôles"
-
-#: nodequeue.module:771
-msgid "Check each role that can add nodes to the queue. Be sure that roles you want to appear here have \"manipulate queues\" access in the main access control panel."
-msgstr "Verifie que chaque rôle peut ajouter des noeuds dans la queue. Soyez sûr que les rôles que vous voulez voir apparaître ici possèdent la permission \"Manipuler les queues\" dans le paneau principal de contrôle d'accès."
-
-#: nodequeue.module:781
-msgid "No roles have the \"manipulate queues\" permission, so only the administrator account will be able to add or remove items from this queue."
-msgstr "Aucuns rôles n'ont la permission \"Manipluer les queues\", seul le compte administrateur sera capable d'ajouter ou de retirer des éléemnts dans cette queue."
-
-#: nodequeue.module:789
-msgid "Types"
-msgstr "Types"
-
-#: nodequeue.module:792
-msgid "Check each node type that can be added to this queue."
-msgstr "Vérifie que chaque type de noeud peut être ajouté à cette queue."
-
-#: nodequeue.module:797
-msgid "Internationalization"
-msgstr "Internationalisation"
-
-#: nodequeue.module:799
-msgid "Treat translation nodes as a single node"
-msgstr "Traite la traduction des noueds comme un seul noeud"
-
-#: nodequeue.module:800
-msgid "Manually manage translated nodes"
-msgstr "Gestion manuelle des noeuds traduits"
-
-#: nodequeue.module:803
-msgid ""
-"Treating translations as a single node allows users to add, remove and manipulate a node\n"
-"      in the queue regardless of which translation is acted upon; nodequeue will only act on the original node.\n"
-"      When manually managing translation nodes, Nodequeue will ignore the relationship between node translations;\n"
-"      each translation node must be added to the queue separately and will occupy a separate spot in the queue.\n"
-"      Changing this setting will <strong>not</strong> update content that is already in the queue."
-msgstr ""
-"Traiter les traductions commes des noeuds simples permet aux utilisateurs d'ajouter, retirer et manipluer un noeud\n"
-"dans la queue indépendamment  de la traduction; nodequeue travaillera seulement sur le noeud original.\n"
-"Lorsque vous gérez la traduction des noeuds manuellement, Nodequeue ignorera la relation entre les traductions des noeuds;\n"
-"chaque traduction de noeud doit être ajouté dans la queue séparément et occupera une placé séparé dans la queue.\n"
-"Le fait de changer cette option <strong>ne</strong> mettra pas à jour le contenu déjà présent dans la queue."
-
-#: nodequeue.module:813
-msgid "Submit"
-msgstr "Soumettre"
-
-#: nodequeue.module:873
-msgid "Please enter a title for this queue."
-msgstr "Veuillez donner un titre à cette queue."
-
-#: nodequeue.module:913
-msgid "The queue has been created."
-msgstr "La queue a été créee."
-
-#: nodequeue.module:916;1179
-msgid "The queue has been updated."
-msgstr "La queue a été mise à jour."
-
-#: nodequeue.module:941
-msgid "Are you sure you want to delete \"%title\"?"
-msgstr "Êtes-vous sûr de vouloir supprimer \"%title\"?"
-
-#: nodequeue.module:943
-msgid "This action cannot be undone."
-msgstr "Cette action est irréversible."
-
-#: nodequeue.module:944;1323
-msgid "Cancel"
-msgstr "Annuler"
-
-#: nodequeue.module:954
-msgid "The queue has been deleted."
-msgstr "La queue a été supprimée."
-
-#: nodequeue.module:983;1011
-msgid "Subqueue '@title'"
-msgstr "Sous-queue '@title'"
-
-#: nodequeue.module:1061
-msgid "Restricted node, NID: @nid"
-msgstr "Noeud restreint, NID: @nid"
-
-#: nodequeue.module:1066
-msgid "edit"
-msgstr "éditer"
-
-#: nodequeue.module:1066
-msgid "Edit this node"
-msgstr "Editer ce noeud"
-
-#: nodequeue.module:1084
-msgid "remove"
-msgstr "supprimer"
-
-#: nodequeue.module:1098
-msgid "Add node & save queue"
-msgstr "Ajouter un noeud et sauvegardez la queue"
-
-#: nodequeue.module:1105
-msgid "Save"
-msgstr "Sauvegarder"
-
-#: nodequeue.module:1109
-msgid "Reverse"
-msgstr "Inversé"
-
-#: nodequeue.module:1114
-msgid "Shuffle"
-msgstr "Mélangé"
-
-#: nodequeue.module:1119;1323;139
-msgid "Clear"
-msgstr "Effacer"
-
-#: nodequeue.module:1148
-msgid "Duplicate position value."
-msgstr "Recopie la valeur de la position."
-
-#: nodequeue.module:1188
-msgid "The queue has been reversed."
-msgstr "La queue a été retournée."
-
-#: nodequeue.module:1194
-msgid "The queue has been shuffled."
-msgstr "La queue a été mélangée."
-
-#: nodequeue.module:1320
-msgid "Are you sure you want to clear the nodequeue %queue?"
-msgstr "Êtes-vous sûr de vider la nodequeue %queue?"
-
-#: nodequeue.module:1322
-msgid "This action will remove all nodes from the queue and cannot be undone."
-msgstr "Cet action supprimera tous les noeuds de la queue et ne pourra pas être annulée."
-
-#: nodequeue.module:1333
-msgid "The queue has been cleared."
-msgstr "La queue a été vidée."
-
-#: (duplicate) nodequeue.module:2303;2644;43
-#: nodequeue.install:407
-#: nodequeue.info:0;0
-#: smartqueue.info:0
-#: addons/nodequeue_service/nodequeue_service.info:0
-#: includes/views/nodequeue.views.inc:59;147;177;232;246;256;267;278
-msgid "Nodequeue"
-msgstr "Nodequeue"
-
-#: nodequeue.module:2304
-msgid "Standard nodequeues have just one subqueue. Nodes put into a queue are added to the back of the queue; when a node is added to a full queue, the node in the front of the queue will be popped out to make room."
-msgstr "Les nodequeues standard possèdent juste une seule sous-queue. Les noeuds insérés dans une queue sont ajoutés à la fin de la queue; Quand un noeud est ajouté à une queue pleine, le noeud au début de la queue est alors éjécté pour faire de la place."
-
-#: nodequeue.module:2633
-msgid "Create a menu tab for each node that could belong to any queues"
-msgstr "Crée un onglet de menu pour chaque noeud qui pourrait appartenir à n'importe quelles queues"
-
-#: nodequeue.module:2638
-msgid "Include a column on the nodequeue tab for the maximum number of nodes in each queue"
-msgstr "Inclut une colonne sur l'onglet nodequeue pour le nombre maximum de noeuds dans chaque queue"
-
-#: nodequeue.module:2643
-msgid "Nodequeue tab label"
-msgstr "Etiquette de l'onglet Nodequeue"
-
-#: nodequeue.module:2645
-msgid "If nodes will have a menu tab for manipulating related nodequeues, what should that tab be called?"
-msgstr "Si des noeuds possèdent un onglet de menu pour gérér les nodequeues associées, quel serait le nom de cet onglet ?"
-
-#: nodequeue.module:2752
-msgid "No nodes in this queue."
-msgstr "Aucun noeuds dans cette queue."
-
-#: nodequeue.module:2756
-msgid "Author"
-msgstr "Auteur"
-
-#: nodequeue.module:2756
-msgid "Post Date"
-msgstr "Date de postage"
-
-#: nodequeue.module:2756;2756
-#: includes/views/nodequeue.views.inc:66
-msgid "Position"
-msgstr "Position"
-
-#: nodequeue.module:2756
-msgid "Operations"
-msgstr "Opérations"
-
-#: nodequeue.module:2777
-msgid "Queue empty"
-msgstr "Queue vide"
-
-#: nodequeue.module:2786
-msgid "Queue full"
-msgstr "Queue pleine"
-
-#: nodequeue.module:2795
-msgid "@count in queue"
-msgstr "@count dans la queue"
-
-#: nodequeue.module:20
-msgid "manipulate queues"
-msgstr "Manipuler les queues"
-
-#: nodequeue.module:20
-msgid "administer nodequeue"
-msgstr "Administrer nodequeue"
-
-#: nodequeue.module:20
-msgid "manipulate all queues"
-msgstr "Manipuler toutes les queues"
-
-#: nodequeue.module:46
-msgid "Create and maintain simple nodequeues."
-msgstr "Crée et maintient des nodequeues simples."
-
-#: nodequeue.module:50
-msgid "List"
-msgstr "Liste"
-
-#: nodequeue.module:57
-msgid "Settings"
-msgstr "Paramètres"
-
-#: nodequeue.module:64
-msgid "Autocomplete"
-msgstr "Auto-complètement"
-
-#: nodequeue.module:81
-msgid "@tab"
-msgstr "@tab"
-
-#: nodequeue_generate.module:16
-msgid "Select which nodequeues shall be <strong>emptied</strong> and re-populated with new nodes."
-msgstr "Sélectionnez quelle nodequeue devrait être <strong>vidée</strong> and re-remplli avec de nouveau noeuds."
-
-#: nodequeue_generate.module:53
-msgid "Generate"
-msgstr "Générer"
-
-#: nodequeue_generate.module:128
-msgid "1 queue populated"
-msgid_plural "@count queues populated."
-msgstr[0] "Une queue populée"
-msgstr[1] "@count queues populées"
-
-#: nodequeue_generate.module:7
-msgid "Bulk add nodes into queues"
-msgstr "Ajouter en masse des noeuds dans des queues"
-
-#: nodequeue_generate.module:8
-msgid "Generate nodequeue assignments"
-msgstr "Générer les assignations de nodequeue"
-
-#: smartqueue.module:9
-msgid "Taxonomy queue"
-msgstr "Queue de taxonomie"
-
-#: smartqueue.module:10
-msgid "Each particular grouping of taxonomy terms from the selected vocabularies have their own unique subqueue. You can place nodes into any of these subqueues based on which terms that node has been tagged with. Using this with large or too many taxonomies may degrade performance."
-msgstr "Chaque groupement particulier de termes de taxonomie des vocabulaires séléectionnés possèdent sa propre sous-queue unique. Vous pouvez placez des noeuds à l'intérieur n'importe quelles de ces sous-queues si le noeud a été labelisé par un de ces termes. Son utilisation avec beaucoup ou trop de taxonomies peut dégrader les performances."
-
-#: smartqueue.module:23
-msgid "Vocabularies"
-msgstr "Vocabulaires"
-
-#: smartqueue.module:24
-msgid "Select which vocabularies to use; each unique combination of terms from all of these vocabularies will have a subqueue."
-msgstr "Séléctoinner quels sont les vocabulaires à utiliser. Chaque combinaison unique de termes de tous ces vocabulaires aura une sous-queue."
-
-#: smartqueue.module:30
-#: includes/views/nodequeue.views.inc:188
-msgid "Subqueue title"
-msgstr "Titre de la sous-queue"
-
-#: smartqueue.module:34
-msgid "What to display for the subqueue title; use %subqueue to embed the actual subqueue title. This is used to distinguish multiple nodequeues with subqueues from each other, as internal subqueue title is filled automatically."
-msgstr "Que souhaitez vous afficher pour le titre de la sous-queue; utilisez %subqueue pour utiliser le titre de la sous-queue courante. Cela est utilisé pour distinguer les multpiles sous-queues entre elles, en tant que sous-queue interne le titre est rempli automatiquement."
-
-#: smartqueue.module:51
-msgid "You must select at least one vocabulary."
-msgstr "Vous devez sélectionner au moins un vocabulaire."
-
-#: nodequeue.install:6
-msgid "Base table for queues, storing global information for each queue"
-msgstr "Table de base pour les queues, conservant le sinformations globales pour chaque noeud"
-
-#: nodequeue.install:9
-msgid "The primary identifier for a queue."
-msgstr "L'identifiant primaire pour une queue."
-
-#: nodequeue.install:15
-msgid "Title of a queue."
-msgstr "Titre de la queue"
-
-#: nodequeue.install:27
-msgid "How many nodes this queue will hold"
-msgstr "Combien de noeuds contiendra cette queue"
-
-#: nodequeue.install:32;228
-msgid "The link text to show under a node to add it to the queue."
-msgstr "Le texte du lien à montrer sous un noeud pour l'ajouter à la queue."
-
-#: nodequeue.install:37;233
-msgid "The link text to show under a node to remove it from the queue."
-msgstr "Le texte du lien à montrer sous un noeud pour le retirer de la queue."
-
-#: nodequeue.install:85
-msgid "Defines the roles which are allowed to use a particular nodequeue."
-msgstr "Définit les rôles possibles pour utiliser une nodequeue précise."
-
-#: nodequeue.install:88;111
-msgid "Primary key for {nodequeue_queue}"
-msgstr "Clé primaire pour {nodequeue_queue}"
-
-#: nodequeue.install:95
-msgid "Primary key for roles"
-msgstr "Clé primaire pour les rôles"
-
-#: nodequeue.install:108
-msgid "Defines the node types which are allowed in each queue"
-msgstr "Definit les types de noeuds permis dans chaque queue"
-
-#: nodequeue.install:118
-msgid "Node Type"
-msgstr "Type de noeud"
-
-#: nodequeue.install:135;284
-msgid "Subqueues are minor queues that inherit all of the properties of the parent queue. A parent queue must have at least 1 subqueue to do anything. Reference is for the use of whatever is creating the subqueues in order to link it to some other ID easily."
-msgstr "Les sous-queues sont des queues mineures qui héritent de toutes les propriétés de la queue parent. Une queue parent doit avoir au moins une sous-queue pour faire quoi que ce soit. La référence est pour l'usage de celui qui crée les sous-files d'attente afin de le lier à une autre ID facilement."
-
-#: nodequeue.install:138;287
-msgid "Subqueue identifier"
-msgstr "identifiant de la sous-queue"
-
-#: nodequeue.install:144;293
-msgid "Queue identifier."
-msgstr "identifiant de la queue."
-
-#: nodequeue.install:173
-msgid "Indicates which nodes are in which queues/subqueues."
-msgstr "indique dans quelles queues/sous-queues se trouve les noeuds."
-
-#: nodequeue.install:176
-msgid "Queue id"
-msgstr "Queue Id"
-
-#: nodequeue.install:182
-msgid "Subqueue this node is in"
-msgstr "La sous-queue de ce noeud est là"
-
-#: nodequeue.install:188
-msgid "Node id in this subqueue"
-msgstr "L'identifiant (ID) du noeud est dans cette sous-queue"
-
-#: nodequeue.install:194
-msgid "The position of the node in this subqueue."
-msgstr "La position de ce noeud dans cette sous-queue."
-
-#: nodequeue.install:225
-msgid "Some of the following queries may appear to fail. This is not a problem."
-msgstr "Certains des requêtes suivantes pourraient apparaître comme echouées. Ce n'est pas un problème."
-
-#: (duplicate) nodequeue.install:409
-msgid "To have the nodequeue module work with translations, you need to install and enable the !url module."
-msgstr "Pour que le module nodequeue fonctionne avec les traductions, vous devez installer etactiver module !url."
-
-#: (duplicate) nodequeue.install:410
-msgid "Translation helpers module not found."
-msgstr "Module d'aides de traduction introuvable."
-
-#: nodequeue.info:0
-msgid "Create queues which can contain nodes in arbitrary order"
-msgstr "Crée des queues qui peuvent contenir des noeuds selon un ordre arbitraire"
-
-#: nodequeue_generate.info:0
-msgid "Nodequeue generate"
-msgstr "Génerer une nodequeue"
-
-#: nodequeue_generate.info:0
-msgid "Bulk assign nodes into queues for quickly populating a site."
-msgstr "Assigner en masse des noeuds dans des queues afin de remplir rapidement un site."
-
-#: nodequeue_generate.info:0
-msgid "Development"
-msgstr "Développement"
-
-#: smartqueue.info:0
-msgid "Smartqueue taxonomy"
-msgstr "Taonomie de queue intelligente"
-
-#: smartqueue.info:0
-msgid "Creates a node queue for each taxonomy vocabulary"
-msgstr "Crée un nodequeue pour chaque vocabulaire de taxinomie"
-
-#: addons/nodequeue_service/nodequeue_service.inc:18
-msgid "Nodequeue available, but no nodequeues exist"
-msgstr "Nodequeue est disponible, mais aucune nodequeues existent"
-
-#: addons/nodequeue_service/nodequeue_service.inc:44;75
-msgid "Nodequeue module unavailable."
-msgstr "Module Nodequeue indisponible."
-
-#: addons/nodequeue_service/nodequeue_service.inc:71
-msgid "Specified nodequeue has no subqueues."
-msgstr "La nodequeue n'a pas pas sous-queues."
-
-#: addons/nodequeue_service/nodequeue_service.module:25
-msgid "Returns a keyed array by qid of available nodequeues and their settings."
-msgstr "Renvoie un tableau valué par qid des nodequeues disponibles ainsi que leurs paramètres."
-
-#: addons/nodequeue_service/nodequeue_service.module:36
-msgid "A parent nodequeue queue ID."
-msgstr "L'identifiant de la queue (qid) d'une nodequeue parente."
-
-#: addons/nodequeue_service/nodequeue_service.module:40
-msgid "Returns a keyed array by sqid of available subqueues and their settings."
-msgstr "Renvoie un tableau valué par sqid des sous-queues disponibles ainsi que leurs paramètres."
-
-#: addons/nodequeue_service/nodequeue_service.module:11
-msgid "get nodequeues"
-msgstr "Obtenir les nodequeues"
-
-#: addons/nodequeue_service/nodequeue_service.info:0
-msgid "Nodequeue Service"
-msgstr "Nodequeue Service"
-
-#: addons/nodequeue_service/nodequeue_service.info:0
-msgid "Provides a nodequeue service."
-msgstr "Fournit un service nodequeue"
-
-#: includes/nodequeue.actions.inc:16;108
-msgid "Add to Nodequeues"
-msgstr "Ajouter à Nodequeues"
-
-#: includes/nodequeue.actions.inc:24;234
-msgid "Remove from Nodequeues"
-msgstr "Supprimer de Nodequeues"
-
-#: includes/nodequeue.actions.inc:51;152
-#: includes/views/nodequeue.views.inc:233
-msgid "Queue"
-msgstr "Queue"
-
-#: includes/nodequeue.actions.inc:56;157
-msgid "Specify the queues into which the node should be submitted. If the queue is a smartqueue, the node shall be placed into every subqueue for which it is eligible."
-msgstr "Spécifiez les queues où le noeud devrait être soumis. Si la queue est une queue intelligente, le noeud devrait être placé dans chaque sous-queue pour laquelle il est éligible."
-
-#: includes/nodequeue.actions.inc:60;161
-msgid "Please <a href=\"!url\">create</a> a nodequeue first."
-msgstr "Veuillez <a href=\"!url\">créer</a>en premier une nodequeue."
-
-#: includes/nodequeue.actions.inc:109;235
-msgid "node"
-msgstr "noeud"
-
-#: includes/nodequeue.actions.inc:194;268
-#: includes/views/nodequeue_handler_field_all_queues.inc:46
-#: includes/views/nodequeue_handler_relationship_nodequeue.inc:39
-msgid "Queues"
-msgstr "Queues"
-
-#: includes/nodequeue.actions.inc:197;271
-msgid "Specify the queues from which the node should be removed. If the queue is a smartqueue, the node shall be removed from all subqueues."
-msgstr "Spécifier les queues sur lesquelles le noeud devrait être retiré. Si la queue est une queue intélligente, le noeud devrait être retiré de toutes les sous-queues."
-
-#: includes/views/nodequeue.views.inc:67
-msgid "The position of the node within a queue."
-msgstr "La position du noeud à l'intérieur de la queue."
-
-#: includes/views/nodequeue.views.inc:85
-msgid "Added date"
-msgstr "Date d'ajout"
-
-#: includes/views/nodequeue.views.inc:86
-msgid "The date the node was added to a queue."
-msgstr "La date où le noued à été ajouté à la queue."
-
-#: includes/views/nodequeue.views.inc:100
-msgid "Queue ID"
-msgstr "Queue ID"
-
-#: includes/views/nodequeue.views.inc:101
-msgid "The ID of the queue the node belongs to."
-msgstr "L'identifiant (ID) de la queue auquel appartient le noeud."
-
-#: includes/views/nodequeue.views.inc:113;131
-msgid "No queue"
-msgstr "Pas de queue"
-
-#: includes/views/nodequeue.views.inc:118
-msgid "Subqueue ID"
-msgstr "Sous-queue ID"
-
-#: includes/views/nodequeue.views.inc:119
-msgid "The ID of the subqueue the node belongs to."
-msgstr "L'identifiant (ID) de la sous-queue auquel appartient le noeud."
-
-#: includes/views/nodequeue.views.inc:138
-msgid "Filter to ensure a node IS or IS NOT in the related queue"
-msgstr "Filtre pour s'assurer qu'un noeud EST ou N'EST PAS dans une queue relative"
-
-#: includes/views/nodequeue.views.inc:158
-msgid "Queue title"
-msgstr "Titre de la Queue"
-
-#: includes/views/nodequeue.views.inc:159
-msgid "The title of the nodequeue."
-msgstr "Le titre de la nodequeue."
-
-#: includes/views/nodequeue.views.inc:189
-msgid "The title of the subqueue."
-msgstr "Le titre de la sous-queue."
-
-#: includes/views/nodequeue.views.inc:206
-msgid "Subqueue reference"
-msgstr "référence de la sous-queue"
-
-#: includes/views/nodequeue.views.inc:207
-msgid "The reference that defines a subqueue; what this actually is depends upon the type of subqueue, but is a taxonomy tid for smartqueue taxonomy, or a uid for authorview."
-msgstr "La référence qui définit une sous-queue; lequel  dépénde  du type de sous-queue, c'est un tid de taxinomie pour une taxinomie de queue intelligente, ou un uid pour une authorview."
-
-#: includes/views/nodequeue.views.inc:234
-msgid "Create a relationship to a nodequeue."
-msgstr "Créer un relation envers une nodequeue"
-
-#: includes/views/nodequeue.views.inc:240
-msgid "queue"
-msgstr "queue"
-
-#: includes/views/nodequeue.views.inc:247
-msgid "Add/remove links"
-msgstr "Ajouter/Supprimer des liens"
-
-#: includes/views/nodequeue.views.inc:248;258
-msgid "Display add/remove links for all eligible nodequeues. Note that this performs a node_load so could add many extra queries to a view."
-msgstr "Afficher les liens ajouter/retirer pour toutes les nodequeus éligilbles. Veuillez noter que cela réalise un node_load qui pourrait ajouter des requêtes supplémentaire lors d'une vue."
-
-#: includes/views/nodequeue.views.inc:257
-msgid "Link to tab"
-msgstr "Lier à un onglet"
-
-#: includes/views/nodequeue.views.inc:268
-msgid "All queues"
-msgstr "Toutes les queues"
-
-#: includes/views/nodequeue.views.inc:269
-msgid "Display all queues a node is a member of."
-msgstr "Afficher toutes les queues qui possèdent ce noeud."
-
-#: includes/views/nodequeue.views.inc:279
-msgid "All subqueues"
-msgstr "toutes les sous-queues"
-
-#: includes/views/nodequeue.views.inc:280
-msgid "Display all subqueues a node is a member of."
-msgstr "Afficher toutes les sous-queues qui possèdent ce noeud."
-
-#: includes/views/nodequeue.views_default.inc:16
-msgid "Display a list of all nodes in queue '@queue'"
-msgstr "affiche la liste de tous les noeuds dans la queue '@queue'"
-
-#: includes/views/nodequeue.views_default.inc:17
-msgid "nodequeue"
-msgstr "nodequeue"
-
-#: includes/views/nodequeue.views_default.inc:26
-msgid "Defaults"
-msgstr "Paramètres par défaut"
-
-#: includes/views/nodequeue.views_default.inc:88;184
-msgid "Queue '@queue'"
-msgstr "Queue  '@queue'"
-
-#: includes/views/nodequeue.views_default.inc:94
-msgid "Page"
-msgstr "Page"
-
-#: includes/views/nodequeue.views_default.inc:137
-msgid "Block"
-msgstr "Bloc"
-
-#: includes/views/nodequeue_handler_field_all_queues.inc:25
-msgid "Link this field to queue arrange page"
-msgstr "Lier ce champ à une page de disposition des queues"
-
-#: includes/views/nodequeue_handler_field_all_queues.inc:32
-msgid "Limit to queues"
-msgstr "Limiter aux queues"
-
-#: includes/views/nodequeue_handler_field_queue_tab.inc:8
-msgid "view"
-msgstr "vue"
-
-#: includes/views/nodequeue_handler_relationship_nodequeue.inc:25
-msgid "Limit to one or more queues (recommended)"
-msgstr "Limiter à une ou deux queues (recommandé)"
-
diff --git a/html/sites/all/modules/contrib/nodequeue/translations/nodequeue.pot b/html/sites/all/modules/contrib/nodequeue/translations/nodequeue.pot
deleted file mode 100644
index 912e6a9..0000000
--- a/html/sites/all/modules/contrib/nodequeue/translations/nodequeue.pot
+++ /dev/null
@@ -1,330 +0,0 @@
-# $Id: nodequeue.pot,v 1.1 2008/05/28 17:26:43 merlinofchaos Exp $
-#
-# LANGUAGE translation of Drupal (general)
-# Copyright YEAR NAME <EMAIL@ADDRESS>
-# Generated from files:
-#  nodequeue.module,v 1.44 2007/06/20 06:15:59 merlinofchaos
-#  nodequeue.install,v 1.7 2007/06/20 06:15:59 merlinofchaos
-#  nodequeue.info,v 1.3 2007/06/20 06:15:59 merlinofchaos
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2008-03-21 18:16+0100\n"
-"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
-"Last-Translator: NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: nodequeue.module:26;55
-msgid "Node queue"
-msgstr ""
-
-#: nodequeue.module:29
-msgid "Create and maintain simple node queues."
-msgstr ""
-
-#: nodequeue.module:34
-msgid "List"
-msgstr ""
-
-#: nodequeue.module:42
-msgid "Add"
-msgstr ""
-
-#: nodequeue.module:74;82;262
-msgid "View"
-msgstr ""
-
-#: nodequeue.module:91;262
-msgid "Edit"
-msgstr ""
-
-#: nodequeue.module:99;262;354;373;410
-msgid "Delete"
-msgstr ""
-
-#: nodequeue.module:108
-msgid "Clear"
-msgstr ""
-
-#: nodequeue.module:116
-msgid "Operate"
-msgstr ""
-
-#: nodequeue.module:141
-msgid "No node queue defined for this node type."
-msgstr ""
-
-#: nodequeue.module:212
-msgid "QUEUE FULL"
-msgstr ""
-
-#: nodequeue.module:214
-msgid "View queue"
-msgstr ""
-
-#: nodequeue.module:217;500;503
-msgid "Remove from queue"
-msgstr ""
-
-#: nodequeue.module:220
-msgid "Add to queue"
-msgstr ""
-
-#: nodequeue.module:233;254;287
-msgid "Title"
-msgstr ""
-
-#: nodequeue.module:233
-msgid "Max nodes"
-msgstr ""
-
-#: nodequeue.module:233
-msgid "In queue"
-msgstr ""
-
-#: nodequeue.module:233;254;513
-msgid "Operation"
-msgstr ""
-
-#: nodequeue.module:254
-msgid "Max Nodes"
-msgstr ""
-
-#: nodequeue.module:254
-msgid "In Queue"
-msgstr ""
-
-#: nodequeue.module:272
-msgid "No node queues exist."
-msgstr ""
-
-#: nodequeue.module:291
-msgid "Enter the name of the queue"
-msgstr ""
-
-#: nodequeue.module:296
-msgid "Queue size"
-msgstr ""
-
-#: nodequeue.module:300
-msgid "The maximum number of nodes will appear in the queue. Enter 0 for no limit"
-msgstr ""
-
-#: nodequeue.module:305
-msgid "Link \"add to queue\" text"
-msgstr ""
-
-#: nodequeue.module:309
-msgid "If you want a link to add a node to a queue in the \"links\" section (next to \"add new comment\"), enter the text here. If left blank no link will be given; note that enabling this feature for any queue will cause an extra query to be run every time a node is loaded."
-msgstr ""
-
-#: nodequeue.module:314
-msgid "Link \"remove from queue\" text"
-msgstr ""
-
-#: nodequeue.module:318
-msgid "Enter the text for the corresponding link to remove a node from a queue. This may be blank (in which case no link will appear) but a remove link will only appear if link, above, is set."
-msgstr ""
-
-#: nodequeue.module:328
-msgid "Roles"
-msgstr ""
-
-#: nodequeue.module:331
-msgid "Check each role that can add nodes to the queue."
-msgstr ""
-
-#: nodequeue.module:340
-msgid "Types"
-msgstr ""
-
-#: nodequeue.module:343
-msgid "Check each node type that can be added to this queue."
-msgstr ""
-
-#: nodequeue.module:348
-msgid "Submit"
-msgstr ""
-
-#: nodequeue.module:397
-msgid "The queue has been updated."
-msgstr ""
-
-#: nodequeue.module:407
-msgid "Are you sure you want to delete \"%title\"?"
-msgstr ""
-
-#: nodequeue.module:409;582
-msgid "This action cannot be undone."
-msgstr ""
-
-#: nodequeue.module:410;583
-msgid "Cancel"
-msgstr ""
-
-#: nodequeue.module:457
-msgid "Changes made to the queue order and queue removals will not be active until you click Save, below."
-msgstr ""
-
-#: nodequeue.module:472;475
-msgid "Move up"
-msgstr ""
-
-#: nodequeue.module:479;482
-msgid "Move down"
-msgstr ""
-
-#: nodequeue.module:486;489
-msgid "Move to front"
-msgstr ""
-
-#: nodequeue.module:493;496
-msgid "Move to back"
-msgstr ""
-
-#: nodequeue.module:513
-msgid "Node"
-msgstr ""
-
-#: nodequeue.module:513
-msgid "Author"
-msgstr ""
-
-#: nodequeue.module:513
-msgid "Date"
-msgstr ""
-
-#: nodequeue.module:520
-msgid "<p>Queue is empty!</p>"
-msgstr ""
-
-#: nodequeue.module:544;564
-msgid "Save"
-msgstr ""
-
-#: nodequeue.module:549;559
-msgid "Clear queue"
-msgstr ""
-
-#: nodequeue.module:571
-msgid "The queue has been updated"
-msgstr ""
-
-#: nodequeue.module:580
-msgid "Clearing queue \"%s\" is irreversible. You sure?"
-msgstr ""
-
-#: nodequeue.module:583
-msgid "Clear Queue"
-msgstr ""
-
-#: nodequeue.module:878
-msgid "Add to Node Queue"
-msgstr ""
-
-#: nodequeue.module:879;925
-msgid "node"
-msgstr ""
-
-#: nodequeue.module:902;948
-msgid "Queue"
-msgstr ""
-
-#: nodequeue.module:924
-msgid "Remove from Node Queue"
-msgstr ""
-
-#: nodequeue.module:1052;1089
-msgid "NodeQueue: Timestamp"
-msgstr ""
-
-#: nodequeue.module:1056
-msgid "Display the time the node was added to a given node queue."
-msgstr ""
-
-#: nodequeue.module:1057
-msgid "The option field may be used to specify the custom date format as it's required by the date() function or if \"as time ago\" has been chosen to customize the granularity of the time interval."
-msgstr ""
-
-#: nodequeue.module:1065
-msgid "Filter the view to a specific Node Queue."
-msgstr ""
-
-#: nodequeue.module:1071
-msgid "Filter by where in the queue an item is."
-msgstr ""
-
-#: nodequeue.module:1074
-msgid "NodeQueue: Queue Timestamp"
-msgstr ""
-
-#: nodequeue.module:1079
-msgid "This filter allows nodes to be filtered by the time they were added to a given NodeQueue."
-msgstr ""
-
-#: nodequeue.module:1086
-msgid "When sorting by queue position, be sure the view is filtered to a single queue or the sort will not work very well."
-msgstr ""
-
-#: nodequeue.module:1092
-msgid "Sort by the time the node was added to a node queue."
-msgstr ""
-
-#: nodequeue.module:1114
-msgid "NodeQueue: Queue ID"
-msgstr ""
-
-#: nodequeue.module:1116
-msgid "The Queue ID argument allows users to filter a view by specifying a Node Queue ID."
-msgstr ""
-
-#: nodequeue.module:1119
-msgid "NodeQueue: Queue Title"
-msgstr ""
-
-#: nodequeue.module:1121
-msgid "The Queue Title argument allows users to filter a view by specifying a Node Queue Title."
-msgstr ""
-
-#: nodequeue.module:1133
-msgid "View node queue "
-msgstr ""
-
-#: nodequeue.module:11
-msgid "manipulate queues"
-msgstr ""
-
-#: nodequeue.module:11
-msgid "administer nodequeue"
-msgstr ""
-
-#: nodequeue.module:11
-msgid "manipulate all queues"
-msgstr ""
-
-#: nodequeue.module:0
-msgid "nodequeue"
-msgstr ""
-
-#: nodequeue.install:78
-msgid "Nodequeue module installed tables successfully."
-msgstr ""
-
-#: nodequeue.install:81
-msgid "The installation of nodequeue module was unsuccessful."
-msgstr ""
-
-#: nodequeue.info:0
-msgid "Node Queue"
-msgstr ""
-
-#: nodequeue.info:0
-msgid "Create queues which can contain nodes in arbitrary order"
-msgstr ""
-
