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=64084bfa6ba2c9167ff4a50683606e57fec62167;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 {

Allgemeine Variablen, die in allen Vorlagen vorhanden sind

+

+ Metainformationen zur angeforderten Vorlage:

+ +

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.

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VariablennameBedeutung
template_meta.formnameBasisname der Vorlage. Identisch mit der Zurordnung zu den Dateinamen ohne die Erweiterung. Ein Verkaufsauftrag enthält hier sales_order.
template_meta.language.descriptionBeschreibung der verwendeten Sprache
template_meta.language.template_codeVorlagenürzel der verwendeten Sprache, identisch mit dem Kürzel das im Dateinamen verwendetet wird.
template_meta.language.output_numberformatZahlenformat der verwendeten Sprache in der Form "1.000,00". Experimentell!. Nur interessant für Vorlagen die mit unformatierten Werten arbeiten.
template_meta.language.output_dateformatDatumsformat der verwendeten Sprache in der Form "dd.mm.yyy". Experimentell!. Nur interessant für Vorlagen die mit unformatierten Werten arbeiten.
template_meta.formatDas angeforderte Format. Kann im Moment die Werte pdf, postscript, html, opendocument, opendocument_pdf und excel enthalten.
template_meta.extensionDateierweiterung, wie im Dateinamen. Wird aus format entschieden.
template_meta.mediaAusgabemedium. Kann zur Zeit die Werte screen für Bildschirm, printer für Drucker, und queue für Warteschlange enthalten.
template_meta.printer.descriptionBeschreibung des ausgewählten Druckers
template_meta.printer.template_codeVorlagenürzel des ausgewählten Druckers, identisch mit dem Kürzel das im Dateinamen verwendetet wird.
+

+

Stammdaten von Kunden und Lieferanten:

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',