summaryrefslogtreecommitdiffstats
path: root/Bugzilla
diff options
context:
space:
mode:
authorTiago Mello <timello@gmail.com>2012-02-19 18:36:22 +0100
committerTiago Mello <timello@gmail.com>2012-02-19 18:36:22 +0100
commit84982d8b04f6232d4eaa38fde78e8bfa67d496bb (patch)
treeea1fa9d6f5022b6d36de8773ac2eb0566feeb61a /Bugzilla
parent8cf999925d27402a3c2a9abc4394d33b3f11c97a (diff)
downloadbugzilla-84982d8b04f6232d4eaa38fde78e8bfa67d496bb.tar.gz
bugzilla-84982d8b04f6232d4eaa38fde78e8bfa67d496bb.tar.xz
Bug 722580: Move 'ReviewBoard' and 'Rietveld' BugUrl sub-classes
to a new 'MoreBugUrl' extension. r/a=LpSolit
Diffstat (limited to 'Bugzilla')
-rw-r--r--Bugzilla/BugUrl.pm9
-rw-r--r--Bugzilla/BugUrl/ReviewBoard.pm42
-rw-r--r--Bugzilla/BugUrl/Rietveld.pm45
-rw-r--r--Bugzilla/Hook.pm15
4 files changed, 21 insertions, 90 deletions
diff --git a/Bugzilla/BugUrl.pm b/Bugzilla/BugUrl.pm
index 99d46bd24..888b11398 100644
--- a/Bugzilla/BugUrl.pm
+++ b/Bugzilla/BugUrl.pm
@@ -12,6 +12,7 @@ use base qw(Bugzilla::Object);
use Bugzilla::Util;
use Bugzilla::Error;
use Bugzilla::Constants;
+use Bugzilla::Hook;
use URI::QueryParam;
@@ -56,8 +57,6 @@ use constant SUB_CLASSES => qw(
Bugzilla::BugUrl::Trac
Bugzilla::BugUrl::MantisBT
Bugzilla::BugUrl::SourceForge
- Bugzilla::BugUrl::ReviewBoard
- Bugzilla::BugUrl::Rietveld
);
###############################
@@ -121,8 +120,12 @@ sub should_handle {
sub class_for {
my ($class, $value) = @_;
+ my @sub_classes = $class->SUB_CLASSES;
+ Bugzilla::Hook::process("bug_url_sub_classes",
+ { sub_classes => \@sub_classes });
+
my $uri = URI->new($value);
- foreach my $subclass ($class->SUB_CLASSES) {
+ foreach my $subclass (@sub_classes) {
eval "use $subclass";
die $@ if $@;
return wantarray ? ($subclass, $uri) : $subclass
diff --git a/Bugzilla/BugUrl/ReviewBoard.pm b/Bugzilla/BugUrl/ReviewBoard.pm
deleted file mode 100644
index 3c1ed56ba..000000000
--- a/Bugzilla/BugUrl/ReviewBoard.pm
+++ /dev/null
@@ -1,42 +0,0 @@
-# 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::BugUrl::ReviewBoard;
-use strict;
-use base qw(Bugzilla::BugUrl);
-
-###############################
-#### Methods ####
-###############################
-
-sub should_handle {
- my ($class, $uri) = @_;
- return ($uri->path =~ m|/r/\d+/?$|) ? 1 : 0;
-}
-
-sub _check_value {
- my $class = shift;
-
- my $uri = $class->SUPER::_check_value(@_);
-
- # Review Board URLs have only one form (the trailing slash is optional):
- # http://reviews.reviewboard.org/r/111/
-
- # Make sure there are no query parameters.
- $uri->query(undef);
- # And remove any # part if there is one.
- $uri->fragment(undef);
-
- # make sure the trailing slash is present
- if ($uri->path !~ m|/$|) {
- $uri->path($uri->path . '/');
- }
-
- return $uri;
-}
-
-1;
diff --git a/Bugzilla/BugUrl/Rietveld.pm b/Bugzilla/BugUrl/Rietveld.pm
deleted file mode 100644
index 9baf85d8d..000000000
--- a/Bugzilla/BugUrl/Rietveld.pm
+++ /dev/null
@@ -1,45 +0,0 @@
-# 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::BugUrl::Rietveld;
-use strict;
-use base qw(Bugzilla::BugUrl);
-
-###############################
-#### Methods ####
-###############################
-
-sub should_handle {
- my ($class, $uri) = @_;
- return ($uri->authority =~ /\.appspot\.com$/i
- and $uri->path =~ m#^/\d+(?:/|/show)?$#) ? 1 : 0;
-}
-
-sub _check_value {
- my ($class, $uri) = @_;
-
- $uri = $class->SUPER::_check_value($uri);
-
- # Rietveld URLs have three forms:
- # http(s)://example.appspot.com/1234
- # http(s)://example.appspot.com/1234/
- # http(s)://example.appspot.com/1234/show
- if ($uri->path =~ m#^/(\d+)(?:/|/show)$#) {
- # This is the shortest standard URL form for Rietveld issues,
- # and so we reduce all URLs to this.
- $uri->path('/' . $1);
- }
-
- # Make sure there are no query parameters.
- $uri->query(undef);
- # And remove any # part if there is one.
- $uri->fragment(undef);
-
- return $uri;
-}
-
-1;
diff --git a/Bugzilla/Hook.pm b/Bugzilla/Hook.pm
index fe4f0860e..17023f8f5 100644
--- a/Bugzilla/Hook.pm
+++ b/Bugzilla/Hook.pm
@@ -389,6 +389,21 @@ the summary line).
=back
+=head2 bug_url_sub_classes
+
+Allows you to add more L<Bugzilla::BugUrl> sub-classes.
+
+See the C<MoreBugUrl> extension to see how things work.
+
+Params:
+
+=over
+
+=item C<sub_classes> - An arrayref of strings which represent L<Bugzilla::BugUrl>
+sub-classes.
+
+=back
+
=head2 buglist_columns
This happens in L<Bugzilla::Search/COLUMNS>, which determines legal bug