From c290f3ecabec75b741d375e6130af9060255c274 Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Mon, 15 Jun 2015 12:49:59 +0800 Subject: Bug 1146774: treeherder/tbpl comments are not automatically collapsed --- Bugzilla/Comment.pm | 24 ++++++++++++------- extensions/BugModal/Extension.pm | 3 +++ extensions/BugModal/lib/ActivityStream.pm | 11 ++++++++- extensions/BugModal/lib/MonkeyPatches.pm | 13 ++++++++++ .../en/default/bug_modal/activity_stream.html.tmpl | 9 +++---- extensions/BugModal/web/comments.js | 28 ++++++++++++++++++---- 6 files changed, 69 insertions(+), 19 deletions(-) diff --git a/Bugzilla/Comment.pm b/Bugzilla/Comment.pm index 979019541..69e973c7f 100644 --- a/Bugzilla/Comment.pm +++ b/Bugzilla/Comment.pm @@ -213,25 +213,31 @@ sub tags { sub collapsed { my ($self) = @_; - return 0 unless Bugzilla->params->{'comment_taggers_group'}; return $self->{collapsed} if exists $self->{collapsed}; + return 0 unless Bugzilla->params->{'comment_taggers_group'}; $self->{collapsed} = 0; Bugzilla->request_cache->{comment_tags_collapsed} - ||= [ split(/\s*,\s*/, Bugzilla->params->{'collapsed_comment_tags'}) ]; + ||= [ split(/\s*,\s*/, lc(Bugzilla->params->{'collapsed_comment_tags'})) ]; my @collapsed_tags = @{ Bugzilla->request_cache->{comment_tags_collapsed} }; - foreach my $my_tag (@{ $self->tags }) { - $my_tag = lc($my_tag); + my @reason; + foreach my $my_tag (map { lc } @{ $self->tags }) { foreach my $collapsed_tag (@collapsed_tags) { - if ($my_tag eq lc($collapsed_tag)) { - $self->{collapsed} = 1; - last; - } + push @reason, $my_tag if $my_tag eq $collapsed_tag; } - last if $self->{collapsed}; + } + if (@reason) { + $self->{collapsed} = 1; + $self->{collapsed_reason} = join(', ', sort @reason); } return $self->{collapsed}; } +sub collapsed_reason { + my ($self) = @_; + return 0 unless $self->collapsed; + return $self->{collapsed_reason}; +} + sub bug { my $self = shift; require Bugzilla::Bug; diff --git a/extensions/BugModal/Extension.pm b/extensions/BugModal/Extension.pm index 0c007c2d9..12245dc54 100644 --- a/extensions/BugModal/Extension.pm +++ b/extensions/BugModal/Extension.pm @@ -254,6 +254,9 @@ sub template_before_process { } } $vars->{tracking_flags_table} = \@tracking_table; + + # for the "view -> hide treeherder comments" menu item + $vars->{treeherder} = Bugzilla->treeherder_user; } sub bug_start_of_set_all { diff --git a/extensions/BugModal/lib/ActivityStream.pm b/extensions/BugModal/lib/ActivityStream.pm index b66352031..a69790044 100644 --- a/extensions/BugModal/lib/ActivityStream.pm +++ b/extensions/BugModal/lib/ActivityStream.pm @@ -109,12 +109,21 @@ sub _add_activity_to_stream { sub _add_comments_to_stream { my ($bug, $stream) = @_; my $user = Bugzilla->user; + my $treeherder_id = Bugzilla->treeherder_user->id; my $raw_comments = $bug->comments(); foreach my $comment (@$raw_comments) { next if $comment->type == CMT_HAS_DUPE; - next if $comment->is_private && !($user->is_insider || $user->id == $comment->author->id); + my $author_id = $comment->author->id; + next if $comment->is_private && !($user->is_insider || $user->id == $author_id); next if $comment->body eq '' && ($comment->work_time - 0) != 0 && !$user->is_timetracker; + + # treeherder is so spammy we hide its comments by default + if ($author_id == $treeherder_id) { + $comment->{collapsed} = 1; + $comment->{collapsed_reason} = $comment->author->name; + } + _add_comment_to_stream($stream, date_str_to_time($comment->creation_ts), $comment->author->id, $comment); } } diff --git a/extensions/BugModal/lib/MonkeyPatches.pm b/extensions/BugModal/lib/MonkeyPatches.pm index 596746b32..c2e24f5ce 100644 --- a/extensions/BugModal/lib/MonkeyPatches.pm +++ b/extensions/BugModal/lib/MonkeyPatches.pm @@ -8,6 +8,19 @@ package Bugzilla::Extension::BugModal::MonkeyPatches; 1; +package Bugzilla; +use strict; +use warnings; + +use Bugzilla::User; + +sub treeherder_user { + return Bugzilla->process_cache->{treeherder_user} //= + Bugzilla::User->new({ name => 'tbplbot@gmail.com', cache => 1 }) + || Bugzilla::User->new({ name => 'treeherder@bots.tld', cache => 1 }) + || Bugzilla::User->new(); +} + package Bugzilla::Bug; use strict; use warnings; diff --git a/extensions/BugModal/template/en/default/bug_modal/activity_stream.html.tmpl b/extensions/BugModal/template/en/default/bug_modal/activity_stream.html.tmpl index 7ea74b469..33d8e73c6 100644 --- a/extensions/BugModal/template/en/default/bug_modal/activity_stream.html.tmpl +++ b/extensions/BugModal/template/en/default/bug_modal/activity_stream.html.tmpl @@ -19,17 +19,18 @@
- [% Hook.process('comments-toggle-menu') %] + [% PROCESS bug/time.html.tmpl; FOREACH change_set IN bug.activity_stream; + extra_class = change_set.comment.collapsed ? " ca-" _ change_set.comment.author.id : ""; IF change_set.cc_only; - '