X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fadmin.pl;h=c776961ab8aaadd1429115e26cf4b5b9768bfdd3;hb=32c9d480547428dc9555539c8f354ab73d616a6e;hp=acaae17e0e84e2e5e7bb031b83f392031f0c00f7;hpb=8cd05ad64866ce200f888a35723ae4b7e24a2012;p=kivitendo-erp.git diff --git a/bin/mozilla/admin.pl b/bin/mozilla/admin.pl index acaae17e0..c776961ab 100755 --- a/bin/mozilla/admin.pl +++ b/bin/mozilla/admin.pl @@ -33,7 +33,7 @@ #====================================================================== use DBI; -use CGI; +use Encode; use English qw(-no_match_vars); use Fcntl; use File::Copy; @@ -67,24 +67,24 @@ sub run { $::lxdebug->enter_sub; my $session_result = shift; - $cgi = $::cgi; $form = $::form; $locale = $::locale; $auth = $::auth; - $::auth->set_session_value('rpw', $::form->{rpw}) if $session_result == SL::Auth->SESSION_OK; + $::auth->store_root_credentials_in_session($form->{rpw}) if $session_result == SL::Auth->SESSION_OK; $form->{stylesheet} = "lx-office-erp.css"; $form->{favicon} = "favicon.ico"; if ($form->{action}) { - if ($auth->authenticate_root($form->{rpw}, 0) != $auth->OK()) { + if ($auth->authenticate_root($form->{rpw}) != $auth->OK()) { $form->{error_message} = $locale->text('Incorrect Password!'); + $auth->delete_session_value('rpw'); adminlogin(); } else { if ($auth->session_tables_present()) { - $::auth->set_session_value('rpw', $::form->{rpw}); - $::auth->create_or_refresh_session(); + $::auth->store_root_credentials_in_session($::form->{rpw}); + delete $::form->{rpw}; _apply_dbupgrade_scripts(); } @@ -194,6 +194,7 @@ sub create_auth_tables { $main::auth->save_group($group); } + _apply_dbupgrade_scripts(); login(); } @@ -341,7 +342,10 @@ sub list_users { delete $members{"root login"}; - map { $_->{templates} =~ s|.*/||; } values %members; + for (values %members) { + $_->{templates} =~ s|.*/||; + $_->{login_url} = $::locale->is_utf8 ? Encode::encode('utf-8-strict', $_->{login}) : $_->{login_url}; + } $form->{title} = "Lx-Office ERP " . $locale->text('Administration'); $form->{LOCKED} = -e _nologin_file_name(); @@ -421,27 +425,25 @@ sub edit_user_form { opendir TEMPLATEDIR, $::lx_office_conf{paths}->{templates} or $form->error($::lx_office_conf{paths}->{templates} . " : $ERRNO"); my @all = readdir(TEMPLATEDIR); my @alldir = sort grep { -d ($::lx_office_conf{paths}->{templates} . "/$_") && !/^\.\.?$/ } @all; - my @allhtml = sort grep { -f ($::lx_office_conf{paths}->{templates} . "/$_") && /\.html$/ } @all; closedir TEMPLATEDIR; @alldir = grep !/\.(html|tex|sty|odt|xml|txb)$/, @alldir; - @alldir = grep !/^(webpages|\.svn)$/, @alldir; - - @allhtml = reverse grep !/Default/, @allhtml; - push @allhtml, 'Default'; - @allhtml = reverse @allhtml; + @alldir = grep !/^(webpages|mastertemplates|\.svn)$/, @alldir; $form->{ALL_TEMPLATES} = [ map { { "name", => $_, "selected" => $_ eq $myconfig->{templates} } } @alldir ]; - my $lastitem = $allhtml[0]; - $lastitem =~ s/-.*//g; - $form->{ALL_MASTER_TEMPLATES} = [ { "name" => $lastitem, "selected" => $lastitem eq "German" } ]; - foreach my $item (@allhtml) { - $item =~ s/-.*//g; - next if ($item eq $lastitem); + # mastertemplates + opendir TEMPLATEDIR, "$::lx_office_conf{paths}->{templates}/mastertemplates" or $form->error("$::lx_office_conf{paths}->{templates}/mastertemplates" . " : $ERRNO"); + my @allmaster = readdir(TEMPLATEDIR); + closedir TEMPLATEDIR; + + @allmaster = sort grep { -d ("$::lx_office_conf{paths}->{templates}/mastertemplates" . "/$_") && !/^\.\.?$/ } @allmaster; + @allmaster = reverse grep !/Default/, @allmaster; + push @allmaster, 'Default'; + @allmaster = reverse @allmaster; + foreach my $item (@allmaster) { push @{ $form->{ALL_MASTER_TEMPLATES} }, { "name" => $item, "selected" => $item eq "German" }; - $lastitem = $item; } # css dir has styles that are not intended as general layouts. @@ -537,17 +539,18 @@ sub save_user { umask(007); # copy templates to the directory - opendir TEMPLATEDIR, $::lx_office_conf{paths}->{templates} or $form->error($::lx_office_conf{paths}->{templates} . " : $ERRNO"); - my @templates = grep /$form->{mastertemplates}.*?\.(html|tex|sty|odt|xml|txb)$/, + my $templatedir = "$::lx_office_conf{paths}->{templates}/mastertemplates/$form->{mastertemplates}"; + + opendir TEMPLATEDIR, $templatedir or $form->error($templatedir . " : $ERRNO"); + my @templates = grep /.*?\.(html|tex|sty|odt|xml|txb)$/, readdir TEMPLATEDIR; closedir TEMPLATEDIR; foreach my $file (@templates) { - open(TEMP, $::lx_office_conf{paths}->{templates} . "/$file") - or $form->error($::lx_office_conf{paths}->{templates} . "/$file : $ERRNO"); + open(TEMP, "<", $templatedir . "/$file") + or $form->error($templatedir . "/$file : $ERRNO"); - $file =~ s/\Q$form->{mastertemplates}\E-//; - open(NEW, ">$form->{templates}/$file") + open(NEW, ">", "$form->{templates}/$file") or $form->error("$form->{templates}/$file : $ERRNO"); while (my $line = ) { @@ -734,7 +737,8 @@ sub dbupdate { foreach my $i (@update_rows) { restore_form($saved_form); - map { $form->{$_} = $form->{"${_}_${i}"} } qw(dbname dbdriver dbhost dbport dbuser dbpasswd); + %::myconfig = (); + map { $form->{$_} = $::myconfig{$_} = $form->{"${_}_${i}"} } qw(dbname dbdriver dbhost dbport dbuser dbpasswd); print $form->parse_html_template("admin/dbupgrade_header"); @@ -767,12 +771,30 @@ sub create_dataset { } closedir SQLDIR; - my $default_charset = $main::dbcharset; + $form->{ACCOUNTING_METHODS} = []; + foreach my $item ( qw(accrual cash) ) { + push @{ $form->{ACCOUNTING_METHODS} }, { "name" => $item, + "selected" => $item eq "cash" }; + }; + + $form->{INVENTORY_SYSTEMS} = []; + foreach my $item ( qw(perpetual periodic) ) { + push @{ $form->{INVENTORY_SYSTEMS} }, { "name" => $item, + "selected" => $item eq "periodic" }; + }; + + $form->{PROFIT_DETERMINATIONS} = []; + foreach my $item ( qw(balance income) ) { + push @{ $form->{PROFIT_DETERMINATIONS} }, { "name" => $item, + "selected" => $item eq "income" }; + }; + + my $default_charset = $::lx_office_conf{system}->{dbcharset}; $default_charset ||= Common::DEFAULT_CHARSET; my $cluster_encoding = User->dbclusterencoding($form); if ($cluster_encoding && ($cluster_encoding =~ m/^(?:UTF-?8|UNICODE)$/i)) { - if ($main::dbcharset !~ m/^UTF-?8$/i) { + if ($::lx_office_conf{system}->{dbcharset} !~ m/^UTF-?8$/i) { $form->show_generic_error($locale->text('The selected PostgreSQL installation uses UTF-8 as its encoding. ' . 'Therefore you have to configure Lx-Office to use UTF-8 as well.'), 'back_button' => 1); @@ -845,8 +867,8 @@ sub backup_dataset { $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Backup Dataset'); - if ("$main::pg_dump_exe" eq "DISABLED") { - $form->error($locale->text('Database backups and restorations are disabled in lx-erp.conf.')); + if ($::lx_office_conf{applications}->{pg_dump} eq "DISABLED") { + $form->error($locale->text('Database backups and restorations are disabled in the configuration.')); } my @dbsources = sort User->dbsources($form); @@ -867,10 +889,10 @@ sub backup_dataset_start { $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Backup Dataset'); - $main::pg_dump_exe ||= "pg_dump"; + my $pg_dump_exe = $::lx_office_conf{applications}->{pg_dump} || "pg_dump"; - if ("$main::pg_dump_exe" eq "DISABLED") { - $form->error($locale->text('Database backups and restorations are disabled in lx-erp.conf.')); + if ("$pg_dump_exe" eq "DISABLED") { + $form->error($locale->text('Database backups and restorations are disabled in the configuration.')); } $form->isblank("dbname", $locale->text('The dataset name is missing.')); @@ -895,7 +917,7 @@ sub backup_dataset_start { push @args, ("-p", $form->{dbport}) if ($form->{dbport}); push @args, $form->{dbname}; - my $cmd = "$main::pg_dump_exe " . join(" ", map { s/\\/\\\\/g; s/\"/\\\"/g; $_ } @args); + my $cmd = "$pg_dump_exe " . join(" ", map { s/\\/\\\\/g; s/\"/\\\"/g; $_ } @args); my $name = "dataset_backup_$form->{dbname}_" . strftime("%Y%m%d", localtime()) . ".tar"; if ($form->{destination} ne "email") { @@ -934,7 +956,7 @@ sub backup_dataset_start { map { $mail->{$_} = $form->{$_} } qw(from to cc subject message); - $mail->{charset} = $main::dbcharset ? $main::dbcharset : Common::DEFAULT_CHARSET; + $mail->{charset} = $::lx_office_conf{system}->{dbcharset} || Common::DEFAULT_CHARSET; $mail->{attachments} = [ { "filename" => $tmp, "name" => $name } ]; $mail->send(); @@ -954,11 +976,11 @@ sub restore_dataset { $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Restore Dataset'); - if ("$main::pg_restore_exe" eq "DISABLED") { - $form->error($locale->text('Database backups and restorations are disabled in lx-erp.conf.')); + if ($::lx_office_conf{applications}->{pg_restore} eq "DISABLED") { + $form->error($locale->text('Database backups and restorations are disabled in the configuration.')); } - my $default_charset = $main::dbcharset; + my $default_charset = $::lx_office_conf{system}->{dbcharset}; $default_charset ||= Common::DEFAULT_CHARSET; $form->{DBENCODINGS} = []; @@ -979,10 +1001,10 @@ sub restore_dataset_start { $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Restore Dataset'); - $main::pg_restore_exe ||= "pg_restore"; + my $pg_restore_exe = $::lx_office_conf{applications}->{pg_restore} || "pg_restore"; - if ("$main::pg_restore_exe" eq "DISABLED") { - $form->error($locale->text('Database backups and restorations are disabled in lx-erp.conf.')); + if ("$pg_restore_exe" eq "DISABLED") { + $form->error($locale->text('Database backups and restorations are disabled in the configuration.')); } $form->isblank("new_dbname", $locale->text('The dataset name is missing.')); @@ -1068,7 +1090,7 @@ sub restore_dataset_start { push @args, ("-p", $form->{dbport}) if ($form->{dbport}); push @args, $tmp; - my $cmd = "$main::pg_restore_exe " . join(" ", map { s/\\/\\\\/g; s/\"/\\\"/g; $_ } @args); + my $cmd = "$pg_restore_exe " . join(" ", map { s/\\/\\\\/g; s/\"/\\\"/g; $_ } @args); my $in = IO::File->new("$cmd 2>&1 |"); @@ -1112,7 +1134,7 @@ sub lock_system { my $form = $main::form; my $locale = $main::locale; - open(FH, ">" . _nologin_file_name()) + open(FH, ">", _nologin_file_name()) or $form->error($locale->text('Cannot create Lock!')); close(FH);