From: Sven Schöling
Date: Fri, 30 Dec 2011 16:29:09 +0000 (+0100)
Subject: Vorlagendefault und Vorlagenmetadaten. Siehe Dokumentation.
X-Git-Tag: release-2.7.0beta1~110
X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=64084bfa6ba2c9167ff4a5;p=kivitendo-erp.git
Vorlagendefault und Vorlagenmetadaten. Siehe Dokumentation.
---
diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl
index 940fec968..0e10b2212 100644
--- a/bin/mozilla/io.pl
+++ b/bin/mozilla/io.pl
@@ -46,6 +46,9 @@ use SL::CT;
use SL::IC;
use SL::IO;
+use SL::DB::Language;
+use SL::DB::Printer;
+
require "bin/mozilla/common.pl";
use strict;
@@ -1473,9 +1476,24 @@ sub print_form {
$extension = 'xls';
}
- my $email_extension = (($form->{media} eq 'email') && (-f "$myconfig{templates}/$form->{formname}_email$form->{language}${printer_code}.${extension}")) ? '_email' : '';
+ # search for the template
+ my @template_files;
+ push @template_files, "$form->{formname}_email$form->{language}$printer_code.$extension" if $form->{media} eq 'email';
+ push @template_files, "$form->{formname}$form->{language}$printer_code.$extension";
+ push @template_files, "$form->{formname}.$extension";
+ push @template_files, "default.$extension";
- $form->{IN} = "$form->{formname}${email_extension}$form->{language}${printer_code}.${extension}";
+ $form->{IN} = undef;
+ for my $filename (@template_files) {
+ if (-f "$myconfig{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));
+ }
delete $form->{OUT};
@@ -1540,6 +1558,16 @@ sub print_form {
}
# /saving the history
+ # 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}),
+ };
+
$form->parse_template(\%myconfig);
$form->{callback} = "";
diff --git a/doc/dokumentenvorlagen-und-variablen.html b/doc/dokumentenvorlagen-und-variablen.html
index 91e245da8..f1eaa328b 100644
--- a/doc/dokumentenvorlagen-und-variablen.html
+++ b/doc/dokumentenvorlagen-und-variablen.html
@@ -331,6 +331,21 @@ td {
+ Zusätzlich werden angeforderte Sprache und Druckerkürzel in den Dateinamen mit eingearbeitet. So wird aus der Vorlage sales_order.ext
bei Sprache de
und Druckerkürzel lpr2
der Vorlagenname sales_order_de_lpr2.ext
. Zusätzlich können für E-Mails andere Vorlagen erstellt werden, diese bekommen dann noch das Kürzel _email
, der vollständige Vorlagenname wäre dann sales_order_email_de_lpr2.ext
. In allen Fällen kann eine Standarddatei default.ext
hinterlegt werden. Diese wird verwendet, wenn keine der anderen Varianten gefunden wird.
+
+ Die vollständige Suchreihenfolge für einen Verkaufsauftrag mit der Sprache "de" und dem Drucker "lpr2", der per E-Mail im Format PDF verschickt wird, ist:
+
+
+ Reihenfolge der möglichen Vorlagennamen |
+ sales_order_email_de_lpr2.tex |
+ sales_order_de_lpr2.tex |
+ sales_order.tex |
+ default.tex |
+
+
+
+ Die kurzen Varianten dieser Vorlagentitel müssen dann entweder Standardwerte anzeigen, oder die angeforderten Werte selbst auswerten, siehe dazu Metadaten in Vorlagen
+
zum Inhaltsverzeichnis
@@ -338,6 +353,57 @@ td {
+
+
+ Diese Variablen liefern Informationen darüber welche Variante einer Vorlage der Benutzer angefragt hat. Sie sind nützlich für Vorlagenautoren, die aus einer zentralen Layoutvorlage die einzelnen Formulare einbinden möchten.
+
+
+
+ Variablenname | Bedeutung |
+
+ template_meta.formname |
+ Basisname der Vorlage. Identisch mit der Zurordnung zu den Dateinamen ohne die Erweiterung. Ein Verkaufsauftrag enthält hier sales_order . |
+
+
+ template_meta.language.description |
+ Beschreibung der verwendeten Sprache |
+
+
+ template_meta.language.template_code |
+ Vorlagenürzel der verwendeten Sprache, identisch mit dem Kürzel das im Dateinamen verwendetet wird. |
+
+
+ template_meta.language.output_numberformat |
+ Zahlenformat der verwendeten Sprache in der Form "1.000,00". Experimentell!. Nur interessant für Vorlagen die mit unformatierten Werten arbeiten. |
+
+
+ template_meta.language.output_dateformat |
+ Datumsformat der verwendeten Sprache in der Form "dd.mm.yyy". Experimentell!. Nur interessant für Vorlagen die mit unformatierten Werten arbeiten. |
+
+
+ template_meta.format |
+ Das angeforderte Format. Kann im Moment die Werte pdf , postscript , html , opendocument , opendocument_pdf und excel enthalten. |
+
+
+ template_meta.extension |
+ Dateierweiterung, wie im Dateinamen. Wird aus format entschieden. |
+
+
+ template_meta.media |
+ Ausgabemedium. Kann zur Zeit die Werte screen für Bildschirm, printer für Drucker, und queue für Warteschlange enthalten. |
+
+
+ template_meta.printer.description |
+ Beschreibung des ausgewählten Druckers |
+
+
+ template_meta.printer.template_code |
+ Vorlagenürzel des ausgewählten Druckers, identisch mit dem Kürzel das im Dateinamen verwendetet wird. |
+
+
+
+
diff --git a/locale/de/all b/locale/de/all
index b8c8999b9..924d211f5 100644
--- a/locale/de/all
+++ b/locale/de/all
@@ -347,6 +347,7 @@ $self->{texts} = {
'Cannot delete quotation!' => 'Angebot kann nicht gelöscht werden!',
'Cannot delete transaction!' => 'Buchung kann nicht gelöscht werden!',
'Cannot delete vendor!' => 'Lieferant kann nicht gelöscht werden!',
+ 'Cannot find matching template for this print request. Please contact your template maintainer. I tried these: #1.' => '',
'Cannot have a value in both Debit and Credit!' => 'Es kann nicht gleichzeitig Soll und Haben gebucht werden!',
'Cannot post Payment!' => 'Zahlung kann nicht gebucht werden!',
'Cannot post Receipt!' => 'Beleg kann nicht gebucht werden!',
@@ -2197,7 +2198,6 @@ $self->{texts} = {
'month' => 'Monatliche Abgabe',
'monthly' => 'monatlich',
'new Window' => 'neues Fenster',
- 'next' => 'Nächste',
'no' => 'nein',
'no bestbefore' => 'keine Mindesthaltbarkeit',
'no chargenumber' => 'keine Chargennummer',
@@ -2221,7 +2221,6 @@ $self->{texts} = {
'pos_eur' => 'E/ÃR',
'pos_ustva' => 'UStVA',
'posted!' => 'gebucht',
- 'prev' => 'Vorherige',
'print' => 'drucken',
'proforma' => 'Proforma',
'project_list' => 'projektliste',