Word-Vorlagen

Vorlagen-Variablen

Jeder Befehl sieht diese Variablen.

Übersicht

VariableInhalt
$oDas 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
objectsArray aller geladenen Objekte, in der Filter- und Sortierreihenfolge der Ansicht
fFelddefinitionen, nach Feldname: f[`Gewicht`] liefert die Definition samt Konfiguration
pProjektdaten
$fDateien des aktuellen Objekts
filesAlle Dateien, nach Objektkennung gruppiert
$mFeld-Anmerkungen des aktuellen Objekts (Farbe, Kommentar, Quelle)
$eDie Ereignisse des aktuellen Objekts
$lDie Verknüpfungen des aktuellen Objekts, nach Verknüpfungsart
$fmtDie formatierten Feldwerte des aktuellen Objekts (Ausgabe-Formatter)
uiAnsichtseinstellungen 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.object_id#}

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

EigenschaftInhalt
p.project_idKennung
p.nameName
p.name_enEnglischer Name
p.start_dateBeginn
p.end_dateEnde
p.placeOrt
p.statusStatus
Projekt: {# INS p.name ?? `` #}
Ort: {# INS p.place ?? `` #}
Zeitraum: {# INS fdate(p.start_date) #} bis {# INS fdate(p.end_date) #}

$f: Dateien des aktuellen Objekts

Entspricht files[String($o.object_id)] ?? [].

{# FOR file IN $f #}
{# IF [`image`, `image_other`, `svg`].includes($file.kind) #}
{# IMAGE img($file, { width: 6 }) #}
{# END-IF #}
{# END-FOR file #}

Eigenschaften eines Dateieintrags

EigenschaftInhalt
file_idKennung
nameGespeicherter Dateiname
textFrei wählbarer Text, meist als sprechender Name genutzt
extensionEndung
kindimage · image_other · svg · pdf · audio · video · 3D · file
keywordsSchlagworte, kommagetrennt
descriptionBeschreibung
width, heightMaße in Pixel
modifier1 bis 3Markierungen, Zuschnitt, Texterkennung

Zusätzlich trägt jeder Eintrag die Kennung als id. Deshalb können Dateiobjekte aus $f direkt an img() gehen.

Dateien werden nur bei Bedarf geladen

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.object_id].

files: alle Dateien nach Objekt

JS
files = {
  "10349": [ /* Dateien von Objekt 10349 */ ],
  "10350": [ /* Dateien von Objekt 10350 */ ]
}
{# FOR obj IN objects #}
{# INS $obj[`RegNr`] ?? `` #}
{# FOR file IN files[$obj.object_id] #}
{# 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.__events.

EigenschaftInhalt
type, type_labelSchlüssel und Bezeichnung der Ereignisart, etwa ausstellung
titleTitel des Ereignisses
is_sharedOb es ein geteiltes Ereignis ist
actor_text, actor_label, actor_person_labelErster Akteur: Freitext, aus den Normdaten, aus dem Adressbuch
actor_gnd_id, actor_wikidata_idKennungen des ersten Akteurs
actor_roleRolle des ersten Akteurs
actorsAlle Akteure, je mit actor_text, actor_label, actor_person_label, actor_gnd_id, actor_wikidata_id, actor_role, actor_attribution
place_textOrt als Freitext
place_label, place_gnd_id, place_wikidata_idOrt aus den Normdaten
date_from, date_toZeitraum des Ereignisses
date_textAnzeigedatierung
descriptionBeschreibung
culture, period_name, method, materials_tech, attribution_qualifierWeitere Angaben des Ereignisses, etwa bei Herstellung und Zuschreibung
roleRolle bzw. Katalognummer dieses Objekts in diesem Ereignis
date_from_override, date_to_overrideZeitraum nur für dieses Objekt
note, source, comment, color, hesitantAngaben der Verknüpfung
{# FOR ev IN $e #}
{# IF $ev.type === `ausstellung` #}
{# INS $ev.title #}{# INS combine($ev.role, { pre: ` (Kat. `, post: `)` }) #}
{# END-IF #}
{# END-FOR ev #}

date_from und date_to sind der Zeitraum des Ereignisses. date_from_override und date_to_override gelten nur für dieses Objekt, etwa ein abweichender Leihzeitraum.

$l: Verknüpfungen des aktuellen Objekts

Die Verknüpfungen des Objekts mit Normdaten, Adressen, Objekten und Dateien, nach dem Schlüssel der Verknüpfungsart: $l[`documented_in`] ist die Liste der Nachweise „dokumentiert in“, in der Reihenfolge des Verknüpfungsbereichs. In einer Schleife über objects steht dieselbe Liste unter $obj.__links[`object`][`documented_in`], nach Bibliothek und Art.

EigenschaftInhalt
targetDas Ziel mit label, seiner Beschriftung. Bei Normdaten zusätzlich uri, gnd_id und wikidata_id. Ohne Leserecht am Ziel ist target leer
target_idDie Nummer des Ziels, auch ohne Leserecht
extraDie Zusatzfelder der Art, etwa extra.page für die Seite
type_key, type_labelSchlüssel und Bezeichnung der Art
libraryDie Bibliothek: normdata, address, object oder file
hesitant, sourceUnsicher und Beleg der Verknüpfung
sort_orderPosition im Verknüpfungsbereich
{# FOR d IN $l[`documented_in`] #}
{# INS $d.target?.label ?? `` #}{# INS combine($d.extra?.page, { pre: `, S. ` }) #}
{# END-FOR d #}

Arten, die Sie nicht lesen dürfen, fehlen in $l; eine angefragte Art ohne Verknüpfungen ergibt eine leere Liste. Die Prüfung im Vorlagen-Editor kennt $l: eine Art, die es im Projekt nicht gibt oder die nicht lesbar ist, steht dort unter Fehlt im Projekt, ist aber kein Fehler.

$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üsselBedeutungVorgabe
ui.checkbox_yes, ui.checkbox_noDarstellung von Schalterfeldern✅ / ❌
ui.date_formatDatumsformat als Muster (DD.MM.YYYY, D. MMMM YYYY …) oder false für unformatiertDD.MM.YYYY
ui.float_formatZahlenformat: de-DE, en-US, de-CH, fr-FR, en-ISOde-DE
ui.null_replacementErsatztext für leere Werten/a

Die Vorgaben sind die der Ansichtseinstellungen . Liegt beim Export keine Einstellung vor, setzt Moliri Ja und Nein für Schalter ein.

Wann ui nicht zu verwenden ist

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