Commit 183719ad authored by bbaetz%acm.org's avatar bbaetz%acm.org

Bug 430909 - add hook for parameters

r=mkanat, r/a=lpsolit
parent 82361875
......@@ -53,9 +53,11 @@ use vars qw(@param_list);
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;
}
......@@ -67,14 +69,16 @@ sub _load_params {
# 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 {
......
......@@ -29,6 +29,7 @@ use Bugzilla;
use Bugzilla::Constants;
use Bugzilla::Config qw(:admin);
use Bugzilla::Config::Common;
use Bugzilla::Hook;
use Bugzilla::Util;
use Bugzilla::Error;
use Bugzilla::Token;
......@@ -56,13 +57,15 @@ $current_panel = $1;
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));
......@@ -73,7 +76,7 @@ $vars->{panels} = \@panels;
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'};
......
# -*- 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";
# -*- 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;
[%#
# 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",
}
%]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment