Personal tools

Log in

Changes

From Limbas Wiki

Jump to: navigation, search

Html-Templates

2,005 bytes added, 2 years ago
no edit summary
<!--T:3-->
Für Newsletter=Einleitung=Die Limbas Formular-/Bericht-Editoren sind eine gute Möglichkeit, Anschreiben, etc. ist es notwendig, Dateninhalte wie Anrede Formulare oder Name direkt in den Fließtext Berichte per Drag&Drop pixel-genau zu integrierenentwerfen. Bisher mussten die einzelnen Bausteine dafür in PHP-Elementen von Hand zusammengesetzt werdenEinzelne Elemente wie bspw. Seit Version 3.6 ist dies in Limbas komfortabel Fließtext oder Dateninhalte sind dabei jedoch voneinander getrennt und ließen sich bisher nur vom Administrator mit dem WysiwygPhp-Editor möglichSkripten miteinander kombinieren.
<!Für Newsletter, Anschreiben, Rechnungen etc. ist es jedoch oft notwendig, Dateninhalte wie Kunden-Namen oder Preise direkt in den Fließtext zu integrieren. Seit Version 3.6 ist dies durch die neue Html-T:4Template-Engine in Limbas komfortabel und nutzerfreundlich mit dem Wysiwyg-Editor möglich. =Funktionsweise=In das neue Template-Element im Formular-/Berichts-Editor kann normaler Text geschrieben werden, aber auch direkt Html. Die Besonderheit im Vergleich zum Textblock-Element ist, dass das Template-Element verschiedene Platzhalter im Text erkennt, welche von der Template->Engine für den Nutzer automatisch ersetzt werden. So können beispielsweise Dateninhalte eingebunden werden. Voraussetzungen Oft werden manche Texte, wie bspw. Firmendaten, in mehreren Berichten benutzt und sollen nicht in jedem Bericht erneut eingegeben werden. Die Template-Engine erlaubt dafür sind* eine einen modularen Aufbau der Formulare/Berichte: Textbausteine können in einer eigenen Tabelle des [[Tabellen#Tabellen-Einstellungen|Typs]] '''Berichtsvorlagen''' definiert werden und* ein Bericht mit einem Unter-Template-Element-Platzhalter in andere Template-Elemente eingebunden werden. Die Tabelle muss beim Erstellen des Formats '''tcpdf'''Template-Elements ausgewählt werden.
<!--T:5-->
Im Berichtseditor kann dann das Element '''HTML Template''' nach Auswahl der Berichtsvorlagen=Platzhalter-Tabelle eingefügt werden. In dieses Element kann reguläres HTML eingetragen werden, jedoch unterstützt das Element eine spezielle Syntax, die es erlaubt, andere Berichtsvorlagen, Dateninhalte =Platzhalter sind an dem $-Zeichen und Funktionsergebnisse in den Text zu inkludierengeschweiften Klammern erkennbar. In den Berichtsvorlagen kann die selbe Syntax verwendet werden:* ==Unter-Template-Element==<code>${''Einleitung''}</code>:  Anstelle dieses Platzhalters wird beispielsweise die Berichtsvorlage mit dem Namen ''Einleitung'' eingefügt. Der Name einer Berichtsvorlage muss eindeutig sein. Die Berichtsvorlagen-Tabelle kann aber auch so gefiltert werden (bspw. nach Sprache des angemeldeten Nutzers), dass der Name bei der Auswertung eindeutig ist.* ==Dateninhalt==<code>${->''Name''}</code>:  Erkennbar an dem Pfeil (->). Hier wird beispielsweise der Inhalt des Feldes ''Name'' des Datensatzeseingefügt. Die Daten kommen dabei aus dem Datensatz, für den das Formular geöffnet bzw. für den der Bericht gedruckt wird, eingefügt.:{{note|Es werden auch Verknüpfungsfelder unterstützt: <code>${->''Kunde''->''Name''}</code>  Es werden auch Verknüpfungsfelder unterstützt. Das obere Beispiel zeigt beispielsweise den Namen des verknüpften Kunden an.}}''Kunde'' ist hierbei der Name des Verknüpfungsfeldes der aktuellen Tabelle. :{{note|Es kann ein Defaultwert angegeben werden für den Fall, dass im Datensatz kein Wert eingetragen ist: <br><code>${->''FunktionKunde''->''Name''{{!}}"''MitarbeiterKein Kunde verknüpft!''"}</code>}}* Es kann auch ein Defaultwert angegeben werden für den Fall, dass im Datensatz für das Feld kein Wert eingetragen ist. ==Funktionsaufruf==<code>${=''FunktionsName()''}</code> zeigt das Ergebnis der  Erkennbar an dem Gleichheitszeichen (=). Der Server wertet bei Berichten die Funktion report_''report_FunktionsNameFunktionsName'' an. Das aus, bei Formularen die Funktion form_''report_FunktionsName''. Diese kann in den Skript-Erweiterungen implementiert sein. Das report_-/form_-Präfix sorgt dafür, dass keine Systemfunktionen direkt aufgerufen werden können.  An die Funktion können sowohl String- als auch Daten-beliebig viele Parameter übergeben werden (siehe Beispiel untengetrennt durch Komma). Diese Die Anzahl der übergebenen Parameter sollte dabei mit der Anzahl der Parameter der implementierten Funktion übereinstimmen um Fehler zu vermeiden. Es gibt dabei 3 Typen von Parametern:* Werte (Hochkomma "): <code>${=FunktionsName(''"Ein beliebiger String"'')}</code>* Dateninhalte (Pfeil ->): <code>${=FunktionsName(''->Kunde->Name'')}</code>* Funktionsaufruf (Gleichheitszeichen =): <code>${=FunktionsName(''=AndererFunktionsName()'')}</code>: Die innere Funktion kann beispielsweise in einer [[Skript-Erweiterungen|Erweiterung]] implementiert dabei wieder die gleichen Typen von Parametern haben Das Ergebnis der Funktion sollte gültiges Html sein, das an der Stelle eingefügt wird. Gibt die Funktion statt Html stattdessen ein Objekt der Klasse ReportElement TemplateElement (''extra/reporttemplate/templatebase/ReportElementTemplateElement.php'') zurück, wird dieses an der Stelle eingebunden.* ==If/Else/Endif==<code>${if ''=FunktionsName()''}...${endif}</code>:  <code>${if ''->EinDatenFeld''}...${endif}</code> Wertet die Funktion ''report_FunktionsName''/''form_FunktionsName'' bzw. das Feld ''EinDatenFeld'' aus. Gibt die Funktion einen Evaluiert der Wert zurück, der zu ''true'' evaluiert, wird der Teil zwischen if und endif im Bericht ausgegeben, andernfalls nicht. Zwischen beiden wird auch ein <code>${else}</code> unterstützt.
<!--T:6-->
=Beispiel=
{{example|
Es wird ein Bericht für die Tabelle ''Kontakte'' erstellt. In das Berichts-Element im Editor wird folgender Text eingetragen:
${Rechnung}
Dies bewirkt, dass in dem Bericht der Inhalt des Datensatzes mit Namen ''Rechnung'' aus der Berichtsvorlagen-Tabelle eingefügt wird. In diesem wird ist der Inhalt definiert:
${PersonenDaten}
Rechnung Text Blabla
In dem Datensatz mit Namen ''PersonenDaten'':
${->Anrede} ${->Vorname} ${->Nachname}, geb. ${&#61;formatDate(->GeburtsDatum,"d.m.Y")}Es werden hier Anrede/Vorname/Nachname aus der Tabelle Kontakte von dem Datensatz genommen, für den der Bericht gedruckt wird. An die Funktion wird als erster Parameter das Geburtsdatum des Kontakts übergeben (aus der Datenbank). Als zweiter Parameter wird direkt der String ''d.m.Y'' übergeben. So kann die Funktion für weitere Datumsformate wiederverwendet werden. Sie kann beispielsweise so in einer Erweiterung (''ext_report.inc'') implementiert sein:
'''function''' report_formatDate($date, $format) {
$stamp &#61; ''strtotime''($date);
Autor
783
edits