Dokumentenmanagement¶
Die Dokumentenvorlagen dienen dem Versand von E-Mails, der Erstellung von Drucksachen und
auch für Rechnungen und Lieferscheine1 - werden in der Datenbank in der Tabelle co_list_mail
gespeichert.
Hinweis
Die Legacy-Verarbeitung unterscheidet sich in der Bedeutung der Felder.
Ein Dokument besteht im wesentlichen aus einem Inhalt und einem Kontext. Der Inhalt definiert
die Struktur des Dokumentes und der Kontext legt die Inhalte der Platzhalter fest. Ein Platzhalter
ist über ${
und }
definiert.
So wird der Platzhalter ${example}
, durch den Wert des Schlüssel im Kontext ersetzt.
Der Type des Template wird über den MimeType im Feld mimeType
definiert. Im Feld charset
wird der
Zeichensatz defniert. Der Standard sollte hier utf-8 sein.
Kontext¶
Der Kontext wird über das Feld context
definiert und von der verwendeten Funktion vorgegeben. Der Kontext
defniert die Inhalte eines Dokuments und bestimmt die Platzhalter.
Der Kontext kann in einer Funktion über die Funktion DocumentManager::getContextClass()
geholt werden.
Dieser Mechanismus erlaubt es den Kontext zu überschreiben. Im Standard wird die übergebene
Klasse 1:1 zurückgegeben.
$contextClass=\Alvine\Application\Assembly::getInstance()
->getDocumentManager()->getContextClass(
\Alvine\Application\Platform\Commerce\Document\Context\LoginTokenPerMail::class
);
Um einen eigenen Manager zu verwenden, muss die Anwendungsklasse überschrieben werden und der eigene Manager zurückgegeben werden.
Der DefaultContext
enthält bereits die Platzhalter des ausgewählten Mandanten. Alle davon abgeleiteten
Kontexte verfügen somit über die Unternehmensdaten.
siehe auch DefaultContext
Eigenschaften¶
Neben dem Kontext verfügt ein Template über Eigenschaften, die als Platzhalter im Template zur Verfügung stehen. Die Eigenschaften können über Sprache und Land lokalisert werden. Darüber können die Inhalte eines Dokuments lokalisiert werden.
Zum Bespiel : 'to' => '${account_company_sys_contact_customerservice}'
Hinweis
Gleichnamige Eigenschaften des Templates überschreiben die Eigenschaften des Rahmen.
Es dürfen hier nicht Platzhalter definiert werden, die auf sich selbst referenzieren , zum Beispiel 'cc' => '${cc}'
Rahmen¶
Einige Inhalte - wie zum Beispiel der Footer einer Mail - kommen in allen
Templates vor. Hier besteht die Möglichkeit ein übergeordnetes Template anzulegen.
Dieses Template muss den Platzhalter ${content}
enthalten.
Ein abgeleitetes Template wird dann an dieser Stelle in den Rahmen eingefügt. Das Rahmentemplate
darf ebenfalls Platzhalter enthalten. Die Referenzierung erfolgt über das Feld frame
. Hier
muss db://<id>
stehen. <id>
steht hier für die ID des Rahmens, z.B db://10
für
den Rahmen im Datensatz 10
.
Das Rahmentemplate besitzt keinen Kontext, so das die verwendeten Platzhalter im Kontext des Template definiert sein müssen.
-
Gilt nicht für die Legacy-Dialoge ↩