--- taxonomy_multi_edit.module 2007-01-14 11:56:51.000000000 -0500
+++ taxonomy_multi_edit1.module 2007-01-14 11:56:12.000000000 -0500
@@ -1,60 +1,190 @@
-Submit button.');
- }
- return $output;
-}
-
-function taxonomy_multi_edit_menu($may_cache) {
- if ($may_cache) {
- $items[] = array('path' => 'admin/node/taxonomy_multi_edit', 'title' => t('assign categories'),
- 'callback' => 'taxonomy_multi_edit_overview',
- 'access' => user_access('administer nodes'),
- 'weight' => 5,
- 'type' => MENU_LOCAL_TASK);
- return $items;
- }
-}
-
-function taxonomy_multi_edit_overview() {
- if ($edit = $_POST['edit']) {
- foreach ($edit as $nid => $terms) {
- if (!$tax = $terms['taxonomy']) {
- $tax = $terms['tags'];
- }
- taxonomy_node_save($nid, $tax);
- }
- drupal_set_message(t('categories updated.'));
- }
-
- $numselects = 4;
- $header = array(
- array("data" => t('title'), ),
- array("data" => t("vocabularies"), "colspan" => $numselects)
- );
- $sql = "SELECT n.nid, title, teaser, type FROM {node} n ORDER BY changed DESC";
- $result = pager_query(db_rewrite_sql($sql), 200);
- while ($node = db_fetch_object($result)) {
- if ($selects = taxonomy_node_form($node->type, $node, NULL, "$node->nid][taxonomy")) {
- $selects = array_pad($selects, $numselects, ' ');
- array_unshift($selects, l($node->title, "node/$node->nid", array('title' => substr(strip_tags($node->teaser), 0, 80))));
- $rows[] = $selects;
- }
- }
- $form = theme('table', $header, $rows);
- $form .= form_button('Submit');
- if ($pager = theme("pager", NULL, 200, 0, tablesort_pager())) {
- $form .= array(array("data" => $pager, "colspan" => $numselects+1));
- }
- print theme('page', form($form));
-}
-
-?>
+Submit button.');
+ }
+ return $output;
+}
+
+function taxonomy_multi_edit_menu($may_cache){
+ if ($may_cache){
+ $items[] = array(
+ 'path' => 'admin/node/taxonomy_multi_edit',
+ 'title' => t('assign categories'),
+ 'callback' => 'taxonomy_multi_edit_overview',
+ 'access' => user_access('administer nodes'),
+ 'weight' => 5,
+ 'type' => MENU_LOCAL_TASK);
+ return $items;
+ }
+}
+
+function taxonomy_multi_edit_overview(){
+
+ //See node.module 1116
+ global $form_values;
+
+
+ $filter = node_build_filter_query();
+
+ $result = pager_query(
+ 'SELECT n.*, u.name, u.uid FROM {node} n '. $filter['join'] .' INNER JOIN {users} u ON n.uid = u.uid '. $filter['where'] .' ORDER BY n.changed DESC', 20, 0, NULL,$filter['args']);
+ $form['taxonomy'] = array( '#tree' => TRUE);
+ while($node = db_fetch_object($result))
+ {
+ $nodes[$node->nid] = '';
+ $form['title'][$node->nid] = array('#value' => l($node->title, 'node/'.$node->nid) . ' ' . theme('mark', node_mark($node->nid, $node->changed)));
+ $vocabularies = taxonomy_get_vocabularies($node->type);
+ foreach( $vocabularies as $vocabulary )
+ {
+ $tree = taxonomy_get_tree($vocabulary->vid);
+ $node_vocab_terms = taxonomy_node_get_terms_by_vocabulary($node->nid, $vocabulary->vid);
+ $options = array();
+ $selected = array();
+ if ($tree)
+ {
+ foreach($tree as $term)
+ {
+ $options[$term->tid] = _taxonomy_depth($term->depth, '-') . $term->name;
+ if ($node_vocab_terms[$term->tid]->name == $term->name)
+ {
+ $selected[$term->tid] = $term->tid;
+
+ }
+ }
+ }
+ $multiple = $vocabulary->multiple;
+ $form['taxonomy'][$node->nid][$vocabulary->vid] = array(
+ '#type' => 'select',
+ '#title' => t($vocabulary->name),
+ '#default_value'=> $selected,
+ '#options' => $options,
+ '#multiple' => $multiple,
+ '#required' => $vocabulary->required,
+ '#size' => $multiple ? min(9, count($options)) : 0,
+ '#description' => t('vocabulary terms associated with node')
+ );
+ }
+ $form['name'][$node->nid] = array(
+ '#value' => node_get_name($node)
+ );
+ $form['username'][$node->nid] = array(
+ '#value' => theme('username', $node)
+ );
+ }
+ $form['nodes'] = array (
+ '#type' => 'checkboxes',
+ '#options' => $nodes
+ );
+ $form['button'] = array (
+ '#type' => 'submit',
+ '#value' => t('Submit')
+ );
+ $form['button2'] = array (
+ '#type' => 'submit',
+ '#value' => t('Submit')
+ );
+ $form['pager'] = array(
+ '#value' => theme('pager', NULL, 20, 0)
+ );
+ //print_r($form);
+ $output = node_filter_form();
+ $output .= drupal_get_form('taxonomy_multi_edit_page', $form);
+ return $output;
+}
+
+
+/**
+ * Theme taxonomy_multi_edit_page administration overview.
+ */
+function theme_taxonomy_multi_edit_page($form){
+ $header = array(
+ '',
+ t('Title'),
+ t('Terms'),
+ t('Type'),
+ t('Author')
+ );
+
+
+ $output .= form_render($form['button']);
+ if (isset($form['title']) && is_array($form['title']))
+ {
+ foreach (element_children($form['title']) as $key)
+ {
+ $row = array();
+ $row[] = form_render($form['nodes'][$key]);
+ $row[] = form_render($form['title'][$key]);
+ $row[] = form_render($form['taxonomy'][$key]);
+ $row[] = form_render($form['name'][$key]);
+ $row[] = form_render($form['username'][$key]);
+ $rows[] = $row;
+ }
+ }
+ else
+ {
+ $rows[] = array (
+ array(
+ 'data' => t('No posts available.'),
+ 'colspan' => '4')
+ );
+ }
+
+ $output .= theme('table', $header, $rows);
+ if ($form['pager']['#value'])
+ {
+ $output .= form_render($form['pager']);
+ }
+ $output .= form_render($form['button2']);
+ $output .= form_render($form);
+ //print_r($form);
+ return $output;
+}
+
+function taxonomy_multi_edit_page_submit($form_id, $edit){
+//$edit['nodes'] = array_diff($edit['nodes'], array(0));
+foreach ($edit['nodes'] as $nid => $node)
+ {
+ //print "[nid] " . $nid;
+ taxonomy_node_delete($nid);
+ if (is_array($edit['taxonomy'][$nid]))
+ {
+ //Check to see if there is a vocabulary assigned
+ foreach ($edit['taxonomy'][$nid] as $vid => $term)
+ {
+ //print "
[vid => tid] " . $vid . "=>" . $term;
+ if (is_array($term))
+ {
+ foreach ($term as $tid)
+ {
+ if ($tid)
+ {
+ db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d, %d)', $nid, $tid);
+ }
+ }
+ }
+ else if (is_object($term))
+ {
+ db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d, %d)', $nid, $term->tid);
+ }
+ else if ($term)
+ {
+ db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d, %d)', $nid, $term);
+ }
+ }
+ //print "
----
";
+ }
+ }
+ drupal_set_message(t('The update has been performed.'));
+ }
+?>