From 58aebf4e4fa2281b7670815d4106e5efe538ce3f Mon Sep 17 00:00:00 2001 From: "R. Karuschka" Date: Thu, 16 Feb 2012 10:01:43 +0100 Subject: [PATCH] In Absprache mit Sven pagebreak und sumcarriedforward wieder hergestellt, allerdings in der Upgrade-Doku als "deprecated" beschrieben. Diese Aktion ist einzig dazu gedacht die Leute beim upgrade weich fallen zu lassen, da diese Funktionen bislang als "Standard" galten und sogar in den Vorlagen propagiert wurden. nach dem Release soll die Funktion endgueltig raus. Bugs zu pagebreak, sumcarriedforward etc werden kuenftig abgelehnt, unsupported feature. --- SL/Template/LaTeX.pm | 55 ++++++++++++++++++++++++++++++++++++++++++++ doc/UPGRADE | 11 +++++---- 2 files changed, 61 insertions(+), 5 deletions(-) diff --git a/SL/Template/LaTeX.pm b/SL/Template/LaTeX.pm index c6d54d593..a862431d8 100644 --- a/SL/Template/LaTeX.pm +++ b/SL/Template/LaTeX.pm @@ -63,6 +63,49 @@ sub parse_foreach { $form->{"__odd__"} = (($i + 1) % 2) == 1; $form->{"__counter__"} = $i + 1; + #everything from here to the next marker should be removed after the release of 2.7.0 + 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; + } + #stop removing code here. + if ( ref $linetotal_array eq 'ARRAY' && $i < scalar(@{$linetotal_array})) { $sum += $form->parse_amount($self->{"myconfig"}, $linetotal_array->[$i]); @@ -295,6 +338,18 @@ sub parse { my $contents = join("", @lines); + # detect pagebreak block and its parameters + if ($contents =~ /$self->{tag_start_qm}pagebreak\s+(\d+)\s+(\d+)\s+(\d+)\s*$self->{tag_end_qm}(.*?)$self->{tag_start_qm}end(\s*pagebreak)?$self->{tag_end_qm}/s) { + $self->{"chars_per_line"} = $1; + $self->{"lines_on_first_page"} = $2; + $self->{"lines_on_second_page"} = $3; + $self->{"pagebreak_block"} = $4; + + substr($contents, length($`), length($&)) = ""; + } + + $self->{"forced_pagebreaks"} = []; + my $new_contents = $self->parse_block($contents); if (!defined($new_contents)) { $main::lxdebug->leave_sub(); diff --git a/doc/UPGRADE b/doc/UPGRADE index 192e0cb33..2208fd89f 100644 --- a/doc/UPGRADE +++ b/doc/UPGRADE @@ -13,11 +13,12 @@ Upgrade auf v2.7.0 * Das Lizenzenfeature wurde ersatzlos entfernt. -* In den LaTeX Vorlagen wurde der Befehl "pagebreak" und die dazugehörigen - "sumcarriedforward" und "lastpage" entfernt. Alle Vorlagen die auf diesen - Informationen basieren müssen überarbeitet werden. Die Standardvorlagen sind - entsprechend angepasst worden, und müssen in der Administration neu angelegt - werden. +* In den LaTeX Vorlagen wird der Befehl "pagebreak" und die dazugehörigen + "sumcarriedforward" und "lastpage" nicht mehr offiziell unterstuetzt. Diese + Methoden gelten als "deprecated" und werden in der naechsten Version gaenzlich + entfernt. Sie sollten bereitss jetzt nicht mehr verwendet werden da sie mehrere + Fehler beinhalten. Die Standardvorlagen sind entsprechend angepasst worden + und müssen in der Administration neu angelegt werden. * Das Druckvorlagensystem wurde umgestellt, dadurch ist der Name "print" für Druckvorlagen jetzt reserviert. Wenn eine Ihrer Vorlagensätze "print" heisst, -- 2.20.1