Startseite / Vorlagenentwicklung / Regeln / Formulareigenschaften <PROPERTY/> / Eigenschaft EMPTY

Eigenschaft EMPTY

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:

zurückliefern.

Die Eigenschaft EMPTY ermöglicht

  • einerseits eine Prüfung, ob für eine Eingabekomponente ein Wert gespeichert (oder in der Vorlage vorbelegt) wurde oder ob die Eingabekomponente leer ist
  • andererseits, eine Eingabekomponente auf einen Leerwert zu setzen.

Bei einigen Text-Eingabekomponenten (z. B. CMS_INPUT_TEXT) gelten (analog zum Parameter „allowEmpty“) auch Whitespaces (inkl. das Leerzeichen) als Inhalt, d. h. eine Text-Eingabekomponente gilt auch als „Nicht Leer“, wenn ausschließlich ein oder mehrere Leerzeichen eingegeben werden. Sollen reine Whitespace-Angaben verhindert werden, so ist diese Prüfung über Reguläre Ausdrücke realisierbar:

Leerwertprüfung für Eingabekomponenten

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.
Beispiel:

...
<WITH>
<PROPERTY name="EMPTY" source="gadget"/>
</WITH>
...

Der Ausdruck liefert einen Booleschen Wert zurück:

<PROPERTY source="gadget" name="empty"/>

Liefert:

Die Eingabekomponente enthält einen Wert (set="1").

FALSE

Die Eingabekomponente enthält keinen Wert (set="0"). Es ist kein Vorgabewert vorgegeben.

TRUE

Die Eingabekomponente enthält keinen Wert (set="0"). Es ist ein Vorgabewert mit preset="default" vorgegeben.

FALSE

Die Eingabekomponente enthält keinen Wert. Es ist ein (persistenter) Vorgabewert mit preset="copy" vorgegeben (set="1").

FALSE

Die Eingabekomponente enthält einen Leerwert (set="1").

TRUE

  
Wichtig Soll geprüft werden, ob eine Eingabekomponente NULL liefert, kann dies über das Tag <NULL/> bzw. <NOT_NULL/> erfolgen.

Leerwert in eine Eingabekomponente setzen

Der Ausdruck <PROPERTY source="gadget" name="EMPTY"/> kann in Handlungsanweisungen der Regeldefinition eingesetzt werden und setzt einen Leerwert in die Eingabekomponente.
Beispiel:

...
<DO>
<PROPERTY name="EMPTY" source="gadget"/>
</DO>
...

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.

...
<RULE>
<IF>
<NOT>
<PROPERTY source="cs_picture" name="EMPTY"/>
</NOT>
</IF>
<WITH>
<NOT>
<PROPERTY source="cs_description" name="EMPTY"/>
</NOT>
</WITH>
<DO>
<VALIDATION scope="RELEASE">
<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>
</RULE>
...

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:

...
<RULE>
<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 scope="SAVE">
<PROPERTY source="st_headline" name="VALID"/>
<MESSAGE lang="*" text="No content provided!"/>
<MESSAGE lang="DE" text="Es wurde kein Inhalt erfasst!"/>
</VALIDATION>
<VALIDATION scope="SAVE">
<PROPERTY source="st_text" name="VALID"/>
<MESSAGE lang="*" text="No content provided!"/>
<MESSAGE lang="DE" text="Es wurde kein Inhalt erfasst!"/>
</VALIDATION>
<VALIDATION scope="SAVE">
<PROPERTY source="st_picture" name="VALID"/>
<MESSAGE lang="*" text="No content provided!"/>
<MESSAGE lang="DE" text="Es wurde kein Inhalt erfasst!"/>
</VALIDATION>
</DO>
</RULE>
...

Beispiel 3) Eingabekomponente auf Leerwert setzen

Regeln Eigenschaft EMPTY, Komponente leeren

In diesem Beispiel wird eine Eingabekomponente vom Typ CMS_INPUT_CHECKBOX („st_checkbox“) auf einen Leerwert gesetzt. Dies geschieht durch das Aktivieren eines Schalters (CMS_INPUT_TOGGLE, „st_empty“). Waren in der Checkbox ein oder mehrere Einträge ausgewählt, werden diese mit einem Klick auf den Umschalter entfernt. Der Umschalter selbst wird nach jeder Aktivierung selbst wieder automatisch „geleert“ und kann dann erneut wieder betätigt werden (vgl. Eigenschaft VALUE).

 <RULES>
<RULE>
<IF>
<PROPERTY name="VALUE" source="st_empty"/>
</IF>
<WITH>
<FALSE/>
</WITH>
<DO>
<PROPERTY name="VALUE" source="st_empty"/>
<PROPERTY name="EMPTY" source="st_checkbox"/>
</DO>
</RULE>
</RULES>

© 2005 - 2024 Crownpeak Technology GmbH | Alle Rechte vorbehalten. | FirstSpirit 2024.4 | Datenschutz