diff options
author | Albert Ting <altlist@gmail.com> | 2012-10-13 14:38:55 +0200 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2012-10-13 14:38:55 +0200 |
commit | fd004da7fb20f885eeec229877f4892f4e72c73b (patch) | |
tree | f95b4f79e6ae2ef41338d3bca30b1096f22c5257 | |
parent | bfb66f198ca3e0dddcccaefc3d729f348a254056 (diff) | |
download | bugzilla-fd004da7fb20f885eeec229877f4892f4e72c73b.tar.gz bugzilla-fd004da7fb20f885eeec229877f4892f4e72c73b.tar.xz |
Bug 245375: Scheduled whining needs custom columns
r/a=LpSolit
-rw-r--r-- | template/en/default/whine/mail.html.tmpl | 23 | ||||
-rw-r--r-- | template/en/default/whine/mail.txt.tmpl | 26 | ||||
-rwxr-xr-x | whine.pl | 14 |
3 files changed, 38 insertions, 25 deletions
diff --git a/template/en/default/whine/mail.html.tmpl b/template/en/default/whine/mail.html.tmpl index 3287dcc64..cfc3279c3 100644 --- a/template/en/default/whine/mail.html.tmpl +++ b/template/en/default/whine/mail.html.tmpl @@ -13,6 +13,7 @@ # bugs: array containing hashes of fieldnames->values for each bug # title: the title given in the whine scheduling mechanism # name: the name of the query + # columnlist: array of fieldnames to display in the mail # author: user object for the person who scheduled this whine # recipient: user object for the intended recipient of the message #%] @@ -47,26 +48,20 @@ <table width="100%"> <tr> <th align="left">ID</th> - <th align="left">Sev</th> - <th align="left">Pri</th> - <th align="left">HW</th> - <th align="left">Assignee</th> - <th align="left">Status</th> - <th align="left">Resolution</th> - <th align="left">Summary</th> + [% FOREACH col = query.columnlist %] + [% NEXT IF col == 'bug_id' %] + <th align="left">[% field_descs.$col FILTER html %]</th> + [% END %] </tr> [% FOREACH bug=query.bugs %] <tr> <td align="left"><a href="[%+ urlbase FILTER html %]show_bug.cgi?id= [%- bug.bug_id %]">[% bug.bug_id %]</a></td> - <td align="left">[% display_value("bug_severity", bug.bug_severity) FILTER html %]</td> - <td align="left">[% display_value("priority", bug.priority) FILTER html %]</td> - <td align="left">[% display_value("rep_platform", bug.rep_platform) FILTER html %]</td> - <td align="left">[% bug.assigned_to FILTER html %]</td> - <td align="left">[% display_value("bug_status", bug.bug_status) FILTER html %]</td> - <td align="left">[% display_value("resolution", bug.resolution) FILTER html %]</td> - <td align="left">[% bug.short_desc FILTER html %]</td> + [% FOREACH col = query.columnlist %] + [% NEXT IF col == 'bug_id' %] + <td align="left">[% display_value(col, bug.$col) FILTER html %]</td> + [% END %] </tr> [% END %] </table> diff --git a/template/en/default/whine/mail.txt.tmpl b/template/en/default/whine/mail.txt.tmpl index 44ea655f2..ba1e95741 100644 --- a/template/en/default/whine/mail.txt.tmpl +++ b/template/en/default/whine/mail.txt.tmpl @@ -13,6 +13,7 @@ # bugs: array containing hashes of fieldnames->values for each bug # title: the title given in the whine scheduling mechanism # name: the name of the query + # columnlist: array of fieldnames to display in the mail # author: user object for the person who scheduled this whine # recipient: user object for the intended recipient of the message #%] @@ -35,16 +36,21 @@ [% FOREACH bug=query.bugs %] [% terms.Bug +%] [%+ bug.bug_id %]: [%+ urlbase %]show_bug.cgi?id=[% bug.bug_id +%] - Priority: [%+ display_value("priority", bug.priority) -%] - [% field_descs.bug_severity %]: [%+ display_value("bug_severity", bug.bug_severity) -%] - [%+ field.descs.rep_platform %]: [%+ display_value("rep_platform", bug.rep_platform) %] - Assignee: [%+ bug.assigned_to %] - Status: [%+ display_value("bug_status", bug.bug_status) %] - [%- IF bug.resolution -%] Resolution: [% display_value("resolution", bug.resolution) -%] - [%- END %] - Summary: [% bug.short_desc %] - - [% END %] + [% largest_title = 0 %] + [% FOREACH col = query.columnlist %] + [% NEXT IF col == 'bug_id' %] + [% IF field_descs.${col}.length > largest_title %] + [% largest_title = field_descs.${col}.length %] + [% END %] + [% END %] + [% FOREACH col = query.columnlist %] + [% NEXT IF col == 'bug_id' %] + [%+ " " FILTER repeat(largest_title - field_descs.${col}.length) %] + [% field_descs.$col %]: [% display_value($col, bug.$col) %] + [% END %] + + [% END %] + View as [% terms.bug %] list: [% urlbase %]buglist.cgi?cmdtype=runnamed&namedcmd=[% query.name FILTER uri %] [% END %] [% ELSE %] @@ -338,6 +338,7 @@ while (my $event = get_next_event) { # - queries array of hashes containing: # - bugs: array of hashes mapping fieldnames to values for this bug # - title: text title given to this query in the whine event +# - columnlist: array of fieldnames to display in the mail # - name: text name of this query # - schedule_id integer id of the schedule being run # - subject Subject line for the message @@ -408,6 +409,7 @@ sub run_queries { 'name' => $_->[0], 'title' => $_->[1], 'onemailperbug' => $_->[2], + 'columnlist' => [], 'bugs' => [], } ); @@ -434,7 +436,16 @@ sub run_queries { # Bugzilla::Search to execute a saved query. It's exceedingly weird, # but that's how it works. my $searchparams = new Bugzilla::CGI($savedquery); - my @orderstrings = split(/,\s*/, $searchparams->param('order')); + + # Use the columnlist for the saved query, if it exists, and make + # sure bug_id is always in the list. + if (my $columnlist = $searchparams->param('columnlist')) { + @searchfields = split(/[\s,]+/, $columnlist); + unshift(@searchfields, 'bug_id') unless grep { $_ eq 'bug_id' } @searchfields; + } + push @{$thisquery->{'columnlist'}}, @searchfields; + + my @orderstrings = split(/,\s*/, $searchparams->param('order') || ''); my $search = new Bugzilla::Search( 'fields' => \@searchfields, 'params' => scalar $searchparams->Vars, @@ -466,6 +477,7 @@ sub run_queries { { 'name' => $thisquery->{'name'}, 'title' => $thisquery->{'title'}, + 'columnlist' => $thisquery->{'columnlist'}, 'bugs' => [ $bug ], }, ]; |