diff options
author | Tiago Mello <timello@gmail.com> | 2012-02-19 15:36:22 -0200 |
---|---|---|
committer | Tiago Mello <timello@gmail.com> | 2012-02-19 15:36:22 -0200 |
commit | 84982d8b04f6232d4eaa38fde78e8bfa67d496bb (patch) | |
tree | ea1fa9d6f5022b6d36de8773ac2eb0566feeb61a /Bugzilla | |
parent | 8cf999925d27402a3c2a9abc4394d33b3f11c97a (diff) | |
download | bugs-84982d8b04f6232d4eaa38fde78e8bfa67d496bb.tar bugs-84982d8b04f6232d4eaa38fde78e8bfa67d496bb.tar.gz bugs-84982d8b04f6232d4eaa38fde78e8bfa67d496bb.tar.bz2 bugs-84982d8b04f6232d4eaa38fde78e8bfa67d496bb.tar.xz bugs-84982d8b04f6232d4eaa38fde78e8bfa67d496bb.zip |
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.pm | 9 | ||||
-rw-r--r-- | Bugzilla/BugUrl/ReviewBoard.pm | 42 | ||||
-rw-r--r-- | Bugzilla/BugUrl/Rietveld.pm | 45 | ||||
-rw-r--r-- | Bugzilla/Hook.pm | 15 |
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 |