diff options
Diffstat (limited to 'extensions/MozReview/Extension.pm')
-rw-r--r-- | extensions/MozReview/Extension.pm | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/extensions/MozReview/Extension.pm b/extensions/MozReview/Extension.pm new file mode 100644 index 000000000..2287a2136 --- /dev/null +++ b/extensions/MozReview/Extension.pm @@ -0,0 +1,58 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This Source Code Form is "Incompatible With Secondary Licenses", as +# defined by the Mozilla Public License, v. 2.0. + +package Bugzilla::Extension::MozReview; + +use 5.10.1; +use strict; +use parent qw(Bugzilla::Extension); + +use Bugzilla::Attachment; +use Bugzilla::Config::Common; + +our $VERSION = '0.01'; + +sub template_before_process { + my ($self, $args) = @_; + my $file = $args->{'file'}; + my $vars = $args->{'vars'}; + + return unless (($file eq 'bug/show-header.html.tmpl' || + $file eq 'bug/edit.html.tmpl') && + Bugzilla->params->{mozreview_base_url}); + + my $bug = exists $vars->{'bugs'} ? $vars->{'bugs'}[0] : $vars->{'bug'}; + + if ($bug) { + my @rrids; + my $attachments = Bugzilla::Attachment->get_attachments_by_bug($bug); + + foreach my $attachment (@$attachments) { + if ($attachment->contenttype eq 'text/x-review-board-request' && + !$attachment->isobsolete) { + push @rrids, ($attachment->data =~ m#/r/(\d+)/?$#); + } + } + + if (scalar @rrids) { + $vars->{'mozreview'} = 1; + $vars->{'review_request_ids'} = \@rrids; + } + } +} + +sub config_modify_panels { + my ($self, $args) = @_; + push @{ $args->{panels}->{advanced}->{params} }, { + name => 'mozreview_base_url', + type => 't', + default => '', + checker => \&check_urlbase + }; +} + +__PACKAGE__->NAME; |