Platzhalterzuordnung (PlaceholderMapping)
Zweck und Einsatz
Damit in Layouts dynamische Daten angezeigt werden können, benötigen sie Platzhalter.
Über die Platzhalterzuordnung werden in der Inhaltsvorlage resp. einer PowerPoint-Vorlage Platzhalter mit den gewünschten Daten abgefüllt, die zuvor in einer übergeordneten Vorlage - z. B. einem Layout oder einer Master-Vorlage - mittels Platzhalterdefinition (PlaceholderDefinition)-Funktion "versprochen" wurden.
Die Daten können dabei aus der Formulare (Forms)-Dokumentfunktion oder über die Felder (Fields)-Dokumentfunktion (Benutzerdaten, JavaScript-Funktionen) kommen.
Folgendes Beispiel weist dem Platzhalter mit Name Footer das Field FooterGeneral aus der Dokumentfunktion Felder (Fields) zu:
<Text Name="Footer" SourceField="FooterGeneral" />
Jeder Platzhalter, der im Layout definiert wurde muss gemappt werden, sonst erscheint eine Fehlermeldung.
Im Kontext von Textbausteinen lässt sich das Mapping mit $.createAutoMapping() automatisch erzeugen, statt jeden Eintrag von Hand zu schreiben.
Grundaufbau
<PlaceholderMappingConfiguration>
<Mappings>
<!-- Platzhalter -->
</Mappings>
</PlaceholderMappingConfiguration>
Attribute
Folgende Attribute müssen bei allen verfügbaren Elementarten (Text, Picture, YesNo) gesetzt werden:
| Attributname | Beschreibung |
|---|---|
Name (erforderlich) | Wird zur Identifikation benötigt, darf gleich heissen wie das Feld aus Forms oder Fields. Darf keine Leerzeichen enthalten. |
SourceField (erforderlich) | Wird benötigt, um das Feld aus Forms oder Fields zu mappen. Entsprechend kommt hier die Id des entsprechenden Feldes rein. |
Es gibt drei Quellen für Platzhalter, die im Attribut SourceField angesprochen werden können:
- ein Benutzerfeld:
Profile.User.FirstName - ein Forms-Feld:
Forms.MyTextfield/Forms.MainSigner.FirstName - ein Field:
MyField(Achtung: der Name eines Field darf keinen Punkt enthalten, weil Gruppierungen nur mittels Objects und ObjectCollections möglich sind).
In den weitaus meisten Fällen wird ein Field erstellt, das dynamisch Inhalte kombiniert und ausgibt - und dann einem Platzhalter zugewiesen wird. Benutzerfelder werden praktisch nie ohne Umweg über ein Field zugewiesen.
Elemente
Text
<Text Name="CreateDate" SourceField="Forms.Date" />
Picture
<Picture Name="PartnerLogo" SourceField="PartnerLogo" />
YesNo
<YesNo Name="ShowClassification" SourceField="Forms.ShowClassification" />
YesNo wird derzeit nur beim PowerPoint-Binding unterstützt (nicht in Word- oder Excel-Vorlagen).
GlobalMappings
Über das Element GlobalMappingskann eine global abgelegte Platzhalterzuordnung geholt werden.
<GlobalMappings Key="Placeholders.Map.Letter" />
Mehr Informationen zu den Globalen Konfigurationen sind hier zu finden: Global Configurations.
Ein konkretes Beispiel zum Erkennen des Zusammenhangs zwischen dem globalen Eintrag und der Referenz auf einen globalen Eintrag gibt es hier: Global Configurations.
Attribute für GlobalMappings
Die Referenz auf einen globalen Eintrag passiert mittels dem Key-Attribut. Wählt man dieses aus, wird einem automatisch eine Liste mit allen zur Verfügung stehenden globalen Einträgen angezeigt.
| Attributname | Beschreibung |
|---|---|
Key (erforderlich) | Die ID des globalen Eintrags, der referenziert werden soll. |
Platzhalter aus dem Layout übernehmen
Damit die Zuordnung nicht Platzhalter für Platzhalter von Hand aus dem Layout übertragen werden muss, bietet der Editor der Platzhalterzuordnung die Aktion «+ Insert layout configuration» an. Sie liest die Platzhalterdefinition (PlaceholderDefinition) der zugrunde liegenden Layout- bzw. Master-Vorlage aus und gleicht sie mit der aktuellen Zuordnung ab.
Beim Ausführen:
- Für jeden im Layout definierten Platzhalter, der in der Zuordnung noch fehlt, wird ein leerer Mapping-Eintrag eingefügt. Das
SourceFieldwird anschliessend von Hand zugewiesen. - Bereits vorhandene Zuordnungen bleiben unverändert; es entstehen keine Duplikate.
- Zuordnungen, die keinem Platzhalter im Layout mehr entsprechen (verwaiste Einträge), werden nicht gelöscht, sondern auskommentiert — so gehen keine Angaben verloren und die Bereinigung bleibt kontrollierbar.
Der Abgleich löst dabei auch referenzierte globale Einträge auf: Sowohl die GlobalDefinitions der Layout-Definition als auch die GlobalMappings der Zuordnung werden vor dem Vergleich flachgeklopft.
Über welches globale Mapping die Aktion Vorgaben zieht, steuert der Layouter in der Platzhalterdefinition über den Block DefinitionMappings.
Beispiel-XML-Konfiguration
<PlaceholderMappingConfiguration>
<Mappings>
<!-- Daten für Kopfzeile -->
<Text Name="CreateDate" SourceField="Forms.Date" /><!-- aus Forms -->
<Picture Name="PartnerLogo" SourceField="PartnerLogo" /><!-- aus Fields -->
<!-- Daten für Fusszeile -->
<GlobalMappings Key="Placeholders.Map.Page" /><!-- global abgelegt -->
<Text Name="Footer" SourceField="Profile.Org.Footer" /><!-- aus Benutzerprofil -->
</Mappings>
</PlaceholderMappingConfiguration>