#======================================================================
use DBI;
-use CGI;
+use Encode;
use English qw(-no_match_vars);
use Fcntl;
use File::Copy;
+use File::Find;
+use File::Spec;
+use Cwd;
use IO::File;
use POSIX qw(strftime);
use Sys::Hostname;
use strict;
+# parserhappy(R):
+
+# $locale->text('periodic')
+# $locale->text('income')
+# $locale->text('perpetual')
+# $locale->text('balance')
+
our $cgi;
our $form;
our $locale;
$::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}) != $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();
}
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();
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|print|\.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}/print" or $form->error("$::lx_office_conf{paths}->{templates}/print" . " : $ERRNO");
+ my @allmaster = readdir(TEMPLATEDIR);
+ closedir TEMPLATEDIR;
+
+ @allmaster = sort grep { -d ("$::lx_office_conf{paths}->{templates}/print" . "/$_") && !/^\.\.?$/ } @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.
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)$/,
- 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");
-
- $file =~ s/\Q$form->{mastertemplates}\E-//;
- open(NEW, ">$form->{templates}/$file")
- or $form->error("$form->{templates}/$file : $ERRNO");
-
- while (my $line = <TEMP>) {
- print NEW $line;
- }
- close(TEMP);
- close(NEW);
+
+ my $oldcurrdir = getcwd();
+ if (!chdir("$::lx_office_conf{paths}->{templates}/print/$form->{mastertemplates}")) {
+ $form->error("$ERRNO: chdir $::lx_office_conf{paths}->{templates}/print/$form->{mastertemplates}");
}
+
+ my $newdir = File::Spec->catdir($oldcurrdir, $form->{templates});
+
+ find(
+ sub
+ {
+ next if ($_ eq ".");
+
+ if (-d $_) {
+ if (!mkdir (File::Spec->catdir($newdir, $File::Find::name))) {
+ chdir($oldcurrdir);
+ $form->error("$ERRNO: mkdir $File::Find::name");
+ }
+ } elsif (-l $_) {
+ if (!symlink (readlink($_),
+ File::Spec->catfile($newdir, $File::Find::name))) {
+ chdir($oldcurrdir);
+ $form->error("$ERRNO: symlink $File::Find::name");
+ }
+ } elsif (-f $_) {
+ if (!copy($_, File::Spec->catfile($newdir, $File::Find::name))) {
+ chdir($oldcurrdir);
+ $form->error("$ERRNO: cp $File::Find::name");
+ }
+ }
+ }, "./");
+
+ chdir($oldcurrdir);
+
} else {
$form->error("$ERRNO: $form->{templates}");
}
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");
}
closedir SQLDIR;
+ $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 $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);