]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 55436: Implement list of duplicate bug numbers on show_bug.cgi
authorFrédéric Buclin <LpSolit@gmail.com>
Sun, 7 Aug 2011 00:31:57 +0000 (02:31 +0200)
committerFrédéric Buclin <LpSolit@gmail.com>
Sun, 7 Aug 2011 00:31:57 +0000 (02:31 +0200)
r=mkanat a=LpSolit

Bugzilla/Bug.pm
template/en/default/bug/edit.html.tmpl

index 40bf3af2e0621dd664a60c009d13951c1a47482f..62099c423f9ea03a183a465b3d05a73ca0b96966 100644 (file)
@@ -487,10 +487,11 @@ sub preload {
     my @all_dep_ids;
     foreach my $bug (@$bugs) {
         push(@all_dep_ids, @{ $bug->blocked }, @{ $bug->dependson });
+        push(@all_dep_ids, @{ $bug->duplicate_ids });
     }
     @all_dep_ids = uniq @all_dep_ids;
     # If we don't do this, can_see_bug will do one call per bug in
-    # the dependency lists, during get_bug_link in Bugzilla::Template.
+    # the dependency and duplicate lists, in Bugzilla::Template::get_bug_link.
     $user->visible_bugs(\@all_dep_ids);
 }
 
@@ -3243,6 +3244,26 @@ sub depends_on_obj {
     return $self->{depends_on_obj};
 }
 
+sub duplicates {
+    my $self = shift;
+    return $self->{duplicates} if exists $self->{duplicates};
+    return [] if $self->{error};
+    $self->{duplicates} = Bugzilla::Bug->new_from_list($self->duplicate_ids);
+    return $self->{duplicates};
+}
+
+sub duplicate_ids {
+    my $self = shift;
+    return $self->{duplicate_ids} if exists $self->{duplicate_ids};
+    return [] if $self->{error};
+
+    my $dbh = Bugzilla->dbh;
+    $self->{duplicate_ids} =
+      $dbh->selectcol_arrayref('SELECT dupe FROM duplicates WHERE dupe_of = ?',
+                               undef, $self->id);
+    return $self->{duplicate_ids};
+}
+
 sub flag_types {
     my ($self) = @_;
     return $self->{'flag_types'} if exists $self->{'flag_types'};
index ab150dd31ede8493df25833a46bfe95586d82afd..c2f8894d7dd3a20546781fb0f2550ec071cdcc2e 100644 (file)
           [% PROCESS section_url_keyword_whiteboard %]
           
           [% PROCESS section_spacer %]
-          
-          [%# *** Dependencies *** %]
+
+          [%# *** Dependencies and duplicates *** %]
+          [% PROCESS section_duplicates %]
+
           [% PROCESS section_dependson_blocks %]
           
         </table>
 [% END %]
 
 [%############################################################################%]
-[%# Block for Depends On / Blocks                                              #%]
+[%# Block for Duplicates                                                     #%]
+[%############################################################################%]
+
+[% BLOCK section_duplicates %]
+  [% RETURN UNLESS bug.duplicates.size %]
+  <tr>
+    <td class="field_label">
+      <label for="duplicates">Duplicates</label>:
+    </td>
+    <td class="field_value" colspan="2">
+      <span id="duplicates">
+        [% FOREACH dupe = bug.duplicates %]
+          [% dupe.id FILTER bug_link(dupe, use_alias => 1) FILTER none %][% " " %]
+        [% END %]
+      </span>
+      (<a href="buglist.cgi?bug_id=[% bug.duplicate_ids.join(",") FILTER html %]">
+       [%-%]view as [% terms.bug %] list</a>)
+    </td>
+  </tr>
+[% END %]
+
+[%############################################################################%]
+[%# Block for Depends On / Blocks                                            #%]
 [%############################################################################%]
+
 [% BLOCK section_dependson_blocks %]
   <tr>
     [% INCLUDE dependencies