Commit 7d3c1b0d authored by Frédéric Buclin's avatar Frédéric Buclin

Bug 1196969: Custom fields whose visibility depends on the product are not…

Bug 1196969: Custom fields whose visibility depends on the product are not displayed/hidden correctly r=gerv a=sgreen
parent 21132473
...@@ -522,6 +522,31 @@ function handleVisControllerValueChange(e, args) { ...@@ -522,6 +522,31 @@ function handleVisControllerValueChange(e, args) {
if (selected) { if (selected) {
YAHOO.util.Dom.removeClass(label_container, 'bz_hidden_field'); YAHOO.util.Dom.removeClass(label_container, 'bz_hidden_field');
YAHOO.util.Dom.removeClass(field_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. // Restore the 'required' attribute for mandatory fields.
if (field.getAttribute('data-required') == "true") { if (field.getAttribute('data-required') == "true") {
field.setAttribute('required', 'true'); field.setAttribute('required', 'true');
......
...@@ -229,20 +229,12 @@ ...@@ -229,20 +229,12 @@
[%# PRODUCT #%] [%# PRODUCT #%]
[%#############%] [%#############%]
<tr> <tr>
[% INCLUDE "bug/field-label.html.tmpl" [% INCLUDE bug/field.html.tmpl
field = bug_fields.product bug = bug, field = bug_fields.product, value = bug.product
desc_url = 'describecomponents.cgi' override_legal_values = bug.choices.product
value = bug.product desc_url = "describecomponents.cgi"
%] editable = bug.check_can_change_field('product', 0, 1)
<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>
</tr> </tr>
[%# Classification is here so that it can be used in value controllers [%# Classification is here so that it can be used in value controllers
......
...@@ -91,6 +91,12 @@ ...@@ -91,6 +91,12 @@
</script> </script>
[% CASE [ constants.FIELD_TYPE_SINGLE_SELECT [% CASE [ constants.FIELD_TYPE_SINGLE_SELECT
constants.FIELD_TYPE_MULTI_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"> <input type="hidden" id="[% field.name FILTER html %]_dirty">
<select id="[% field.name FILTER html %]" <select id="[% field.name FILTER html %]"
name="[% field.name FILTER html %]" name="[% field.name FILTER html %]"
...@@ -141,6 +147,7 @@ ...@@ -141,6 +147,7 @@
[% IF field.type == constants.FIELD_TYPE_MULTI_SELECT %] [% IF field.type == constants.FIELD_TYPE_MULTI_SELECT %]
<input type="hidden" name="defined_[% field.name FILTER html %]"> <input type="hidden" name="defined_[% field.name FILTER html %]">
[% END %] [% END %]
[% END %]
<script type="text/javascript"> <script type="text/javascript">
<!-- <!--
...@@ -156,7 +163,8 @@ ...@@ -156,7 +163,8 @@
(<a href="#" id="[% field.name FILTER html %]_edit_action">edit</a>) (<a href="#" id="[% field.name FILTER html %]_edit_action">edit</a>)
</div> </div>
[% IF value %] [% 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 %] [% END %]
</div> </div>
<div id="[% field.name FILTER html %]_input"> <div id="[% field.name FILTER html %]_input">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment