Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Es gibt drei verschiedene Arten von Skripts, die nicht vermischt werden dürfen:

Skript-Art

Beschreibung

Textskript

Das Resultat ist ein Text.
Es dürfen alle Tags verwendet werden ausser Image und Snippet.

Snippetskript

Das Resultat ist eine Zusammensetzung von Textbausteinen.
In Snippetskripten dürfen nur Snippet und Condition verwendet werden.

Imageskript

Das Resultat ist ein Bild.
In Image-Skripts dürfen nur Image und Condition verwendet werden.

...

Grundgerüst eines Skripts

...

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 depth mindestens 2 sein. Pro zusätzlichem verschachtelten Zugriff muss depth um 1 erhöht werden.

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 übersteuert werden. Die Angabe der Version ist in Bezug auf die Abwärtskompatibilität wichtig.

...

CustomDataNode-Element

Mittels CustomDataNode wird ein neues Binding-Element erstellt, in welchem dann der Skriptinhalt definiert wird.

Code Block
languagexml
<?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 CustomDataNode überschreibt eine allfällige Versionsdekleration auf Script-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 true, dass der Textbaustein sich in Abhängigkeit von Dokument-Parameter-Auswahlen aktualisiert oder nicht (false). Dieses Attribut wird nur im Zusammenhang mit Textbausteinen berücksichtigt.

...

Elemente innerhalb von CustomDataNodes und ihre Attribute

...

Code Block
languagexml
<CustomDataNode id="Scripts.Beispiel">
  <Line>
    [...]
  </Line>
</CustomDataNode>

Attribut

Beschreibung

fixoutput

Mittels fixoutput auf true, wird ein leerer Zeilenumbruch generiert. Dank dem Attribut wird die Zeile auch ausgegeben, wenn kein Inhalt vorhanden ist.

...

Text

Mittels Text werden Fixtexte ausgegeben.

Code Block
languagexml
<CustomDataNode id="Scripts.TextBeispiel">
  <Line>
    <Text>Das ist ein Fixtext.<Text>
  </Line>
</CustomDataNode>

Attribut

Beschreibung

when

siehe Condition

notwhen

siehe Condition

...

Element

Mittels Element werden Felder aus primedocs angezogen. Die angezogenen Daten können mittels den folgenden Attributen ergänzt oder formatiert werden:

Code Block
languagexml
<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: true/false (false ist Standard)

showEmptyStartLines

Übernimmt alle vorhandenen vorangestellten Leerzeilen: true/false (false ist Standard)

textafter

Fixtext, der immer hinter dem Element erscheint. z. B. textafter=" Uhr"

textbefore

Fixtext, der immer vor dem Element erscheint. z. B. textbefore="MwSt: "

when

siehe Condition

notwhen

siehe Condition

Funktionen

fCase*

Definiert, ob der einkommende Text gross (upper) oder klein (lower) geschrieben werden soll: fCase="[upper/lower]". Für Unicode-Zeichen gibt es eine Erweiterung, die ähnlich funktioniert: upperUnicode/lowerUnicode

fFormattingDate*

Definiert ein explizites Format für ein DateTime-Element. Generell wird immer mit den in den Globalen Übersetzungen vorhandenen Formaten verknüpft:
fFormattingDate="{D[Configuration.DateFormat.WrittenOut]}, ergibt z. B. fFormattingDate="d. MMMM yyyy.

fFormattingNumber*

