From fc293fbd39f14308fbccd0cf9b523664ae813761 Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Thu, 29 Jan 2009 21:22:19 +0000 Subject: Bug 219021: Only display email addresses to logged-in users Patch By Max Kanat-Alexander r=LpSolit, a=LpSolit --- Bugzilla/DB.pm | 25 +++++++ Bugzilla/Template.pm | 2 + Bugzilla/Util.pm | 22 ++++++ buglist.cgi | 29 ++++++-- t/007util.t | 26 +++++-- template/en/default/attachment/list.html.tmpl | 5 +- template/en/default/bug/activity/table.html.tmpl | 6 +- template/en/default/bug/comments.html.tmpl | 9 +-- template/en/default/bug/dependency-tree.html.tmpl | 2 +- template/en/default/bug/edit.html.tmpl | 85 ++++++++-------------- template/en/default/bug/show-multiple.html.tmpl | 4 +- template/en/default/bug/show.xml.tmpl | 27 ++++--- .../en/default/bug/votes/list-for-bug.html.tmpl | 5 +- template/en/default/global/user.html.tmpl | 39 ++++++++++ template/en/default/list/list.html.tmpl | 2 +- template/en/default/reports/components.html.tmpl | 6 +- template/en/default/reports/report-table.csv.tmpl | 39 ++++++---- template/en/default/reports/report-table.html.tmpl | 34 +++++---- template/en/default/reports/report.html.tmpl | 2 +- template/en/default/request/queue.html.tmpl | 7 +- votes.cgi | 22 +++--- 21 files changed, 252 insertions(+), 146 deletions(-) create mode 100644 template/en/default/global/user.html.tmpl diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm index 377f83930..81a720ee5 100644 --- a/Bugzilla/DB.pm +++ b/Bugzilla/DB.pm @@ -342,6 +342,12 @@ sub sql_string_concat { return '(' . join(' || ', @params) . ')'; } +sub sql_string_until { + my ($self, $string, $substring) = @_; + return "SUBSTRING($string FROM 1 FOR " . + $self->sql_position($substring, $string) . " - 1)"; +} + sub sql_in { my ($self, $column_name, $in_list_ref) = @_; return " $column_name IN (" . join(',', @$in_list_ref) . ") "; @@ -1811,6 +1817,25 @@ Formatted SQL for concatenating specified strings =back +=item C + +=over + +=item B + +Returns SQL for truncating a string at the first occurrence of a certain +substring. + +=item B + +Note that both parameters need to be sql-quoted. + +=item C<$string> The string we're truncating + +=item C<$substring> The substring we're truncating at. + +=back + =item C =over diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index 03a9df827..688c53386 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -664,6 +664,8 @@ sub create { html_light => \&Bugzilla::Util::html_light_quote, + email => \&Bugzilla::Util::email_filter, + # iCalendar contentline filter ics => [ sub { my ($context, @args) = @_; diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index 991bfedc1..01f824c5b 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -53,6 +53,7 @@ use Date::Format; use DateTime; use DateTime::TimeZone; use Digest; +use Email::Address; use Scalar::Util qw(tainted); use Text::Wrap; @@ -170,6 +171,20 @@ sub html_light_quote { } } +sub email_filter { + my ($toencode) = @_; + if (!Bugzilla->user->id) { + my @emails = Email::Address->parse($toencode); + if (scalar @emails) { + my @hosts = map { quotemeta($_->host) } @emails; + my $hosts_re = join('|', @hosts); + $toencode =~ s/\@(?:$hosts_re)//g; + return $toencode; + } + } + return $toencode; +} + # This originally came from CGI.pm, by Lincoln D. Stein sub url_quote { my ($toencode) = (@_); @@ -638,6 +653,7 @@ Bugzilla::Util - Generic utility functions for bugzilla html_quote($var); url_quote($var); xml_quote($var); + email_filter($var); # Functions for decoding $rv = url_decode($var); @@ -755,6 +771,12 @@ is kept separate from html_quote partly for compatibility with previous code Converts the %xx encoding from the given URL back to its original form. +=item C + +Removes the hostname from email addresses in the string, if the user +currently viewing Bugzilla is logged out. If the user is logged-in, +this filter just returns the input string. + =back =head2 Environment and Location diff --git a/buglist.cgi b/buglist.cgi index 55bb8a70d..d51112a5c 100755 --- a/buglist.cgi +++ b/buglist.cgi @@ -673,6 +673,9 @@ foreach my $field (Bugzilla->get_fields({ obsolete => 0, buglist => 1 })) { my $name = 'bugs.' . $field->name; if ($id eq 'assigned_to' || $id eq 'reporter' || $id eq 'qa_contact') { $name = 'map_' . $field->name . '.login_name'; + if (!Bugzilla->user->id) { + $name = $dbh->sql_string_until($name, $dbh->quote('@')); + } } elsif ($id eq 'product' || $id eq 'component' || $id eq 'classification') { $name = 'map_' . $field->name . 's.name'; @@ -696,15 +699,25 @@ foreach my $field (Bugzilla->get_fields({ obsolete => 0, buglist => 1 })) { $columns->{$id} = { 'name' => $name, 'title' => $field->description }; } -if ($format->{'extension'} eq 'html') { - $columns->{assigned_to_realname} = { name => "CASE WHEN map_assigned_to.realname = '' THEN map_assigned_to.login_name ELSE map_assigned_to.realname END AS assigned_to_realname", title => "Assignee" }; - $columns->{reporter_realname} = { name => "CASE WHEN map_reporter.realname = '' THEN map_reporter.login_name ELSE map_reporter.realname END AS reporter_realname", title => "Reporter" }; - $columns->{qa_contact_realname} = { name => "CASE WHEN map_qa_contact.realname = '' THEN map_qa_contact.login_name ELSE map_qa_contact.realname END AS qa_contact_realname", title => "QA Contact" }; -} else { - $columns->{assigned_to_realname} = { name => "map_assigned_to.realname AS assigned_to_realname", title => "Assignee" }; - $columns->{reporter_realname} = { name => "map_reporter.realname AS reporter_realname", title => "Reporter" }; - $columns->{qa_contact_realname} = { name => "map_qa_contact.realname AS qa_contact_realname", title => "QA Contact" }; +foreach my $col (qw(assigned_to reporter qa_contact)) { + my $colname = "${col}_realname"; + if ($format->{'extension'} eq 'html') { + my $login = "map_${col}.login_name"; + if (!Bugzilla->user->id) { + $login = $dbh->sql_string_until($login, $dbh->quote('@')); + } + $columns->{$colname}->{name} = + "CASE WHEN map_${col}.realname = '' + THEN $login ELSE map_${col}.realname + END AS $colname"; + } + else { + $columns->{$colname}->{name} = "map_${col}.realname AS $colname"; + } } +$columns->{assigned_to_realname}->{title} = "Assignee"; +$columns->{reporter_realname}->{title} = "Reporter"; +$columns->{qa_contact_realname}->{title} = "QA Contact"; Bugzilla::Hook::process("buglist-columns", {'columns' => $columns} ); diff --git a/t/007util.t b/t/007util.t index dad5dfb02..c0433639b 100644 --- a/t/007util.t +++ b/t/007util.t @@ -13,11 +13,11 @@ # The Original Code are the Bugzilla Tests. # # The Initial Developer of the Original Code is Zach Lipton -# Portions created by Zach Lipton are -# Copyright (C) 2002 Zach Lipton. All -# Rights Reserved. +# Portions created by Zach Lipton are Copyright (C) 2002 Zach Lipton. +# All Rights Reserved. # # Contributor(s): Zach Lipton +# Max Kanat-Alexander ################# @@ -26,11 +26,11 @@ use lib 't'; use Support::Files; +use Test::More tests => 16; BEGIN { - use Test::More tests => 12; - use_ok(Bugzilla); - use_ok(Bugzilla::Util); + use_ok(Bugzilla); + use_ok(Bugzilla::Util); } # We need to override user preferences so we can get an expected value when @@ -64,3 +64,17 @@ is(format_time("2002.11.24 00:05"), "2002-11-24 00:05 $tz",'format_time("2002.11 is(format_time("2002.11.24 00:05:56"), "2002-11-24 00:05:56 $tz",'format_time("2002.11.24 00:05:56")'); is(format_time("2002.11.24 00:05:56", "%Y-%m-%d %R"), '2002-11-24 00:05', 'format_time("2002.11.24 00:05:56", "%Y-%m-%d %R") (with no timezone)'); is(format_time("2002.11.24 00:05:56", "%Y-%m-%d %R %Z"), "2002-11-24 00:05 $tz", 'format_time("2002.11.24 00:05:56", "%Y-%m-%d %R %Z") (with timezone)'); + +# email_filter +my %email_strings = ( + 'somebody@somewhere.com' => 'somebody', + 'Somebody ' => 'Somebody ', + 'One Person , Two Person ' + => 'One Person , Two Person ', + 'This string contains somebody@somewhere.com and also this@that.com' + => 'This string contains somebody and also this', +); +foreach my $input (keys %email_strings) { + is(Bugzilla::Util::email_filter($input), $email_strings{$input}, + "email_filter('$input')"); +} diff --git a/template/en/default/attachment/list.html.tmpl b/template/en/default/attachment/list.html.tmpl index 054b68455..c93ea5808 100644 --- a/template/en/default/attachment/list.html.tmpl +++ b/template/en/default/attachment/list.html.tmpl @@ -95,10 +95,7 @@ title="Go to the comment associated with the attachment"> [%- attachment.attached FILTER time %], - - [% attachment.attacher.name || attachment.attacher.login FILTER html %] - + [% INCLUDE global/user.html.tmpl who = attachment.attacher %] diff --git a/template/en/default/bug/activity/table.html.tmpl b/template/en/default/bug/activity/table.html.tmpl index b676eb1c9..8e44230ae 100644 --- a/template/en/default/bug/activity/table.html.tmpl +++ b/template/en/default/bug/activity/table.html.tmpl @@ -61,7 +61,7 @@ [% FOREACH operation = operations %] - [% operation.who FILTER html %] + [% operation.who FILTER email FILTER html %] [% operation.when FILTER time %] @@ -89,7 +89,7 @@ change.fieldname == 'dependson' %] [% change.removed FILTER bug_list_link FILTER none %] [% ELSE %] - [% change.removed FILTER html %] + [% change.removed FILTER email FILTER html %] [% END %] [% ELSE %]   @@ -109,7 +109,7 @@ change.fieldname == 'dependson' %] [% change.added FILTER bug_list_link FILTER none %] [% ELSE %] - [% change.added FILTER html %] + [% change.added FILTER email FILTER html %] [% END %] [% ELSE %]   diff --git a/template/en/default/bug/comments.html.tmpl b/template/en/default/bug/comments.html.tmpl index 1e8ee8c54..3a30ca5b2 100644 --- a/template/en/default/bug/comments.html.tmpl +++ b/template/en/default/bug/comments.html.tmpl @@ -188,11 +188,7 @@ - - - + [% INCLUDE global/user.html.tmpl who = comment.author %] @@ -226,7 +222,8 @@ [% END %]
-  [%- wrapped_comment FILTER quoteUrls(bug.bug_id, comment.already_wrapped) -%]
+  [%- wrapped_comment FILTER email 
+                      FILTER quoteUrls(bug.bug_id, comment.already_wrapped) -%]
 
[% END %] diff --git a/template/en/default/bug/dependency-tree.html.tmpl b/template/en/default/bug/dependency-tree.html.tmpl index adabf8ea2..347478bfc 100644 --- a/template/en/default/bug/dependency-tree.html.tmpl +++ b/template/en/default/bug/dependency-tree.html.tmpl @@ -154,7 +154,7 @@ [% BLOCK buginfo %] [% get_status(bug.bug_status) FILTER html -%] [%+ get_resolution(bug.resolution) FILTER html %]; - [%-%] assigned to [% bug.assigned_to.login FILTER html %] + [%-%] assigned to [% bug.assigned_to.login FILTER email FILTER html %] [%-%][% "; Target: " _ bug.target_milestone IF bug.target_milestone %] [% END %] diff --git a/template/en/default/bug/edit.html.tmpl b/template/en/default/bug/edit.html.tmpl index 50c7ea9d5..bb80fc1ad 100644 --- a/template/en/default/bug/edit.html.tmpl +++ b/template/en/default/bug/edit.html.tmpl @@ -524,7 +524,7 @@ [% IF bug.check_can_change_field("assigned_to", 0, 1) %]
- [% INCLUDE user_identity user=> bug.assigned_to %] + [% INCLUDE global/user.html.tmpl who = bug.assigned_to %] (edit)
@@ -548,7 +548,7 @@ initDefaultCheckbox('assignee'); [% ELSE %] - [% INCLUDE user_identity user => bug.assigned_to %] + [% INCLUDE global/user.html.tmpl who = bug.assigned_to %] [% END %] @@ -559,13 +559,12 @@ : - [% IF bug.check_can_change_field("qa_contact", 0, 1) %] [% IF bug.qa_contact != "" %]
- [% INCLUDE user_identity user=> bug.qa_contact %] + [% INCLUDE global/user.html.tmpl who = bug.qa_contact %] (edit)
@@ -593,7 +592,7 @@ initDefaultCheckbox('qa_contact'); [% ELSE %] - [% INCLUDE user_identity user => bug.qa_contact %] + [% INCLUDE global/user.html.tmpl who = bug.qa_contact %] [% END %] @@ -813,7 +812,7 @@ Reported: - [% bug.creation_ts FILTER time %] by [% INCLUDE user_identity user => bug.reporter %] + [% bug.creation_ts FILTER time %] by [% INCLUDE global/user.html.tmpl who = bug.reporter %] @@ -833,11 +832,10 @@ [%# Block for CC LIST #%] [%############################################################################%] [% BLOCK section_cclist %] - [% IF user.id %] - - - + + + [% IF user.id %] [% IF NOT bug.cc || NOT bug.cc.contains(user.login) %] @@ -867,35 +865,35 @@ [% END %] [% END %] - (edit) + ([% IF user.id %]edit[% ELSE %]show[% END %])
-
+
+ [% IF user.id %]
- +
+ [% INCLUDE global/userselect.html.tmpl + id => "newcc" + name => "newcc" + size => 30 + multiple => 5 + %]
- [% INCLUDE global/userselect.html.tmpl - id => "newcc" - name => "newcc" - size => 30 - multiple => 5 - %] -
- [% IF bug.cc %] - - [% IF user.id %] -
- - [%%] -
+ [% IF bug.cc %] + + [% IF user.id %] +
+ + [%%] +
+ [% END %] [% END %] - [% END %]
- [% END %] [% END %] [%############################################################################%] @@ -1167,23 +1164,3 @@ [% value = undef %] [% spellcheck = undef %] [% END %] - -[%############################################################################%] -[%# Block for user identities. Wraps the information inside of an hCard. #%] -[%############################################################################%] - -[% BLOCK user_identity %] - - [% FILTER collapse %] - [% IF user.name %] - - [% ELSE %] - - [% END %] - [% END %] -[% END %] - diff --git a/template/en/default/bug/show-multiple.html.tmpl b/template/en/default/bug/show-multiple.html.tmpl index 173d98e92..f1a5cc466 100644 --- a/template/en/default/bug/show-multiple.html.tmpl +++ b/template/en/default/bug/show-multiple.html.tmpl @@ -336,12 +336,12 @@ [% field_descs.cc FILTER html %]: [% FOREACH c = bug.cc %] - [% c FILTER html %][% ", " IF not loop.last() %] + [% c FILTER email FILTER html %][% ", " IF not loop.last() %] [% END %] [% ELSIF name == "reporter" || name == "assigned_to" || name == "qa_contact" %] [% field_descs.${name} FILTER html %]: - [% bug.${name}.identity FILTER html %] + [% bug.${name}.identity FILTER email FILTER html %] [% ELSIF name == "flags" %] Flags: diff --git a/template/en/default/bug/show.xml.tmpl b/template/en/default/bug/show.xml.tmpl index 23874d989..f6f3617a0 100644 --- a/template/en/default/bug/show.xml.tmpl +++ b/template/en/default/bug/show.xml.tmpl @@ -25,9 +25,13 @@ @@ -58,9 +62,9 @@ [% END %] @@ -69,12 +73,12 @@ [% FOREACH c = bug.longdescs %] [% NEXT IF c.isprivate && !user.in_group(Param("insidergroup")) %] - [% c.author.email FILTER xml %] + [% c.author.email FILTER email FILTER xml %] [% c.time FILTER time FILTER xml %] [% IF user.in_group(Param('timetrackinggroup')) && (c.work_time - 0 != 0) %] [% PROCESS formattimeunit time_unit = c.work_time FILTER xml %] [% END %] - [% c.body FILTER xml %] + [% c.body FILTER email FILTER xml %] [% END %] [% END %] @@ -93,7 +97,7 @@ [% a.filename FILTER xml %] [% a.contenttype FILTER xml %] [% a.datasize FILTER xml %] - [% a.attacher.email FILTER xml %] + [% a.attacher.email FILTER email FILTER xml %] [% IF displayfields.attachmentdata %] [% a.data FILTER base64 %] [% END %] @@ -102,9 +106,9 @@ [% END %] @@ -129,10 +133,13 @@ [% IF field == 'reporter' OR field == 'assigned_to' OR field == 'qa_contact' %] [% name = val.name %] - [% val = val.email %] + [% val = val.email FILTER email %] + [% ELSIF field == 'cc' %] + [% val = val FILTER email %] [% ELSIF field == 'creation_ts' OR field == 'delta_ts' %] [% val = val FILTER time %] [% END %] - <[% field %][% IF name != '' %] name="[% name FILTER xml %]"[% END -%]>[% val FILTER xml %] + <[% field %][% IF name != '' %] name="[% name FILTER xml %]"[% END -%]> + [%- val FILTER xml %] [% END %] [% END %] diff --git a/template/en/default/bug/votes/list-for-bug.html.tmpl b/template/en/default/bug/votes/list-for-bug.html.tmpl index b93d1f346..a599dc0fb 100644 --- a/template/en/default/bug/votes/list-for-bug.html.tmpl +++ b/template/en/default/bug/votes/list-for-bug.html.tmpl @@ -43,8 +43,9 @@ [% total = total + voter.vote_count %] - - [% voter.login_name FILTER html %] + + [% voter.login_name FILTER email FILTER html %] diff --git a/template/en/default/global/user.html.tmpl b/template/en/default/global/user.html.tmpl new file mode 100644 index 000000000..df902b451 --- /dev/null +++ b/template/en/default/global/user.html.tmpl @@ -0,0 +1,39 @@ +[%# 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 Daniel Brooks. + # Portions created by the Initial Developer are Copyright (C) 2007 + # the Initial Developer. All Rights Reserved. + # + # Contributor(s): + # Daniel Brooks + # Max Kanat-Alexander + #%] + +[%# INTERFACE: + # who: A Bugzilla::User object that we are going to represent. + #%] + + + [% FILTER collapse %] + [% IF user.id %] + ' IF user.id %] + [% END %] + diff --git a/template/en/default/list/list.html.tmpl b/template/en/default/list/list.html.tmpl index 467e4dfc7..4929c416d 100644 --- a/template/en/default/list/list.html.tmpl +++ b/template/en/default/list/list.html.tmpl @@ -206,7 +206,7 @@ | [% END %] - [% IF bugowners %] + [% IF bugowners && user.id %] Send Mail to [% terms.Bug %] Assignees | [% END %] diff --git a/template/en/default/reports/components.html.tmpl b/template/en/default/reports/components.html.tmpl index 351c7d01b..eb08a35ac 100644 --- a/template/en/default/reports/components.html.tmpl +++ b/template/en/default/reports/components.html.tmpl @@ -74,13 +74,11 @@ [% comp.name FILTER html %] - - [% comp.default_assignee.login FILTER html %] + [% INCLUDE global/user.html.tmpl who = comp.default_assignee %] [% IF Param("useqacontact") %] - - [% comp.default_qa_contact.login FILTER html %] + [% INCLUDE global/user.html.tmpl who = comp.default_qa_contact %] [% END %] diff --git a/template/en/default/reports/report-table.csv.tmpl b/template/en/default/reports/report-table.csv.tmpl index cf3774973..0f315cc02 100644 --- a/template/en/default/reports/report-table.csv.tmpl +++ b/template/en/default/reports/report-table.csv.tmpl @@ -30,7 +30,14 @@ [% row_field_disp = field_descs.$row_field || row_field %] [% IF tbl_field %] - [% tbl_field_disp FILTER csv %]: [% tbl FILTER csv %] + [% IF tbl_field == 'assigned_to' OR tbl_field == 'reporter' + OR tbl_field == 'qa_contact' + %] + [% tbl_disp = tbl FILTER email %] + [% ELSE %] + [% tbl_disp = tbl %] + [% END %] + [% tbl_field_disp FILTER csv %]: [% tbl_disp FILTER csv %] [% END %] [% IF row_field %] [% row_field_disp FILTER csv %] @@ -40,26 +47,14 @@ [% IF col_field -%] [% FOREACH col = col_names -%] [% colsepchar %] - [% IF col_field == 'bug_status' %] - [% get_status(col) FILTER csv -%] - [% ELSIF col_field == 'resolution' %] - [% get_resolution(col) FILTER csv -%] - [% ELSE %] - [% col FILTER csv -%] - [% END %] + [% PROCESS value_display value = col field = col_field %] [% END -%] [% ELSE -%] [% colsepchar %][% num_bugs FILTER csv %] [% END %] [% FOREACH row = row_names %] - [% IF row_field == 'bug_status' %] - [% get_status(row) FILTER csv -%] - [% ELSIF row_field == 'resolution' %] - [% get_resolution(row) FILTER csv -%] - [% ELSE %] - [% row FILTER csv -%] - [% END %] + [% PROCESS value_display value = row field = row_field %] [% FOREACH col = col_names %] [% colsepchar %] [% IF data.$tbl AND data.$tbl.$col AND data.$tbl.$col.$row %] @@ -70,3 +65,17 @@ [% END %] [% END %] + +[% BLOCK value_display %] + [% SET disp_value = value %] + [% IF field == 'bug_status' %] + [% SET disp_value = get_status(value) %] + [% ELSIF field == 'resolution' %] + [% SET disp_value = get_resolution(value) %] + [% ELSIF field == 'assigned_to' OR field == 'reporter' + OR field == 'qa_contact' + %] + [% disp_value = value FILTER email %] + [% END %] + [% disp_value FILTER csv %] +[% END %] diff --git a/template/en/default/reports/report-table.html.tmpl b/template/en/default/reports/report-table.html.tmpl index 0ebe631d1..6c5d6ede2 100644 --- a/template/en/default/reports/report-table.html.tmpl +++ b/template/en/default/reports/report-table.html.tmpl @@ -44,7 +44,7 @@ [% END %] [% IF tbl_field %] -

[% tbl_disp FILTER html %]

+

[% tbl_disp FILTER email FILTER html %]

[% END %] @@ -79,13 +79,7 @@ [% col_idx = 1 - col_idx %] [% END %] [% FOREACH col = col_names %] [% row_total = row_total + data.$tbl.$col.$row %] @@ -163,4 +151,18 @@ -
- [% IF col_field == 'bug_status' %] - [% get_status(col) FILTER html FILTER replace('^ $',' ') %] - [% ELSIF col_field == 'resolution' %] - [% get_resolution(col) FILTER html FILTER replace('^ $',' ') %] - [% ELSE %] - [% col FILTER html FILTER replace('^ $',' ') %] - [% END %] + [% PROCESS value_display value = col field = col_field %] @@ -100,13 +94,7 @@ [% row_idx = 1 - row_idx %]
- [% IF row_field == 'bug_status' %] - [% get_status(row) FILTER html FILTER replace('^ $',' ') %] - [% ELSIF row_field == 'resolution' %] - [% get_resolution(row) FILTER html FILTER replace('^ $',' ') %] - [% ELSE %] - [% row FILTER html FILTER replace('^ $',' ') %] - [% END %] + [% PROCESS value_display value = row field = row_field %]
+ + +[% BLOCK value_display %] + [% SET disp_value = value %] + [% IF field == 'bug_status' %] + [% SET disp_value = get_status(value) %] + [% ELSIF field == 'resolution' %] + [% SET disp_value = get_resolution(value) %] + [% ELSIF field == 'assigned_to' OR field == 'reporter' + OR field == 'qa_contact' + %] + [% disp_value = value FILTER email %] + [% END %] + [% disp_value FILTER html FILTER replace('^ $',' ') %] +[% END %] diff --git a/template/en/default/reports/report.html.tmpl b/template/en/default/reports/report.html.tmpl index 37af0b300..4f7ee49b6 100644 --- a/template/en/default/reports/report.html.tmpl +++ b/template/en/default/reports/report.html.tmpl @@ -96,7 +96,7 @@ [% PROCESS "reports/report-table.html.tmpl" %] [% ELSE %] [% IF tbl %] -

[% tbl_disp FILTER html %]

+

[% tbl_disp FILTER email FILTER html %]

[% END %] [% imageurl = BLOCK %]report.cgi?[% imagebase FILTER html %]&format= diff --git a/template/en/default/request/queue.html.tmpl b/template/en/default/request/queue.html.tmpl index af911b2ef..8dd0f0400 100644 --- a/template/en/default/request/queue.html.tmpl +++ b/template/en/default/request/queue.html.tmpl @@ -157,7 +157,8 @@ to some group are shown by default. [% PROCESS global/footer.html.tmpl %] [% BLOCK start_new_table %] -

[% column_headers.$group_field %]: [% (request.$group_field || "None") FILTER html %]

+

[% column_headers.$group_field %]: + [%+ (request.$group_field || "None") FILTER email FILTER html %]

[% FOREACH column = display_columns %] @@ -190,11 +191,11 @@ to some group are shown by default. [% END %] [% BLOCK display_requestee %] - [% request.requestee FILTER html %] + [% request.requestee FILTER email FILTER html %] [% END %] [% BLOCK display_requester %] - [% request.requester FILTER html %] + [% request.requester FILTER email FILTER html %] [% END %] [% BLOCK display_created %] diff --git a/votes.cgi b/votes.cgi index af41af0e4..3e33d8fa9 100755 --- a/votes.cgi +++ b/votes.cgi @@ -52,7 +52,7 @@ my $bug_id = $cgi->param('bug_id'); my $action = $cgi->param('action') || ($bug_id ? "show_bug" : "show_user"); if ($action eq "show_bug" || - ($action eq "show_user" && defined $cgi->param('user'))) + ($action eq "show_user" && defined $cgi->param('user_id'))) { Bugzilla->login(); } @@ -103,7 +103,9 @@ sub show_bug { $vars->{'bug_id'} = $bug_id; $vars->{'users'} = - $dbh->selectall_arrayref('SELECT profiles.login_name, votes.vote_count + $dbh->selectall_arrayref('SELECT profiles.login_name, + profiles.userid AS id, + votes.vote_count FROM votes INNER JOIN profiles ON profiles.userid = votes.who @@ -127,11 +129,11 @@ sub show_user { # If a bug_id is given, and we're editing, we'll add it to the votes list. $bug_id ||= ""; - my $name = $cgi->param('user') || $user->login; - my $who = login_to_id($name, THROW_ERROR); - my $userid = $user->id; + my $who_id = $cgi->param('user_id') || $user->id; + my $who = Bugzilla::User->check({ id => $who_id }); - my $canedit = (Bugzilla->params->{'usevotes'} && $userid == $who) ? 1 : 0; + my $canedit = (Bugzilla->params->{'usevotes'} && $user->id == $who->id) + ? 1 : 0; $dbh->bz_start_transaction(); @@ -140,10 +142,10 @@ sub show_user { # in the vote table, just so that things display right. my $has_votes = $dbh->selectrow_array('SELECT vote_count FROM votes WHERE bug_id = ? AND who = ?', - undef, ($bug_id, $who)); + undef, ($bug_id, $who->id)); if (!$has_votes) { $dbh->do('INSERT INTO votes (who, bug_id, vote_count) - VALUES (?, ?, 0)', undef, ($who, $bug_id)); + VALUES (?, ?, 0)', undef, ($who->id, $bug_id)); } } @@ -168,7 +170,7 @@ sub show_user { WHERE votes.who = ? AND bugs.product_id = ? ORDER BY votes.bug_id', - undef, ($who, $product->id)); + undef, ($who->id, $product->id)); foreach (@$vote_list) { my ($id, $count, $summary) = @$_; @@ -206,7 +208,7 @@ sub show_user { $dbh->bz_commit_transaction(); $vars->{'canedit'} = $canedit; - $vars->{'voting_user'} = { "login" => $name }; + $vars->{'voting_user'} = { "login" => $who->name }; $vars->{'products'} = \@products; $vars->{'bug_id'} = $bug_id; $vars->{'all_bug_ids'} = \@all_bug_ids; -- cgit v1.2.3-24-g4f1b