Das Speichern einer Seite kann unterbunden werden, wenn bestimmte Pflichtfelder nicht gesetzt sind oder einem bestimmten Muster nicht entsprechen.
Hierzu kann eine mandatory.ini angelegt werden, welche im admin Verzeichnis des Seitentyps liegt. In dieser Datei werden die zu prüfenden Felder definiert und eingestellt. Das Speichern der Seite wird unterbrochen, wenn mindestens eines der hier definierten Felder fehlerhaft ist und eine entsprechende Meldung mit allen fehlerhaften Feldern erscheint.
Welche Einstellungen getroffen werden können und welche Werte erwartet werden, können Sie folgender Beschreibung entnehmen:
[Schlüssel]
test = value, date, numeric, regex, range, unset oder set (erforderlich)
type = field oder extra (optional, extra ist Standard)
title = Titel des Feldes (optional, der Schlüssel ist Standard)
value = Der zu prüfende Wert (je nach gewähltem Test unterschiedlich, bzw. nicht erforderlich)
error = Fehlermeldung (optional)
tab = Der dazugehörige Reiter (optional)
changed = Prüfung nur durchführen, wenn auf der Seite eine Änderung vorgenommen wurde (optional)
[foo]
test = "value"
value = "bar"
Im nächsten Beispiel muss der Aktivhaken der Seite gesetzt sein.
[inactive]
type = "field"
test = "set"
Das letzte Beispiel erfordert, dass das Extrafeld price einen Wert zwischen 100 und 200 haben muss. In der Fehlermeldung wird das Feld als Preis bezeichnet und die Fehlermeldung besagt Bitte geben Sie einen Preis zwischen 100 und 200 an. Zudem erhält man die Information, dass dieses Feld unter dem Reiter Produkte zu finden ist.
[price]
title = "Preis"
test = "range"
value = "100,200"
error = "Bitte geben Sie einen Preis zwischen 100 und 200 an"
tab = "Produkte"
Um tief verschachtelte Extrafelder anzusteuern setzen Sie im Schlüssel den Pfad zum Extrafeld mit dem Punkt-Zeichen getrennt. Verwenden Sie auch das *-Zeichen als Wildcard, wenn Sie z.B. ein Array-Element prüfen wollen, die Position im Array aber nicht bekannt/unregelmäßig ist.
[path.to.foo]
test = "value"
value = "bar"
[my.array.*.element]
test = "value"
value = "bar"
Tests
Jeder Test erwartet einen eigenen Wert für value (oder gar keinen Wert).
- value:
Der angegebene Wert muss value entsprechen (Groß- und Kleinschreibung wird berücksichtigt). - date:
Der angegebene Wert muss einem Datumsformat entsprechen, z.B. XXXX-XX-XX XX:XX:XX. Das X ist jeweils ein Platzhalter für eine Ganzzahl. - numeric:
Der angegebene Wert muss eine Ganzzahl sein. - regex:
Der angegebene Wert muss diesem regulären Ausdruck entsprechen. Hierbei wird die Javascript Regex Syntax verwendet. Beispiel:
^abc[0-9] bedeutet: der Wert muss mit abc beginnen, danach muss eine Zahl zwischen 0 und 9 folgen. Alles dahinter ist egal. - range:
Der angegebene Wert muss zwischen zwei Werten liegen. Die beiden Werte werden kommasepariert getrennt, Beispiel: 0,10
Dezimalzahlen können auch verwendet werden, müssen aber einen Punkt anstatt eines Kommas haben, Beispiel: 5.125,9.082
Negative Zahlen sind ebenfalls möglich. Für komplexere Wertebereiche wird der regex Test empfohlen. - unset:
Das angegebene Feld darf nicht gesetzt sein. - set:
Das angegebene Feld muss gesetzt sein (der Wert ist egal).
ignore_types = "type1,type2"
[foo]
test = "value"
value = "bar"
Sie können auch nur bestimmte Felder für bestimmte Seitentypen ignorieren. Die Eigenschaft ignore_types wird dann dem betroffenen Feld zugewiesen:
[foo]
test = "value"
value = "bar"
ignore_types = "type1,type2"
Die Datei kann auch in site/_global/<Seitentyp>/admin liegen und gilt dann global für alle Mandanten die diesen Seitentyp verwenden.
Es ist auch möglich, die Datei in site/<Mandant>/admin zu legen, dann gilt diese für alle Seitentypen dieses Mandanten. Möglich ist auch die Datei in site/_global/admin zu hinterlegen. Dann gilt diese Datei für alle Seitentypen in allen Mandanten.