[%# 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. #%] [% SWITCH field.type %] [% CASE [ constants.FIELD_TYPE_FREETEXT, constants.FIELD_TYPE_TEXTAREA, constants.FIELD_TYPE_UNKNOWN ] %] [% INCLUDE "bug/field-label.html.tmpl" field = field tag_name = "span" editable = 1 %] [% INCLUDE "search/type-select.html.tmpl" name = field.name _ "_type", types = types, selected = type_selected %] <input name="[% field.name FILTER html %]" id="[% field.name FILTER html %]" size="40" [% IF onchange %] onchange="[% onchange FILTER html %]"[% END %] value="[% value FILTER html %]" [% 'autofocus' IF focus %]> [% CASE constants.FIELD_TYPE_KEYWORDS %] [% INCLUDE "bug/field-label.html.tmpl" field = field tag_name = "span" editable = 1 %] [% INCLUDE "search/type-select.html.tmpl" name = field.name _ "_type", types = types, selected = type_selected %] <div id="[% field.name FILTER html %]_container"> <input name="[% field.name FILTER html %]" id="[% field.name FILTER html %]" size="40" [% IF onchange %] onchange="[% onchange FILTER html %]"[% END %] value="[% value FILTER html %]" [% 'autofocus' IF focus %]> <div id="[% field.name FILTER html %]_autocomplete"></div> </div> <script type="text/javascript" defer="defer"> if (typeof YAHOO.bugzilla.field_array === "undefined") YAHOO.bugzilla.field_array = []; YAHOO.bugzilla.field_array["[% field.name FILTER js %]"] = [ [%- FOREACH val = possible_values %] [%-# %]"[% val FILTER js %]" [%- "," IF NOT loop.last %][% END %]]; YAHOO.bugzilla.fieldAutocomplete.init('[% field.name FILTER js %]', '[% field.name FILTER js %]_autocomplete'); </script> [% CASE [constants.FIELD_TYPE_DATETIME, constants.FIELD_TYPE_DATE] %] [% INCLUDE "bug/field-label.html.tmpl" field = field tag_name = "span" editable = 1 %] from <input name="[% field.name FILTER html %]from" id="[% field.name FILTER html %]" size="10" maxlength="10" value="[% value.0 FILTER html %]" onchange="updateCalendarFromField(this);[% onchange FILTER html %]"> <button type="button" class="calendar_button" id="button_calendar_[% field.name FILTER html %]" onclick="showCalendar('[% field.name FILTER js %]')"> <span>Calendar</span> </button> <span id="con_calendar_[% field.name FILTER html %]"></span> to <input name="[% field.name FILTER html %]to" id="[% field.name FILTER html %]to" size="10" maxlength="10" value="[% value.1 FILTER html %]" onchange="updateCalendarFromField(this);[% onchange FILTER html %]"> <button type="button" class="calendar_button" id="button_calendar_[% field.name FILTER html %]to" onclick="showCalendar('[% field.name FILTER js %]to')"> <span>Calendar</span> </button> <small>(YYYY-MM-DD or relative dates)</small> <span id="con_calendar_[% field.name FILTER html %]to"></span> <script type="text/javascript"> <!-- [%+ PROCESS "global/calendar.js.tmpl" id = field.name %] [% PROCESS "global/calendar.js.tmpl" id = field.name _ 'to' %] //--></script> [% CASE [ constants.FIELD_TYPE_SINGLE_SELECT, constants.FIELD_TYPE_MULTI_SELECT ] %] <div id="container_[% field.name FILTER html %]" class="search_field_grid"> [% INCLUDE "bug/field-label.html.tmpl" field = field editable = 1 tag_name = "span" %] <select name="[% field.name FILTER html%]" id="[% field.name FILTER html %]" [% IF onchange %] onchange="[% onchange FILTER html %]"[% END %] multiple="multiple" size="7"> [% legal_values = ${field.name} %] [% IF field.name == "component" %] [% legal_values = ${"component_"} %] [% END %] [% FOREACH current_value = legal_values %] [% SET v = current_value.name OR '---' -%] [% SET display = display_value(field.name, current_value.name) %] <option value="[% v FILTER html %]" id="v[% current_value.id FILTER html %]_[% field.name FILTER html %]" [% ' selected="selected"' IF value.contains( v ) %]> [%~ display FILTER html ~%] </option> [% END %] </select> </div> [% IF value_controllers.${field.name}.defined %] <script type="text/javascript"><!-- [%+ FILTER collapse %] [% FOREACH accessor = value_controllers.${field.name}.keys %] [% PROCESS controller_js %] [% END %] [%~ END ~%] // --></script> [% END %] [% IF duplicates.${field.name}.keys.size %] [% SET field_dups = duplicates.${field.name} %] [% SET dup_counts = duplicate_count.${field.name} %] <script type="text/javascript"> [%+ FILTER collapse %] bz_option_duplicates['[% field.name FILTER js %]'] = { [% FOREACH dup = field_dups.keys %] [% dup FILTER js %]:[% field_dups.$dup.id FILTER js %] [%~ ',' UNLESS loop.last %] [% END ~%] }; bz_option_duplicate_count['[% field.name FILTER js %]'] = { [% FOREACH dup_target = dup_counts.keys %] [% dup_target FILTER js %]:[% dup_counts.$dup_target FILTER js %] [%~ ',' UNLESS loop.last %] [% END %] }; [% END %] </script> [% END %] [% END %] [%# END OF SWITCH %] [% BLOCK controller_js %] [%# If there are selected values already, we need to fire the # "change" event once the page has loaded, so we can set all # the values in all the other <select>s properly. #%] YAHOO.util.Event.onDOMReady(function() { var field = document.getElementById('[% field.name FILTER js %]'); if (field.selectedIndex != -1) bz_fireEvent(field, 'change'); }); [% SET sub_field = value_controllers.${field.name}.$accessor %] [% SET prod_per_class = {} %] [% IF field.name == "classification" %] [% FOREACH p = product %] [% prod_per_class.${p.classification_id}.${p.id} = 1 %] [% END %] [% END %] [% FOREACH legal_value = legal_values %] [% SET controlled_ids = [] %] [% IF field.name == "classification" %] [% controlled_ids = prod_per_class.${legal_value.id}.keys %] [% ELSE %] [% FOREACH sub_value = legal_value.$accessor %] [% controlled_ids.push(sub_value.id) %] [% END %] [% END %] [% NEXT IF !controlled_ids.size %] showValueWhen('[% sub_field.name FILTER js %]', [[% controlled_ids.join(',') FILTER js %]], '[% field.name FILTER js %]', [% legal_value.id FILTER js %], true); [% END %] [% END %]