X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FTemplate.pm;h=99ca0f8bfb4c04aaa5959b54059e263776bf0f2b;hb=96627c4383425906651c53d19e73ef0204e013e7;hp=c273d8f2d720d14e68ff463418e1ecc82d53bedf;hpb=5a545036cdd7a0a4d9e65eb042db75c09a06aba5;p=kivitendo-erp.git diff --git a/SL/Template.pm b/SL/Template.pm index c273d8f2d..99ca0f8bf 100644 --- a/SL/Template.pm +++ b/SL/Template.pm @@ -79,13 +79,20 @@ sub uses_temp_file { return 0; } -sub _get_loop_variable_value { - my $self = shift; - my $var = shift; - my @indices = @_; +sub _get_loop_variable { + my $self = shift; + my $var = shift; + my $get_array = shift; + my @indices = @_; - my $form = $self->{form}; - my $value = $self->{form}->{$var}; + my $form = $self->{form}; + my $value; + + if (($get_array || @indices) && (ref $form->{TEMPLATE_ARRAYS} eq 'HASH') && (ref $form->{TEMPLATE_ARRAYS}->{$var} eq 'ARRAY')) { + $value = $form->{TEMPLATE_ARRAYS}->{$var}; + } else { + $value = $form->{$var}; + } for (my $i = 0; $i < scalar(@indices); $i++) { last unless (ref($value) eq "ARRAY"); @@ -104,7 +111,7 @@ sub substitute_vars { my ($tag_pos, $tag_len) = ($-[0], $+[0] - $-[0]); my ($var, @options) = split(/\s+/, $1); - my $value = $self->_get_loop_variable_value($var, @indices); + my $value = $self->_get_loop_variable($var, 0, @indices); $value = $self->format_string($value) unless (grep(/^NOESCAPE$/, @options)); substr($text, $tag_pos, $tag_len, $value); @@ -160,11 +167,7 @@ sub parse_foreach { my ($form, $new_contents) = ($self->{"form"}, ""); - my $ary = $form->{$var}; - for (my $i = 0; $i < scalar(@indices); $i++) { - last unless (ref($ary) eq "ARRAY"); - $ary = $ary->[$indices[$i]]; - } + my $ary = $self->_get_loop_variable($var, 1, @indices); my $sum = 0; my $current_page = 1; @@ -220,9 +223,9 @@ sub parse_foreach { $sum += $form->parse_amount($self->{"myconfig"}, $form->{"linetotal"}->[$i]); } - + $form->{"cumulatelinetotal"}[$i] = $form->format_amount($self->{"myconfig"}, $sum, 2); - + my $new_text = $self->parse_block($text, (@indices, $i)); return undef unless (defined($new_text)); $new_contents .= $start_tag . $new_text . $end_tag; @@ -347,7 +350,11 @@ sub parse_block { return undef; } - my $value = $self->{"form"}->{$var}; + my $form = $self->{form}; + $form = $form->{TEMPLATE_ARRAYS} if @indices + && ref $form->{TEMPLATE_ARRAYS} eq 'HASH' + && ref $form->{TEMPLATE_ARRAYS}->{$var} eq 'ARRAY'; + my $value = $form->{$var}; for (my $i = 0; $i < scalar(@indices); $i++) { last unless (ref($value) eq "ARRAY"); $value = $value->[$indices[$i]]; @@ -516,8 +523,10 @@ sub convert_to_postscript { $form->{tmpfile} =~ s/\Q$userspath\E\///g; + my $latex = $self->_get_latex_path(); + for (my $run = 1; $run <= 2; $run++) { - system("latex --interaction=nonstopmode $form->{tmpfile} " . + system("${latex} --interaction=nonstopmode $form->{tmpfile} " . "> $form->{tmpfile}.err"); if ($?) { $self->{"error"} = $form->cleanup(); @@ -555,8 +564,10 @@ sub convert_to_pdf { $form->{tmpfile} =~ s/\Q$userspath\E\///g; + my $latex = $self->_get_latex_path(); + for (my $run = 1; $run <= 2; $run++) { - system("pdflatex --interaction=nonstopmode $form->{tmpfile} " . + system("${latex} --interaction=nonstopmode $form->{tmpfile} " . "> $form->{tmpfile}.err"); if ($?) { $self->{"error"} = $form->cleanup(); @@ -570,6 +581,10 @@ sub convert_to_pdf { $self->cleanup(); } +sub _get_latex_path { + return $main::latex_bin || 'pdflatex'; +} + sub get_mime_type() { my ($self) = @_; @@ -786,11 +801,7 @@ sub parse_foreach { my ($form, $new_contents) = ($self->{"form"}, ""); - my $ary = $form->{$var}; - for (my $i = 0; $i < scalar(@indices); $i++) { - last unless (ref($ary) eq "ARRAY"); - $ary = $ary->[$indices[$i]]; - } + my $ary = $self->_get_loop_variable($var, 1, @indices); for (my $i = 0; $i < scalar(@{$ary}); $i++) { $form->{"__first__"} = $i == 0; @@ -1366,7 +1377,7 @@ sub uses_temp_file { #### ########################################################## -package XMLTemplate; +package XMLTemplate; use vars qw(@ISA);