blob: 5a95d67c15816513eb29ca85695108ea15b70c5c [file] [log] [blame]
[%# 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">
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 %]