From 55179a93a14e5002e8f862bc6b2c594f625e1565 Mon Sep 17 00:00:00 2001 From: Max Kanat-Alexander Date: Mon, 8 Feb 2010 15:39:38 -0800 Subject: Bug 520993: If the "FIXED" resolution was a visibility or value controller, 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 | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) (limited to 'js') diff --git a/js/field.js b/js/field.js index 700c1de8d..1300e1c53 100644 --- a/js/field.js +++ b/js/field.js @@ -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'); } } } -- cgit v1.2.3-24-g4f1b