| [%# This Source Code Form is subject to the terms of the Mozilla Public |
| # License, v. 2.0. If a copy of the MPL was not distributed with this |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| # |
| # This Source Code Form is "Incompatible With Secondary Licenses", as |
| # defined by the Mozilla Public License, v. 2.0. |
| #%] |
| |
| [%# INTERFACE: |
| # field: a Bugzilla::Field object |
| # product: (optional) a Bugzilla::Product object. When specified, |
| # components are restricted to this product. |
| #%] |
| |
| [% FOREACH controlled_field = field.controls_visibility_of %] |
| [% vis_names = [] %] |
| [% FOREACH visibility_value = controlled_field.visibility_values %] |
| [%# Exclude non-enterable products and components outside the current product. %] |
| [% NEXT IF field.name == "product" |
| && visibility_value.id != product.id |
| && !user.can_enter_product(visibility_value) %] |
| [% NEXT IF field.name == "component" && visibility_value.product_id != product.id %] |
| [% vis_names.push(visibility_value.name) %] |
| [% END %] |
| |
| [% NEXT UNLESS vis_names.size %] |
| |
| showFieldWhen('[% controlled_field.name FILTER js %]', |
| '[% field.name FILTER js %]', [ |
| [%~ FOREACH vis_name = vis_names ~%] |
| '[% vis_name FILTER js %]'[% "," UNLESS loop.last %] |
| [%~ END ~%] |
| ]); |
| [% END %] |
| |
| [% legal_values = [] %] |
| [% IF field.name == "component" AND product %] |
| [% legal_values = product.components %] |
| [% ELSE %] |
| [% legal_values = field.legal_values %] |
| [% END %] |
| |
| [% FOREACH legal_value = legal_values %] |
| [% FOREACH controlled_field = legal_value.controlled_values.keys %] |
| [% SET cont_ids = [] %] |
| [% FOREACH val = legal_value.controlled_values.$controlled_field %] |
| [% NEXT IF !val.is_active %] |
| [% cont_ids.push(val.id) %] |
| [% END %] |
| [% NEXT IF !cont_ids.size %] |
| showValueWhen('[% controlled_field FILTER js %]', |
| [[% cont_ids.join(',') FILTER js %]], |
| '[% field.name FILTER js %]', |
| [% legal_value.id FILTER js %]); |
| [% END %] |
| [% END %] |
| [% IF field.name == 'classification' %] |
| YAHOO.util.Event.on('product', 'change', setClassification); |
| [% END %] |