<RULE/> Regelbegrenzung und Ausführungszeitpunkt definieren
Innerhalb einer Regeldefinition (<RULES>...</RULES>) können mehrere, voneinander unabhängige Regeln für ein Formular definiert werden. Jede Regel wird innerhalb eines <RULE/>-Tags definiert und muss immer mindestens eine Wertermittlung und eine Handlungsanweisung enthalten.
Standardmäßig werden Regeln unmittelbar bei jeder Eingabe des Redakteurs, also jedem Tastendruck, ausgeführt. Soll eine Regel seltener ausgeführt werden, kann das Attribut when eingesetzt werden:
Attribut "when"
Über das optionale Attribut when kann definiert werden, dass die jeweilige Regel
- einmalig beim Speichern ausgeführt wird: when="ONSAVE"
- einmalig beim Wechsel in den Bearbeitungs-Modus oder beim Erstellen von Elementen (Seite, Absatz, Datensatz) ausgeführt wird: when="ONLOCK"
Beispiel:
<RULES>
<RULE when="ONSAVE">
...
Standardmäßig (d.h. wenn when nicht angegeben wird) wird die Regel bei jeder Eingabe durch den Redakteur ausgeführt.
ONSAVE: Regelprüfung beim Speichern
Ist when="ONSAVE" definiert, wird die Regel (einmalig) beim Speichern des Elements geprüft, d.h.
- im SiteArchitect bei Betätigung
- des Icons „Speichern“ in der horizontalen Symbolleiste („Zwischenspeichern“)
- des Tastaturkürzels Strg+S („Zwischenspeichern“)
- des Icons „In den Ansichts-Modus wechseln“ in der horizontalen Symbolleiste („finales Speichern“)
- des Tastaturkürzels Strg+E („finales Speichern“)
- des Kontextmenü-Eintrags „Bearbeiten an/aus“ („finales Speichern“)
- im ContentCreator bei Betätigung
- der Schaltfläche „Speichern“
Diese Konfiguration ist beispielsweise empfehlenswert, wenn die betreffende Regel beim Anlegen eines neuen Elements oder beim Wechsel in den Bearbeitungs-Modus bereits verletzt wäre.
Die Verwendung von ONSAVE ist in erster Linie für eine Kombination mit Handlungsanweisungen (Tag <DO/>) ohne <VALIDATION/> vorgesehen. Denn bei einer Kombination von ONSAVE mit <VALIDATION/> ist zu beachten, dass aufgrund der einmaligen Prüfung die Anzeige einer Regelverletzung auch dann bestehen bleibt, wenn der Redakteur eine Korrektur vornimmt, die dazu führt, dass die Regel nicht mehr verletzt ist.
Auch die Kombination von INFO oder RELEASE mit ONSAVE sollte vermieden werden.
Beispiel:
<RULE when="ONSAVE">
<IF>
<PROPERTY name="EMPTY" source="st_text"/>
</IF>
<WITH>
<TEXT>Noch keine Eingabe</TEXT>
</WITH>
<DO>
<PROPERTY name="VALUE" source="st_text"/>
</DO>
</RULE>
Aufheben einer Regelverletzungs-Anzeige: Soll ONSAVE trotzdem mit <VALIDATION/> verwendet werden, kann die Anzeige einer Regelverletzung wieder aufgehoben werden, indem die Regel zweimal angegeben wird – einmal für eine validen Status, einmal für einen invaliden Status, beispielsweise:
<RULES>
<RULE when="ONSAVE">
<WITH>
<NOT>
<PROPERTY name="EMPTY" source="st_text"/>
</NOT>
</WITH>
<DO>
<VALIDATION scope="save">
<PROPERTY name="VALID" source="st_text"/>
<MESSAGE lang="*" text="Please enter text here"/>
<MESSAGE lang="DE" text="Bitte geben Sie einen Text ein"/>
</VALIDATION>
</DO>
</RULE>
<!-- Reset -->
<RULE>
<IF>
<NOT>
<PROPERTY name="VALID" source="st_text"/>
</NOT>
</IF>
<WITH>
<NOT>
<PROPERTY name="EMPTY" source="st_text"/>
</NOT>
</WITH>
<DO>
<VALIDATION scope="save">
<PROPERTY name="VALID" source="st_text"/>
<MESSAGE lang="*" text="Please enter text here"/>
<MESSAGE lang="DE" text="Bitte geben Sie einen Text ein"/>
</VALIDATION>
</DO>
</RULE>
</RULES>
In diesem Beispiel wird geprüft, ob die Text-Eingabekomponente „st_text“ leer ist. Ist sie leer, wird die Meldung „Bitte geben Sie einen Text ein“ angezeigt und die Komponente kann nicht gespeichert werden. Erst wenn Text eingegeben wird (und „st_text“ damit nicht mehr leer ist), wird die Meldung nicht mehr angezeigt und die Komponente kann gespeichert werden.
Hinweis: Regeln mit dem Ausführungszeitpunkt ONSAVE können nicht in der Formular-Vorschau der jeweiligen Vorlage (Integrierte Vorschau, Register „Formular“) getestet werden.
ONLOCK: Regelprüfung beim Wechsel in den Bearbeitungs-Modus
Soll die Regel bereits beim Wechsel in den Bearbeitungs-Modus bzw. beim Neuanlegen eines Elements geprüft werden, kann dazu when="ONLOCK" verwendet werden. Soweit entsprechend für den jeweiligen Vorlagen-Typ konfiguriert, wird die Regel
- im SiteArchitect beispielsweise bei folgenden Aktionen ausgeführt:
- Bei Betätigung des Icons „In den Bearbeitungs-Modus wechseln“ in der horizontalen Symbolleiste.
- Bei Betätigung des Tastaturkürzels Strg+E (wenn sich das Element im Ansichts-Modus befindet).
- Bei Betätigung des Kontextmenü-Eintrags „Bearbeiten an/aus“ (wenn sich das Element im Ansichts-Modus befindet).
- Beim Anlegen von neuen Seiten (beispielsweise über Kontextmenü-Eintrag „Neu - Seite anlegen“).
- Beim Anlegen von neuen Absätzen (beispielsweise über Kontextmenü-Eintrag „Neu - Absatz einfügen“).
- Beim Anlegen von neuen Datensätzen in Datenquellen (beispielsweise über Kontextmenü-Eintrag „Neu - Datensatz anlegen“) oder Eingabekomponenten (beispielsweise in FS_DATASET).
- im ContentCreator beispielsweise bei folgenden Aktionen ausgeführt:
- Bei Betätigung von „Bearbeiten“-Icons.
- Beim Anlegen von neuen Absätzen.
- Beim Anlegen von neuen Datensätzen.
Die Regel wird also noch vor der Bearbeitung des Elements ausgeführt. Auf diese Weise können Eingabekomponenten beispielsweise mit einem Wert vorbelegt werden. Der Wert wird beim Wechsel in den Bearbeitungs-Modus bzw. beim Neuanlegen eines Objekts in der Komponente angezeigt, aber erst beim Speichern durch den Redakteur auch tatsächlich in der Komponente gespeichert.
Im folgenden Beispiel wird beim Wechsel in den Bearbeitungs-Modus eine Datums-Komponente („st_endDate“) mit einem Datumswert aus einer anderen Datums-Komponente („st_startDate“) gefüllt und 2 Wochen hinzuaddiert:
<RULES>
<RULE when="ONLOCK">
<WITH>
<ADD value="2 weeks">
<PROPERTY name="VALUE" source="st_startDate"/>
</ADD>
</WITH>
<DO>
<PROPERTY name="VALUE" source="st_endDate"/>
</DO>
</RULE>
</RULES>
Das Tag <VALIDATION/> kann nicht mit when="ONLOCK" verwendet werden. |
Hinweis: Regeln mit dem Ausführungszeitpunkt ONLOCK können nicht in der Formular-Vorschau der jeweiligen Vorlage (Integrierte Vorschau, Register „Formular“) getestet werden.