From 612c7c86517d5e7c067db6d74ade12ad236ccad6 Mon Sep 17 00:00:00 2001 From: Frédéric Buclin Date: Wed, 11 Apr 2012 17:04:04 +0200 Subject: Bug 734997: The 'take' link for the assignee field doesn't work when usemenuforusers is turned on r=glob a=LpSolit --- js/field.js | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'js/field.js') diff --git a/js/field.js b/js/field.js index 7cdb50435..744f193a3 100644 --- a/js/field.js +++ b/js/field.js @@ -218,12 +218,12 @@ function setupEditLink(id) { hideEditableField(link_container, input_container, link); } -/* Hide input fields and show the text with (edit) next to it */ +/* Hide input/select fields and show the text with (edit) next to it */ function hideEditableField( container, input, action, field_id, original_value, new_value ) { YAHOO.util.Dom.removeClass(container, 'bz_default_hidden'); YAHOO.util.Dom.addClass(input, 'bz_default_hidden'); YAHOO.util.Event.addListener(action, 'click', showEditableField, - new Array(container, input, new_value)); + new Array(container, input, field_id, new_value)); if(field_id != ""){ YAHOO.util.Event.addListener(window, 'load', checkForChangedFieldValues, new Array(container, input, field_id, original_value)); @@ -231,13 +231,14 @@ function hideEditableField( container, input, action, field_id, original_value, } /* showEditableField (e, ContainerInputArray) - * Function hides the (edit) link and the text and displays the input + * Function hides the (edit) link and the text and displays the input/select field * * var e: the event * var ContainerInputArray: An array containing the (edit) and text area and the input being displayed * var ContainerInputArray[0]: the container that will be hidden usually shows the (edit) or (take) text * var ContainerInputArray[1]: the input area and label that will be displayed - * var ContainerInputArray[2]: the new value to set the input field to when (take) is clicked + * var ContainerInputArray[2]: the input/select field id for which the new value must be set + * var ContainerInputArray[3]: the new value to set the input/select field to when (take) is clicked */ function showEditableField (e, ContainerInputArray) { var inputs = new Array(); @@ -250,18 +251,32 @@ function showEditableField (e, ContainerInputArray) { YAHOO.util.Dom.removeClass(inputArea, 'bz_default_hidden'); if ( inputArea.tagName.toLowerCase() == "input" ) { inputs.push(inputArea); + } else if (ContainerInputArray[2]) { + inputs.push(document.getElementById(ContainerInputArray[2])); } else { inputs = inputArea.getElementsByTagName('input'); } if ( inputs.length > 0 ) { // Change the first field's value to ContainerInputArray[2] // if present before focusing. - if (ContainerInputArray[2]) { - inputs[0].value = ContainerInputArray[2]; + var type = inputs[0].tagName.toLowerCase(); + if (ContainerInputArray[3]) { + if ( type == "input" ) { + inputs[0].value = ContainerInputArray[3]; + } else { + for (var i = 0; inputs[0].length; i++) { + if ( inputs[0].options[i].value == ContainerInputArray[3] ) { + inputs[0].options[i].selected = true; + break; + } + } + } } // focus on the first field, this makes it easier to edit inputs[0].focus(); - inputs[0].select(); + if ( type == "input" ) { + inputs[0].select(); + } } YAHOO.util.Event.preventDefault(e); } -- cgit v1.2.3-24-g4f1b