r=glob, a=glob git-svn-id: svn://10.0.0.236/trunk@265447 18797224-902f-48f8-a5cc-f745e15eee43
272 lines
12 KiB
Cheetah
272 lines
12 KiB
Cheetah
[%# 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
|
|
# value: The value of the field for this bug.
|
|
# override_legal_values (optional): The list of legal values, for select fields.
|
|
# editable: Whether the field should be displayed as an editable
|
|
# <input> or as just the plain text of its value.
|
|
# allow_dont_change: display the --do_not_change-- option for select fields.
|
|
# value_span: A colspan for the table cell containing
|
|
# the field value.
|
|
# no_tds: boolean; if true, don't display the label <th> or the
|
|
# wrapping <td> for the field.
|
|
# bug (optional): The current Bugzilla::Bug being displayed, or a hash
|
|
# with default field values being displayed on a page.
|
|
#%]
|
|
|
|
[% IF NOT no_tds %]
|
|
[% field_hidden = 0 %]
|
|
[% IF bug AND !field.is_visible_on_bug(bug) %]
|
|
[% field_hidden = 1 %]
|
|
[% END %]
|
|
|
|
[% INCLUDE "bug/field-label.html.tmpl" hidden = field_hidden %]
|
|
<td class="field_value [% ' bz_hidden_field' IF field_hidden %]"
|
|
id="field_container_[% field.name FILTER html %]"
|
|
[% " colspan=\"$value_span\"" FILTER none IF value_span %]>
|
|
[% END %]
|
|
[% Hook.process('start_field_column') %]
|
|
[% IF editable %]
|
|
[% SWITCH field.type %]
|
|
[% CASE [ constants.FIELD_TYPE_FREETEXT
|
|
constants.FIELD_TYPE_INTEGER ] %]
|
|
<input id="[% field.name FILTER html %]" class="text_input"
|
|
name="[% field.name FILTER html %]"
|
|
value="[% value FILTER html %]" size="40"
|
|
maxlength="[% constants.MAX_FREETEXT_LENGTH FILTER none %]"
|
|
[% IF field.type == constants.FIELD_TYPE_INTEGER %] pattern="\d+[% IF dontchange %]|[% dontchange FILTER html %][% END %]" [% END %]
|
|
[% ' aria-required="true" required' IF field.is_mandatory %]>
|
|
[% CASE [constants.FIELD_TYPE_DATETIME, constants.FIELD_TYPE_DATE] %]
|
|
[% size = (field.type == constants.FIELD_TYPE_DATE) ? 10 : 20 %]
|
|
<input name="[% field.name FILTER html %]" size="[% size FILTER none %]"
|
|
id="[% field.name FILTER html %]"
|
|
value="[% value FILTER html %]"
|
|
[% ' aria-required="true" required' IF field.is_mandatory %]
|
|
onchange="updateCalendarFromField(this)">
|
|
<button type="button" class="calendar_button"
|
|
id="button_calendar_[% field.name FILTER html %]"
|
|
onclick="showCalendar('[% field.name FILTER js %]')">
|
|
<span>Calendar</span>
|
|
</button>
|
|
|
|
<div id="con_calendar_[% field.name FILTER html %]"></div>
|
|
|
|
<script type="text/javascript">
|
|
<!--
|
|
[%+ PROCESS "global/calendar.js.tmpl" id = field.name %]
|
|
//--></script>
|
|
[% CASE constants.FIELD_TYPE_BUG_ID %]
|
|
<span id="[% field.name FILTER html %]_input_area">
|
|
<input name="[% field.name FILTER html %]" id="[% field.name FILTER html %]"
|
|
value="[% value FILTER html %]" size="7"
|
|
[% ' aria-required="true" required' IF field.is_mandatory %]>
|
|
|
|
</span>
|
|
|
|
[% IF value %]
|
|
[% value FILTER bug_link(value, use_alias => 1) FILTER none %]
|
|
[% END %]
|
|
<span id="[% field.name FILTER html %]_edit_container" class="edit_me bz_default_hidden">
|
|
(<a href="#" id="[% field.name FILTER html %]_edit_action">edit</a>)
|
|
</span>
|
|
<script type="text/javascript">
|
|
hideEditableField('[% field.name FILTER js %]_edit_container',
|
|
'[% field.name FILTER js %]_input_area',
|
|
'[% field.name FILTER js %]_edit_action',
|
|
'[% field.name FILTER js %]',
|
|
"[% value FILTER js %]");
|
|
</script>
|
|
[% CASE [ constants.FIELD_TYPE_SINGLE_SELECT
|
|
constants.FIELD_TYPE_MULTI_SELECT ] %]
|
|
<input type="hidden" id="[% field.name FILTER html %]_dirty">
|
|
<select id="[% field.name FILTER html %]"
|
|
name="[% field.name FILTER html %]"
|
|
[% IF field.type == constants.FIELD_TYPE_MULTI_SELECT %]
|
|
[% SET field_size = 5 %]
|
|
[% IF field.legal_values.size < 5 %]
|
|
[% SET field_size = field.legal_values.size %]
|
|
[% END %]
|
|
size="[% field_size FILTER html %]" multiple="multiple"
|
|
[% ' aria-required="true" required' IF field.is_mandatory %]
|
|
[% END %]
|
|
>
|
|
[% IF allow_dont_change %]
|
|
<option value="[% dontchange FILTER html %]"
|
|
[% ' selected="selected"' IF value == dontchange %]>
|
|
[% dontchange FILTER html %]
|
|
</option>
|
|
[% END %]
|
|
[% IF override_legal_values %]
|
|
[% legal_values = override_legal_values %]
|
|
[% ELSE %]
|
|
[% legal_values = field.legal_values %]
|
|
[% END %]
|
|
[% FOREACH legal_value = legal_values %]
|
|
[% NEXT IF NOT legal_value.is_active AND NOT value.contains(legal_value.name).size %]
|
|
<option value="[% legal_value.name FILTER html %]"
|
|
id="v[% legal_value.id FILTER html %]_
|
|
[%- field.name FILTER html %]"
|
|
[%# We always show selected values, even if they should be
|
|
# hidden %]
|
|
[% IF value.contains(legal_value.name).size %]
|
|
selected="selected"
|
|
[% ELSIF bug AND !legal_value.is_visible_on_bug(bug) %]
|
|
class="bz_hidden_option" disabled="disabled"
|
|
[% END %]>
|
|
[%- display_value(field.name, legal_value.name) FILTER html ~%]
|
|
</option>
|
|
[% END %]
|
|
</select>
|
|
[%# When you pass an empty multi-select in the web interface,
|
|
# it doesn't appear at all in the CGI object. Instead of
|
|
# forcing all users of process_bug to always specify every
|
|
# multi-select, we have this field defined if the multi-select
|
|
# field is defined, and then if this is passed but the multi-select
|
|
# isn't, we know that the multi-select was emptied.
|
|
%]
|
|
[% IF field.type == constants.FIELD_TYPE_MULTI_SELECT %]
|
|
<input type="hidden" name="defined_[% field.name FILTER html %]">
|
|
[% END %]
|
|
|
|
<script type="text/javascript">
|
|
<!--
|
|
initHidingOptionsForIE('[% field.name FILTER js %]');
|
|
[%+ INCLUDE "bug/field-events.js.tmpl"
|
|
field = field, product = bug.product_obj %]
|
|
//-->
|
|
</script>
|
|
|
|
[% CASE constants.FIELD_TYPE_TEXTAREA %]
|
|
<div id="[% field.name FILTER html %]_edit_container" class="bz_default_hidden">
|
|
<div>
|
|
(<a href="#" id="[% field.name FILTER html %]_edit_action">edit</a>)
|
|
</div>
|
|
[% IF value %]
|
|
<pre class="field_textarea_readonly">[% value FILTER html %]</pre>
|
|
[% END %]
|
|
</div>
|
|
<div id="[% field.name FILTER html %]_input">
|
|
[% INCLUDE global/textarea.html.tmpl
|
|
id = field.name name = field.name minrows = 4 maxrows = 8
|
|
cols = 60 defaultcontent = value mandatory = field.is_mandatory %]
|
|
</div>
|
|
<script type="text/javascript">
|
|
hideEditableField('[% field.name FILTER js %]_edit_container',
|
|
'[% field.name FILTER js %]_input',
|
|
'[% field.name FILTER js %]_edit_action',
|
|
'[% field.name FILTER js %]',
|
|
'[% value FILTER js %]',
|
|
'',
|
|
true);
|
|
</script>
|
|
[% CASE constants.FIELD_TYPE_BUG_URLS %]
|
|
[% IF bug.id && value.size %]
|
|
<ul class="bug_urls">
|
|
[% FOREACH bug_url = value %]
|
|
<li>
|
|
[% PROCESS bug_url_link bug_url = bug_url %]
|
|
<label><input type="checkbox" value="[% bug_url.name FILTER html %]"
|
|
name="remove_[% field.name FILTER html %]">
|
|
Remove</label>
|
|
</li>
|
|
[% END %]
|
|
</ul>
|
|
[% END %]
|
|
[% IF Param('use_see_also') %]
|
|
<span id="container_showhide_[% field.name FILTER html %]"
|
|
class="bz_default_hidden">
|
|
(<a href="#" id="showhide_[% field.name FILTER html %]">add</a>)
|
|
</span>
|
|
<div id="container_[% field.name FILTER html %]">
|
|
<input type="text" id="[% field.name FILTER html %]" size="40"
|
|
class="text_input" name="[% field.name FILTER html %]"
|
|
[% IF !bug.id %]value="[% value FILTER html %]"[% END %]>
|
|
</div>
|
|
[% IF bug.id %]
|
|
<script type="text/javascript">
|
|
setupEditLink('[% field.name FILTER js %]');
|
|
</script>
|
|
[% END %]
|
|
[% END %]
|
|
[% CASE constants.FIELD_TYPE_KEYWORDS %]
|
|
<div id="[% field.name FILTER html %]_container">
|
|
<input type="text" id="[% field.name FILTER html %]" size="40"
|
|
class="text_input" name="[% field.name FILTER html %]"
|
|
value="[% value FILTER html %]">
|
|
<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>
|
|
[% END %]
|
|
[% ELSE %]
|
|
[% SWITCH field.type %]
|
|
[% CASE constants.FIELD_TYPE_TEXTAREA %]
|
|
<div class="uneditable_textarea">[% value FILTER html %]</div>
|
|
[% CASE constants.FIELD_TYPE_BUG_ID %]
|
|
[% IF value %]
|
|
[% value FILTER bug_link(value, use_alias => 1) FILTER none %]
|
|
[% END %]
|
|
[% CASE [ constants.FIELD_TYPE_SINGLE_SELECT
|
|
constants.FIELD_TYPE_MULTI_SELECT ] %]
|
|
[% FOREACH val = value %]
|
|
[% display_value(field.name, val) FILTER html %]
|
|
[% ', ' UNLESS loop.last() %]
|
|
[% END %]
|
|
[% CASE constants.FIELD_TYPE_BUG_URLS %]
|
|
[% '<ul class="bug_urls">' IF value.size %]
|
|
[% FOREACH bug_url = value %]
|
|
<li>
|
|
[% PROCESS bug_url_link bug_url = bug_url %]
|
|
</li>
|
|
[% END %]
|
|
[% '</ul>' IF value.size %]
|
|
[% CASE %]
|
|
[% value.join(', ') FILTER html %]
|
|
[% END %]
|
|
[% END %]
|
|
|
|
[% IF bug && field.name == 'component' %]
|
|
(<a href="buglist.cgi?component=[% bug.component FILTER uri %]&product=[% bug.product FILTER uri %]&bug_status=__open__"
|
|
target="_blank">show other [% terms.bugs %]</a>)
|
|
[% END %]
|
|
|
|
[% Hook.process('end_field_column') %]
|
|
[% '</td>' IF NOT no_tds %]
|
|
|
|
[%# for reverse relationships, we show this pseudo-field after the main field %]
|
|
[% IF bug.id && field.is_relationship %]
|
|
[% extra_field_item = {} %]
|
|
[% extra_field_item.header = field.reverse_desc _ ":" FILTER html %]
|
|
[% extra_field_item.data = BLOCK %]
|
|
[% FOREACH depbug = bug.related_bugs(field) %]
|
|
[% depbug.id FILTER bug_link(depbug, use_alias => 1) FILTER none %][% " " %]
|
|
[% END %]
|
|
[% END %]
|
|
[% ELSE %]
|
|
[% extra_field_item = '' %]
|
|
[% END %]
|
|
|
|
[% BLOCK bug_url_link %]
|
|
[% IF bug_url.isa('Bugzilla::BugUrl::Bugzilla::Local') %]
|
|
[% bug_url.target_bug_id FILTER bug_link(bug_url.target_bug_id, use_alias => 1) FILTER none %]
|
|
[% ELSE %]
|
|
<a href="[% bug_url.name FILTER html %]">
|
|
[% bug_url.name FILTER html %]</a>
|
|
[% END %]
|
|
[% END %]
|