Word-Vorlagen
Vorlagen-Variablen
Jeder Befehl sieht diese Variablen.
Übersicht
| Variable | Inhalt |
|---|---|
$o | Das aktuelle Objekt. Bei Vorlagen mit einem Dokument je Objekt das Objekt, für das gerade gerendert wird; bei Vorlagen mit einem Dokument für alle das erste |
objects | Array aller geladenen Objekte, in der Filter- und Sortierreihenfolge der Ansicht |
f | Felddefinitionen, nach Feldname: f[`Gewicht`] liefert die Definition samt Konfiguration |
p | Projektdaten |
$f | Dateien des aktuellen Objekts |
files | Alle Dateien, nach Objektkennung gruppiert |
$m | Feld-Anmerkungen des aktuellen Objekts (Farbe, Kommentar, Quelle) |
$e | Die Ereignisse des aktuellen Objekts |
$fmt | Die formatierten Feldwerte des aktuellen Objekts (Ausgabe-Formatter) |
ui | Ansichtseinstellungen des exportierenden Benutzers (nur lesen) |
objects, f, files und p sind für alle Objekte eines Exportlaufs dieselben. Auch in einer Vorlage
mit einem Dokument je Objekt ist objects vollständig: {#objects.length#} gibt dort die Zahl aller
exportierten Objekte aus.
$o: das aktuelle Objekt
{#$o[`RegNr`] ?? ``#} {#$o[`Originaltitel`] ?? ``#} {#$o.objektID#}
Felder werden über ihren Feldnamen angesprochen, in Backticks. Der Rückfall mit ?? und leerer
Zeichenkette ist Standardstil. Der Wert ist immer der Rohwert, wie er gespeichert ist: Zahlen als
Zeichenkette, Daten als JJJJ-MM-TT. Lesbare Formen liefern imask, fdate, fcheck und ffmt.
Unterfelder: beide Schreibweisen
Adress-, Objekt- und Geopositionsfelder liefern Unterfelder. Moliri stellt sie verschachtelt bereit und behält den Originalschlüssel. Beide Formen funktionieren:
{#$o[`Leihgeber`]?.address_designation ?? ``#} verschachtelt {#$o[`Leihgeber~address_designation`] ?? ``#} wörtlich
Beim verschachtelten Zugriff immer ?. statt .: fehlt das Feld im Projekt oder ist es leer, ist $o[`Leihgeber`] undefiniert. Mit . bricht der Ausdruck ab, mit ?. greift der Rückfall.
Schalterfelder
Schalterfelder liefern den gespeicherten Wert, meist 1 für Ja. Die Zeichenkette '0' gilt in JavaScript
als wahr. Eine reine Wahrheitsprüfung wie $o[`Kurierbegleitung`] ? … ist deshalb falsch. Entweder
ausdrücklich vergleichen oder fcheck nehmen, das
auch eigene Speicherwerte richtig liest:
Kurierbegleitung: {#($o[`Kurierbegleitung`] == 1) ? `Ja` : `Nein`#} Kurierbegleitung: {#fcheck($o[`Kurierbegleitung`], `Ja`, `Nein`)#}
objects: alle Objekte
{# FOR obj IN objects #} {# INS $obj[`RegNr`] ?? `` #} {# END-FOR obj #}
Sobald eine FOR-Schleife über objects läuft, entsteht ein Dokument für alle Objekte. Siehe Vorlagen-Syntax .
f: Felddefinitionen
Enthält die Definition jedes Feldes samt Konfiguration. Vor allem für imask():
{# INS imask($o[`Breite`], f[`Breite`]) #}
Damit übernimmt die Ausgabe die Zahlenmaske aus der Feldkonfiguration .
p: Projektdaten
| Eigenschaft | Inhalt |
|---|---|
p.projektID | Kennung |
p.projektname | Name |
p.projektname_eng | Englischer Name |
p.projektbeginn | Beginn |
p.projektende | Ende |
p.projektort | Ort |
p.projektstatus | Status |
Projekt: {# INS p.projektname ?? `` #} Ort: {# INS p.projektort ?? `` #} Zeitraum: {# INS fdate(p.projektbeginn) #} bis {# INS fdate(p.projektende) #}
$f: Dateien des aktuellen Objekts
Entspricht files[String($o.objektID)] ?? [].
{# FOR file IN $f #} {# IF [`image`, `image_other`, `svg`].includes($file.dateiArt) #} {# IMAGE img($file, { width: 6 }) #} {# END-IF #} {# END-FOR file #}
Eigenschaften eines Dateieintrags
| Eigenschaft | Inhalt |
|---|---|
dateiID | Kennung |
dateiName | Gespeicherter Dateiname |
dateiText | Frei wählbarer Text, meist als sprechender Name genutzt |
dateiEndung | Endung |
dateiArt | image · image_other · svg · pdf · audio · video · 3D · file |
dateiSchlagworte | Schlagworte, kommagetrennt |
dateiDescription | Beschreibung |
dateiWidth, dateiHeight | Maße in Pixel |
dateiModifier1 bis 3 | Markierungen, Zuschnitt, Texterkennung |
Zusätzlich stehen Kurznamen für die Bildverarbeitung bereit: id, extension, width, height, modifier1 bis 3. Deshalb können Dateiobjekte aus $f direkt an img() gehen.
Nur wenn die Vorlage $f oder files erwähnt, ruft Moliri Dateien überhaupt ab. Und: $f folgt nicht der Laufvariablen einer Objektschleife. Innerhalb von FOR obj IN objects heißt es files[$obj.objektID].
files: alle Dateien nach Objekt
JSfiles = { "10349": [ /* Dateien von Objekt 10349 */ ], "10350": [ /* Dateien von Objekt 10350 */ ] }
{# FOR obj IN objects #} {# INS $obj[`RegNr`] ?? `` #} {# FOR file IN files[$obj.objektID] #} {# IMAGE img($file, { width: 6 }) #} {# END-FOR file #} {# END-FOR obj #}
$m: Feld-Anmerkungen
JS$m = { "RegNr": { color: "red", comment: "…", source: "…" } }
Je Feld Farbmarkierung, Kommentar und Quelle. In Schleifen über objects trägt jedes Objekt seine eigenen
Anmerkungen als $obj.__m. Ausgewertet wird $m von deco() ; lesen lässt es sich auch direkt:
{#$m[`Datierung`]?.comment ?? ``#}
$e: Ereignisse des aktuellen Objekts
Ein Array der Ereignisse , in der am Objekt festgelegten Reihenfolge.
In einer Schleife über objects hat jedes Objekt seine Ereignisse als $obj.__ereignisse.
| Eigenschaft | Inhalt |
|---|---|
art, artLabel | Schlüssel und Bezeichnung der Ereignisart, etwa ausstellung |
titel | Titel des Ereignisses |
geteilt | Ob es ein geteiltes Ereignis ist |
werText, werLabel, werPersonLabel | Erster Akteur: Freitext, aus den Normdaten, aus dem Adressbuch |
werGndID, werWikidataID | Kennungen des ersten Akteurs |
werRolle | Rolle des ersten Akteurs |
actors | Alle Akteure, je mit werText, werLabel, werPersonLabel, werGndID, werWikidataID, werRolle, werZuschreibung |
ortText | Ort als Freitext |
ortLabel, ortGndID, ortWikidataID | Ort aus den Normdaten |
von, bis | Zeitraum des Ereignisses |
datumText | Anzeigedatierung |
beschreibung | Beschreibung |
culture, periodName, method, materialsTech, attributionQualifier | Weitere Angaben des Ereignisses, etwa bei Herstellung und Zuschreibung |
rolle | Rolle bzw. Katalognummer dieses Objekts in diesem Ereignis |
vonOverride, bisOverride | Zeitraum nur für dieses Objekt |
notiz, quelle, kommentar, farbe, hesitant | Angaben der Verknüpfung |
{# FOR ev IN $e #} {# IF $ev.art === `ausstellung` #} {# INS $ev.titel #}{# INS combine($ev.rolle, { pre: ` (Kat. `, post: `)` }) #} {# END-IF #} {# END-FOR ev #}
von und bis sind der Zeitraum des Ereignisses. vonOverride und bisOverride gelten nur für dieses
Objekt, etwa ein abweichender Leihzeitraum.
$fmt: formatierte Feldwerte
Für Felder mit einem Ausgabe-Formatter:
{#$o[`Maße`]#} roh {#$fmt[`Maße`]#} formatiert, etwa 118,5 × 64 × 21 cm {#$fmt[`Maße.Objekt`]#} ein einzelner Eintrag
$fmt gehört zum aktuellen Objekt und ist in Schleifen über objects falsch. Dort ffmt($obj, `Maße`) verwenden. Einzelheiten unter Ausgabe-Formatter in Vorlagen .
Nicht mit $f verwechseln, das sind die Dateien.
ui: Ansichtseinstellungen des Exportierenden
| Schlüssel | Bedeutung | Vorgabe |
|---|---|---|
ui.checkboxYes, ui.checkboxNo | Darstellung von Schalterfeldern | ✅ / ❌ |
ui.dateFormat | Datumsformat als Muster (DD.MM.YYYY, D. MMMM YYYY …) oder false für unformatiert | DD.MM.YYYY |
ui.floatFormat | Zahlenformat: de-DE, en-US, de-CH, fr-FR, en-ISO | de-DE |
ui.nullreplacement | Ersatztext für leere Werte | n/a |
Die Vorgaben sind die der Ansichtseinstellungen . Liegt beim Export
keine Einstellung vor, setzt Moliri Ja und Nein für Schalter ein.
Jeder ui-Zugriff macht die Vorlage benutzerabhängig: dasselbe Dokument sieht bei zwei Personen anders
aus. Für Verträge, Leihscheine und alles Archivierte gehören feste Werte in den Befehl.
Weiterlesen
- Vorlagen-Syntax : die Befehle
- Vorlagen-Funktionen : die zehn Hilfen
- Ausgabe-Formatter in Vorlagen :
ffmtund$fmt - Rezepte : kopierbare Muster