? conditional_fields_360056.patch
? conditional_fields_js_357558.patch
Index: conditional_fields.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/conditional_fields/conditional_fields.js,v
retrieving revision 1.1.2.14.2.5
diff -u -p -r1.1.2.14.2.5 conditional_fields.js
--- conditional_fields.js	22 Dec 2008 00:27:05 -0000	1.1.2.14.2.5
+++ conditional_fields.js	23 Jan 2009 03:55:25 -0000
@@ -10,55 +10,11 @@ Drupal.ConditionalFields.switchField = f
     if (controllingField == id) {
       /* Find the settings of the controlled field */
       $.each(controlledFields, function(i, fieldSettings) {
-        /* Multiple fields are enclosed in a wrapper */
-        if ($(fieldSettings.field_id).parents("#" + fieldSettings.field_id.substring(13) + "-add-more-wrapper").length == 1) {
-          var toSwitch = $("#" + fieldSettings.field_id.substring(13) + "-add-more-wrapper");
-        } else {
-          var toSwitch = $(fieldSettings.field_id);
-        }
-        if (Drupal.settings.ConditionalFields.ui_settings == "disable") {
-          toSwitch.find("textarea, input, select").attr("disabled", "disabled");
-        }
-        /* Avoid flickering */
-        else if (onPageReady == true) {
-          toSwitch.hide();          
-        }
-        else {
-          switch (Drupal.settings.ConditionalFields.ui_settings.animation) {
-            case 0:
-              toSwitch.hide();
-            case 1:
-              toSwitch.slideUp(Drupal.settings.ConditionalFields.ui_settings.anim_speed);
-            case 2:
-              toSwitch.fadeOut(Drupal.settings.ConditionalFields.ui_settings.anim_speed);
-          }
-        }
-        
+        Drupal.ConditionalFields.doAnimation(fieldSettings, 'hide', onPageReady);
         /* Find the trigger values of the controlled field (for this controlling field) */
         $.each(fieldSettings.trigger_values, function(ii, val) {
           if (jQuery.inArray(val, values) != -1) {
-            if ($(fieldSettings.field_id).parents("#" + fieldSettings.field_id.substring(13) + "-add-more-wrapper").length == 1) {
-              var toSwitch = $("#" + fieldSettings.field_id.substring(13) + "-add-more-wrapper");
-            } else {
-              var toSwitch = $(fieldSettings.field_id);
-            }
-            if (Drupal.settings.ConditionalFields.ui_settings == "disable") {
-              toSwitch.find("textarea, input, select").attr("disabled", "");
-            }
-            else if (onPageReady == true) {
-              toSwitch.show();
-            }
-            else {
-              switch (Drupal.settings.ConditionalFields.ui_settings.animation) {
-                case 0:
-                  toSwitch.show();
-                case 1:
-                  toSwitch.slideDown(Drupal.settings.ConditionalFields.ui_settings.anim_speed);
-                case 2:
-                  toSwitch.fadeIn(Drupal.settings.ConditionalFields.ui_settings.anim_speed);
-              }
-            }
-            
+            Drupal.ConditionalFields.doAnimation(fieldSettings, 'show', onPageReady); 
             /* Stop searching in this field */
             return false;
           }
@@ -70,9 +26,43 @@ Drupal.ConditionalFields.switchField = f
   });
 }
 
+Drupal.ConditionalFields.doAnimation = function(fieldSettings, showOrHide, onPageReady) {
+  /* Multiple fields are enclosed in a wrapper */
+  if ($(fieldSettings.field_id).parents('#' + fieldSettings.field_id.substring(13) + '-add-more-wrapper').length == 1) {
+    var toSwitch = $('#' + fieldSettings.field_id.substring(13) + '-add-more-wrapper');
+  } else {
+    var toSwitch = $(fieldSettings.field_id);
+  }
+
+  if (Drupal.settings.ConditionalFields.ui_settings == 'disable') {
+    var disabled = '';
+    if (showOrHide == 'hide') {
+      disabled = '';
+    }
+    toSwitch.find('textarea, input, select').attr('disabled', disabled);
+  }
+  /* Avoid flickering */
+  else if (onPageReady == true) {
+    /* Setting css instead of simply hiding to avoid interference from collapse.js */
+    showOrHide == 'show' ? toSwitch.show() : toSwitch.css('display', 'none');
+  }
+  else {
+    switch (Drupal.settings.ConditionalFields.ui_settings.animation) {
+      case 0:
+        showOrHide == 'show' ? toSwitch.show() : toSwitch.hide();
+      case 1:
+        showOrHide == 'show' ? toSwitch.slideDown(Drupal.settings.ConditionalFields.ui_settings.anim_speed) :
+                               toSwitch.slideUp(Drupal.settings.ConditionalFields.ui_settings.anim_speed);
+      case 2:
+        showOrHide == 'show' ? toSwitch.fadeIn(Drupal.settings.ConditionalFields.ui_settings.anim_speed) :
+                               toSwitch.fadeOut(Drupal.settings.ConditionalFields.ui_settings.anim_speed);
+    }
+  }
+}
+
 Drupal.ConditionalFields.findValues = function(field) {
   var values = [];
-  field.find("option:selected, input:checked").each( function() {
+  field.find('option:selected, input:checked').each( function() {
     if ($(this)[0].selected || $(this)[0].checked) {
       values[values.length] = this.value;
     }
@@ -87,9 +77,9 @@ Drupal.ConditionalFields.fieldChange = f
 }
 
 Drupal.behaviors.ConditionalFields = function (context) {
-  $('.controlling-field:not(.ConditionalFields-processed)', context).addClass('ConditionalFields-processed').each(function () {
+  $('.node-form').find('.controlling-field:not(.conditional-field-processed)', context).addClass('conditional-field-processed').each(function () {
     /* Set default state */
-    Drupal.ConditionalFields.switchField('#' + $(this).attr('id'), Drupal.ConditionalFields.findValues($(this)));
+    Drupal.ConditionalFields.switchField('#' + $(this).attr('id'), Drupal.ConditionalFields.findValues($(this)), true);
     /* Add events. Apparently, Explorer doesn't catch the change event? */
     $.browser.msie == true ? $(this).click(Drupal.ConditionalFields.fieldChange) : $(this).change(Drupal.ConditionalFields.fieldChange);
   });
