Eigenschaft EMPTY
Leerwertprüfung für Eingabekomponenten
Eingabekomponenten können einen Wert enthalten oder „leer“ sein. Ist kein Wert in der Eingabekomponente hinterlegt, kann diese abhängig vom Typ der Eingabekomponente entweder einen:
- Leerwert (z. B. CMS_INPUT_TEXT) oder
- NULL (z. B. CMS_INPUT_NUMBER) zurückliefern.
Der Ausdruck <PROPERTY source="gadget" name="EMPTY"/> kann im Bereich Wertermittlung der Regeldefinition (oder für die Definition einer Vorbedingung eingesetzt werden und prüft, ob für eine Eingabekomponente ein Wert gespeichert (oder in der Vorlage vorbelegt) wurde oder ob die Eingabekomponente leer ist. Der Ausdruck liefert einen Booleschen Wert zurück:
<PROPERTY source="gadget" name="empty"/> | Liefert: |
---|---|
Eingabekomponente enthält einen Wert (set="1") | FALSE |
Eingabekomponente enthält keinen Wert (set="0"). Es ist kein Vorgabewert vorgegeben. | TRUE |
Eingabekomponente enthält keinen Wert (set="0"). Es ist ein Vorgabewert mit preset="default" vorgegeben. | FALSE |
Eingabekomponente enthält keinen Wert. Es ist ein (persistenter) Vorgabewert mit preset="copy" vorgegeben (set="1"). | FALSE |
Eingabekomponente enthält einen Leerwert (set="1") | TRUE |
Soll geprüft werden, ob eine Eingabekomponente NULL liefert, kann dies über das Tag <NOT_NULL/> erfolgen. |
Beispiele
Beispiel 1) Einfache Leerprüfung für eine Eingabekomponente
Das folgende Formular enthält zwei Eingabekomponenten. Die Eingabekomponente „cs_picture“ (vom Typ FS_REFERENCE) zur Auswahl eines Bildes und „cs_description“ (vom Typ CMS_INPUT_TEXTAREA) zur Angabe einer Bildbeschreibung.
Über ein dynamisches Formular soll sichergestellt werden, dass die Eingabekomponente „cs_description“ gefüllt werden muss, wenn die Eingabekomponente „cs_picture“ nicht leer ist.
Dazu wird eine Vorbedingung definiert, die zunächst prüft, ob ein Bild in der Eingabekomponente „cs_picture“ referenziert wird. Ist die Vorbedingung erfüllt („cs_picture“ ist nicht leer), wird innerhalb des <WITH/>-Abschnitts geprüft, ob die Eingabekomponente „cs_description“ leer ist. Das Ergebnis dieser Prüfung ist ein Boolescher Wert, der anschließend im <DO/>-Abschnitt mit einer Validierung der Eingabekomponente verknüpft wird. Solange die Bedingung („Bildbeschreibung ist nicht leer“) nicht erfüllt ist, wird der <VALIDATION/>-Abschnitt der Regel ausgeführt und ein Korrekturhinweis eingeblendet. Durch die umschließenden <ON_SAVE/>-Tags wird außerdem das Speichern des Formulars unterbunden.
...
<ON_RELEASE>
<IF>
<NOT>
<PROPERTY source="cs_picture" name="EMPTY"/>
</NOT>
</IF>
<WITH>
<NOT>
<PROPERTY source="cs_description" name="EMPTY"/>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="cs_description" name="VALID"/>
<MESSAGE lang="*" text="The editor must not be empty!"/>
<MESSAGE lang="DE" text="Der Editor darf nicht leer sein!"/>
</VALIDATION>
</DO>
</ON_RELEASE>
....
Hinweis: Eine solche Definition eignet sich nicht unbedingt für eine Bearbeitung mit InEdit. Siehe dazu Seite Anzeige von Regelverletzungen im ContentCreator.
Beispiel 2) Speichern eines Formulars mit leeren Eingabekomponenten unterbinden
Das nachfolgende Beispiel verhindert das Speichern eines Formulars, wenn nicht mindestens eine Eingabekomponente des Formulars mit Inhalt gefüllt wurde. Die Regel wird sprachabhängig ausgewertet. Dazu wird innerhalb der Vorbedingung zunächst sichergestellt, dass der Redakteur das Formular in der Projekt-Mastersprache bearbeitet. Diese Auswertung ist insbesondere bei sehr restriktiven Regeln wichtig, die wie in diesem Beispiel das Speichern eines Formulars verhindern. Der Regelentwickler sollte bedenken, dass nicht immer alle Sprachen für jeden Redakteur auch sichtbar oder editierbar sind:
...
<ON_SAVE>
<IF>
<EQUAL>
<PROPERTY source="#global" name="LANG"/>
<PROPERTY source="#global" name="MASTER"/>
</EQUAL>
</IF>
<WITH>
<NOT>
<AND>
<PROPERTY source="st_headline" name="EMPTY"/>
<PROPERTY source="st_text" name="EMPTY"/>
<PROPERTY source="st_picture" name="EMPTY"/>
</AND>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_headline" name="VALID"/>
<MESSAGE lang="*" text="No content provided!"/>
<MESSAGE lang="DE" text="Es wurde kein Inhalt erfasst!"/>
</VALIDATION>
<VALIDATION>
<PROPERTY source="st_text" name="VALID"/>
<MESSAGE lang="*" text="No content provided!"/>
<MESSAGE lang="DE" text="Es wurde kein Inhalt erfasst!"/>
</VALIDATION>
<VALIDATION>
<PROPERTY source="st_picture" name="VALID"/>
<MESSAGE lang="*" text="No content provided!"/>
<MESSAGE lang="DE" text="Es wurde kein Inhalt erfasst!"/>
</VALIDATION>
</DO>
</ON_SAVE>
...