]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 97956 - Give summary and URL of bugs added or removed from dependencies in bugmail
authorSimon Green <sgreen@redhat.com>
Sun, 17 Nov 2013 23:08:31 +0000 (09:08 +1000)
committerSimon Green <sgreen@redhat.com>
Sun, 17 Nov 2013 23:08:31 +0000 (09:08 +1000)
r=LpSolit, a=sgreen

Bugzilla/BugMail.pm
template/en/default/email/bugmail.html.tmpl
template/en/default/email/bugmail.txt.tmpl

index e84a370c06db55c9fe1670e566b9ff3a6ef61564..4db332e067e19b2649074b4ba796b296b9b2d104 100644 (file)
@@ -117,7 +117,10 @@ sub Send {
     # A user_id => roles hash to keep track of people.
     my %recipients;
     my %watching;
-    
+
+    # We also record bugs that are referenced
+    my @referenced_bug_ids = ();
+
     # Now we work out all the people involved with this bug, and note all of
     # the relationships in a hash. The keys are userids, the values are an
     # array of role constants.
@@ -161,8 +164,17 @@ sub Send {
                 $recipients{$uid}->{+REL_ASSIGNEE} = BIT_DIRECT if $uid;
             }
         }
+
+        if ($change->{field_name} eq 'dependson' || $change->{field_name} eq 'blocked') {
+            push @referenced_bug_ids, split(/[\s,]+/, $change->{old});
+            push @referenced_bug_ids, split(/[\s,]+/, $change->{new});
+        }
     }
 
+    my $referenced_bugs = scalar(@referenced_bug_ids)
+        ? Bugzilla::Bug->new_from_list([uniq @referenced_bug_ids])
+        : [];
+
     # Make sure %user_cache has every user in it so far referenced
     foreach my $user_id (keys %recipients) {
         $user_cache{$user_id} ||= new Bugzilla::User($user_id);
@@ -249,16 +261,17 @@ sub Send {
             # Email the user if the dep check passed.
             if ($dep_ok) {
                 my $sent_mail = sendMail(
-                    { to       => $user, 
-                      bug      => $bug,
-                      comments => $comments,
-                      date     => $date,
-                      changer  => $changer,
-                      watchers => exists $watching{$user_id} ?
-                                  $watching{$user_id} : undef,
-                      diffs    => \@diffs,
+                    { to              => $user, 
+                      bug             => $bug,
+                      comments        => $comments,
+                      date            => $date,
+                      changer         => $changer,
+                      watchers        => exists $watching{$user_id} ?
+                                         $watching{$user_id} : undef,
+                      diffs           => \@diffs,
                       rels_which_want => \%rels_which_want,
-                      dep_only => $params->{dep_only}
+                      dep_only        => $params->{dep_only},
+                      referenced_bugs => $referenced_bugs,
                     });
                 push(@sent, $user->login) if $sent_mail;
             }
@@ -280,15 +293,16 @@ sub Send {
 sub sendMail {
     my $params = shift;
 
-    my $user   = $params->{to};
-    my $bug    = $params->{bug};
-    my @send_comments = @{ $params->{comments} };
-    my $date = $params->{date};
-    my $changer = $params->{changer};
-    my $watchingRef = $params->{watchers};
-    my @diffs = @{ $params->{diffs} };
-    my $relRef      = $params->{rels_which_want};
-    my $dep_only = $params->{dep_only};
+    my $user            = $params->{to};
+    my $bug             = $params->{bug};
+    my @send_comments   = @{ $params->{comments} };
+    my $date            = $params->{date};
+    my $changer         = $params->{changer};
+    my $watchingRef     = $params->{watchers};
+    my @diffs           = @{ $params->{diffs} };
+    my $relRef          = $params->{rels_which_want};
+    my $dep_only        = $params->{dep_only};
+    my $referenced_bugs = $params->{referenced_bugs};
 
     # Only display changes the user is allowed see.
     my @display_diffs;
@@ -350,6 +364,7 @@ sub sendMail {
         changer            => $changer,
         diffs              => \@display_diffs,
         changedfields      => \@changedfields,
+        referenced_bugs    => $user->visible_bugs($referenced_bugs),
         new_comments       => \@send_comments,
         threadingmarker    => build_thread_marker($bug->id, $user->id, !$bug->lastdiffed),
         bugmailtype        => $bugmailtype,
index 6464e0a96bbeaaa09af6c38f5b3f346e88a5ce90..a5fc25ee33c062d26b51559e037f5b16e30cff99 100644 (file)
         </div>
       [% END %]
       </p>
+
+      [% IF referenced_bugs.size %]
+        <div id="referenced">
+          <hr style="border: 1px dashed #969696">
+          <b>Referenced [% terms.Bugs %]:</b>
+          <ul>
+            [% FOREACH ref_bug = referenced_bugs %]
+              <li>
+                [[% "${terms.Bug} ${ref_bug.id}" FILTER bug_link(ref_bug, {full_url => 1, user => to_user}) FILTER none %]] 
+                [% ref_bug.short_desc FILTER html %]
+              </li>
+            [% END %]
+          </ul>
+        </div>
+        <br>
+      [% END %]
+
       <hr>
       <span>You are receiving this mail because:</span>
-      
+
       <ul>
       [% FOREACH reason = reasons %]
         [%  IF reason_descs.$reason  %]
index 92c9a33cbdba1f34140b65ae7fa07b8af237f20a..b8d11e0e1cc283e7f499e50cb30f5d73a6f4379b 100644 (file)
 [%+ comment.body_full({ is_bugmail => 1, wrap => 1 }) %]
 [% END %]
 
+[% IF referenced_bugs.size %]
+
+Referenced [% terms.Bugs %]:
+
+[% FOREACH ref_bug = referenced_bugs %]
+[%+ urlbase %]show_bug.cgi?id=[% ref_bug.id %]
+[%+ "[" _ terms.Bug _ " " _ ref_bug.id _ "] " _ ref_bug.short_desc FILTER wrap_comment %]
+[% END %]
+[% END %]
 -- [%# Protect the trailing space of the signature marker %]
 You are receiving this mail because:
 [% SET reason_lines = [] %]