diff options
Diffstat (limited to 'template/en/default/reports/duplicates-table.html.tmpl')
-rw-r--r-- | template/en/default/reports/duplicates-table.html.tmpl | 161 |
1 files changed, 73 insertions, 88 deletions
diff --git a/template/en/default/reports/duplicates-table.html.tmpl b/template/en/default/reports/duplicates-table.html.tmpl index 8950f340a..38ab2d56b 100644 --- a/template/en/default/reports/duplicates-table.html.tmpl +++ b/template/en/default/reports/duplicates-table.html.tmpl @@ -15,21 +15,16 @@ # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # - # Contributor(s): Gervase Markham <gerv@gerv.net> + # Contributor(s): + # Gervase Markham <gerv@gerv.net> + # Max Kanat-Alexander <mkanat@bugzilla.org> #%] [%# INTERFACE: - # bugs: list of hashes. May be empty. Each hash has nine members: - # id: integer. The bug number + # 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 - # component: string. The bug's component - # bug_severity: string. The bug's severity. - # op_sys: string. The bug's reported OS. - # target_milestone: string. The bug's TM. - # short_desc: string. The bug's summary. - # bug_status: string. The bug's status. - # resolution: string. The bug's resolution, if any. # # bug_ids: list of integers. May be empty. The IDs of the bugs in $bugs. # @@ -38,99 +33,89 @@ # 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. - # query_products: list of strings. Restrict to these products only. + # product: array of strings. Restrict to these products only. #%] -[% PROCESS global/variables.none.tmpl %] +[% PROCESS "global/field-descs.none.tmpl" %] [%# *** Column Headers *** %] -[% IF bug_ids.size > 0 %] - <table border> - <thead> - <tr bgcolor="#CCCCCC"> - [% FOREACH column = [ { name => "id", description => "$terms.Bug #" }, - { name => "count", description => "Dupe<br>Count" }, - { name => "delta", - description => "Change in last<br>$changedsince day(s)" }, - { name => "component", description => "Component" }, - { name => "bug_severity", description => "Severity" }, - { name => "op_sys", description => "Op Sys" }, - { name => "target_milestone", - description => "Target<br>Milestone" }, - { name => "short_desc", description => "Summary" } ] - %] +[% 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 }, + { name => "op_sys", description => field_descs.op_sys }, + { name => "target_milestone", description => field_descs.target_milestone }, + { name => "short_desc", description => field_descs.short_desc }, +] %] - <th> - [% bug_ids_string = bug_ids.join(',') %] - <a href="duplicates.cgi?sortby=[% column.name %] - [% IF sortby == column.name %] - [% "&reverse=1" IF NOT reverse %] - [% ELSE %] - [%-# Some columns start off reversed %] - [% "&reverse=1" IF column.name.match('delta|count') %] - [% END %] - [% IF maxrows %]&maxrows=[% maxrows FILTER html %][% END %] - [% IF changedsince %]&changedsince=[% changedsince FILTER html %][% END %] - [% "&openonly=1" IF openonly %] - [% FOREACH p = query_products %]&product=[% p FILTER html %][% END %] - [% IF format %]&format=[% format FILTER html %][% END %] - [% IF sortvisible %]&bug_id=[% bug_ids_string FILTER html %]&sortvisible=1[% END %]"> - [% column.description %]</a> +[% 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> - [% IF NOT sortby %] - [% sortby = "count"; reverse = "1" %] - [% END %] - - [% IF sortby == "id" OR sortby == "count" OR sortby == "delta" %] - [%# Numeric sort %] - [% sortedbugs = bugs.nsort(sortby) %] - [% ELSE %] - [% sortedbugs = bugs.sort(sortby) %] - [% END %] - - [% IF reverse %] - [% bugs = sortedbugs.reverse %] - [% ELSE %] - [% bugs = sortedbugs %] - [% END %] - [%# *** Buglist *** %] - <tbody> - [%# We need to keep track of the bug IDs we are actually displaying, because - # if the user decides to sort the visible list, we need to know what that - # list actually is. %] - [% vis_bug_ids = [] %] - - [% FOREACH bug = bugs %] - [% LAST IF loop.index() >= maxrows %] - [% vis_bug_ids.push(bug.id) %] - - <tr [% "class='resolved'" IF bug.resolution != "" %]> - <td> - <center> - [% bug.id FILTER bug_link(bug.id) FILTER none %] - </center> + <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> - <center> - [% bug.count %] - </center> + <td class="count">[% item.count FILTER html %]</td> + <td class="delta">[% item.delta FILTER html %]</td> + <td class="component">[% bug.component FILTER html %]</td> + <td class="bug_severity"> + [%- display_value('bug_severity', bug.bug_severity) FILTER html %] </td> - - <td><center>[% bug.delta %]</center></td> - - <td>[% bug.component FILTER html %]</td> - <td><center>[% display_value("bug_severity", bug.bug_severity ) FILTER html %]</center></td> - <td><center>[% display_value("op_sys", bug.op_sys ) FILTER html %]</center></td> - <td><center>[% display_value("target_milestone", bug.target_milestone) FILTER html %]</center></td> - <td>[% bug.short_desc FILTER html %]</td> + <td class="op_sys"> + [%- display_value('op_sys', bug.op_sys) FILTER html %] + </td> + <td class="target_milestone"> + [% display_value('target_milestone', + bug.target_milestone) FILTER html %] + </td> + <td class="short_desc">[% bug.short_desc FILTER html %]</td> </tr> [% END %] </tbody> |