summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authormkanat%bugzilla.org <>2008-01-28 02:21:11 +0100
committermkanat%bugzilla.org <>2008-01-28 02:21:11 +0100
commit46381d01b6e3e1b0143c3fe06224a86b9960d67f (patch)
tree9659992730eddcd30f5a710abb157014312bc13d /js
parentc0b4d49d2ed629ccba8c5fc0d61ebf28972d6ada (diff)
downloadbugzilla-46381d01b6e3e1b0143c3fe06224a86b9960d67f.tar.gz
bugzilla-46381d01b6e3e1b0143c3fe06224a86b9960d67f.tar.xz
Bug 374020: Re-work the bug editing form to be more usable.
Patch By Guy Pyrzak <guy.pyrzak@gmail.com> r=mkanat, a=mkanat
Diffstat (limited to 'js')
-rw-r--r--js/field.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/js/field.js b/js/field.js
index ca58329f4..164ce1c31 100644
--- a/js/field.js
+++ b/js/field.js
@@ -134,3 +134,60 @@ function updateCalendarFromField(date_field) {
cal.render();
}
}
+
+
+/* Hide input fields and show the text with (edit) next to it */
+function hideEditableField( container, input, action, field_id, original_value ) {
+ YAHOO.util.Dom.setStyle(container, 'display', 'inline');
+ YAHOO.util.Dom.setStyle(input, 'display', 'none');
+ YAHOO.util.Event.addListener(action, 'click', showEditableField, new Array(container, input) );
+ if(field_id != ""){
+ YAHOO.util.Event.addListener(window, 'load', checkForChangedFieldValues, new Array(container, input, field_id, original_value ));
+ }
+}
+
+/* showEditableField (e, ContainerInputArray)
+ * Function hides the (edit) link and the text and displays the input
+ *
+ * var e: the event
+ * var ContainerInputArray: An array containing the (edit) and text area and the input being displayed
+ * var ContainerInputArray[0]: the conainer that will be hidden usually shows the (edit) text
+ * var ContainerInputArray[1]: the input area and label that will be displayed
+ *
+ */
+function showEditableField (e, ContainerInputArray) {
+ YAHOO.util.Dom.setStyle(ContainerInputArray[0], 'display', 'none');
+ YAHOO.util.Dom.setStyle(ContainerInputArray[1], 'display', 'inline');
+ YAHOO.util.Event.preventDefault(e);
+}
+
+
+/* checkForChangedFieldValues(e, array )
+ * Function checks if after the autocomplete by the browser if the values match the originals.
+ * If they don't match then hide the text and show the input so users don't get confused.
+ *
+ * var e: the event
+ * var ContainerInputArray: An array containing the (edit) and text area and the input being displayed
+ * var ContainerInputArray[0]: the conainer that will be hidden usually shows the (edit) text
+ * var ContainerInputArray[1]: the input area and label that will be displayed
+ * var ContainerInputArray[2]: the field that is on the page, might get changed by browser autocomplete
+ * var ContainerInputArray[3]: the original value from the page loading.
+ *
+ */
+function checkForChangedFieldValues(e, ContainerInputArray ) {
+ var el = document.getElementById(ContainerInputArray[2]);
+ if ( el ) {
+ if ( el.value != ContainerInputArray[3] || ( el.value == "" && el.id != "alias") ) {
+ YAHOO.util.Dom.setStyle(ContainerInputArray[0], 'display', 'none');
+ YAHOO.util.Dom.setStyle(ContainerInputArray[1], 'display', 'inline');
+ }
+ }
+}
+
+function hideAliasAndSummary(short_desc_value, alias_value){
+ // check the short desc field
+ hideEditableField( 'summary_alias_container', 'summary_alias_input', 'editme_action', 'short_desc', short_desc_value);
+ // check that the alias hasn't changed
+ bz_alias_check_array = new Array('summary_alias_container', 'summary_alias_input', 'alias', alias_value )
+ YAHOO.util.Event.addListener( window, 'load', checkForChangedFieldValues, bz_alias_check_array);
+}