Index: nodequeue.module
===================================================================
--- nodequeue.module	(revision 11)
+++ nodequeue.module	(working copy)
@@ -1,5 +1,5 @@
 <?php
-// $Id: nodequeue.module,v 1.85 2009/06/28 16:38:53 ezrag Exp $
+// $Id: nodequeue.module,v 1.84 2009/06/10 22:19:30 ezrag Exp $
 
 // --------------------------------------------------------------------------
 // Drupal Hooks
@@ -228,10 +228,110 @@
         $content_id = $node->translation_change['new_tnid'] == 0 ? $node->translation_change['remaining_nid'] : $node->translation_change['new_tnid'];
         db_query("UPDATE {nodequeue_nodes} SET nid = %d WHERE nid = %d", $content_id, $node->translation_change['old_tnid']);
       }
+
+    case 'insert':
+      if ($node->nodequeue_options) {
+        foreach ($node->nodequeue_options as $key => $option) {
+          if ($option != 0) {
+            $queue = nodequeue_load($key);
+            //$subqueues = nodequeue_load_subqueues_by_queue($queue->qid);
+            $subqueues = nodequeue_get_subqueues_by_node(array($queue), $node);            
+            foreach ($subqueues as $subqueue) {
+              nodequeue_subqueue_add($queue, $subqueue, $node->nid);
+            }
+          }
+        }
+      }
+      break;
+    case 'update':
+      if ($node->nodequeue_options) {
+        foreach ($node->nodequeue_options as $key => $option) {
+          if ($option != 0) {
+            $queue = nodequeue_load($key);
+            //$subqueues = nodequeue_load_subqueues_by_queue($queue->qid);
+            $subqueues = nodequeue_get_subqueues_by_node(array($queue), $node);            
+            //$result = db_query("SELECT nid FROM {nodequeue_nodes} WHERE nid = %d AND qid = %d", $node->nid, $queue->qid);
+            //if (!($item = db_fetch_object($result))) {
+              foreach ($subqueues as $subqueue) {
+                nodequeue_subqueue_add($queue, $subqueue, $node->nid);
+              }
+            //}
+          }
+          else {
+            $queue = nodequeue_load($key);
+            //$subqueues = nodequeue_load_subqueues_by_queue($queue->qid);
+            $subqueues = nodequeue_get_subqueues_by_node(array($queue), $node);            
+            foreach ($subqueues as $subqueue) {
+              nodequeue_subqueue_remove_node($subqueue->sqid, $node->nid);
+            }
+          }
+        }
+      }
+      break;
+    case 'load':
+      $result = db_query("SELECT qid FROM {nodequeue_nodes} WHERE nid = %d", $node->nid);
+      while ($queue = db_fetch_object($result)) {
+        $queuelist[$queue->qid] = $queue->qid;
+      }
+      return array('queues' => $queuelist);
+      
   }
 }
 
+ /**
+ * Implementation of hook_form_alter().
+ */
+function nodequeue_form_alter(&$form, $form_state, $form_id) {
+  $queuelist = array();
+
+  if (($form['#id'] == 'node-form')) {
+    //get queues associated with current node type
+    $queues = nodequeue_load_queues_by_type($form['#node']->type);
+    if ($queues) {
+      foreach ($queues as $queue) {
+        foreach ($queue->types as $type) {
+          if ($form['#node']->type == $type) {
+            if (variable_get('nodequeue_show_in_nodeedit_' . $queue->qid, 0) != 0) {
+              $queuelist[$queue->qid] = $queue->title;
+            }
+          }
+        }
+      }
+    }
+    //if there are queues available add checkbox to node-add form.
+    if (!empty($queuelist)) {
+      $form['nodequeue_options'] = array(
+        '#type' => 'checkboxes',
+        '#weight' => '10',
+        '#title' => t('Choose which queue to add to'),
+        '#default_value' => nodequeue_get_selected_queues($form['nid']['#value']),
+        '#options' => $queuelist,
+        '#description' => t('Choose from the checkboxes in which queues you would like your content to appear'),
+      );
+    }
+  }
+}
+
 /**
+ * Function to get the queues a user has chosen to add content to
+ * from the node-add form.
+ *
+ * @param $nid
+ *   the node id to get queues for
+ *
+ * @return $queuelist
+ *   array of queues
+ */
+function nodequeue_get_selected_queues($nid) {
+  $queuelist = array();
+  $result = db_query("SELECT nn.qid as nnqid, nq.title as nqtitle FROM {nodequeue_nodes} nn JOIN {nodequeue_queue} nq ON nn.qid = nq.qid WHERE nn.nid = %d", $nid);
+  while ($queue = db_fetch_object($result)) {
+    $queuelist[] = $queue->nnqid;
+  }
+  return $queuelist;
+}
+
+/**
  * Implementation of hook_link
  */
 function nodequeue_link($type, $node = NULL, $teaser = FALSE) {
@@ -774,6 +874,14 @@
     '#description' => t('Check each node type that can be added to this queue.'),
   );
 
+  $form['show_in_nodeedit'] = array(
+    '#type' => 'radios',
+    '#title' => t('Show on node edit form'),
+    '#default_value' => variable_get('nodequeue_show_in_nodeedit_' . $queue->qid, 0),
+    '#options' => array("1" => t('Yes'), "0" => t('No')),
+    '#description' => t('Show this queue on the node edit form.'),
+  );
+
   $form['i18n'] = array(
     '#type' => 'radios',
     '#title' => t('Internationalization'),
@@ -897,6 +1005,14 @@
   else {
     drupal_set_message(t('The queue has been updated.'));
   }
+  
+  if ($form_state['values']['show_in_nodeedit'] != 0) {
+    variable_set('nodequeue_show_in_nodeedit_' . $queue->qid, 1);
+  }
+  else {
+    variable_set('nodequeue_show_in_nodeedit_' . $queue->qid, 0);
+  }
+  
   $form_state['redirect'] = 'admin/content/nodequeue';
 }

 /**
