From cc0c6be1aa795f85d05f15a3e8568fcef2bbd380 Mon Sep 17 00:00:00 2001 From: jeff Date: Wed, 18 Jul 2007 18:07:38 +0000 Subject: config in database cleanup, editing, and agent-specific config (452, 1419) --- httemplate/config/config.cgi | 423 +++++++++++++++++++++++-------------------- 1 file changed, 230 insertions(+), 193 deletions(-) (limited to 'httemplate/config/config.cgi') diff --git a/httemplate/config/config.cgi b/httemplate/config/config.cgi index df9af47a6..10bbadaf8 100644 --- a/httemplate/config/config.cgi +++ b/httemplate/config/config.cgi @@ -1,4 +1,5 @@ -<% include("/elements/header.html",'Edit Configuration', menubar( 'Main Menu' => $p ) ) %> +<% include("/elements/header-popup.html", $title) %> + -% my $conf = new FS::Conf; my @config_items = $conf->config_items; - -
-% foreach my $section ( qw(required billing username password UI session -% shell BIND -% ), -% '', 'deprecated') { +% if ( $cgi->param('error') ) { + Error: <% $cgi->param('error') %> +

+% } - - -% foreach my $nav_section ( qw(required billing username password UI session -% shell BIND -% ), -% '', 'deprecated') { -% if ( $section eq $nav_section ) { + + + - [<% ucfirst($nav_section || 'unclassified') %>] -% } else { +Setting <% $key %> - [<% ucfirst($nav_section || 'unclassified') %>] -% } -% } + - - -% foreach my $i (grep $_->section eq $section, @config_items) { - - - -% if ( defined $i->editlist_parts ) { -% my $pnum=0; foreach my $part ( @{$i->editlist_parts} ) { +% foreach my $line ( $conf->config($key, $agentnum) ) { - - -% $pnum++; } -% } else { +% } elsif ( $part->{type} eq 'immutable' ) { - -% } + <% $part->{value} %> + " value="<% $part->{value} %>"> - -
-
- <% table("#cccccc", 2) %> -
- <% ucfirst($section || 'unclassified') %> configuration options -
% my $n = 0; -% foreach my $type ( ref($i->type) ? @{$i->type} : $i->type ) { -% #warn $i->key unless defined($type); +% foreach my $type ( ref($config_item->type) ? @{$config_item->type} : $config_item->type ) { +% if ( $type eq '' ) { + + no type + +% } elsif ( $type eq 'binary' ) { + + Filename "> + +% } elsif ( $type eq 'textarea' ) { + + + +% } elsif ( $type eq 'checkbox' ) { + + " type="checkbox" value="1" + <% $conf->exists($key, $agentnum) ? 'CHECKED' : '' %> > + +% } elsif ( $type eq 'text' ) { + + " type="text" value="<% $conf->exists($key, $agentnum) ? $conf->config($key, $agentnum) : '' %>"> + +% } elsif ( $type eq 'select' || $type eq 'selectmultiple' ) { + + -% } elsif ( $type eq 'textarea' ) { + <% $hash{ $conf->config($key, $agentnum) } %> +% }else{ - -% } elsif ( $type eq 'checkbox' ) { + <% $curvalue %> +% } +% } - exists($i->key) ? ' CHECKED' : '' %>> -% } elsif ( $type eq 'text' ) { + +% } elsif ( $type eq 'select-sub' ) { - -% } elsif ( $type eq 'select' || $type eq 'selectmultiple' ) { + > -% -% my %hash = (); -% if ( $i->select_enum ) { -% tie %hash, 'Tie::IxHash', -% '' => '', map { $_ => $_ } @{ $i->select_enum }; -% } elsif ( $i->select_hash ) { -% if ( ref($i->select_hash) eq 'ARRAY' ) { -% tie %hash, 'Tie::IxHash', -% '' => '', @{ $i->select_hash }; -% } else { -% tie %hash, 'Tie::IxHash', -% '' => '', %{ $i->select_hash }; -% } -% } else { -% %hash = ( '' => 'WARNING: neither select_enum nor select_hash specified in Conf.pm for configuration option "'. $i->key. '"' ); -% } +% my %options = &{$config_item->options_sub}; +% my @options = sort { $a <=> $b } keys %options; +% my %saw; +% foreach my $value ( @options ) { +% local($^W)=0; next if $saw{$value}++; + + -
- - -
- <% itable() %>
-% if ( $part->{type} eq 'text' ) { + - "> -% } elsif ( $part->{type} eq 'immutable' ) { +% } - <% $part->{value} %>" value="<% $part->{value} %>"> -% } elsif ( $part->{type} eq 'select' ) { +
+ ()"> + +
<% itable() %>
- -% } else { +% if ( $part->{type} eq 'text' ) { - unknown type <% $part->type %> -% } + "> -
-% } else { +% } elsif ( $part->{type} eq 'select' ) { + -

-% } +% } else { + + unknown type <% $part->type %> + +% } + + + +% $pnum++; +% } +% } else { + > - +% } + + (this.form)"> + + +% } else { + + unknown type $type + +% } +% $n++; +% } + + <% $description %> + + + + + +<%once> +my $conf = new FS::Conf; +my %confitems = map { $_->key => $_ } $conf->config_items; + - <%init> die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my($agentnum, $agent, $title, $action, $key, $value, $config_item, + $description, $type); + +$action = 'Set'; + +if ($cgi->param('agentnum') =~ /(\d+)$/) { + $agentnum=$1; +} + +if ($agentnum) { + $agent = qsearchs('agent', { 'agentnum' => $1 } ); + die "Agent $agentnum not found!" unless $agent; + + $title = "$action configuration override for ". $agent->agent; +} else { + $title = "$action global configuration"; +} + +$cgi->param('key') =~ /^([-.\w]+)$/ or die "illegal configuration item"; +$key=$1; +$value = $conf->config($key); +$config_item = $confitems{$key}; + +$description = $config_item->description; +$type = $config_item->type; + -- cgit v1.2.1