X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FTemplate%2FLaTeX.pm;h=c6d54d5934a601488ac2e9480734d1363592ee31;hb=72585c35d48589e072325ffc46c720df080e2ca1;hp=889ed07130543b2351c0592c95fdd65b3da7bf99;hpb=0fba3edda47fca21bedb14eb88e0f5f8d983bb38;p=kivitendo-erp.git diff --git a/SL/Template/LaTeX.pm b/SL/Template/LaTeX.pm index 889ed0713..c6d54d593 100644 --- a/SL/Template/LaTeX.pm +++ b/SL/Template/LaTeX.pm @@ -1,12 +1,12 @@ package SL::Template::LaTeX; -use vars qw(@ISA); - -use SL::Template; -@ISA = qw(SL::Template::Simple); +use parent qw(SL::Template::Simple); use strict; +use Cwd; +use Unicode::Normalize qw(); + sub new { my $type = shift; @@ -58,52 +58,11 @@ sub parse_foreach { for (my $i = 0; $i < scalar(@{$ary}); $i++) { # do magic markers - $form->{"__first__"} = $i == 1; + $form->{"__first__"} = $i == 0; $form->{"__last__"} = ($i + 1) == scalar(@{$ary}); $form->{"__odd__"} = (($i + 1) % 2) == 1; $form->{"__counter__"} = $i + 1; - if ( ref $description_array eq 'ARRAY' - && scalar @{$description_array} == scalar @{$ary} - && $self->{"chars_per_line"} != 0) - { - my $lines = int(length($description_array->[$i]) / $self->{"chars_per_line"}); - my $lpp; - - $description_array->[$i] =~ s/(\\newline\s?)*$//; - $lines++ while ($description_array->[$i] =~ m/\\newline/g); - $lines++; - - if ($current_page == 1) { - $lpp = $self->{"lines_on_first_page"}; - } else { - $lpp = $self->{"lines_on_second_page"}; - } - - # Yes we need a manual page break -- or the user has forced one - if ( (($current_line + $lines) > $lpp) - || ($description_array->[$i] =~ //) - || ( ref $longdescription_array eq 'ARRAY' - && $longdescription_array->[$i] =~ //)) { - my $pb = $self->{"pagebreak_block"}; - - # replace the special variables <%sumcarriedforward%> - # and <%lastpage%> - - my $psum = $form->format_amount($self->{"myconfig"}, $sum, 2); - $pb =~ s/$self->{tag_start_qm}sumcarriedforward$self->{tag_end_qm}/$psum/g; - $pb =~ s/$self->{tag_start_qm}lastpage$self->{tag_end_qm}/$current_page/g; - - my $new_text = $self->parse_block($pb, (@indices, $i)); - return undef unless (defined($new_text)); - $new_contents .= $new_text; - - $current_page++; - $current_line = 0; - } - $current_line += $lines; - } - if ( ref $linetotal_array eq 'ARRAY' && $i < scalar(@{$linetotal_array})) { $sum += $form->parse_amount($self->{"myconfig"}, $linetotal_array->[$i]); @@ -135,7 +94,7 @@ sub find_end { my $keyword_pos = $pos - 1 + $tag_start_len; - if ((substr($text, $keyword_pos, 2) eq 'if') || (substr($text, $keyword_pos, 3) eq 'for')) { + if ((substr($text, $keyword_pos, 2) eq 'if') || (substr($text, $keyword_pos, 7) eq 'foreach')) { $depth++; } elsif ((substr($text, $keyword_pos, 4) eq 'else') && (1 == $depth)) { @@ -267,7 +226,7 @@ sub _parse_config_lines { $comment_start = '\s*%'; } elsif (ref $self eq 'SL::Template::HTML') { $comment_start = '\s*