? patches
Index: nodewords_admin/nodewords_admin.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodewords/nodewords_admin/Attic/nodewords_admin.module,v
retrieving revision 1.1.2.12
diff -u -p -r1.1.2.12 nodewords_admin.module
--- nodewords_admin/nodewords_admin.module	30 Jun 2010 16:27:47 -0000	1.1.2.12
+++ nodewords_admin/nodewords_admin.module	8 Nov 2010 04:25:40 -0000
@@ -7,69 +7,6 @@
  */
 
 /**
- * Implements hook_form_FORM_ID_alter().
- */
-function nodewords_admin_form_taxonomy_form_term_alter(&$form, &$form_state) {
-  $bool = (
-    !isset($form_state['confirm_delete']) &&
-    !isset($form_state['confirm_parents'])
-  );
-  if ($bool) {
-    if (!empty($form_state['values']['nodewords'])) {
-      $tags = $form_state['values']['nodewords'];
-    }
-    elseif (isset($form['tid']['#value']) && is_numeric($form['tid']['#value'])) {
-      $id = $form['tid']['#value'];
-      $tags = nodewords_load_tags(array(
-        'type' => NODEWORDS_TYPE_TERM, 'id' => $id
-      ));
-    }
-    else {
-      $tags = array();
-    }
-
-    $form['nodewords'] = nodewords_tags_edit_fields(
-      array( 'type' => NODEWORDS_TYPE_TERM, 'id' => isset($id) ? $id : 0),
-      $tags,
-      array('fieldset' => TRUE)
-    );
-
-    $form['submit']['#weight'] = 45;
-    $form['delete']['#weight'] = 50;
-  }
-}
-
-/**
- * Implements hook_form_FORM_ID_alter().
- */
-function nodewords_admin_form_taxonomy_form_vocabulary_alter(&$form, &$form_state) {
-  if (isset($form['vid']['#value'])) {
-    $id = $form['vid']['#value'];
-
-    if (!empty($form_state['values']['nodewords'])) {
-      $tags = $form_state['values']['nodewords'];
-    }
-    elseif (isset($id) && is_numeric($id)) {
-      $tags = nodewords_load_tags(array(
-        'type' => NODEWORDS_TYPE_VOCABULARY, 'id' => $id
-      ));
-    }
-    else {
-      $tags = array();
-    }
-
-    $form['nodewords'] = nodewords_tags_edit_fields(
-      array('type' => NODEWORDS_TYPE_VOCABULARY, 'id' => $id),
-      $tags,
-      array('fieldset' => TRUE)
-    );
-
-    $form['submit']['#weight'] = 45;
-    $form['delete']['#weight'] = 50;
-  }
-}
-
-/**
  *  Implements hook_help().
  */
 function nodewords_admin_help($path, $arg) {
Index: nodewords_ui/nodewords_ui.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodewords/nodewords_ui/Attic/nodewords_ui.module,v
retrieving revision 1.1.2.14
diff -u -p -r1.1.2.14 nodewords_ui.module
--- nodewords_ui/nodewords_ui.module	30 Oct 2010 18:57:10 -0000	1.1.2.14
+++ nodewords_ui/nodewords_ui.module	8 Nov 2010 04:25:40 -0000
@@ -27,18 +27,80 @@ function nodewords_ui_content_extra_fiel
  */
 function nodewords_ui_form_alter(&$form, $form_state, $form_id) {
   if (isset($form['type']) && isset($form['#node']) && $form_id == $form['type']['#value'] . '_node_form') {
-    if (user_access('administer meta tags') || user_access('edit meta tags')) {
-      $node = $form['#node'];
-      $form['nodewords'] = nodewords_tags_edit_fields(
-        _nodewords_ui_get_node_metatags_type($node),
-        !empty($node->nodewords['metatags']) ? $node->nodewords['metatags'] : array(),
-        array(
-          'fieldset' => TRUE,
-          'tag options' => array('content type' => $form['type']['#value']),
-        )
-      );
+    if (!user_access('administer meta tags') && !user_access('edit meta tags')) {
+      return;
+    }
+
+    $node = $form['#node'];
+    $options = array('type' => NODEWORDS_TYPE_NODE, 'id' => 0);
+    $tags = !empty($node->nodewords['metatags']) ? $node->nodewords['metatags'] : array();
+
+    if (!empty($form['nid']['#value'])) {
+      $options['id'] = $form['nid']['#value'];
+    }
+
+    $form['nodewords'] = nodewords_tags_edit_fields($options, $tags, array(
+      'fieldset' => TRUE,
+      'tag options' => array('content type' => $form['type']['#value']),
+    ));
+  }
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function nodewords_ui_form_taxonomy_form_term_alter(&$form, &$form_state) {
+  if (!user_access('administer meta tags') && !user_access('edit meta tags')) {
+    return;
+  }
+
+  if (isset($form_state['confirm_delete']) || isset($form_state['confirm_parents'])) {
+    // Do not run on confirmation delete forms, which re-use the same form ID.
+    return;
+  }
+
+  $options = array('type' => NODEWORDS_TYPE_TERM, 'id' => 0);
+  $tags = !empty($form_state['values']['nodewords']) ? $form_state['values']['nodewords'] : array();
+
+  if (!empty($form['tid']['#value'])) {
+    $options['id'] = $form['tid']['#value'];
+    if (empty($tags)) {
+      $tags = nodewords_load_tags($options);
     }
   }
+
+  $form['nodewords'] = nodewords_tags_edit_fields($options, $tags, array('fieldset' => TRUE));
+
+  $form['submit'] += array('#weight' => 50);
+  if (isset($form['delete'])) {
+    $form['delete'] += array('#weight' => 55);
+  }
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function nodewords_ui_form_taxonomy_form_vocabulary_alter(&$form, &$form_state) {
+  if (!user_access('administer meta tags') && !user_access('edit meta tags')) {
+    return;
+  }
+
+  $options = array('type' => NODEWORDS_TYPE_VOCABULARY, 'id' => 0);
+  $tags = !empty($form_state['values']['nodewords']) ? $form_state['values']['nodewords'] : array();
+
+  if (!empty($form['vid']['#value'])) {
+    $options['id'] = $form['vid']['#value'];
+    if (empty($tags)) {
+      $tags = nodewords_load_tags($options);
+    }
+  }
+
+  $form['nodewords'] = nodewords_tags_edit_fields($options, $tags, array('fieldset' => TRUE));
+
+  $form['submit'] += array('#weight' => 50);
+  if (isset($form['delete'])) {
+    $form['delete'] += array('#weight' => 55);
+  }
 }
 
 /**
@@ -111,11 +173,7 @@ function nodewords_ui_form_nodewords_adm
  * Implements hook_nodeapi().
  */
 function nodewords_ui_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
-  $bool = (
-    $op == 'prepare translation' &&
-    isset($node->translation_source->nodewords)
-  );
-  if ($bool) {
+  if ($op == 'prepare translation' && isset($node->translation_source->nodewords)) {
     $node->nodewords = $node->translation_source->nodewords;
   }
 }
@@ -137,11 +195,9 @@ function nodewords_ui_theme() {
 function nodewords_ui_user($op, &$edit, &$account, $category = NULL) {
   if ($op == 'form' && $category == 'account') {
     if (user_access('administer meta tags') || user_access('edit meta tags')) {
-      $form['nodewords'] = nodewords_tags_edit_fields(
-        array('type' => NODEWORDS_TYPE_USER, 'id' => $account->uid),
-        isset($account->nodewords['metatags']) ? $account->nodewords['metatags'] : array(),
-        array('fieldset' => TRUE)
-      );
+      $options = array('type' => NODEWORDS_TYPE_USER, 'id' => $account->uid);
+      $tags = isset($account->nodewords['metatags']) ? $account->nodewords['metatags'] : array();
+      $form['nodewords'] = nodewords_tags_edit_fields($options, $tags, array('fieldset' => TRUE));
       return $form;
     }
   }
@@ -172,7 +228,3 @@ function theme_nodewords_ui_enabled_meta
 
   return theme('table', $header, $rows) . drupal_render($form);
 }
-
-function _nodewords_ui_get_node_metatags_type($node) {
-  return array('type' => NODEWORDS_TYPE_NODE, 'id' => isset($node->nid) ? $node->nid : NULL);
-}
