field-events.js.tmpl 2.18 KB
Newer Older
1 2 3
[%# 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/.
4
  #
5 6
  # This Source Code Form is "Incompatible With Secondary Licenses", as
  # defined by the Mozilla Public License, v. 2.0.
7 8 9 10
  #%]

[%# INTERFACE:
  #   field: a Bugzilla::Field object
11 12
  #   product: (optional) a Bugzilla::Product object. When specified,
  #            components are restricted to this product.
13 14 15
  #%]

[% FOREACH controlled_field = field.controls_visibility_of %]
16 17 18 19 20 21 22 23 24 25 26 27
  [% 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 %]

28
  showFieldWhen('[% controlled_field.name FILTER js %]',
29
                '[% field.name FILTER js %]', [
30 31 32
                [%~ FOREACH vis_name = vis_names ~%]
                  '[% vis_name FILTER js %]'[% "," UNLESS loop.last %]
                [%~ END ~%]
33
  ]);
34
[% END %]
35 36 37 38 39 40 41 42 43

[% legal_values = [] %]
[% IF field.name == "component" AND product %]
  [% legal_values = product.components %]
[% ELSE %]
  [% legal_values = field.legal_values %]
[% END %]

[% FOREACH legal_value = legal_values %]
44 45 46
  [% FOREACH controlled_field = legal_value.controlled_values.keys %]
    [% SET cont_ids = [] %]
    [% FOREACH val = legal_value.controlled_values.$controlled_field %]
47
      [% NEXT IF !val.is_active %]
48 49
      [% cont_ids.push(val.id) %]
    [% END %]
50
    [% NEXT IF !cont_ids.size %]
51 52
    showValueWhen('[% controlled_field FILTER js %]',
                  [[% cont_ids.join(',') FILTER js %]],
53
                  '[% field.name FILTER js %]',
54
                  [% legal_value.id FILTER js %]);
55 56
  [% END %]
[% END %]
57 58 59
[% IF field.name == 'classification' %]
  YAHOO.util.Event.on('product', 'change', setClassification);
[% END %]