In Absprache mit Sven pagebreak und sumcarriedforward wieder hergestellt, allerdings...
authorR. Karuschka <r.karuschka@ok-it-services.de>
Thu, 16 Feb 2012 09:01:43 +0000 (10:01 +0100)
committerR. Karuschka <r.karuschka@ok-it-services.de>
Thu, 16 Feb 2012 09:01:43 +0000 (10:01 +0100)
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
doc/UPGRADE

index c6d54d5..a862431 100644 (file)
@@ -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]     =~ /<pagebreak>/)
+          || (   ref $longdescription_array eq 'ARRAY'
+              && $longdescription_array->[$i] =~ /<pagebreak>/)) {
+        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();
index 192e0cb..2208fd8 100644 (file)
@@ -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,