bugzilla-4intranet/template/en/default/search/form.html.tmpl

424 lines
14 KiB
Cheetah

[%# 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): Chris Lahey <clahey@ximian.com> [javascript fixes]
# Christian Reis <kiko@async.com.br> [javascript rewrite]
# Gervase Markham <gerv@gerv.net>
#%]
<script type="text/javascript" src="js/query-visibility.js"></script>
<script type="text/javascript" src="js/field.js"></script>
<script type="text/javascript" src="fieldvaluecontrol.cgi?user=[% Bugzilla.user.id %]"></script>
<script type="text/javascript" src="js/query-form.js"></script>
[% SET checkwidths = [] %]
[%# If we resubmit to ourselves, we need to know if we are using a format. %]
[% thisformat = query_format != '' ? query_format : format %]
<input type="hidden" name="query_format" value="[% thisformat FILTER html %]">
[%# *** Summary *** %]
<table>
<tr>
<th align="right" colspan="2">
<label for="content">Words (full-text search):</label>
</th>
<td>
<input name="content" size="40" id="content"
value="[% default.content.0 FILTER html %]">
</td>
</tr>
<tr>
<th align="right">
<label for="short_desc" accesskey="s"><u>S</u>ummary</label>:
</th>
<td>[% html_select('short_desc_type', default.short_desc_type.0, text_types, lc_messages.operator_descs) %]</td>
<td>
<input name="short_desc" id="short_desc" size="40"
value="[% default.short_desc.0 FILTER html %]">
</td>
<td>
[% IF button_name %]
<input type="submit" id="[% button_name FILTER css_class_quote %]_top"
value="[% button_name FILTER html %]">
[% END %]
</td>
</tr>
</table>
[%# *** Classification Product Component Version Target *** %]
<table>
<tr>
[% Hook.process('before_selects_top') %]
[% IF Bugzilla.get_field('classification').enabled %]
<th align="left" valign="top" id="classification_cont">
<label for="classification">Classification</label>:<br />
[% PROCESS select sel = { name => 'classification', size => 5 } %]
</th>
[% END %]
<th align="left" valign="top" id="product_cont">
<label for="product" accesskey="p"><u>P</u>roduct</label>:<br />
[% PROCESS select sel = { name => 'product', size => 5 } %]
</th>
<th align="left" valign="top" id="component_cont">
<label for="component" accesskey="m"><a href="describecomponents.cgi">Co<u>m</u>ponent</a></label>:<br />
[% PROCESS select sel = { name => 'component', size => 5 } %]
</th>
<th align="left" valign="top" id="version_cont">
<label for="version">Version</label>:<br />
[% PROCESS select sel = { name => 'version', size => 5 } %]
</th>
[% IF Bugzilla.get_field('target_milestone').enabled %]
<th align="left" valign="top" id="target_milestone_cont">
<label for="target_milestone">Target Milestone</label>:<br />
[% PROCESS select sel = { name => 'target_milestone', size => 5 } %]
</th>
[% END %]
[% Hook.process('after_selects_top') %]
</tr>
</table>
[%# *** Custom select fields *** %]
[% IF Bugzilla.get_fields({ is_select => 1, obsolete => 0, custom => 1 }).size %]
<table>
<tr>
[% i = 0 %]
[% FOR f = Bugzilla.get_fields({ is_select => 1, obsolete => 0, custom => 1, sort => 1 }) %]
[% IF f.legal_value_names_with_ids.size %]
[% IF i AND !(i % 4) %]
</tr>
</table>
<table>
<tr>
[% END %]
<th align="left" valign="top" id="[% f.name | html %]_cont">
<label for="[% f.name | html %]">[% f.description | html %]</label>:<br />
[% PROCESS select sel = { name => f.name, size => 5 } %]
</th>
[% i = i+1 %]
[% END %]
[% END %]
</tr>
</table>
[% END %]
[%# *** Comment URL Whiteboard Keywords *** %]
<table>
[% tf_desc = {
longdesc => "A&nbsp;<u>C</u>omment",
bug_file_loc => "The&nbsp;<u>U</u>RL",
status_whiteboard => "<u>W</u>hiteboard",
} %]
[% tf_accesskey = {
longdesc => 'c',
bug_file_loc => 'u',
status_whiteboard => 'w',
} %]
[% Hook.process('before_freetext_fields') %]
[% FOREACH field = freetext_fields %]
<tr id="[% field.name %]_cont">
<th align="right">
<label for="[% field.name %]"
accesskey="[% tf_accesskey.${field.name} %]">[% tf_desc.${field.name} || field.description %]</label>:
</th>
<td>
[% t = field.name _ '_type' %]
[% html_select(t, default.$t.0, text_types, lc_messages.operator_descs) %]
</td>
<td>
<input name="[% field.name %]" id="[% field.name %]" size="40"
value="[% default.${field.name}.0 FILTER html %]" />
</td>
<td></td>
</tr>
[% END %]
[% IF use_keywords %]
<tr>
<th align="right">
<label for="keywords" accesskey="k"><a href="describekeywords.cgi"><u>K</u>eywords</a></label>:
</th>
<td>
[% keywords_types = ['allwords', 'anywords', 'nowords', 'regexp', 'notregexp'] %]
[% html_select('keywords_type', default.keywords_type.0, keywords_types, lc_messages.operator_descs) %]
</td>
<td>
<input name="keywords" id="keywords" size="40"
value="[% default.keywords.0 FILTER html %]">
</td>
</tr>
[% END %]
[%# Deadline %]
[% IF user.is_timetracker %]
<tr>
<th align="right">
<label for="deadlinefrom" accesskey="l">Dead<u>l</u>ine</label>:
</th>
<td>
from <input name="deadlinefrom" id="deadlinefrom" size="10" maxlength="10"
value="[% default.deadlinefrom.0 FILTER html %]">
to <input name="deadlineto" id="deadlineto" size="10" maxlength="10"
value="[% default.deadlineto.0 FILTER html %]">
</td>
<td>
<small>(YYYY-MM-DD or relative dates)</small>
</td>
</tr>
[% END %]
[% Hook.process('after_freetext_fields') %]
</table>
<hr>
[%# *** Status Resolution Severity Priority Hardware OS *** %]
<table>
<tr>
[% Hook.process('before_selects_bottom') %]
<th align="left" valign="top" id="bug_status_cont">
<label for="bug_status" accesskey="a">St<u>a</u>tus</label>:<br />
[% PROCESS select sel = { name => 'bug_status', size => 7 } %]
</th>
<th align="left" valign="top" id="resolution_cont">
<label for="resolution" accesskey="r"><u>R</u>esolution</label>:<br />
[% PROCESS select sel = { name => 'resolution', size => 7 } %]
</th>
<th align="left" valign="top" id="bug_severity_cont">
<label for="bug_severity">Severity</label>:<br />
[% PROCESS select sel = { name => 'bug_severity', size => 7 }%]
</th>
<th align="left" valign="top" id="priority_cont">
<label for="priority" accesskey="i">Pr<u>i</u>ority</label>:<br />
[% PROCESS select sel = { name => 'priority', size => 7 } %]
</th>
[% IF Bugzilla.get_field('rep_platform').enabled %]
<th align="left" valign="top" id="rep_platform_cont">
<label for="rep_platform" accesskey="h"><u>H</u>ardware</label>:<br />
[% PROCESS select sel = { name => 'rep_platform', size => 7 } %]
</th>
[% END %]
[% IF Bugzilla.get_field('op_sys').enabled %]
<th align="left" valign="top" id="op_sys_cont">
<label for="op_sys" accesskey="o"><u>O</u>S</label>:<br />
[% PROCESS select sel = { name => 'op_sys', size => 7 } %]
</th>
[% END %]
[% Hook.process('after_selects_bottom') %]
</tr>
</table>
[%# *** Email Numbering Votes *** %]
<table>
<tr>
<td style="vertical-align: top">
<fieldset>
<legend>
<strong>
[% IF Bugzilla.get_field('votes').enabled %]
Email Addresses, [% terms.Bug %] Numbers, and Votes
[% ELSE %]
Email Addresses and [% terms.Bug %] Numbers
[% END %]
</strong>
</legend>
<table>
<tr>
[% FOREACH n = [1, 2] %]
<td>
<table cellspacing="0" cellpadding="0">
<tr>
<td>
Any of:
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="emailassigned_to[% n %]"
id="emailassigned_to[% n %]" value="1"
[% " checked" IF default.emailassigned_to.$n %] />
<label for="emailassigned_to[% n %]">
the [% terms.bug %] assignee
</label>
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="emailreporter[% n %]"
id="emailreporter[% n %]" value="1"
[% " checked" IF default.emailreporter.$n %] />
<label for="emailreporter[% n %]">
the reporter
</label>
</td>
</tr>
[% IF Bugzilla.get_field('qa_contact').enabled %]
<tr>
<td>
<input type="checkbox" name="emailqa_contact[% n %]"
id="emailqa_contact[% n %]" value="1"
[% " checked" IF default.emailqa_contact.$n %] />
<label for="emailqa_contact[% n %]">
the QA contact
</label>
</td>
</tr>
[% END %]
<tr>
<td>
<input type="checkbox" name="emailcc[% n %]"
id="emailcc[% n %]" value="1"
[% " checked" IF default.emailcc.$n %] />
<label for="emailcc[% n %]">
a CC list member
</label>
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="emaillongdesc[% n %]"
id="emaillongdesc[% n %]" value="1"
[% " checked" IF default.emaillongdesc.$n %] />
<label for="emaillongdesc[% n %]">
a commenter
</label>
</td>
</tr>
<tr>
<td>
[% html_select('emailtype' _ n, default.emailtype.$n, [
{ id => "exact", name => "is" },
{ id => "substring", name => "contains" },
{ id => "notequals", name => "is not" },
{ id => "regexp", name => "matches regexp" },
{ id => "notregexp", name => "doesn't match regexp" }
]) %]
</td>
</tr>
<tr>
<td>
<input id="email[% n %]" name="email[% n %]"
size="25" value="[% default.email.$n FILTER html %]"
autocomplete="off" />
</td>
</tr>
</table>
</td>
[% END %]
</tr>
</table>
<hr />
<table>
<tr>
<td>
<select name="bug_id_type">
<option value="anyexact"[% " selected" IF default.bug_id_type.0 == "anyexact" %]>Only include</option>
<option value="nowords"[% " selected" IF default.bug_id_type.0 == "nowords" %]>Exclude</option>
</select>
<label for="bug_id">[% terms.bugs %] numbered</label>:
</td>
<td>
<input type="text" name="bug_id" id="bug_id"
value="[% default.bug_id.0 FILTER html %]" size="20">
</td>
</tr>
<tr>
<td></td>
<td>(comma-separated list)</td>
</tr>
[% IF Bugzilla.get_field('votes').enabled %]
<tr>
<td align="right">
<label for="votes">Only [% terms.bugs %] with at least</label>:
</td>
<td>
<input name="votes" id="votes" size="3" value="[% default.votes.0 FILTER html %]" />
votes
</td>
</tr>
[% END %]
</table>
</fieldset>
</td>
[%# *** Bug Changes *** %]
<td style="vertical-align: top">
<fieldset>
<legend><strong>[% terms.Bug %] Changes</strong></legend>
<dl class="bug_changes">
<dt>
<label for="chfieldfrom">Only [% terms.bugs %] changed between</label>:
</dt>
<dd>
<input name="chfieldfrom" id="chfieldfrom"
size="10" value="[% default.chfieldfrom.0 FILTER html %]" />
and <input name="chfieldto" id="chfieldto" size="10" value="[% default.chfieldto.0 FILTER html %]" />
<br />(YYYY-MM-DD or relative dates)
</dd>
<dt><label for="chfieldwho">By user:</label></dt>
<dd><input name="chfieldwho" id="chfieldwho" size="20" value="[% default.chfieldwho.0 | html %]" /> (user login)</dd>
<dt><label for="chfield">where one or more of the following changed</label>:</dt>
<dd>[% html_select('chfield', default.chfield, chfield, '', { multiple => 'multiple' }) %]</dd>
<dt>and <label for="chfieldvalue">the new value was</label>:</dt>
<dd>
<input name="chfieldvalue" id="chfieldvalue"
size="20" value="[% default.chfieldvalue.0 FILTER html %]">
</dd>
</dl>
</fieldset>
</td>
</tr>
</table>
[%############################################################################%]
[%# Block for SELECT fields #%]
[%############################################################################%]
[% BLOCK select %]
<select name="[% sel.name | html %]" id="[% sel.name | html %]" multiple="multiple" size="[% sel.size %]">
[% IF bug_fields.${sel.name}.type == constants.FIELD_TYPE_SINGLE_SELECT && bug_fields.${sel.name}.nullable %]
<option value="---"[% " selected" IF lsearch(default.${sel.name}, '---') != -1 %]>---</option>
[% END %]
[% FOREACH value = bug_fields.${sel.name}.legal_value_names_with_ids %]
<option value="[% value.name | html %]" id="qf_[% sel.name | html %]_[% value.ids.join('_') %]"
[% " selected" IF lsearch(default.${sel.name}, value.name) != -1 %]>
[%- value.name | html -%]
</option>
[% END %]
</select>
[% checkwidths.push(sel.name) %]
[% END %]
<script type="text/javascript">
var checkwidths = [% json(checkwidths) %];
</script>