Definiert ein explizites Format für Telefonnummern in einem Textfeld (z. B. im Feld "Profile.User.Phone"). z. B.
fFormattingNumber="{D[Configuration.PhoneNumberFormat]}, ergibt z. B. fFormattingNumber="+00 00 000 00 00,41 Literale (siehe auch http://openbook.galileocomputing.de/csharp/kap30.htm ):
# → Stellenplatzhalter
0 → Stellenplatzhalter (identisch mit # jedoch wird hier das Zeichen '0' ausgegeben wenn keine Zahl an dieser Stelle vorhanden ist)
' → Text-Maskierung (Text, der in einfachen Anführungszeichen eingegeben wird, wird nicht interpretiert und als Text ausgegeben)
\ → Zeichen-Maskierung (Das nächste Zeichen wird nicht interpretiert und als Zeichen ausgegeben)

fFormattingNumeric*

Definiert ein explizites Format für Nummern.
z. B. fFormattingNumeric="C3" (C=Währung, 3=Nummer der Dezimalstellen)

fReplace*

Definiert, ob ein Teil des Textes ersetzt werden soll.
z. B. fReplace="[bestehende Zeichenkette],[neue Zeichenkette]"

fSelectLine*

Definiert, ob aus einem mehrzeiligen Text eine oder mehrere Zeilen selektiert werden sollen.
z. B. fSelectLine="[Startzeile],[Endzeile]"

fSubstring*

Definiert, ob nur ein Teil des Textes ausgegeben werden soll.
z. B. fSubstring"[Startzeichen],[Anzahl Zeichen]"

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.
z. B. fSubstringAfter="[Zeichenkette]"

fSubstringAfterOrEmpty*

Definiert, ob nur das Ende (nach einer bestimmten Zeichenkette) des Textes ausgegeben werden soll. Ist das Trennzeichen nicht vorhanden wird kein Text ausgegeben.
z. B. fSubstringAfterOrEmpty="[Zeichenkette]"

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.
z. B. fSubstringBefore="[Zeichenkette]"

fSubstringBeforeOrEmpty*

Definiert, ob nur der Anfang (vor einer bestimmten Zeichenkette) des Textes ausgegeben werden soll. Ist das Trennzeichen nicht vorhanden wird kein Text ausgegeben.
z. B. fSubstringBeforeOrEmpty="[Zeichenkette]"

fTrim*

Definiert, ob nur eine maximale Anzahl an Zeichen ausgegeben werden soll.
z. B. fTrim="[maximale Anzahl Zeichen],[Modus],[Platzhalter]".
[Modus] → Ort, an welchem bei Überlänge der Text abgeschnitten werden soll. Erlaubte Werte: left, right und middle
[Platzhalter] → Platzhaltertext, der eingefügt wird, sofern eine Überlänge erreicht ist (z. B. "...")

fTrimURL*

Definiert, ob nur ein Teil einer URL oder eines Dateipfades ausgegeben werden soll (siehe auch fTrim). z. B. fTrimURL="[Art],[Modus],[Anzahl Ordner]"
[Art] → File oder Folder, wobei File den Dateinamenselektiert und Folder den Pfad ohne Dateinamen. Aus diesem Grund stehen die nachfolgenden Optionen "Modus" und "Anzahl Ordner" nur bei Folder zur Verfügung.
[Modus] → Ort, von welchem aus die Anzahl gewünschter Ordner angezeigt werden soll. Erlaubte Werte left und right
[Anzahl Ordner] → Anzahl der Ordner, die angezeigt werden soll.

*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:

...

Code Block
languagexml
<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.
Für 'oder'-Verknüpfungen wird das Zeichen '|' verwendet, für 'und'-Verknüpfungen ist es das '+'- Zeichen.
Eine Mischung von "und" und "oder"-Bedingungen im gleichen when-Attribut ist nicht erlaubt.
Bei ComboBox-Elementen wird normalerweise der DisplayText (Anzeigetext) verwendet. Um auf den Wert ("Value") zuzugreifen, muss ein $-Zeichen vorangestellt werden: <Condition when="$DocParam.ComboBox1 = 'key1'">

CheckBox Verhalten:
Die Bedingung <Condition when="DocParam.CheckBox1" \> ist erfüllt, wenn die CheckBox angewählt wurde. Es ist kein Vergleichsoperator nötig.

Image Verhalten:
<Image when="Profile.Org.Logo" ... /> resultiert entweder in einem leeren Bild oder dem eigentlichen Bildinhalt, wenn das eingefügte Feld in primedocs vorhanden ist.

Möchte man abfragen, ob bestimmte Bilddaten gesetzt oder "leer" sind und nur ein Bild "selektieren", muss man über eine direkte Condition gehen:
<CustomDataNode id="SelectImage">
    <Condition when="Profile.User.Sign">
        <Image id="Profile.User.Sign" />
    </Condition>
    <Condition when="Signer_0.Org.Logo">
        <Image id="Signer_0.Org.Logo" />
    </Condition>
    <Condition when="Signer_1.Org.Logo">
        <Image id="Signer_1.Org.Logo" />
    </Condition>
</CustomDataNode>

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:

Code Block
languagexml
<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

contains

Prüfung ob der Inhalt eine bestimmte Zeichenkette enthält (an beliebiger Position)

startsWith

Prüfung ob der Inhalt mit bestimmten Zeichen beginnt

length

Vergleich der Anzahl Zeichen

lengthBiggerThan

Prüfung ob die Zeichenanzahl grösser ist

lengthLowerThan

Prüfung ob die Zeichenanzahl kleiner ist

...

Snippet

Mittels Snippet-Element können in primedocs gespeicherte Textbausteine verwendet oder fixe Inhalte abgefüllt werden.

Code Block
languagexml
<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: <Snippet><![CDATA[Beispieltext]]></Snippet>

when

siehe Condition

notwhen

siehe Condition

Warning

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.

...

Code Block
<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: true [Standard]/false.

separator

Trenntext, der immer zwischen den Elementen angezeigt wird

type

Bestimmt den Listentyp: immer Recipient

...

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 &#160; markiert werden.

Code Block
languagexml
<CustomDataNode id="ProfileLinks">
  <Line>
    <Link id="Profile.User.URL" text="Web" />`
    <Text>&#160;</Text>
  </Line>
  <Line>
    <Link id="Profile.Org.Web" bindingText="Profile.Org.Web" style="color:green;font:italic" />
    <Text>&#160;</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: Mailto, XingProfile, TwitterProfile, LinkedInProfile, FacebookProfile
Bei einem so typisierten Link wird die generelle URL automatisch hinzugefügt und es muss nur der individuelle Profilname resp. die Profil-Id angegeben werden.

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

Layoutvorlagentyp

Formatvorlagentyp "Zeichen" (engl.: name of a non-built-in style of type "character"). Die

Layoutvorlage

Formatvorlage basiert optimalerweise auf der Layoutvorlage "Hyperlink".
Falls der Name der

Layoutvorlage

Formatvorlage Zeichen enthält, die nicht A-Z, a-z, 0-9 oder - entsprechen, so müssen diese weggelassen werden.
Beispiele: Protokoll Überschrift 1Protokollberschrift1, $Ñ0t-Reço/mmen_d3d%0t-Reommend3d

when

siehe Condition

notwhen

siehe Condition

Mit Link können auch mit einem Link belegte Bilder eingefügt werden.

...

Code Block
languagexml
<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. Profile.User.ProfileImage
Hier referenzierte Bilder müssen in der Profildaten-Konfiguration angegeben werden.

imageSize

Höhe des Bildes, z. B. 1.8 cm
Muss zwingend gesetzt werden.
Die Breite wird automatisch berechnet.
Empfohlene Masseinheiten: cm, mm, px, pt, in (es handelt sich um VML-Masseinheiten)

imageDataBase64

Daten des Bildes im Base64-Format

imageAltText

Alternativtext, z. B. "Profilbild" / "Profile Image"

Tip

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.

...

Code Block
languagexml
<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

Warning

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”.