Commit 5a10ebe6 authored by wurblzap%gmail.com's avatar wurblzap%gmail.com

Bug 457657 – Make e-mail comment header localizable.

Patch by Marc Schumann <wurblzap@gmail.com>, r/a=LpSolit
parent a778b485
...@@ -3060,29 +3060,15 @@ sub GetComments { ...@@ -3060,29 +3060,15 @@ sub GetComments {
return \@comments; return \@comments;
} }
# Format language specific comments. This routine must not update # Format language specific comments.
# $comment{'body'} itself, see BugMail::prepare_comments().
sub format_comment { sub format_comment {
my $comment = shift; my $comment = shift;
my $template = Bugzilla->template_inner;
my $vars = {comment => $comment};
my $body; my $body;
if ($comment->{'type'} == CMT_DUPE_OF) { $template->process("bug/format_comment.txt.tmpl", $vars, \$body)
$body = $comment->{'body'} . "\n\n" . || ThrowTemplateError($template->error());
get_text('bug_duplicate_of', { dupe_of => $comment->{'extra_data'} });
}
elsif ($comment->{'type'} == CMT_HAS_DUPE) {
$body = get_text('bug_has_duplicate', { dupe => $comment->{'extra_data'} });
}
elsif ($comment->{'type'} == CMT_POPULAR_VOTES) {
$body = get_text('bug_confirmed_by_votes');
}
elsif ($comment->{'type'} == CMT_MOVED_TO) {
$body = $comment->{'body'} . "\n\n" .
get_text('bug_moved_to', { login => $comment->{'extra_data'} });
}
else {
$body = $comment->{'body'};
}
return $body; return $body;
} }
......
...@@ -357,7 +357,7 @@ sub Send { ...@@ -357,7 +357,7 @@ sub Send {
} }
} }
my ($raw_comments, $anyprivate, $count) = get_comments_by_bug($id, $start, $end); my ($comments, $anyprivate) = get_comments_by_bug($id, $start, $end);
########################################################################### ###########################################################################
# Start of email filtering code # Start of email filtering code
...@@ -450,9 +450,6 @@ sub Send { ...@@ -450,9 +450,6 @@ sub Send {
my @sent; my @sent;
my @excluded; my @excluded;
# Some comments are language specific. We cache them here.
my %comments;
foreach my $user_id (keys %recipients) { foreach my $user_id (keys %recipients) {
my %rels_which_want; my %rels_which_want;
my $sent_mail = 0; my $sent_mail = 0;
...@@ -461,24 +458,14 @@ sub Send { ...@@ -461,24 +458,14 @@ sub Send {
# Deleted users must be excluded. # Deleted users must be excluded.
next unless $user; next unless $user;
# What's the language chosen by this user for email?
my $lang = $user->settings->{'lang'}->{'value'};
if ($user->can_see_bug($id)) { if ($user->can_see_bug($id)) {
# It's time to format language specific comments.
unless (exists $comments{$lang}) {
Bugzilla->template_inner($lang);
$comments{$lang} = prepare_comments($raw_comments, $count);
Bugzilla->template_inner("");
}
# Go through each role the user has and see if they want mail in # Go through each role the user has and see if they want mail in
# that role. # that role.
foreach my $relationship (keys %{$recipients{$user_id}}) { foreach my $relationship (keys %{$recipients{$user_id}}) {
if ($user->wants_bug_mail($id, if ($user->wants_bug_mail($id,
$relationship, $relationship,
$diffs, $diffs,
$comments{$lang}, $comments,
$deptext, $deptext,
$changer, $changer,
!$start)) !$start))
...@@ -524,7 +511,7 @@ sub Send { ...@@ -524,7 +511,7 @@ sub Send {
\%defmailhead, \%defmailhead,
\%fielddescription, \%fielddescription,
\@diffparts, \@diffparts,
$comments{$lang}, $comments,
$anyprivate, $anyprivate,
! $start, ! $start,
$id, $id,
...@@ -607,7 +594,7 @@ sub sendMail { ...@@ -607,7 +594,7 @@ sub sendMail {
$newcomments =~ s/(Created an attachment \(id=([0-9]+)\))/$1\n --> \(${showattachurlbase}$2\)/g; $newcomments =~ s/(Created an attachment \(id=([0-9]+)\))/$1\n --> \(${showattachurlbase}$2\)/g;
} }
my $diffs = $difftext . "\n\n" . $newcomments; my $diffs = $difftext;
if ($isnew) { if ($isnew) {
my $head = ""; my $head = "";
foreach my $f (@headerlist) { foreach my $f (@headerlist) {
...@@ -663,6 +650,7 @@ sub sendMail { ...@@ -663,6 +650,7 @@ sub sendMail {
reporter => $values{'reporter'}, reporter => $values{'reporter'},
reportername => Bugzilla::User->new({name => $values{'reporter'}})->name, reportername => Bugzilla::User->new({name => $values{'reporter'}})->name,
diffs => $diffs, diffs => $diffs,
new_comments => $newcomments,
threadingmarker => build_thread_marker($id, $user->id, $isnew), threadingmarker => build_thread_marker($id, $user->id, $isnew),
}; };
...@@ -698,31 +686,15 @@ sub get_comments_by_bug { ...@@ -698,31 +686,15 @@ sub get_comments_by_bug {
my $raw = 1; # Do not format comments which are not of type CMT_NORMAL. my $raw = 1; # Do not format comments which are not of type CMT_NORMAL.
my $comments = Bugzilla::Bug::GetComments($id, "oldest_to_newest", $start, $end, $raw); my $comments = Bugzilla::Bug::GetComments($id, "oldest_to_newest", $start, $end, $raw);
foreach my $comment (@$comments) {
$comment->{count} = $count++;
}
if (Bugzilla->params->{'insidergroup'}) { if (Bugzilla->params->{'insidergroup'}) {
$anyprivate = 1 if scalar(grep {$_->{'isprivate'} > 0} @$comments); $anyprivate = 1 if scalar(grep {$_->{'isprivate'} > 0} @$comments);
} }
return ($comments, $anyprivate, $count); return ($comments, $anyprivate);
}
# Prepare comments for the given language.
sub prepare_comments {
my ($raw_comments, $count) = @_;
my $result = "";
foreach my $comment (@$raw_comments) {
if ($count) {
$result .= "\n\n--- Comment #$count from " . $comment->{'author'}->identity .
" " . format_time($comment->{'time'}) . " ---\n";
}
# Format language specific comments. We don't update $comment->{'body'}
# directly, otherwise it would grow everytime you call format_comment()
# with a different language as some text may be appended to the existing one.
my $body = Bugzilla::Bug::format_comment($comment);
$result .= ($comment->{'already_wrapped'} ? $body : wrap_comment($body));
$count++;
}
return $result;
} }
1; 1;
...@@ -1372,8 +1372,9 @@ our %names_to_events = ( ...@@ -1372,8 +1372,9 @@ our %names_to_events = (
# Note: the "+" signs before the constants suppress bareword quoting. # Note: the "+" signs before the constants suppress bareword quoting.
sub wants_bug_mail { sub wants_bug_mail {
my $self = shift; my $self = shift;
my ($bug_id, $relationship, $fieldDiffs, $commentField, $dependencyText, my ($bug_id, $relationship, $fieldDiffs, $comments, $dependencyText,
$changer, $bug_is_new) = @_; $changer, $bug_is_new) = @_;
my $comments_concatenated = join("\n", map { $_->{body} } (@$comments));
# Make a list of the events which have happened during this bug change, # Make a list of the events which have happened during this bug change,
# from the point of view of this user. # from the point of view of this user.
...@@ -1422,10 +1423,10 @@ sub wants_bug_mail { ...@@ -1422,10 +1423,10 @@ sub wants_bug_mail {
} }
} }
if ($commentField =~ /Created an attachment \(/) { if ($comments_concatenated =~ /Created an attachment \(/) {
$events{+EVT_ATTACHMENT} = 1; $events{+EVT_ATTACHMENT} = 1;
} }
elsif ($commentField ne '') { elsif (defined($$comments[0])) {
$events{+EVT_COMMENT} = 1; $events{+EVT_COMMENT} = 1;
} }
......
[%# 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 Marc Schumann.
# Portions created by Marc Schumann are Copyright (c) 2008 Marc Schumann.
# All rights reserved.
#
# Contributor(s): Marc Schumann <wurblzap@gmail.com>
#%]
[%# INTERFACE:
# comment: A hash containing comment information.
# count: The comment number (on the bug it belongs to)
# author: The Bugzilla::User object of the comment's
# author
# time: The time at which the comment has been
# committed
# body: The comment text
# type: One of the CMT_* constants (not given if none
# applies)
# extra_data: Extra data (type specific)
# already_wrapped: Determines whether the comment is pre-wrapped
#%]
[% PROCESS 'global/field-descs.none.tmpl' %]
[% IF comment.already_wrapped %]
[% wrapped_comment = comment.body %]
[% ELSE %]
[% wrapped_comment = comment.body FILTER wrap_comment %]
[% END %]
[%- IF comment.type == constants.CMT_DUPE_OF -%]
[% wrapped_comment %]
*** This [% terms.bug %] has been marked as a duplicate of [% terms.bug %] [%+ comment.extra_data %] ***
[% ELSIF comment.type == constants.CMT_HAS_DUPE %]
*** [% terms.Bug %] [%+ comment.extra_data %] has been marked as a duplicate of this [% terms.bug %]. ***
[% ELSIF comment.type == constants.CMT_POPULAR_VOTES %]
*** This [% terms.bug %] has been confirmed by popular vote. ***
[% ELSIF comment.type == constants.CMT_MOVED_TO %]
[% wrapped_comment %]
[%+ terms.Bug %] moved to [% Param("move-to-url") %].
If the move succeeded, [% comment.extra_data %] will receive a mail containing
the number of the new [% terms.bug %] in the other database.
If all went well, please mark this [% terms.bug %]
[%+ get_status('VERIFIED') %], and paste in a link to the new [% terms.bug %].
Otherwise, reopen this [% terms.bug %].
[%- ELSE -%]
[%- wrapped_comment %]
[% END %]
...@@ -43,8 +43,13 @@ X-Bugzilla-Changed-Fields: [% changedfields %] ...@@ -43,8 +43,13 @@ X-Bugzilla-Changed-Fields: [% changedfields %]
[%+ urlbase %]show_bug.cgi?id=[% bugid %] [%+ urlbase %]show_bug.cgi?id=[% bugid %]
[%+ diffs %] [%+ diffs %]
[% FOREACH comment = new_comments %]
-- --- Comment #[% comment.count %] from [% comment.author.identity %] [%+ comment.time FILTER time %] ---
[%+ PROCESS bug/format_comment.txt.tmpl comment = comment %]
[% END %]
-- [%# Protect the trailing space of the signature marker %]
Configure [% terms.bug %]mail: [% urlbase %]userprefs.cgi?tab=email Configure [% terms.bug %]mail: [% urlbase %]userprefs.cgi?tab=email
------- You are receiving this mail because: ------- ------- You are receiving this mail because: -------
[% FOREACH relationship = reasons %] [% FOREACH relationship = reasons %]
......
...@@ -124,25 +124,9 @@ ...@@ -124,25 +124,9 @@
Please add your attachment by clicking the "Add an Attachment" link Please add your attachment by clicking the "Add an Attachment" link
below. below.
[% ELSIF message_tag == "bug_confirmed_by_votes" %]
*** This [% terms.bug %] has been confirmed by popular vote. ***
[% ELSIF message_tag == "bug_duplicate_of" %]
*** This [% terms.bug %] has been marked as a duplicate of [% terms.bug %] [%+ dupe_of FILTER html %] ***
[% ELSIF message_tag == "bug_has_duplicate" %]
*** [% terms.Bug %] [%+ dupe FILTER html %] has been marked as a duplicate of this [% terms.bug %]. ***
[% ELSIF message_tag == "bug_group_description" %] [% ELSIF message_tag == "bug_group_description" %]
Access to [% terms.bugs %] in the [% product.name FILTER html %] product Access to [% terms.bugs %] in the [% product.name FILTER html %] product
[% ELSIF message_tag == "bug_moved_to" %]
<p>[% terms.Bug %] moved to [% Param("move-to-url") FILTER html %].</p>
<p>If the move succeeded, [% login FILTER html %] will receive a mail
containing the number of the new [% terms.bug %] in the other database.
If all went well, please mark this [% terms.bug %] verified, and paste
in a link to the new [% terms.bug %]. Otherwise, reopen this [% terms.bug %].
[% ELSIF message_tag == "buglist_adding_field" %] [% ELSIF message_tag == "buglist_adding_field" %]
[% title = "Adding field to search page..." %] [% title = "Adding field to search page..." %]
[% link = "Click here if the page does not redisplay automatically." %] [% link = "Click here if the page does not redisplay automatically." %]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment