[%# The contents of this file are subject to the Mozilla Public # License Version 1.1 (the "License"); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or # implied. See the License for the specific language governing # rights and limitations under the License. # # The Original Code is the Bugzilla Bug Tracking System. # # The Initial Developer of the Original Code is Netscape Communications # Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # # Contributor(s): Myk Melez <myk@mozilla.org> # Max Kanat-Alexander <mkanat@bugzilla.org> # Elliotte Martin <elliotte_martin@yahoo.com> #%] [%# 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. # desc_url: string; Normally the label of a non-custom field links to # fields.html. If you want it to link elsewhere, specify the # relative URL you want to link to, here. Remember to call # url_quote on any query string arguments. # bug (optional): The current Bugzilla::Bug being displayed, or a hash # with default field values being displayed on a page. #%] [% SET hidden = 0 %] [% IF field.visibility_field.defined %] [% IF !bug.${field.visibility_field.name} .contains(field.visibility_value.name) %] [% SET hidden = 1 %] [% END %] [% END %] [% IF NOT no_tds %] <th class="field_label [% ' bz_hidden_field' IF hidden %]" id="field_label_[% field.name FILTER html %]"> [% IF editable %] <label for="[% field.name FILTER html %]"> [% END %] [% IF desc_url %] <a href="[% desc_url FILTER html %]"> [% ELSIF !field.custom %] <a href="page.cgi?id=fields.html#[% field.name FILTER url_quote %]"> [% END -%] [% field_descs.${field.name} FILTER html %]: [%- '</a>' IF (!field.custom || desc_url) %] [% '</label>' IF editable %] </th> [% END %] [% IF NOT no_tds %] <td class="field_value [% ' bz_hidden_field' IF 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 %] <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 %]"> [% CASE constants.FIELD_TYPE_DATETIME %] <input name="[% field.name FILTER html %]" size="20" id="[% field.name FILTER html %]" value="[% value FILTER html %]" 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 %]" class="yui-skin-sam"></div> <script type="text/javascript"> createCalendar('[% field.name FILTER js %]') </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"> </span> [% IF bug.${field.name} %] [% bug.${field.name} FILTER bug_link(bug.${field.name}) 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 %]', "[% bug.${field.name} FILTER js %]"); </script> [% CASE [ constants.FIELD_TYPE_SINGLE_SELECT constants.FIELD_TYPE_MULTI_SELECT ] %] <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" [% 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 %] [% SET control_value = legal_value.visibility_value %] [% SET control_field = field.value_field %] <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 (control_field && control_value && !bug.${control_field.name}.contains(control_value.name)) || !legal_value.is_active %] 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 %] //--> </script> [% CASE constants.FIELD_TYPE_TEXTAREA %] [% INCLUDE global/textarea.html.tmpl id = field.name name = field.name minrows = 4 maxrows = 8 cols = 60 defaultcontent = value %] [% CASE constants.FIELD_TYPE_BUG_URLS %] [% '<ul class="bug_urls">' IF value.size %] [% FOREACH url = value %] <li> <a href="[% url FILTER html %]">[% url FILTER html %]</a> [% IF editable %] <label><input type="checkbox" value="[% url FILTER html %]" name="remove_[% field.name FILTER html %]"> Remove</label> [% END %] </li> [% END %] [% '</ul>' IF value.size %] [% IF editable && Param('use_see_also') %] <label for="[% field.name FILTER html %]"> <strong>Add [% terms.Bug %] URLs:</strong> </label><br> <input type="text" id="[% field.name FILTER html %]" size="40" class="text_input" name="[% field.name FILTER html %]"> [% END %] [% END %] [% ELSIF field.type == constants.FIELD_TYPE_TEXTAREA %] <div class="uneditable_textarea">[% value FILTER wrap_comment(60) FILTER html %]</div> [% ELSIF field.type == constants.FIELD_TYPE_BUG_ID %] [% IF bug.${field.name} %] [% bug.${field.name} FILTER bug_link(bug.${field.name}) FILTER none %] [% END %] [% ELSE %] [% value.join(', ') FILTER html %] [% END %] [% Hook.process('end_field_column') %] [% '</td>' IF NOT no_tds %]