X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Famcvar.pl;h=6c6865cc3da9e0053a4a66c42e6b210a0ba39a5a;hb=afed390f75f0dad7df9d5aa5fbdac8f3005c852e;hp=57457acc21d5fef4de17d81fb42002d7e216000b;hpb=8688e71eb56abdd9641f07a47135bb02841607fb;p=kivitendo-erp.git diff --git a/bin/mozilla/amcvar.pl b/bin/mozilla/amcvar.pl index 57457acc2..6c6865cc3 100644 --- a/bin/mozilla/amcvar.pl +++ b/bin/mozilla/amcvar.pl @@ -36,13 +36,17 @@ use SL::CVar; use SL::Form; use Data::Dumper; - -1; +use List::MoreUtils qw(any); require "bin/mozilla/common.pl"; +use strict; + +1; + # end of main +my $locale = $main::locale; our %translations = ('text' => $locale->text('Free-form text'), 'textfield' => $locale->text('Text field'), 'number' => $locale->text('Number'), @@ -54,6 +58,11 @@ our %translations = ('text' => $locale->text('Free-form text'), our @types = qw(text textfield number date bool select); # timestamp +our @modules = ({ module => 'CT', description => $locale->text('Customers and vendors') }, + { module => 'IC', description => $locale->text('Parts, services and assemblies') }, + { module => 'Projects', description => $locale->text('Projects') }, + ); + sub add { add_cvar_config(); } @@ -62,52 +71,69 @@ sub edit { edit_cvar_config(); } +sub _is_valid_module { + my $module = shift; + + return any { $_->{module} eq $module } @modules; +} + sub list_cvar_configs { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); - $auth->assert('config'); + my $form = $main::form; + my $locale = $main::locale; - $form->{module} ||= $form->{cvar_module}; + $main::auth->assert('config'); - my @configs = grep { $_->{module} eq $form->{module} } @{ CVar->get_configs() }; + $form->{module} = $form->{module} || $form->{cvar_module} || 'CT'; + $form->{module} = 'CT' unless _is_valid_module($form->{module}); + + my @configs = @{ CVar->get_configs(module => $form->{module}) }; my $previous_config; - foreach (@configs) { - $_->{type_tr} = $translations{$_->{type}}; + foreach my $config (@configs) { + $config->{type_tr} = $translations{$config->{type}}; if ($previous_config) { - $previous_config->{next_id} = $_->{id}; - $_->{previous_id} = $previous_config->{id}; + $previous_config->{next_id} = $config->{id}; + $config->{previous_id} = $previous_config->{id}; } - $previous_config = $_; + $previous_config = $config; } $form->{title} = $locale->text('List of custom variables'); $form->header(); - print $form->parse_html_template('amcvar/list_cvar_configs', { 'CONFIGS' => \@configs }); + print $form->parse_html_template('amcvar/list_cvar_configs', { CONFIGS => \@configs, + MODULES => \@modules }); + + $main::lxdebug->dump(0, "modules", \@modules); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub add_cvar_config { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; - $auth->assert('config'); + $main::auth->assert('config'); - $form->{module} ||= $form->{cvar_module}; + $form->{module} = $form->{module} || $form->{cvar_module} || 'CT'; $form->{edit} = 0; display_cvar_config_form(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub edit_cvar_config { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); - $auth->assert('config'); + my $form = $main::form; + + $main::auth->assert('config'); my $config = CVar->get_config('id' => $form->{id}); @@ -116,13 +142,17 @@ sub edit_cvar_config { $form->{edit} = 1; display_cvar_config_form(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub save { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; - $auth->assert('config'); + $main::auth->assert('config'); $form->isblank('name', $locale->text('The name is missing.')); $form->isblank('description', $locale->text('The description is missing.')); @@ -138,6 +168,7 @@ sub save { $form->{included_by_default} = $form->{inclusion} eq 'yes_default_on'; $form->{includeable} = $form->{inclusion} ne 'no'; + $form->{flags} = join ':', map { m/^flag_(.*)/; "${1}=" . $form->{$_} } grep { m/^flag_/ } keys %{ $form }; CVar->save_config('module' => $form->{module}, 'config' => $form); @@ -146,11 +177,14 @@ sub save { list_cvar_configs(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub delete { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my $locale = $main::locale; CVar->delete_config('id' => $form->{id}); @@ -158,13 +192,17 @@ sub delete { list_cvar_configs(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub display_cvar_config_form { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); - $auth->assert('config'); + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; + + $main::auth->assert('config'); my @types = map { { 'type' => $_, 'type_tr' => $translations{$_} } } @types; @@ -175,19 +213,37 @@ sub display_cvar_config_form { $form->{title} = $form->{edit} ? $locale->text("Edit custom variable") : $locale->text("Add custom variable"); $form->header(); - print $form->parse_html_template("amcvar/display_cvar_config_form", { 'TYPES' => \@types }); + print $form->parse_html_template("amcvar/display_cvar_config_form", { TYPES => \@types, + MODULES => \@modules }); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub swap_cvar_configs { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; AM->swap_sortkeys(\%myconfig, $form, 'custom_variable_configs'); list_cvar_configs(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); +} + +sub dispatcher { + my $form = $main::form; + my $locale = $main::locale; + + foreach my $action (qw(list_cvar_configs add_cvar_config)) { + if ($form->{"action_${action}"}) { + call_sub($action); + return; + } + } + + $form->error($locale->text('No action defined.')); } 1;