diff options
author | Frédéric Buclin <LpSolit@gmail.com> | 2015-08-26 23:29:51 +0200 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2015-08-26 23:29:51 +0200 |
commit | 246c04a3b156d5c9c2c4fedd9ba55c2037b66586 (patch) | |
tree | 12115dca8e26c27f96f72516d777097083ab84f1 | |
parent | 7a997794eb6d39027d2e8704773017793d8e51b9 (diff) | |
download | bugzilla-246c04a3b156d5c9c2c4fedd9ba55c2037b66586.tar.gz bugzilla-246c04a3b156d5c9c2c4fedd9ba55c2037b66586.tar.xz |
Bug 1196969: Custom fields whose visibility depend on the product are not displayed/hidden correctly
r=gerv a=sgreen
-rw-r--r-- | js/field.js | 25 | ||||
-rw-r--r-- | template/en/default/bug/edit.html.tmpl | 20 | ||||
-rw-r--r-- | template/en/default/bug/field.html.tmpl | 18 |
3 files changed, 44 insertions, 19 deletions
diff --git a/js/field.js b/js/field.js index 5055c003e..380901d96 100644 --- a/js/field.js +++ b/js/field.js @@ -522,6 +522,31 @@ function handleVisControllerValueChange(e, args) { if (selected) { YAHOO.util.Dom.removeClass(label_container, 'bz_hidden_field'); YAHOO.util.Dom.removeClass(field_container, 'bz_hidden_field'); + /* If a custom field such as a textarea field contains some text, then + * its content is visible by default as a readonly field (assuming that + * the field is displayed). But if such a custom field contains no text, + * then it's not displayed at all and an (edit) link is displayed instead. + * This is problematic if the custom field is mandatory, because at least + * Firefox complains that you must enter a value, but is unable to point + * to the custom field because this one is hidden, and so the user has + * to guess what the web browser is talking about, which is confusing. + * So in that case, we display the custom field automatically instead of + * the (edit) link, so that the user can enter some text in it. + */ + var field_readonly = document.getElementById(controlled_id + '_readonly'); + + if (!field_readonly) { + var field_input = document.getElementById(controlled_id + '_input'); + var edit_container = + document.getElementById(controlled_id + '_edit_container'); + + if (field_input) { + YAHOO.util.Dom.removeClass(field_input, 'bz_default_hidden'); + } + if (edit_container) { + YAHOO.util.Dom.addClass(edit_container, 'bz_hidden_field'); + } + } // Restore the 'required' attribute for mandatory fields. if (field.getAttribute('data-required') == "true") { field.setAttribute('required', 'true'); diff --git a/template/en/default/bug/edit.html.tmpl b/template/en/default/bug/edit.html.tmpl index f21e840ba..7f2b741f6 100644 --- a/template/en/default/bug/edit.html.tmpl +++ b/template/en/default/bug/edit.html.tmpl @@ -230,20 +230,12 @@ [%# PRODUCT #%] [%#############%] <tr id="field_tablerow_product"> - [% INCLUDE "bug/field-label.html.tmpl" - field = bug_fields.product - desc_url = 'describecomponents.cgi' - value = bug.product - %] - <td class="field_value" id="field_container_product"> - [% INCLUDE "global/product-select.html.tmpl" - id => "product" - name => "product" - value => bug.product - products => bug.choices.product - isselect => bug.check_can_change_field('product', 0, 1) - %] - </td> + [% INCLUDE bug/field.html.tmpl + bug = bug, field = bug_fields.product, value = bug.product + override_legal_values = bug.choices.product + desc_url = "describecomponents.cgi" + editable = bug.check_can_change_field('product', 0, 1) + %] </tr> [%# Classification is here so that it can be used in value controllers diff --git a/template/en/default/bug/field.html.tmpl b/template/en/default/bug/field.html.tmpl index 85f7aea33..4d6019d01 100644 --- a/template/en/default/bug/field.html.tmpl +++ b/template/en/default/bug/field.html.tmpl @@ -91,6 +91,12 @@ </script> [% CASE [ constants.FIELD_TYPE_SINGLE_SELECT constants.FIELD_TYPE_MULTI_SELECT ] %] + [%# The 'product' field needs its own template if classifications are enabled. %] + [% IF field.name == "product" AND Param('useclassification') %] + [% INCLUDE "global/product-select.html.tmpl" + id = "product", name = "product", value = value + products = override_legal_values %] + [% ELSE %] <input type="hidden" id="[% field.name FILTER html %]_dirty"> <select id="[% field.name FILTER html %]" name="[% field.name FILTER html %]" @@ -141,22 +147,24 @@ [% IF field.type == constants.FIELD_TYPE_MULTI_SELECT %] <input type="hidden" name="defined_[% field.name FILTER html %]"> [% END %] + [% END %] - <script type="text/javascript"> + <script type="text/javascript"> <!-- initHidingOptionsForIE('[% field.name FILTER js %]'); [%+ INCLUDE "bug/field-events.js.tmpl" field = field, product = bug.product_obj %] //--> - </script> + </script> - [% CASE constants.FIELD_TYPE_TEXTAREA %] + [% CASE constants.FIELD_TYPE_TEXTAREA %] <div id="[% field.name FILTER html %]_edit_container" class="bz_default_hidden"> <div> (<a href="#" id="[% field.name FILTER html %]_edit_action">edit</a>) </div> [% IF value %] - <pre class="field_textarea_readonly">[% value FILTER html %]</pre> + <pre id="[% field.name FILTER html %]_readonly" + class="field_textarea_readonly">[% value FILTER html %]</pre> [% END %] </div> <div id="[% field.name FILTER html %]_input"> @@ -173,7 +181,7 @@ '', true); </script> - [% CASE constants.FIELD_TYPE_BUG_URLS %] + [% CASE constants.FIELD_TYPE_BUG_URLS %] [% IF bug.id && value.size %] <ul class="bug_urls"> [% FOREACH bug_url = value %] |