]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 520993: If the "FIXED" resolution was a visibility or value controller,
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Mon, 8 Feb 2010 23:44:48 +0000 (15:44 -0800)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Mon, 8 Feb 2010 23:44:48 +0000 (15:44 -0800)
then controlled fields weren't properly changing when the status changed to
RESOLVED and "FIXED" appeared as the first value in the Resolution field.
r=LpSolit, a=mkanat

js/field.js

index 700c1de8dc81dbd7e8c32c84b41b90f1434389c6..1300e1c533e102350e6299f9bb88d0a657b7705f 100644 (file)
@@ -267,6 +267,15 @@ function showHideStatusItems(e, dupArrayInfo) {
     // finish doing stuff based on the selection.
     if ( el ) {
         showDuplicateItem(el);
+
+        // Make sure that fields whose visibility or values are controlled
+        // by "resolution" behave properly when resolution is hidden.
+        var resolution = document.getElementById('resolution');
+        if (resolution && resolution.options[0].value != '') {
+            var emptyOption = new Option('', '');
+            resolution.insertBefore(emptyOption, resolution.options[0]);
+            emptyOption.selected = true;
+        }
         YAHOO.util.Dom.addClass('resolution_settings', 'bz_default_hidden');
         if (document.getElementById('resolution_settings_warning')) {
             YAHOO.util.Dom.addClass('resolution_settings_warning',
@@ -274,18 +283,24 @@ function showHideStatusItems(e, dupArrayInfo) {
         }
         YAHOO.util.Dom.addClass('duplicate_display', 'bz_default_hidden');
 
-        if ( el.value == dupArrayInfo[1] && dupArrayInfo[0] == "is_duplicate" ) {
-            YAHOO.util.Dom.removeClass('resolution_settings', 
-                                       'bz_default_hidden');
-            YAHOO.util.Dom.removeClass('resolution_settings_warning', 
-                                       'bz_default_hidden');  
-        }
-        else if ( bz_isValueInArray(close_status_array, el.value) ) {
-            // hide duplicate and show resolution
+
+        if ( (el.value == dupArrayInfo[1] && dupArrayInfo[0] == "is_duplicate")
+             || bz_isValueInArray(close_status_array, el.value) ) 
+        {
             YAHOO.util.Dom.removeClass('resolution_settings', 
                                        'bz_default_hidden');
             YAHOO.util.Dom.removeClass('resolution_settings_warning', 
                                        'bz_default_hidden');
+
+            // Remove the blank option we inserted.
+            if (resolution && resolution.options[0].value == '') {
+                resolution.removeChild(resolution.options[0]);
+                resolution.options[0].selected = true;
+            }
+        }
+
+        if (resolution) {
+            bz_fireEvent(resolution, 'change');
         }
     }
 }