Skripte dienen dem Anzeigen von Feldern aus verschiedenen Quellen (z. B. Profildaten oder Empfängerdialog). Mittels Bedingungen kann auch eine Logik eingebaut werden. Schlussendlich ist das Ziel von Skripten mehr Dynamik und Vereinfachung in den Vorlagen. Skripte, die in mehreren Vorlagen eingefügt werden sollen, werden in den Globalen Konfigurationen abgelegt. Von der Dokumentfunktion "Skripte" wird das Skript dann nur noch mit den Globalen Konfigurationen verknüpft.
Jedes Skript wird in das Start- und Endtag CustomDataNode
eingeschlossen. Jedes CustomDataNode
-Element benötigt das Attribut id
, dessen Wert frei wählbar ist und eindeutig sein muss.
Um ein Text-Skript mit mehreren Zeilen zu erstellen, wird für eine Zeile mit dem Element Line
gearbeitet. Mit dem Element Text
wird ein fixer Text ausgegeben:
<CustomDataNode id="BeispielSkript"> <Line> <Text>Erste Zeile</Text> </Line> <Line> <Text>Zweite Zeile</Text> </Line> </CustomDataNode>
Über Element
werden Texte aus dem Profil oder aus externen Quellen angezogen. Damit beispielsweise Profildaten angezogen werden, wird die Identifikation des jeweiligen Feldes benötigt. Diese Feld-Id findet man im Dashboard unter "Fields" in der Spalte "FieldId":
Wurde die Feld-Id in das id-Attribut eingefügt, muss vor "User" immer noch "Profile." ergänzt werden (dies gilt nur für Profil-Felder, die angezogen werden möchten.). Sinn der Skripte ist es auch, die angezogenen Daten weiter zu verarbeiten oder mit Texten zu ergänzen. Im unteren Beispiel wurde als Ergänzung das Attribut separator
benutzt. Es gilt als Trennung zwischen den beiden angezogenen Elementen Anrede und Vorname. Wird kein Vorname angezogen, weil keiner im Feld abgefüllt ist, wird der definierte Separator nicht ausgegeben:
<CustomDataNode id="Example"> <Line> <Element id="Profile.User.Salutation" separator=" " /> <Element id="Profile.User.FirstName" /> </Line> <Line> <Element id="Profile.Org.Title" /> </Line> </CustomDataNode>
Mit einer Condition
können Bedingungen in die Skripte eingebaut werden:
<CustomDataNode id="Example"> <Line> <Element id="Profile.User.Salutation" separator=" " /> <!-- Und-Verknüpfung ↓ --> <Condition when="ShowFirstName = 'true' + DontShowFirstName = 'false'"> <Element id="Profile.User.FirstName" /> </Condition> </Line> <Condition notwhen="ShowTitle = 'false'"> <Line> <Element id="Profile.Org.Title" /> </Line> </Condition> </CustomDataNode>
Mit dem Snippet
-Element können in der Datenbank gespeicherte primedocs-Textbausteine angezogen werden.
WARNUNG
Bei der Verwendung von Snippet
handelt es sich um ein Snippetskript. Dieses kann nicht mit Texten (z. B. mit Element
) oder Bildern (Image
) gemischt werden. Siehe “Verschiedene Skript-Arten”.
Zudem sollte bei der Anwendung von Snippetskripts unbedingt folgende Seite aus den Best Practices beachtet werden: Einfügen von Snippetskripts in Inhaltsvorlagen.
Dem CustomDataNode
-Element wird im unteren Beispiel das Attribut update
mitgegeben. update
bewirkt mit true
, dass der Textbaustein sich in Abhängigkeit von Dokument-Parameter-Auswahlen aktualisiert oder nicht (false
).
<CustomDataNode id="BeispielSnippetSkript" update="true"> <Condition when="RedCircle = 'true'"> <Snippet id="05da9095-de60-4b78-bcd8-692639e8d377" /> </Condition> <Condition notwhen="RedCircle = 'true' | BlueCircle = 'false'"> <Snippet id="5bc2d759-431f-41e0-a18c-d577b240e612" /> </Condition> </CustomDataNode>
Verschiedene Skript-Arten
Es gibt drei verschiedene Arten von Skripts, die nicht vermischt werden dürfen:
Skript-Art | Beschreibung |
---|---|
Textskript | Das Resultat ist ein Text. |
Snippetskript | Das Resultat ist eine Zusammensetzung von Textbausteinen. |
Imageskript | Das Resultat ist ein Bild. |
Grundgerüst eines Skripts
Script-Element
Folgende Zeilen sind standardmässig in jeder Standard-Skript-Dokumentfunktion hinterlegt:
<?xml version="1.0" encoding="utf-8"?> <Configuration> <Script engine="XSL" version="2" depth="{[Config.Depth]}"> [...] </Script> </Configuration>
Die dritte Zeile ermöglicht, dass Skripte bzw. dynamische Binding-Elemente überhaupt in Vorlagen verwendet werden können. Hier ist eine Übersicht über die möglichen Attribute:
Attribut | Beschreibung |
---|---|
depth | Bestimmt, wie oft das Skript-Resultat berechnet wird. Generell wird die Verknüpfung mit der in den Globalen Konfigurationen hinterlegten Depth empfohlen, die standardmässig 5 beträgt. Greif ein Skript auf das Resultat eines anderen Skripts zu, muss |
engine | Bestimmt die Engine, die für die Scriptinterpretation bzw. -umsetzung zur Anwendung kommt. Als Wert steht nur "XSL" zur Verfügung. |
version | Bestimmt die Scriptengine-Version, die zur Anwendung kommt. Standardmässig ist der Wert 2. Die Angabe dieser Version könnte auch auf Ebene |
CustomDataNode-Element
Mittels CustomDataNode
wird ein neues Binding-Element erstellt, in welchem dann der Skriptinhalt definiert wird.
<?xml version="1.0" encoding="utf-8"?> <Configuration> <Script engine="XSL" version="2" depth="{[Config.Depth]}"> <CustomDataNode id="Scripts.Beispiel"> [...] </CustomDataNode> </Script> </Configuration>
Attribut | Beschreibung |
---|---|
id | Id des Binding-Elements, das definiert wird. Die Id muss eindeutig sein. Für eine bessere Übersichtlichkeit im Vorlagen-Editor kann die Ordnerstruktur selber gesteuert werden: Enthält eine Id einen Punkt, wird aus dem Wort vor dem Punkt ein Ordner erzeugt. primedocs setzt dazu vor jede Id den Präfix "CustomElements.". Das muss beachtet werden, wenn in einem Skript auf ein anderes Skript zugegriffen wird. |
version | Bestimmt die Script-Engine-Version, die zur Anwendung kommt. Eine Angabe auf Ebene |
bookmarkname | Ermöglicht das Festlegen des Namens der Textmarke (Bookmark), in welche die entsprechenden Textbausteine (Snippets) eingefügt werden. die im Vorlageneditor eingefügt wird. Dieses Attribut wird nur im Zusammenhang mit Textbausteinen berücksichtigt. |
update | Bewirkt mit |
Elemente innerhalb von CustomDataNodes und ihre Attribute
Line
Mittels Line
-Element werden mehrere Zeilen in einem Skript erzeugt. Alle Elemente, die weiter unten erklärt werden, werden in den meisten Fällen innerhalb von den Line
-Start- und Endtags definiert. Wenn in einer Zeile kein Element verfügbar ist, wird sie nicht angezeigt.
<CustomDataNode id="Scripts.Beispiel"> <Line> [...] </Line> </CustomDataNode>
Attribut | Beschreibung |
---|---|
fixoutput | Mittels |
Text
Mittels Text
werden Fixtexte ausgegeben.
<CustomDataNode id="Scripts.TextBeispiel"> <Line> <Text>Das ist ein Fixtext.<Text> </Line> </CustomDataNode>
Element
Mittels Element
werden Felder aus primedocs angezogen. Die angezogenen Daten können mittels den folgenden Attributen ergänzt oder formatiert werden:
<CustomDataNode id="Scripts.Beispiel"> <Line> <Element id="Profile.User.Postal.City" separator=", " fCase="lower" /> <Element id="DocParam.Date" fFormattingDate="dddd, d. MMMM yyyy" /> </Line> </CustomDataNode>
Attribut | Beschreibung |
---|---|
id | Id des Feldes, das eingefügt werden soll |
checkBoxActivatedSymbol | Definition des Zeichens, das bei einer angewählten Checkbox ausgegeben werden soll |
checkBoxDeactivatedSymbol | Definition des Zeichens, das bei einer nicht angewählten Checkbox ausgegeben werden soll |
linePrefix | Präfix-Zeichen für jede Zeile einer Liste bzw. eines mehrzeiligen Text-Elements |
separator | Trenntext zum nächsten Element oder Text, der nur angezeigt wird, wenn das nachfolgende Element einen Inhalt liefert. |
showEmptyEndLines | Übernimmt alle vorhandenen nachgestellten Leerzeilen: |
showEmptyStartLines | Übernimmt alle vorhandenen vorangestellten Leerzeilen: |
textafter | Fixtext, der immer hinter dem Element erscheint. z. B. |
textbefore | Fixtext, der immer vor dem Element erscheint. z. B. |
when | siehe Condition |
notwhen | siehe Condition |
Funktionen | |
fCase* | Definiert, ob der einkommende Text gross ( |
fFormattingDate* | Definiert ein explizites Format für ein DateTime-Element. Generell wird immer mit den in den Globalen Übersetzungen vorhandenen Formaten verknüpft: |
fFormattingNumber* | Definiert ein explizites Format für Telefonnummern in einem Textfeld (z. B. im Feld "Profile.User.Phone"). z. B. |
fFormattingNumeric* | Definiert ein explizites Format für Nummern. |
fReplace* | Definiert, ob ein Teil des Textes ersetzt werden soll. |
fSelectLine* | Definiert, ob aus einem mehrzeiligen Text eine oder mehrere Zeilen selektiert werden sollen. |
fSubstring* | Definiert, ob nur ein Teil des Textes ausgegeben werden soll. |
fSubstringAfter* | Definiert, ob nur das Ende (nach einer bestimmten Zeichekette) des Textes ausgegeben werden soll. Ist das Trennzeichen nicht vorhanden wird der ganze Text ausgegeben. |
fSubstringAfterOrEmpty* | Definiert, ob nur das Ende (nach einer bestimmten Zeichenkette) des Textes ausgegeben werden soll. Ist das Trennzeichen nicht vorhanden wird kein Text ausgegeben. |
fSubstringBefore* | Definiert, ob nur der Anfang (vor einer bestimmten Zeichenkette) des Textes ausgegeben werden soll. Ist das Trennzeichen nicht vorhanden wird der ganze Text ausgegeben. |
fSubstringBeforeOrEmpty* | Definiert, ob nur der Anfang (vor einer bestimmten Zeichenkette) des Textes ausgegeben werden soll. Ist das Trennzeichen nicht vorhanden wird kein Text ausgegeben. |
fTrim* | Definiert, ob nur eine maximale Anzahl an Zeichen ausgegeben werden soll. |
fTrimURL* | Definiert, ob nur ein Teil einer URL oder eines Dateipfades ausgegeben werden soll (siehe auch fTrim). z. B. |
*Dieses Attribut kann beliebig oft hintereinander in einem Element platziert werden. In diesem Fall muss jedes Attribut mit weiteren Zeichen ergänzt werden, damit jeder Befehl eindeutig ist. Im folgenden Beispiel sind die fReplace-Attribute durchnummeriert:
<Element id="DocParam.Test" fReplace1="b,c" fReplace2="a,b" />
Condition
Mittels Condition
können ganze Bereiche anhand von Bedingungen aktiviert oder deaktiviert werden. Die Bedingungen werden in der Regel an Auswahlen im Dokument-Parameter geknüpft. Beispiel: "Wenn die Checkbox "DocParam.Checkbox1" im Dokument-Parameter aktiviert ist, wird ein Text eingeblendet." Es können Text-, CheckBox-, ComboBox- und Image-Elemente validiert werden. Verfügbare Attribute für dieses Element sind when
und notwhen
.
<CustomDataNode id="Scripts.ConditionsBeispiel"> <Condition when="DocParam.CheckBox1"> <Line> <Element id="Profile.User.Postal.City" separator=", " fCase="lower" /> <Element id="DocParam.Date" fFormattingDate="dddd, d. MMMM yyyy" /> </Line> </Condition> <Condition notwhen="DocParam.CheckBox1"> <Line> <Element id="Profile.Org.Postal.City" separator=", " fCase="lower" /> <Element id="DocParam.Date" fFormattingDate="d. MMMM yyyy" /> </Line> </Condition> </CustomDataNode>
Attribut | Beschreibung |
---|---|
when | Bedingung, damit die beinhalteten Elemente und Texte angezeigt werden. Bei der Angabe von Ids (ohne Textvergleichoperatoren, siehe unten) wird geprüft, ob das primedocs-Element mit der Id existiert und einen Inhalt hat. CheckBox Verhalten: Image Verhalten: Möchte man abfragen, ob bestimmte Bilddaten gesetzt oder "leer" sind und nur ein Bild "selektieren", muss man über eine direkte Condition gehen: |
notwhen | Analog dem when-Attribut, jedoch invertiert. |
Vergleichoperatoren
In einem when- oder notwhen-Attribut können auch Vergleichsoperatoren verwendet werden, wobei Fixtexte in einfachen Anführungszeichen (') stehen müssen:
<CustomDataNode id="Scripts.ConditionsBeispiel"> <Condition when="DocParam.CheckBox1 contains 'direktion'"> <Line> <Element id="Profile.User.Postal.City" separator=", " fCase="lower" /> <Element id="DocParam.Date" fFormattingDate="dddd, d. MMMM yyyy" /> </Line> </Condition> <Condition notwhen="DocParam.CheckBox1 contains 'direktion'"> <Line> <Element id="Profile.Org.Postal.City" separator=", " fCase="lower" /> <Element id="DocParam.Date" fFormattingDate="d. MMMM yyyy" /> </Line> </Condition> </CustomDataNode>
Attribut | Beschreibung |
---|---|
| Der Inhalt wird 1:1 verglichen |
| Der Inhalt wird ohne Berücksichtigung von Gross-/Kleinschreibung und Leerzeichen verglichen |
| Prüfung ob der Inhalt eine bestimmte Zeichenkette enthält (an beliebiger Position) |
| Prüfung ob der Inhalt mit bestimmten Zeichen beginnt |
| Vergleich der Anzahl Zeichen |
| Prüfung ob die Zeichenanzahl grösser ist |
| Prüfung ob die Zeichenanzahl kleiner ist |
Snippet
Mittels Snippet
-Element können in primedocs gespeicherte Textbausteine verwendet oder fixe Inhalte abgefüllt werden.
<CustomDataNode id="Scripts.SnippetScript"> <Snippet id="b353eb86-ac5a-4db4-99bc-1847e31793bb" /> </CustomDataNode>
Attribut | Beschreibung |
---|---|
id | Id des Feldes, das eingefügt werden soll |
type | "Text" oder "Html" für einen fixen Inhalt, wobei der Inhalt innerhalb eines CDATA-Tags innerhalb des Snippet-Tags folgt: |
when | siehe Condition |
notwhen | siehe Condition |
WARNUNG
Bei der Verwendung von Snippet
handelt es sich um ein Snippetskript. Dieses kann nicht mit Texten (z. B. mit Element
) oder Bildern (Image
) gemischt werden. Siehe “Verschiedene Skript-Arten”.
Zudem sollte bei der Anwendung von Snippetskripts unbedingt folgende Seite aus den Best Practices beachtet werden: Einfügen von Snippetskripts in Inhaltsvorlagen.
List
Mittels List
kann eine dynamische Liste von Elementen ausgegeben werden. Meistens wird das Element für die Anzeige einer Empfängerliste (z. B. in einem Protokoll) zur Anwendung. Innerhalb einer Liste können wieder die Attribute Line
, Element
und Condition
verwendet werden. Die Adressierung der Ids wird nun relativ gemacht, das heisst, dass nun anstelle von Contact.Recipient.Selected.Person.FirstName nur noch Person.FirstName verwendet wird.
<CustomDataNode id="Scripts.RecipientAnList"> <List type="Recipient" filter="An"> <Line> <Element id="Person.SalutationShort" separator=" " /> <Element id="Person.Title" separator=" " /> <Element id="Person.FirstName" separator=" " /> <Element id="Person.LastName" separator=", " /> <Element id="Company.NameLine1" /> </Line> </List> </CustomDataNode>
Attribut | Beschreibung |
---|---|
filter | Es gibt folgende Filterkriterien: "An", "Cc", "Bcc". Wird "An" verwendet, werden nur die Empfänger, die unter "An" gewählt wurden, angewendet. |
includeSelected | Bestimmt, ob der aktuell selektierte Kontakt auch in der Liste angezeigt wird oder nicht: |
separator | Trenntext, der immer zwischen den Elementen angezeigt wird |
type | Bestimmt den Listentyp: immer |
Link
Mittels Link
kann ein HTML-Link erzeugt werden. Es gilt zu beachten, dass keine anderen daten-anziehenden Elemente im selben Skript verwendet werden sollten. Die Links können nur in HTML-E-Mails und nicht in Kombination mit den normalen Text-Skripten verwendet werden. Es können sowohl primedocs-Felder als auch andere Links hinterlegt werden. Sollten mehrere Link-Elemente auf verschiedenen Zeilen ausgegeben werden, muss das Zeilenende mit  
markiert werden.
<CustomDataNode id="ProfileLinks"> <Line> <Link id="Profile.User.URL" text="Web" />` <Text> </Text> </Line> <Line> <Link id="Profile.Org.Web" bindingText="Profile.Org.Web" style="color:green;font:italic" /> <Text> </Text> </Line> </CustomDataNode>
Attribut | Beschreibung |
---|---|
id | Id des Feldes, das als URI verwendet werden soll. Wie erwähnt, kann auch ein fixer Link als Taginhalt angegeben werden |
type | Linktyp – Art des Links. Erlaubt sind: |
text | Fixtext, der (sofern abweichend von der URI) angezeigt werden soll. Er wird nur angezeigt, wenn kein Binding-Text vorhanden ist. |
bindingText | Id des Binding-Elements, das als Link-Text angezeigt werden soll |
style | CSS-Styleangaben für die Formatierung des HTML-Links |
styleName | Name einer nicht standardmässig integrierten Layoutvorlage vom Formatvorlagentyp "Zeichen" (engl.: name of a non-built-in style of type "character"). Die Formatvorlage basiert optimalerweise auf der Layoutvorlage "Hyperlink". |
when | siehe Condition |
notwhen | siehe Condition |
Bilder-Links
Mit Link
können auch mit einem Link belegte Bilder eingefügt werden.
Bild aus primedocs-Feld:
<CustomDataNode id="DemoLinkWithImageFromProfile"> <Link id="Profile.User.ProfilePageURL" bindingImage="Profile.User.ProfileImage" imageSize="1.8 cm" imageAltText="Profile Image" /> </CustomDataNode>
Fixes Bild:
<CustomDataNode id="DemoLinkWithFixedImage"> <Link id="Profile.User.TwitterURL" imageDataBase64="iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAB9AAAAfQAbmL558AAAJgSURBVEhL3ZVLaBNRFIb/JDOZJrXWWjGKFlpTFcXgAxehIAhql1kodCUI7sSqlEJR6K7bLt2q1IVWu1BcuCmColaq4gMLBlpb8W191VrSJPPynMm0nZsZM01rXfhBCHNnOP89/7nn3EBdz6SJJSZo/y8p/4/IgmuyQgngyGYZyZiEYAB48kXHhXQe49OFcBurgxj5aYCfBJHj28K480HH0HfdXvGmYXkQvc1RrI1SdAc/cibOv8yjaY2EsV8GTj/IWuuCXakGGZcORLB7dcheccNhz+6pcAkwNZRd+w4Fy2Rg8LOO7asKcQSRKnrJNlyhXR6jrCSPiiVqQ9avFPx+/3oJL74VHBHCpCcM61+m1TO7FPSnKtHSKCMqze26vsqdQTE3Xms4cXcahl0IQeQc+ek8BXHyvrupAk9bKnFxXwQdOxUkyW8/OIMZAUYQ4aB9I6r9NEeEMtm7TkJrIozDm8hTH/gAOBFEDm6QLXsWCx9dJ4LI5WF3FuWS0UwM2QWfQRC5Slb1vVqc0K13OvJiIqIIO9n1OIfuZzmXr/Olh7q+GEGEiVALtCYUq7HK5fZ7DQ/H3dPCJfIxY6JjIAutKGU/plQTnYM5+0nEJcJcH1ORupnBtVHVEvVDp09O3cvizZT3zjxFmPSEjoFPOpQ/flEgT+6cpO7uf6vZK25mpzCP5npqxlqqBc+e5joJMY8h6IT7oe1+Fs+/lp7asyIhincoLuPoljC21pTePgfnu6OX+kqdR+08Ly2+L5KxEOKU3UrKjD/gIz06aeARjfDhoo72Y8E3Yzn4lPXv8A9EgN/hX854N4rKAwAAAABJRU5ErkJggg==" imageSize="40 px" imageAltText="Twitter Icon" /> </CustomDataNode>
Attribut | Beschreibung |
---|---|
bindingImage | Id des Bildes, das angezeigt werden soll, z. B. |
imageSize | Höhe des Bildes, z. B. |
imageDataBase64 | Daten des Bildes im Base64-Format |
imageAltText | Alternativtext, z. B. "Profilbild" / "Profile Image" |
TIPP
Häufig konvertiert Outlook E-Mail-Bilder vor dem Versenden, was zu sichtlich schlechter Bildqualität führen kann. Damit dies bei PNG-Bilddateien weniger passiert, sollten diese mit der Bittiefe 32 abgespeichert werden.
Dies betrifft sowohl Bilder, die hinterlegt sind und über bindingImage
abgerufen werden wie auch Bilder, die mit imageDataBase64
direkt angegeben werden.
Die Bittiefe von PNG-Bilddateien wird im Windows Explorer in den Eigenschaften unter "Details – Bild – Bittiefe" (engl. "Details – Image – Bit depth") angezeigt.
Image
Mittels Image
können Bilder, die in primedocs bei den Benutzereinstellungen hinterlegt sind, angezogen werden. Durch das "when"-Attribut kann dieses z. B. je nach Auswahl im Dokument-Parameter ein- und ausgeblendet werden.
Referenzierte Bilder müssen in der müssen in der Profildaten-Konfiguration angegeben werden.
<CustomDataNode id="Scripts.ImageBeispiel"> <Line> <Image id="Profile.User.ProfilePicture" /> </Line> </CustomDataNode>
Attribut | Beschreibung |
---|---|
id | Id des Feldes, das eingefügt werden soll |
when | siehe Condition |
notwhen | siehe Condition |
WARNUNG
Bei der Verwendung von Image
handelt es sich um ein Image-Skript. Dieses kann nicht mit Texten (z. B. mit Element
) oder Textbausteinen (Snippet
) gemischt werden. Siehe “Verschiedene Skript-Arten”.