X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/54e4131e091831e00a861fe2c4f53e344b87ddca..5563e1162d014b09d591fd68e5317ebbb2212148:/SL/Form.pm diff --git a/SL/Form.pm b/SL/Form.pm index 1faec58a1..d21e3f87c 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -143,8 +143,6 @@ sub new { my %parameters = _request_to_hash($_); map({ $self->{$_} = $parameters{$_}; } keys(%parameters)); - $self->{menubar} = 1 if $self->{path} =~ /lynx/i; - $self->{action} = lc $self->{action}; $self->{action} =~ s/( |-|,|\#)/_/g; @@ -492,22 +490,14 @@ sub parse_html_template { $additional_params->{"conf_latex_templates"} = $main::latex; $additional_params->{"conf_opendocument_templates"} = $main::opendocument_templates; - my $menu; - if (-f $self->{"login"} . "_menu.ini") { - $menu = Menu->new($self->{"login"} . "_menu.ini"); - } else { - $menu = Menu->new("menu.ini"); - } - $menu->generate_acl("", $additional_params); - my @additional_param_names = keys(%{$additional_params}); foreach my $key ($template->param()) { - if (grep(/^${key}$/, @additional_param_names)) { - $template->param($key => $additional_params->{$key}); - } else { - $template->param($key => $self->{$key}); - } + my $param = $self->{$key}; + $param = $additional_params->{$key} if (grep(/^${key}$/, @additional_param_names)); + $param = [] if (($template->query("name" => $key) eq "LOOP") && (ref($param) ne "ARRAY")); + $template->param($key => $param); } + my $output = $template->output(); $main::lxdebug->leave_sub(); @@ -516,12 +506,23 @@ sub parse_html_template { } sub show_generic_error { - my ($self, $error, $title) = @_; + my ($self, $error, $title, $action) = @_; my $add_params = {}; $add_params->{"title"} = $title if ($title); $self->{"label_error"} = $error; + my @vars; + if ($action) { + map({ delete($self->{$_}); } qw(action)); + map({ push(@vars, { "name" => $_, "value" => $self->{$_} }) + if (!ref($self->{$_})); } + keys(%{$self})); + $add_params->{"SHOW_BUTTON"} = 1; + $add_params->{"BUTTON_LABEL"} = $action; + } + $add_params->{"VARIABLES"} = \@vars; + $self->header(); print($self->parse_html_template("generic/error", $add_params)); @@ -629,78 +630,33 @@ sub sort_columns { return @columns; } - +# sub format_amount { $main::lxdebug->enter_sub(2); my ($self, $myconfig, $amount, $places, $dash) = @_; + my $neg = ($amount =~ s/-//); - #Workaround for $format_amount calls without $places - if (!defined $places) { - (my $dec) = ($amount =~ /\.(\d+)/); - $places = length $dec; - } + $amount = $self->round_amount($amount, $places) if ($places =~ /\d/); - if ($places =~ /\d/) { - $amount = $self->round_amount($amount, $places); - } + my @d = map { s/\d//g; reverse split // } my $tmp = $myconfig->{numberformat}; # get delim chars + my @p = split /\./, $amount ; # split amount at decimal point - # is the amount negative - my $negative = ($amount < 0); - my $fillup = ""; - - if ($amount != 0) { - if ($myconfig->{numberformat} && ($myconfig->{numberformat} ne '1000.00')) - { - my ($whole, $dec) = split /\./, "$amount"; - $whole =~ s/-//; - $amount = join '', reverse split //, $whole; - $fillup = "0" x ($places - length($dec)); - - if ($myconfig->{numberformat} eq '1,000.00') { - $amount =~ s/\d{3,}?/$&,/g; - $amount =~ s/,$//; - $amount = join '', reverse split //, $amount; - $amount .= "\.$dec" . $fillup if ($places ne '' && $places * 1 != 0); - } - - if ($myconfig->{numberformat} eq '1.000,00') { - $amount =~ s/\d{3,}?/$&./g; - $amount =~ s/\.$//; - $amount = join '', reverse split //, $amount; - $amount .= ",$dec" . $fillup if ($places ne '' && $places * 1 != 0); - } - - if ($myconfig->{numberformat} eq '1000,00') { - $amount = "$whole"; - $amount .= ",$dec" . $fillup if ($places ne '' && $places * 1 != 0); - } - - if ($dash =~ /-/) { - $amount = ($negative) ? "($amount)" : "$amount"; - } elsif ($dash =~ /DRCR/) { - $amount = ($negative) ? "$amount DR" : "$amount CR"; - } else { - $amount = ($negative) ? "-$amount" : "$amount"; - } - } - } else { - if ($dash eq "0" && $places) { - if ($myconfig->{numberformat} eq '1.000,00') { - $amount = "0" . "," . "0" x $places; - } else { - $amount = "0" . "." . "0" x $places; - } - } else { - $amount = ($dash ne "") ? "$dash" : "0"; - } - } + $p[0] =~ s/\B(?=(...)*$)/$d[1]/g if $d[1]; # add 1,000 delimiters + $amount = $p[0]; + $amount .= $d[0].$p[1].(0 x ($places - length $p[1])) if ($places || $p[1] ne ''); + + $amount = do { + ($dash =~ /-/) ? ($neg ? "($amount)" : "$amount" ) : + ($dash =~ /DRCR/) ? ($neg ? "$amount DR" : "$amount CR" ) : + ($neg ? "-$amount" : "$amount" ) ; + }; + $main::lxdebug->leave_sub(2); - return $amount; } - +# sub parse_amount { $main::lxdebug->enter_sub(2);