126 lines
4.8 KiB
Cheetah
126 lines
4.8 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):
|
|
# Gervase Markham <gerv@gerv.net>
|
|
# Max Kanat-Alexander <mkanat@bugzilla.org>
|
|
#%]
|
|
|
|
[%# INTERFACE:
|
|
# bugs: list of hashes. May be empty. Each hash has three members:
|
|
# bug: A Bugzilla::Bug object
|
|
# count: integer. The number of dupes
|
|
# delta: integer. The change in count in the last $changedsince days
|
|
#
|
|
# bug_ids: list of integers. May be empty. The IDs of the bugs in $bugs.
|
|
#
|
|
# sortby: string. the column on which we are sorting the buglist.
|
|
# reverse: boolean. True if we are reversing the current sort.
|
|
# maxrows: integer. Max number of rows to display.
|
|
# changedsince: integer. The number of days ago for the changedsince column.
|
|
# openonly: boolean. True if we are only showing open bugs.
|
|
# product: array of strings. Restrict to these products only.
|
|
#%]
|
|
|
|
[%# *** Column Headers *** %]
|
|
|
|
[% SET columns = [
|
|
{ name => "id", description => "$terms.Bug #" },
|
|
{ name => "count", description => "Dupe<br>Count" },
|
|
{ name => "delta",
|
|
description => "Change in last<br>$changedsince day(s)" },
|
|
{ name => "component", description => field_descs.component },
|
|
{ name => "bug_severity", description => field_descs.bug_severity },
|
|
] %]
|
|
|
|
[% columns.push({ name => "op_sys", description => field_descs.op_sys }) IF Bugzilla.get_field('op_sys').enabled %]
|
|
[% columns.push({ name => "target_milestone", description => field_descs.target_milestone }) IF Bugzilla.get_field('target_milestone').enabled %]
|
|
[% columns.push({ name => "short_desc", description => field_descs.short_desc }) %]
|
|
|
|
[% SET base_args = [] %]
|
|
[% FOREACH param = ['maxrows', 'openonly', 'format', 'sortvisible',
|
|
'changedsince', 'product']
|
|
%]
|
|
[% NEXT IF NOT ${param}.defined %]
|
|
[% FOREACH value = ${param} %]
|
|
[% filtered_value = value FILTER url_quote %]
|
|
[% base_args.push("$param=$filtered_value") %]
|
|
[% END %]
|
|
[% END %]
|
|
[% IF sortvisible %]
|
|
[% bug_ids_string = bug_ids.nsort.join(',') FILTER url_quote %]
|
|
[% base_args.push("bug_id=$bug_ids_string") %]
|
|
[% END %]
|
|
[% base_args_string = base_args.join('&') %]
|
|
|
|
[% IF bugs.size %]
|
|
<table id="duplicates_table" cellpadding="0" cellspacing="0">
|
|
<thead>
|
|
<tr>
|
|
[% FOREACH column = columns %]
|
|
[% IF column.name == sortby %]
|
|
[%# We add this to the column object so it doesn't affect future
|
|
# iterations of the loop.
|
|
#%]
|
|
[% column.reverse_sort = reverse ? 0 : 1 %]
|
|
[% END %]
|
|
<th class="[% column.name FILTER html %]">
|
|
<a href="duplicates.cgi?sortby=[% column.name FILTER url_quote %]
|
|
[% IF column.reverse_sort.defined %]
|
|
[%- %]&reverse=[% column.reverse_sort FILTER url_quote %]
|
|
[% END %]
|
|
[% IF base_args_string %]
|
|
[% "&$base_args_string" FILTER none %]
|
|
[% END %]"
|
|
>[% column.description FILTER none %]</a>
|
|
</th>
|
|
[% END %]
|
|
</tr>
|
|
</thead>
|
|
|
|
[%# *** Buglist *** %]
|
|
|
|
<tbody>
|
|
[% FOREACH item = bugs %]
|
|
[% SET bug = item.bug %]
|
|
<tr [% " class='resolved'" IF NOT bug.isopened %]>
|
|
<td class="id">
|
|
[% bug.id FILTER bug_link(bug) FILTER none %]
|
|
</td>
|
|
<td class="count">[% item.count FILTER html %]</td>
|
|
<td class="delta">[% item.delta FILTER html %]</td>
|
|
<td class="component">[% bug.component_obj.name FILTER html %]</td>
|
|
<td class="bug_severity">
|
|
[%- bug.bug_severity_obj.name FILTER html IF bug.bug_severity %]
|
|
</td>
|
|
[% IF Bugzilla.get_field('op_sys').enabled %]
|
|
<td class="op_sys">
|
|
[%- bug.op_sys_obj.name FILTER html IF bug.op_sys %]
|
|
</td>
|
|
[% END %]
|
|
<td class="target_milestone">
|
|
[% bug.target_milestone_obj.name FILTER html IF bug.target_milestone %]
|
|
</td>
|
|
<td class="short_desc">[% bug.short_desc FILTER html %]</td>
|
|
</tr>
|
|
[% END %]
|
|
</tbody>
|
|
</table>
|
|
[% ELSE %]
|
|
<h3>No duplicate [% terms.bugs %] found.</h3>
|
|
[% END %]
|