Search the FirstSpirit Knowledge Base
Hallo,
folgende "Aufgabe":
Bei Toogle (cs_notfall) = ja sollen die zwei Datumsfelder (tv_date_lastCheck, tv_date_nextCheck) angezeigt werden und ein Wert eingegeben werden.
Bei Toogle (cs_notfall) = nein sollen die zwei Datumsfelder (tv_date_lastCheck, tv_date_nextCheck) ausgeblendet werden und die eventuell eingegebenen Werte gelöscht werden.
Das ganze in einer Tabellenvorlage (DB)
Der Wert für die Toogle (cs_notfall) wird bei neuem Datensatz per Formularvorgabe auf nein gesetzt.
<CMS_INPUT_TOGGLE name="cs_notfall" type="radio" allowEmpty="no" preset="copy" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Regelung notfallrelevant"/>
</LANGINFOS>
<OFF>
<LANGINFO lang="*" label="Nein"/>
</OFF>
<ON>
<LANGINFO lang="*" label="Ja"/>
</ON>
</CMS_INPUT_TOGGLE>
<CMS_INPUT_DATE name="tv_date_lastCheck" allowEmpty="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="letzte inhaltliche Überprüfung"/>
</LANGINFOS>
</CMS_INPUT_DATE>
<CMS_INPUT_DATE name="tv_date_nextCheck" allowEmpty="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="nächste inhaltliche Überprüfung"/>
</LANGINFOS>
</CMS_INPUT_DATE>
Dazu die Regel
<RULES>
<RULE>
<WITH>
<OR>
<EQUAL>
<PROPERTY name="VALUE" source="cs_notfall"/>
<FALSE/>
</EQUAL>
</OR>
</WITH>
<DO>
<PROPERTY name="EMPTY" source="tv_date_lastCheck"/>
<PROPERTY name="EMPTY" source="tv_date_nextCheck"/>
<NOT>
<PROPERTY name="VISIBLE" source="tv_date_lastCheck"/>
</NOT>
<NOT>
<PROPERTY name="VISIBLE" source="tv_date_nextCheck"/>
</NOT>
</DO>
</RULE>
</RULES>
Das Ein-/Ausblenden funktioniert.
Nur kann kein Datum mehr eingegeben werden, wenn die Datumsfelder angezeigt werden. Allerdings 1x ging es da konnte ich ein Wert eingeben und speichern. Nach Ändern der toogle auf nein und zurück auf ja konnte ein Wert mehr eingegeben werden,
Wo ist der Fehler in der Regel? Ich habe schon lange probiert, aber noch keine Lösung gefunden 😞
FS-veriosn:2012-09
Grüße
Andreas
Hallo Andreas,
ich würde die Regel in zwei Regeln splitten und das Löschen ausnahmsweise mit einem IF versehen (da es ja nur ausgeführt werden soll, wenn der Toogle auf false gesetzt wird), also so:
<RULE>
<WITH>
<EQUAL>
<PROPERTY name="VALUE" source="cs_notfall"/>
<TRUE/>
</EQUAL>
</WITH>
<DO>
<PROPERTY name="VISIBLE" source="tv_date_lastCheck"/>
<PROPERTY name="VISIBLE" source="tv_date_nextCheck"/>
</DO>
</RULE>
<RULE>
<IF>
<EQUAL>
<PROPERTY name="VALUE" source="cs_notfall"/>
<FALSE/>
</EQUAL>
</IF>
<WITH>
<TRUE/>
</WITH>
<DO>
<PROPERTY name="EMPTY" source="tv_date_lastCheck"/>
<PROPERTY name="EMPTY" source="tv_date_nextCheck"/>
</DO>
</RULE>
Außerdem (aber das ist Geschmackssache) würde ich beim TOOGLE das allowEmpty="no" entfernen und stat dessen einen Vorgabewert setzen. Ist der einmal gesetzt (was beim Vorgabewert ja immer der Fall ist), kann ein Redakteur die Eingabekomponente nicht mehr leer speichern. Das hat auch den Vorteil, dass die Klickreihenfolge "neuen Absatz anlegen"->"Bearbeiten abbrechen" zu keinen Problemen führt
Viele Grüße
Holger
Hallo Andreas,
ich würde die Regel in zwei Regeln splitten und das Löschen ausnahmsweise mit einem IF versehen (da es ja nur ausgeführt werden soll, wenn der Toogle auf false gesetzt wird), also so:
<RULE>
<WITH>
<EQUAL>
<PROPERTY name="VALUE" source="cs_notfall"/>
<TRUE/>
</EQUAL>
</WITH>
<DO>
<PROPERTY name="VISIBLE" source="tv_date_lastCheck"/>
<PROPERTY name="VISIBLE" source="tv_date_nextCheck"/>
</DO>
</RULE>
<RULE>
<IF>
<EQUAL>
<PROPERTY name="VALUE" source="cs_notfall"/>
<FALSE/>
</EQUAL>
</IF>
<WITH>
<TRUE/>
</WITH>
<DO>
<PROPERTY name="EMPTY" source="tv_date_lastCheck"/>
<PROPERTY name="EMPTY" source="tv_date_nextCheck"/>
</DO>
</RULE>
Außerdem (aber das ist Geschmackssache) würde ich beim TOOGLE das allowEmpty="no" entfernen und stat dessen einen Vorgabewert setzen. Ist der einmal gesetzt (was beim Vorgabewert ja immer der Fall ist), kann ein Redakteur die Eingabekomponente nicht mehr leer speichern. Das hat auch den Vorteil, dass die Klickreihenfolge "neuen Absatz anlegen"->"Bearbeiten abbrechen" zu keinen Problemen führt
Viele Grüße
Holger
Hallo Holger,
besten Dank!
hätte ich drauf kommen können ...
Grüße
Andreas