From 84982d8b04f6232d4eaa38fde78e8bfa67d496bb Mon Sep 17 00:00:00 2001 From: Tiago Mello Date: Sun, 19 Feb 2012 15:36:22 -0200 Subject: Bug 722580: Move 'ReviewBoard' and 'Rietveld' BugUrl sub-classes to a new 'MoreBugUrl' extension. r/a=LpSolit --- extensions/MoreBugUrl/Config.pm | 19 +++++++++ extensions/MoreBugUrl/Extension.pm | 43 +++++++++++++++++++++ extensions/MoreBugUrl/disabled | 0 extensions/MoreBugUrl/lib/ReviewBoard.pm | 42 ++++++++++++++++++++ extensions/MoreBugUrl/lib/Rietveld.pm | 45 ++++++++++++++++++++++ .../user-error-bug_url_invalid_tracker.html.tmpl | 10 +++++ 6 files changed, 159 insertions(+) create mode 100644 extensions/MoreBugUrl/Config.pm create mode 100644 extensions/MoreBugUrl/Extension.pm create mode 100644 extensions/MoreBugUrl/disabled create mode 100644 extensions/MoreBugUrl/lib/ReviewBoard.pm create mode 100644 extensions/MoreBugUrl/lib/Rietveld.pm create mode 100644 extensions/MoreBugUrl/template/en/default/hook/global/user-error-bug_url_invalid_tracker.html.tmpl (limited to 'extensions') diff --git a/extensions/MoreBugUrl/Config.pm b/extensions/MoreBugUrl/Config.pm new file mode 100644 index 000000000..b5af9c00e --- /dev/null +++ b/extensions/MoreBugUrl/Config.pm @@ -0,0 +1,19 @@ +# 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::MoreBugUrl; +use strict; + +use constant NAME => 'MoreBugUrl'; + +use constant REQUIRED_MODULES => [ +]; + +use constant OPTIONAL_MODULES => [ +]; + +__PACKAGE__->NAME; diff --git a/extensions/MoreBugUrl/Extension.pm b/extensions/MoreBugUrl/Extension.pm new file mode 100644 index 000000000..715316585 --- /dev/null +++ b/extensions/MoreBugUrl/Extension.pm @@ -0,0 +1,43 @@ +# 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::MoreBugUrl; +use strict; +use base qw(Bugzilla::Extension); + +use constant MORE_SUB_CLASSES => qw( + Bugzilla::Extension::MoreBugUrl::ReviewBoard + Bugzilla::Extension::MoreBugUrl::Rietveld +); + +# We need to update bug_see_also table because both +# Rietveld and ReviewBoard were originally under Bugzilla/BugUrl/. +sub install_update_db { + my $dbh = Bugzilla->dbh; + + my $should_rename = $dbh->selectrow_array( + q{SELECT 1 FROM bug_see_also + WHERE class IN ('Bugzilla::BugUrl::Rietveld', + 'Bugzilla::BugUrl::ReviewBoard')}); + + if ($should_rename) { + my $sth = $dbh->prepare('UPDATE bug_see_also SET class = ? + WHERE class = ?'); + $sth->execute('Bugzilla::Extension::MoreBugUrl::ReviewBoard', + 'Bugzilla::BugUrl::ReviewBoard'); + + $sth->execute('Bugzilla::Extension::MoreBugUrl::Rietveld', + 'Bugzilla::BugUrl::Rietveld'); + } +} + +sub bug_url_sub_classes { + my ($self, $args) = @_; + push @{ $args->{sub_classes} }, MORE_SUB_CLASSES; +} + +__PACKAGE__->NAME; diff --git a/extensions/MoreBugUrl/disabled b/extensions/MoreBugUrl/disabled new file mode 100644 index 000000000..e69de29bb diff --git a/extensions/MoreBugUrl/lib/ReviewBoard.pm b/extensions/MoreBugUrl/lib/ReviewBoard.pm new file mode 100644 index 000000000..7628dd314 --- /dev/null +++ b/extensions/MoreBugUrl/lib/ReviewBoard.pm @@ -0,0 +1,42 @@ +# 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::MoreBugUrl::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/extensions/MoreBugUrl/lib/Rietveld.pm b/extensions/MoreBugUrl/lib/Rietveld.pm new file mode 100644 index 000000000..0c52892e2 --- /dev/null +++ b/extensions/MoreBugUrl/lib/Rietveld.pm @@ -0,0 +1,45 @@ +# 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::MoreBugUrl::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/extensions/MoreBugUrl/template/en/default/hook/global/user-error-bug_url_invalid_tracker.html.tmpl b/extensions/MoreBugUrl/template/en/default/hook/global/user-error-bug_url_invalid_tracker.html.tmpl new file mode 100644 index 000000000..e0cf6be8e --- /dev/null +++ b/extensions/MoreBugUrl/template/en/default/hook/global/user-error-bug_url_invalid_tracker.html.tmpl @@ -0,0 +1,10 @@ +[%# 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. + #%] + +
  • A Review Board review request.
  • +
  • An issue in a Rietveld installation.
  • -- cgit v1.2.3-24-g4f1b