Template Metadaten und default.tex Weiterleitung auch für Mahnungen.
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 3 Feb 2012 17:50:45 +0000 (18:50 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Fri, 3 Feb 2012 17:50:45 +0000 (18:50 +0100)
SL/DN.pm

index 797588a..a1db029 100644 (file)
--- a/SL/DN.pm
+++ b/SL/DN.pm
@@ -41,6 +41,8 @@ use SL::IS;
 use SL::Mailer;
 use SL::MoreCommon;
 use SL::Template;
+use SL::DB::Printer;
+use SL::DB::Language;
 
 use strict;
 
@@ -403,15 +405,54 @@ sub set_template_options {
     $form->{printer_code} = "_" . $form->{printer_code};
   }
 
-  $form->{IN}  = "$form->{formname}$form->{language}$form->{printer_code}.html";
-  $form->{pdf} = 1;
+  my $extension = 'html';
+  if ($form->{format} eq 'postscript') {
+    $form->{postscript}   = 1;
+    $extension            = 'tex';
 
-  if ($form->{"format"} =~ /opendocument/) {
-    $form->{IN} =~ s/html$/odt/;
-  } else {
-    $form->{IN} =~ s/html$/tex/;
+  } elsif ($form->{"format"} =~ /pdf/) {
+    $form->{pdf}          = 1;
+    $extension            = $form->{'format'} =~ m/opendocument/i ? 'odt' : 'tex';
+
+  } elsif ($form->{"format"} =~ /opendocument/) {
+    $form->{opendocument} = 1;
+    $extension            = 'odt';
+  } elsif ($form->{"format"} =~ /excel/) {
+    $form->{excel} = 1;
+    $extension            = 'xls';
+  }
+
+
+  # search for the template
+  my @template_files;
+  push @template_files, "$form->{formname}_email$form->{language}$form->{printer_code}.$extension" if $form->{media} eq 'email';
+  push @template_files, "$form->{formname}$form->{language}$form->{printer_code}.$extension";
+  push @template_files, "$form->{formname}.$extension";
+  push @template_files, "default.$extension";
+
+  $form->{IN} = undef;
+  for my $filename (@template_files) {
+    if (-f "$form->{templates}/$filename") {
+      $form->{IN} = $filename;
+      last;
+    }
   }
 
+  if (!defined $form->{IN}) {
+    $::form->error($::locale->text('Cannot find matching template for this print request. Please contact your template maintainer. I tried these: #1.', join ', ', map { "'$_'"} @template_files));
+  }
+
+  # prepare meta information for template introspection
+  $form->{template_meta} = {
+    formname  => $form->{formname},
+    language  => SL::DB::Manager::Language->find_by_or_create(id => $form->{language_id}),
+    format    => $form->{format},
+    media     => $form->{media},
+    extension => $extension,
+    printer   => SL::DB::Manager::Printer->find_by_or_create(id => $form->{printer_id}),
+    today     => DateTime->today,
+  };
+
   $main::lxdebug->leave_sub();
 }