bugzilla-4intranet/template/en/default/bug/show-multiple.html.tmpl

358 lines
12 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): Terry Weissman <terry@mozilla.org>
# Gervase Markham <gerv@gerv.net>
# Toms Baugis <toms@myrealbox.com>
# Olav Vitters <olav@bkor.dhs.org>
# Max Kanat-Alexander <mkanat@bugzilla.org>
# Elliotte Martin <emartin@everythingsolved.com>
#%]
[% PROCESS global/header.html.tmpl
title = "Full Text $terms.Bug Listing"
h1 = ""
style_urls = ["skins/standard/show_multiple.css",
"skins/standard/buglist.css",
"skins/standard/comments.css"]
doc_section = "bug_page.html"
%]
[% PROCESS bug/time.html.tmpl %]
[% IF bugs.first %]
[% ids = [] %]
[% FOREACH bug = error_bugs %]
[% PROCESS bug_display error=1 %]
[% ids.push(bug.bug_id) %]
[% END %]
[% FOREACH bug = bugs %]
[% PROCESS bug_display error=0 %]
[% ids.push(bug.bug_id) %]
[% END %]
[% IF ids.size > 1 %]
<div class="bz_query_buttons">
<form method="post" action="buglist.cgi">
<input type="hidden" name="bug_id" value="[% ids.join(",") | html %]">
<input type="submit" id="short_format" value="Short Format">
</form>
</div>
[% END %]
[% ELSE %]
<p>
You'd have more luck if you gave me some [% terms.bug %] numbers.
</p>
[% END %]
[% PROCESS global/footer.html.tmpl %]
[%###########################################################################%]
[%# Block for an individual bug #%]
[%###########################################################################%]
[% BLOCK bug_display %]
<h1>
[% terms.Bug %] <a href="show_bug.cgi?id=[% bug.bug_id | html %]">[% bug.bug_id | html %]</a>
[% IF Bugzilla.get_field('alias').enabled AND bug.alias %]
(<a href="show_bug.cgi?id=[% bug.alias | url_quote %]">
[% bug.alias | html %]</a>)
[% END %]
</h1>
<table class="bugfields">
[% IF error %]
<tr>
<td class="error">
[% IF bug.error == "InvalidBugId" %]
'[%+ bug.bug_id | html %]' is not a valid [% terms.bug %] number
[%- IF Bugzilla.get_field('alias').enabled %] nor a known [% terms.bug %] alias[% END %].
[% ELSIF bug.error == "NotPermitted" %]
You are not allowed to view this [% terms.bug %].
[% ELSIF bug.error == "NotFound" %]
This [% terms.bug %] cannot be found.
[% ELSE %]
[%+ bug.error | html %]
[% END %]
</td>
</tr>
[% ELSE %]
[%# The rightcell block (also called by the row block) automatically shows
# the fields from rightcells %]
[% rightcells = ['reporter', 'assigned_to'] %]
[% IF Bugzilla.get_field('qa_contact').enabled %]
[% rightcells.push('qa_contact') %]
[% END %]
[% rightcells.push('') %]
[% IF bug.cc %]
[% rightcells.push('cc') %]
[% END %]
[% IF bug.get_string('keywords') %]
[% rightcells.push('keywords') %]
[% END %]
[%# Determine if the bug has a flag %]
[% FOREACH type = bug.flag_types %]
[% IF type.flags.size %]
[% rightcells.push('flags') %]
[% LAST %]
[% END %]
[% END %]
[% PROCESS row cell = "short_desc" fullrow = 1 %]
<tr>
<th>[% field_descs.product | html %]:</th>
<td>
[% IF Bugzilla.get_field('classification').enabled %]
[% bug.classification_obj.name | html %]/
[%- END -%]
[%- bug.product_obj.name | html %]
</td>
[% PROCESS rightcell %]
</tr>
[% PROCESS row cell = "component" %]
<tr>
<th>[% field_descs.bug_status | html %]:</th>
<td>
[% bug.bug_status_obj.name | html %]
[%+ bug.resolution_obj.name | html %]
</td>
[% PROCESS rightcell %]
</tr>
<tr>
<th>[% field_descs.bug_severity | html %]:</th>
<td class="bz_[% bug.bug_severity_obj.name | css_class_quote -%]">
[% bug.bug_severity_obj.name | html %]
</td>
[% PROCESS rightcell %]
</tr>
<tr>
<th>[% field_descs.priority | html %]:</th>
<td class="bz_[% bug.priority_obj.name | css_class_quote -%]">
[% bug.priority_obj.name | html %]
</td>
[% PROCESS rightcell %]
</tr>
[% PROCESS row obj=1 cell="version" %]
[% PROCESS row obj=1 cell="target_milestone" IF Bugzilla.get_field('target_milestone').enabled %]
[% PROCESS row obj=1 cell="rep_platform" IF Bugzilla.get_field('rep_platform').enabled %]
[% PROCESS row obj=1 cell="op_sys" IF Bugzilla.get_field('op_sys').enabled %]
[% obj=0 %]
[% IF bug.bug_file_loc %]
<tr>
<th>[% field_descs.bug_file_loc | html %]:</th>
<td colspan="3">
[% IF is_safe_url(bug.bug_file_loc) %]
<a href="[% bug.bug_file_loc | html %]">
[% bug.bug_file_loc | html %]</a>
[% ELSE %]
[% bug.bug_file_loc | html %]
[% END %]
</td>
</tr>
[% END %]
[% IF Bugzilla.get_field('status_whiteboard').enabled %]
[% PROCESS row cell = "status_whiteboard" fullrow = 1 %]
[% END %]
[% field_counter = 0 %]
[% FOREACH field = Bugzilla.active_custom_fields %]
[% field_counter = field_counter + 1 %]
[%# Odd-numbered fields get an opening <tr> %]
[% '<tr>' IF field_counter % 2 %]
[% PROCESS bug/field.html.tmpl value=bug.${field.name} editable=0 %]
[%# Even-numbered fields get a closing <tr> %]
[% '</tr>' IF !(field_counter % 2) %]
[% END %]
[%# And we have to finish the row if we ended on an odd number. %]
[% '<th></th><td></td></tr>' IF field_counter % 2 %]
[% IF (bug.dependson.size || bug.blocked.size) %]
[% PROCESS dependencies name = "dependson" %]
[% PROCESS dependencies name = "blocked" %]
[% END %]
[% IF user.is_timetracker %]
<tr>
<th>Time tracking:</th>
<td colspan="3">
<table class="timetracking">
<tr>
<th>[% field_descs.estimated_time | html %]</th>
<th>[% field_descs.actual_time | html %]</th>
<th>[% field_descs.work_time | html %]</th>
<th>[% field_descs.remaining_time | html %]</th>
<th>[% field_descs.percentage_complete | html %]</th>
<th>Gain</th>
</tr>
<tr>
<td>[% PROCESS formattimeunit time_unit=bug.estimated_time %]</td>
<td>[% PROCESS formattimeunit time_unit=(bug.remaining_time+bug.actual_time) %]</td>
<td>[% PROCESS formattimeunit time_unit=bug.actual_time %]</td>
<td>[% PROCESS formattimeunit time_unit=bug.remaining_time %]</td>
<td>[% PROCESS calculatepercentage act=bug.actual_time rem=bug.remaining_time %]</td>
<td>[% PROCESS formattimeunit time_unit=bug.estimated_time-(bug.actual_time+bug.remaining_time) %]</td>
</tr>
</table>
</td>
</tr>
[% PROCESS row cell="deadline" %]
[% END %]
[% IF bug.attachments.size %]
<tr>
<th>Attachments:</th>
<td colspan="3">
[% IF bug.show_attachment_flags %]
<table>
<tr>
<th>Description</th>
<th>Flags</th>
</tr>
[% FOREACH attachment = bug.attachments %]
<tr>
<td>
<a href="attachment.cgi?id=[% attachment.id %]">
[% attachment.description | html %]
</a>[% "<br>" IF not loop.last() %]
</td>
<td>
[% IF attachment.flags.size == 0 %]
<i>none</i>
[% ELSE %]
[% FOREACH flag = attachment.flags %]
[% flag.setter.nick | html %]:
[%+ flag.type.name | html | no_break %][% flag.status %]
[% IF flag.status == "?" && flag.requestee %]
([% flag.requestee.nick | html %])
[% END %][% ", " IF not loop.last() %]
[% END %]
[% END %]
</td>
</tr>
[% END %]
</table>
[% ELSE %]
[% FOREACH attachment = bug.attachments %]
<a href="attachment.cgi?id=[% attachment.id %]">
[% attachment.description | html %]
</a>[% "<br>" IF not loop.last() %]
[% END %]
[% END %]
</td>
</tr>
[% END %]
[% END %]
[% Hook.process("last_row", "bug/show-multiple.html.tmpl") %]
</table>
<br />
[% PROCESS bug/comments.html.tmpl
comments = bug.comments %]
[% END %]
[%###########################################################################%]
[%# Block for standard table rows #%]
[%###########################################################################%]
[% BLOCK row %]
<tr>
<th>[% field_descs.${cell} | html %]:</th>
[% IF obj %]
[% SET cell = cell _ "_obj" %]
<td[% " colspan=3" IF fullrow %]>[% bug.$cell.name | html %]</td>
[% ELSE %]
<td[% " colspan=3" IF fullrow %]>[% bug.$cell | html %]</td>
[% END %]
[% PROCESS rightcell IF !fullrow %]
</tr>
[% fullrow = 0 %]
[% END %]
[%############################################################################%]
[%# Block for dependencies #%]
[%############################################################################%]
[% BLOCK dependencies %]
<tr>
<th>[% terms.Bug %] [%+ field_descs.${name} | html %]:</th>
<td>
[% FOREACH depbug = bug.${name} %]
[% depbug | bug_link(depbug) | none %][% ", " IF not loop.last() %]
[% END %]
</td>
[% PROCESS rightcell %]
</tr>
[% END %]
[%############################################################################%]
[%# Block for cells shown right of the table #%]
[%############################################################################%]
[% BLOCK rightcell %]
[% IF rightcells %]
[% name = rightcells.shift %]
[% IF name == "cc" %]
<th class="rightcell">[% field_descs.cc | html %]:</th>
<td>
[% FOREACH c = bug.cc %]
[% c | email | html %][% ", " IF not loop.last() %]
[% END %]
[% ELSIF name == "reporter" || name == "assigned_to" || name == "qa_contact" %]
<th class="rightcell">[% field_descs.${name} | html %]:</th>
<td>[% bug.${name}.identity | email | html %]</td>
[% ELSIF name == "flags" %]
<th class="rightcell">Flags:</th>
<td>
[% FOREACH type = bug.flag_types %]
[% FOREACH flag = type.flags %]
[% flag.setter.nick | html %]:
[%+ flag.type.name | html | no_break %][% flag.status %]
[%+ IF flag.status == "?" && flag.requestee %]
([% flag.requestee.nick | html %])
[% END %]<br>
[% END %]
[% END %]
</td>
[% ELSIF name == "keywords" %]
<th class="rightcell">[% field_descs.keywords | html %]:</th>
<td>[% bug.get_string('keywords') | html %]</td>
[% ELSIF name != "" %]
<th class="rightcell">[% field_descs.${name} | html %]:</th>
<td>[% bug.${name} | html %]</td>
[% ELSE %]
<td>&nbsp;</td>
<td>&nbsp;</td>
[% END %]
[% END %]
[% END %]