our %params;
# Load in the param definitions
sub _load_params {
- foreach my $module (param_panels()) {
- eval("require Bugzilla::Config::$module") || die $@;
- my @new_param_list = "Bugzilla::Config::$module"->get_param_list();
+ my $panels = param_panels();
+ foreach my $panel (keys %$panels) {
+ my $module = $panels->{$panel};
+ eval("require $module") || die $@;
+ my @new_param_list = "$module"->get_param_list();
foreach my $item (@new_param_list) {
$params{$item->{'name'}} = $item;
}
# Subroutines go here
sub param_panels {
- my @param_panels;
+ my $param_panels = {};
my $libpath = bz_locations()->{'libpath'};
foreach my $item ((glob "$libpath/Bugzilla/Config/*.pm")) {
$item =~ m#/([^/]+)\.pm$#;
my $module = $1;
- push(@param_panels, $module) unless $module eq 'Common';
+ $param_panels->{$module} = "Bugzilla::Config::$module" unless $module eq 'Common';
}
- return @param_panels;
+ # Now check for any hooked params
+ Bugzilla::Hook::process('config', { config => $param_panels });
+ return $param_panels;
}
sub SetParam {
use Bugzilla::Constants;
use Bugzilla::Config qw(:admin);
use Bugzilla::Config::Common;
+use Bugzilla::Hook;
use Bugzilla::Util;
use Bugzilla::Error;
use Bugzilla::Token;
my $current_module;
my @panels = ();
-foreach my $panel (Bugzilla::Config::param_panels()) {
- eval("require Bugzilla::Config::$panel") || die $@;
- my @module_param_list = "Bugzilla::Config::${panel}"->get_param_list(1);
+my $param_panels = Bugzilla::Config::param_panels();
+foreach my $panel (keys %$param_panels) {
+ my $module = $param_panels->{$panel};
+ eval("require $module") || die $@;
+ my @module_param_list = "$module"->get_param_list(1);
my $item = { name => lc($panel),
current => ($current_panel eq lc($panel)) ? 1 : 0,
param_list => \@module_param_list,
- sortkey => eval "\$Bugzilla::Config::${panel}::sortkey;"
+ sortkey => eval "\$${module}::sortkey;"
};
push(@panels, $item);
$current_module = $panel if ($current_panel eq lc($panel));
if ($action eq 'save' && $current_module) {
check_token_data($token, 'edit_parameters');
my @changes = ();
- my @module_param_list = "Bugzilla::Config::${current_module}"->get_param_list(1);
+ my @module_param_list = "$param_panels->{$current_module}"->get_param_list(1);
foreach my $i (@module_param_list) {
my $name = $i->{'name'};
--- /dev/null
+# -*- 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>
+
+use strict;
+use warnings;
+use Bugzilla;
+my $config = Bugzilla->hook_args->{config};
+$config->{Example} = "extensions::example::lib::ConfigExample";
--- /dev/null
+# -*- 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 extensions::example::lib::ConfigExample;
+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;
--- /dev/null
+[%#
+ # 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): Bradley Baetz <bbaetz@acm.org>
+ #%]
+[%
+ title = "Example Extension"
+ desc = "Configure example extension"
+%]
+
+[% param_descs = {
+ example_string => "Example string",
+}
+%]