? conditional_fields_350411.patch
Index: conditional_fields.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/conditional_fields/conditional_fields.module,v
retrieving revision 1.1.2.22.2.14
diff -u -p -r1.1.2.22.2.14 conditional_fields.module
--- conditional_fields.module	24 Jan 2009 16:46:42 -0000	1.1.2.22.2.14
+++ conditional_fields.module	31 Jan 2009 17:46:38 -0000
@@ -254,11 +254,8 @@ function conditional_fields_form_alter(&
     case 'fieldgroup_remove_group':
       $form['#submit'] = $form['#submit'] + array('_conditional_fields_fieldgroup_remove_group_submit' => array('group_name' => arg(5)));
       break;
-    case $form['type']['#value'] . '_node_form':
-      // When previewing, the form is sometimes called twice, and this is bad for drupal_add_js. See issue #350411
-      if (($form_state['submitted'] == FALSE && empty($form_state['post'])) || $form_state['node_preview']) {
-        conditional_fields_node_editing_form($form, $form_state);
-      }
+    case $form['type']['#value'] . '_node_form':
+      conditional_fields_node_editing_form($form, $form_state);
       break;
   }
 }
@@ -626,9 +623,8 @@ function conditional_fields_node_editing
       $settings['ui_settings']['anim_speed'] = variable_get('c_fields_anim_speed_' . $type_name, "normal");
       break;
   }
-  
-  // When previewing we need to add js from validation, otherwise we risk to add it twice
-  if ($ui_settings != C_FIELDS_JS_NO && !$form_state['node_preview']) {
+
+  if ($ui_settings != C_FIELDS_JS_NO) {
     conditional_fields_add_js($settings);    
   }
   
@@ -668,8 +664,8 @@ function conditional_fields_unset_requir
  * Validation for node editing form.
  */
 function conditional_fields_node_editing_form_validate($form, $form_state) {
-  // When previewing we need to add js here, otherwise we risk to add it twice
-  if ($form['#conditional_fields']['settings']['ui_settings'] && $form_state['values']['op'] == $form_state['values']['preview']) {
+  // When form fails validation, hook_form_alter is not called, so we add js here too
+  if ($form['#conditional_fields']['settings']['ui_settings']) {
     conditional_fields_add_js($form['#conditional_fields']['settings']);
   }
 
@@ -868,8 +864,13 @@ function conditional_fields_default_valu
  * Adds javascript to the node editing form
  */
 function conditional_fields_add_js($settings) {
-  drupal_add_js(array('ConditionalFields' => $settings), 'setting');
-  drupal_add_js(drupal_get_path('module', 'conditional_fields') . '/conditional_fields.js');
+  // Avoid adding js twice when the node form has failed validation
+  static $js;
+  if (!$js) {
+    drupal_add_js(array('ConditionalFields' => $settings), 'setting');
+    drupal_add_js(drupal_get_path('module', 'conditional_fields') . '/conditional_fields.js');
+    $js = TRUE;
+  }
 }
 
 /*
