]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 734997: The 'take' link for the assignee field doesn't work when usemenuforusers...
authorFrédéric Buclin <LpSolit@gmail.com>
Wed, 11 Apr 2012 15:04:04 +0000 (17:04 +0200)
committerFrédéric Buclin <LpSolit@gmail.com>
Wed, 11 Apr 2012 15:04:04 +0000 (17:04 +0200)
r=glob a=LpSolit

js/field.js

index 7cdb504354464b85d7bd168c1e8474152df66072..744f193a303011055678ffc007f09e46f698c2cd 100644 (file)
@@ -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);
 }