Index: conditional_fields.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/conditional_fields/conditional_fields.module,v retrieving revision 1.1.2.22.2.7 diff -u -p -r1.1.2.22.2.7 conditional_fields.module --- conditional_fields.module 22 Dec 2008 03:39:03 -0000 1.1.2.22.2.7 +++ conditional_fields.module 23 Dec 2008 19:32:34 -0000 @@ -257,7 +257,7 @@ function conditional_fields_form_alter(& break; case $form['type']['#value'] . '_node_form': // When previewing, the form is called twice, and this is bad for drupal_add_js. See issue #325448, comment 11 - if ($form_state['submitted'] == FALSE && empty($form_state['post']) || $form_state['submitted'] == TRUE && $form_state['node_preview']) { + if ($form_state['submitted'] == FALSE && empty($form_state['post']) || $form_state['submitted'] == TRUE && $form_state['node_preview'] || $form_state['submitted'] == FALSE && !empty($form_state['post']) && in_array($form_state['post']['op'], array('Save', 'Preview'))) { conditional_fields_node_editing_form($form); } break; @@ -617,7 +617,6 @@ function conditional_fields_unset_requir * Validation for node editing form. */ function conditional_fields_node_editing_form_validate($form, $form_state) { - // When previewing, hook_form_alter is not called, so we need to add js here too if ($form['#conditional_fields']['settings']['ui_settings']) { conditional_fields_add_js($form['#conditional_fields']['settings']); @@ -813,8 +812,19 @@ 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', 'header', FALSE, TRUE, FALSE); - drupal_add_js(drupal_get_path('module', 'conditional_fields') . '/conditional_fields.js', 'module', 'header', FALSE, TRUE, FALSE); + static $included_settings = array(); // Holds our array of unique settings hashes + $settings_hash = md5(serialize($settings)); + + // Only add js if it has not been added yet + if (!count($included_settings) || count($included_settings) && !in_array($settings_hash, $included_settings)) { + $included_settings[] = $settings_hash; + + drupal_add_js(array('ConditionalFields' => $settings), 'setting', 'header', FALSE, TRUE, FALSE); + + // This file should only need to be added once + if (count($included_settings) == 1) + drupal_add_js(drupal_get_path('module', 'conditional_fields') . '/conditional_fields.js', 'module', 'header', FALSE, TRUE, FALSE); + } } /*