X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FTemplate.pm;h=e4e940ba2d2370b005cb03321f58d89eeb3e757a;hb=15d5b55d84399cc17b24c7800a5faeeb02a665bf;hp=6c26b4e5134c6805156423211164e193677efde2;hpb=6744758dc61f5005930b1034c7406641d953f2d4;p=kivitendo-erp.git diff --git a/SL/Template.pm b/SL/Template.pm index 6c26b4e51..e4e940ba2 100644 --- a/SL/Template.pm +++ b/SL/Template.pm @@ -91,7 +91,7 @@ sub format_string { '', '&', quotemeta("\n"), '"', '\$', '%', '_', '#', quotemeta('^'), - '{', '}', '<', '>', '£', "\r" + '{', '}', '<', '>', '£', "\r", '±', '\xe1', ], quotemeta("\\") => '\\textbackslash ', '' => '', @@ -107,6 +107,8 @@ sub format_string { '>' => '$>$', '£' => '\pounds ', "\r" => "", + '±' => '$\pm$', + '\xe1' => '$\bullet$', quotemeta('^') => '\^\\', quotemeta("\n") => '\newline ' ); @@ -124,6 +126,8 @@ sub format_string { $variable =~ s/\$\<\$${key}\$\>\$(.*?)\$<\$\/${key}\$>\$/\\${new}\{$1\}/gi; } + $variable =~ s/[\x00-\x1f]//g; + return $variable; } @@ -196,7 +200,7 @@ sub parse_foreach { # replace the special variables <%sumcarriedforward%> # and <%lastpage%> - my $psum = $form->format_amount($myconfig, $sum, 2); + my $psum = $form->format_amount($self->{"myconfig"}, $sum, 2); $pb =~ s/<%sumcarriedforward%>/$psum/g; $pb =~ s/<%lastpage%>/$current_page/g; @@ -210,9 +214,12 @@ sub parse_foreach { $current_line += $lines; } if ($i < scalar(@{$form->{"linetotal"}})) { - $sum += $form->parse_amount($myconfig, $form->{"linetotal"}->[$i]); + $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; @@ -357,10 +364,6 @@ sub parse { local *OUT = $_[1]; my $form = $self->{"form"}; - # Do we have to run LaTeX two times? This is needed if - # the template contains page references. - my $two_passes = 0; - if (!open(IN, "$form->{templates}/$form->{IN}")) { $self->{"error"} = "$!"; return 0; @@ -369,7 +372,6 @@ sub parse { close(IN); my $contents = join("", @_); - $two_passes = 1 if ($contents =~ /\\pageref/s); # detect pagebreak block and its parameters if ($contents =~ /<%pagebreak\s+(\d+)\s+(\d+)\s+(\d+)\s*%>(.*?)<%end(\s*pagebreak)?%>/s) { @@ -392,16 +394,16 @@ sub parse { print(OUT $new_contents); if ($form->{"format"} =~ /postscript/i) { - return $self->convert_to_postscript($two_passes); + return $self->convert_to_postscript(); } elsif ($form->{"format"} =~ /pdf/i) { - return $self->convert_to_pdf($two_passes); + return $self->convert_to_pdf(); } else { return 1; } } sub convert_to_postscript { - my ($self, $two_passes) = @_; + my ($self) = @_; my ($form, $userspath) = ($self->{"form"}, $self->{"userspath"}); # Convert the tex file to postscript @@ -414,14 +416,7 @@ sub convert_to_postscript { $form->{tmpfile} =~ s/$userspath\///g; - system("latex --interaction=nonstopmode $form->{tmpfile} " . - "> $form->{tmpfile}.err"); - if ($?) { - $self->{"error"} = $form->cleanup(); - $self->cleanup(); - return 0; - } - if ($two_passes) { + for (my $run = 1; $run <= 2; $run++) { system("latex --interaction=nonstopmode $form->{tmpfile} " . "> $form->{tmpfile}.err"); if ($?) { @@ -447,7 +442,7 @@ sub convert_to_postscript { } sub convert_to_pdf { - my ($self, $two_passes) = @_; + my ($self) = @_; my ($form, $userspath) = ($self->{"form"}, $self->{"userspath"}); # Convert the tex file to PDF @@ -460,15 +455,7 @@ sub convert_to_pdf { $form->{tmpfile} =~ s/$userspath\///g; - system("pdflatex --interaction=nonstopmode $form->{tmpfile} " . - "> $form->{tmpfile}.err"); - if ($?) { - $self->{"error"} = $form->cleanup(); - $self->cleanup(); - return 0; - } - - if ($two_passes) { + for (my $run = 1; $run <= 2; $run++) { system("pdflatex --interaction=nonstopmode $form->{tmpfile} " . "> $form->{tmpfile}.err"); if ($?) { @@ -630,7 +617,7 @@ sub convert_to_pdf { #### -#### HTMLTemplate +#### OpenDocumentTemplate #### package OpenDocumentTemplate; @@ -1278,4 +1265,64 @@ sub uses_temp_file { return 1; } + +########################################################## +#### +#### XMLTemplate +#### +########################################################## + +package XMLTemplate; + +use vars qw(@ISA); + +@ISA = qw(HTMLTemplate); + +sub new { + #evtl auskommentieren + my $type = shift; + + return $type->SUPER::new(@_); +} + +sub format_string { + my ($self, $variable) = @_; + my $form = $self->{"form"}; + + my %replace = + ('order' => ['<', '>', quotemeta("\n")], + '<' => '<', + '>' => '>', + quotemeta("\n") => '
', + ); + + map({ $variable =~ s/$_/$replace{$_}/g; } @{ $replace{"order"} }); + + # Allow no markup to be converted into the output format + my @markup_replace = ('b', 'i', 's', 'u', 'sub', 'sup'); + + foreach my $key (@markup_replace) { + $variable =~ s/\<(\/?)${key}\>//g; + } + + return $variable; +} + +sub get_mime_type() { + my ($self) = @_; + + if ($self->{"form"}->{"format"} =~ /elsterwinston/i) { + return "application/xml "; + } elsif ($self->{"form"}->{"format"} =~ /elstertaxbird/i) { + return "application/x-taxbird"; + } else { + return "text"; + } +} + +sub uses_temp_file { + # tempfile needet for XML Output + return 1; +} + 1;