summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
authormkanat%bugzilla.org <>2009-11-24 12:50:26 +0100
committermkanat%bugzilla.org <>2009-11-24 12:50:26 +0100
commit823e59691fc7224ecca6d95076996fe38383bd64 (patch)
treefe3dd11d569075456ab04fc12cc08a56c1ab749f /extensions
parentb04aed85ba343e3dcc74ebde6fc72d5ab129b817 (diff)
downloadbugzilla-823e59691fc7224ecca6d95076996fe38383bd64.tar.gz
bugzilla-823e59691fc7224ecca6d95076996fe38383bd64.tar.xz
Bug 430013: Make extensions load their modules like Bugzilla::Extension::Foo::Bar, where Bar.pm is in extensions/Foo/lib/.
Patch by Max Kanat-Alexander <mkanat@bugzilla.org> (module owner) a=mkanat
Diffstat (limited to 'extensions')
-rw-r--r--extensions/Example/Extension.pm19
-rw-r--r--extensions/Example/lib/Auth/Login.pm32
-rw-r--r--extensions/Example/lib/Auth/Verify.pm31
-rw-r--r--extensions/Example/lib/Config.pm41
-rw-r--r--extensions/Example/lib/Util.pm28
-rw-r--r--extensions/Example/lib/WebService.pm32
6 files changed, 174 insertions, 9 deletions
diff --git a/extensions/Example/Extension.pm b/extensions/Example/Extension.pm
index 8e3a385d6..290867e0d 100644
--- a/extensions/Example/Extension.pm
+++ b/extensions/Example/Extension.pm
@@ -24,10 +24,11 @@ package Bugzilla::Extension::Example;
use strict;
use base qw(Bugzilla::Extension);
-use Bugzilla::Util qw(
- diff_arrays
- html_quote
-);
+use Bugzilla::Util qw(diff_arrays html_quote);
+
+# This is extensions/Example/lib/Util.pm. I can load this here in my
+# Extension.pm only because I have a Config.pm.
+use Bugzilla::Extension::Example::Util;
use Data::Dumper;
@@ -57,7 +58,7 @@ sub auth_login_methods {
my ($self, $params) = @_;
my $modules = $params->{modules};
if (exists $modules->{Example}) {
- $modules->{Example} = 'extensions/Example/lib/AuthLogin.pm';
+ $modules->{Example} = 'Bugzilla/Extension/Example/Auth/Login.pm';
}
}
@@ -65,7 +66,7 @@ sub auth_verify_methods {
my ($self, $params) = @_;
my $modules = $params->{modules};
if (exists $modules->{Example}) {
- $modules->{Example} = 'extensions/Example/lib/AuthVerify.pm';
+ $modules->{Example} = 'Bugzilla/Extension/Example/Auth/Verify.pm';
}
}
@@ -195,14 +196,14 @@ sub config {
my ($self, $params) = @_;
my $config = $params->{config};
- $config->{Example} = "extensions::Example::lib::ConfigExample";
+ $config->{Example} = "Bugzilla::Extension::Example::Config";
}
sub config_add_panels {
my ($self, $params) = @_;
my $modules = $params->{panel_modules};
- $modules->{Example} = "extensions::Example::lib::ConfigExample";
+ $modules->{Example} = "Bugzilla::Extension::Example::Config";
}
sub config_modify_panels {
@@ -417,7 +418,7 @@ sub webservice {
my ($self, $params) = @_;
my $dispatch = $params->{dispatch};
- $dispatch->{Example} = "extensions::Example::lib::WSExample";
+ $dispatch->{Example} = "Bugzilla::Extension::Example::WebService";
}
sub webservice_error_codes {
diff --git a/extensions/Example/lib/Auth/Login.pm b/extensions/Example/lib/Auth/Login.pm
new file mode 100644
index 000000000..9f4f37dc3
--- /dev/null
+++ b/extensions/Example/lib/Auth/Login.pm
@@ -0,0 +1,32 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Example Plugin.
+#
+# The Initial Developer of the Original Code is Canonical Ltd.
+# Portions created by Canonical are Copyright (C) 2008 Canonical Ltd.
+# All Rights Reserved.
+#
+# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
+
+package Bugzilla::Extension::Example::Auth::Login;
+use strict;
+use base qw(Bugzilla::Auth::Login);
+use constant user_can_create_account => 0;
+use Bugzilla::Constants;
+
+# Always returns no data.
+sub get_login_info {
+ return { failure => AUTH_NODATA };
+}
+
+1;
diff --git a/extensions/Example/lib/Auth/Verify.pm b/extensions/Example/lib/Auth/Verify.pm
new file mode 100644
index 000000000..0141a0d6a
--- /dev/null
+++ b/extensions/Example/lib/Auth/Verify.pm
@@ -0,0 +1,31 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Example Plugin.
+#
+# The Initial Developer of the Original Code is Canonical Ltd.
+# Portions created by Canonical are Copyright (C) 2008 Canonical Ltd.
+# All Rights Reserved.
+#
+# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
+
+package Bugzilla::Extension::Example::Auth::Verify;
+use strict;
+use base qw(Bugzilla::Auth::Verify);
+use Bugzilla::Constants;
+
+# A verifier that always fails.
+sub check_credentials {
+ return { failure => AUTH_NO_SUCH_USER };
+}
+
+1;
diff --git a/extensions/Example/lib/Config.pm b/extensions/Example/lib/Config.pm
new file mode 100644
index 000000000..a126e82df
--- /dev/null
+++ b/extensions/Example/lib/Config.pm
@@ -0,0 +1,41 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Example Plugin.
+#
+# The Initial Developer of the Original Code is Canonical Ltd.
+# Portions created by Canonical Ltd. are Copyright (C) 2008
+# Canonical Ltd. All Rights Reserved.
+#
+# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
+# Bradley Baetz <bbaetz@acm.org>
+
+package Bugzilla::Extension::Example::Config;
+use strict;
+use warnings;
+
+use Bugzilla::Config::Common;
+
+sub get_param_list {
+ my ($class) = @_;
+
+ my @param_list = (
+ {
+ name => 'example_string',
+ type => 't',
+ default => 'EXAMPLE',
+ },
+ );
+ return @param_list;
+}
+
+1;
diff --git a/extensions/Example/lib/Util.pm b/extensions/Example/lib/Util.pm
new file mode 100644
index 000000000..596f048e9
--- /dev/null
+++ b/extensions/Example/lib/Util.pm
@@ -0,0 +1,28 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# The Initial Developer of the Original Code is Everything Solved, Inc.
+# Portions created by Everything Solved, Inc. are Copyright (C) 2009
+# Everything Solved, Inc. All Rights Reserved.
+#
+# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
+
+package Bugzilla::Extension::Example::Util;
+use strict;
+use warnings;
+
+# This file exists only to demonstrate how to use and name your
+# modules in an extension.
+
+1;
diff --git a/extensions/Example/lib/WebService.pm b/extensions/Example/lib/WebService.pm
new file mode 100644
index 000000000..8563ec7f0
--- /dev/null
+++ b/extensions/Example/lib/WebService.pm
@@ -0,0 +1,32 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# The Initial Developer of the Original Code is Everything Solved, Inc.
+# Portions created by Everything Solved, Inc. are Copyright (C) 2007
+# Everything Solved, Inc. All Rights Reserved.
+#
+# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
+
+package Bugzilla::Extension::Example::WebService;
+use strict;
+use warnings;
+use base qw(Bugzilla::WebService);
+use Bugzilla::Error;
+
+# This can be called as Example.hello() from the WebService.
+sub hello { return 'Hello!'; }
+
+sub throw_an_error { ThrowUserError('example_my_error') }
+
+1;