Date 'now' in Rules verwenden
Author: s_bauer
Publication Date: 3/22/2016 15:29
Hallo,
es gibt bei den Regeln die Möglichkeit gegebene Daten aus Eingabekomponenten (beispielsweise CMS_INPUT_DATE) oder fix eingegebene Daten/Datum in irgendeiner Form gegeneinander abzugleichen z.B mit greater_than o.ä.
Gibt es auch eine Möglichkeit das aktuelle Datum, sozusagen #global.now, mit einem Datum aus einer Eingabekomponente abzugleichen?
Im Optiomalfall im datetime Format?
Vielen Dank,
Svenja Bauer
Tags: rules
-
Author: marza - 4/5/2016 10:33
Hallo Svenja,
zur ersten Deiner Fragen, ja das geht. Im ODFS findest Du unter Vorlagenentwicklung / Regeln / Vergleich. Ausdrücke / GREATER_THAN (der Link geht zur offiziellen Dokumentation, aber jeder FirstSpirit-Server bringt ein eigenes ODFS mit):
<GREATER_THAN>
<PROPERTY source="tt_date" name="VALUE"/>
<PROPERTY source="tt_ref_date" name="VALUE"/>
</GREATER_THAN>
Das aktuelle Datum kann man auf jeden Fall beim initialen Verwenden des Formulars befüllen lassen. Das Beispiel habe ich aus einer Tabellenvorlage einer Pressemitteilung kopiert:
<CMS_INPUT_DATE name="tt_ref_date" hFill="yes" mode="datetime" preset="created" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="DE" label="Datum" format="dd.MM.yyyy"/>
<LANGINFO lang="*" label="Date" format="yyyy-MM-dd"/>
</LANGINFOS>
</CMS_INPUT_DATE>
Wenn man das Referenzdatum verstecken möchte, dann kann man z.B. es per hidden="YES" im Formular verstecken.
Grüße Marian
0 -
Author: s_bauer - 4/5/2016 11:21
Hallo Marian,
das hatte ich auch schon als Lösung angepeilt, was mir allerdings gefehlt hat war die format Info. für meinen Fall wäre dann preset="changed" passender. Aber generell scheint es so zu funktionieren :smileyhappy:
Danke für die Info.
0 -
Author: MarcusDau - 2/6/2017 11:28
Ich würde das gerne aber flexibler halten. Kann man, wie ursprünglich angefragt, auch mit #global.now oder so kombinieren? Nur Datümer zulassen, die kleiner gleich now sind? Da muss es doch eine schlanke Lösung geben...
Ich hoffe, das meine Frage noch gelesen wird, auch wenn das Ticket schon als beantwortet markiert ist.
0 -
Author: marza - 2/6/2017 12:09
Hallo Marcus,
was Du haben möchtest klingt nach einer Regel. Die kann man selbstverständlich zusätzlich angeben. Durch preset="created" wird ja immer automatisch das aktuelle Datum beim Anlegen gesetzt.
Grüße Marian
0 -
Author: MarcusDau - 2/7/2017 5:57
Wie kann ich denn verhindern, dass ein Redakteur ein Datum in der Zukunft auswählt?
Ich würde das als RULE anlegen wollen:
<RULES>
<RULE>
<WITH>
<GREATER_THAN>
<PROPERTY name="VALUE" source="pt_veroeffentlichung"/>
<DATE>2017-12-01 12:00:00 +0100</DATE>
</GREATER_THAN>
</WITH>
<DO>
<NOT>
<VALIDATION scope="SAVE">
<PROPERTY name="VALID" source="pt_veroeffentlichung"/>
<MESSAGE lang="*" text="Das Datum darf nicht größer als heute sein."/>
</VALIDATION>
</NOT>
</DO>
</RULE>
</RULES>
Aber wie bekomme ich in den DATE-Teil sowas wie #global.now rein? Also ein dynamisches Datum...
0 -
Author: hoebbel - 2/13/2017 7:33
Hallo Marcus,
ich fürchte, dass dies ein fehlendes Feature ist, dass "schlank" hinzubekommen. Ich fürchte, das geht nur so (nicht getestet, kann also noch Tipp-und Denk-Fehler beinhalten :smileywink:)
<CMS_INPUT_DATE name="pt_hiddendate" hFill="yes" hidden="no" preset="created" useLanguages="no">
<LANGINFOS>
<LANGINFO
lang="*"
label="Hidden Date (created date)"
format="dd.MM.yyyy"/>
<LANGINFO
lang="DE"
label="Verstecktes Datum (Erstellungsdatum)"
format="dd.MM.yyyy"/>
</LANGINFOS>
</CMS_INPUT_DATE>
<CMS_INPUT_DATE name="pt_veroeffentlichung" hFill="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO
lang="*"
label="release date"
format="dd.MM.yyyy"/>
<LANGINFO
lang="DE"
label="Datum der Veröffentlichung"
format="dd.MM.yyyy"/>
</LANGINFOS>
</CMS_INPUT_DATE>
<RULES>
<RULE>
<WITH>
<GREATER_THAN>
<PROPERTY name="VALUE" source="pt_veroeffentlichung"/>
<PROPERTY name="VALUE" source="pt_hiddendate"/>
</GREATER_THAN>
</WITH>
<DO>
<NOT>
<VALIDATION scope="SAVE">
<PROPERTY name="VALID" source="pt_veroeffentlichung"/>
<MESSAGE lang="*" text="Das Datum darf nicht größer als heute sein."/>
</VALIDATION>
</NOT>
</DO>
</RULE>
</RULES>
Um den "schlanken" Fall [Prüfung geben #global.now zu bekommen] müsstest Du einen Feature Request einstellen. Wobei ich nicht glaube, dass dieser umgesetzt wird. In die Richtung, in der Du das haben willst (Datum muss älter als "jetzt" sein) ist das noch logisch. Wenn man aber ein Datum in der Zukunft haben will (also größer als jetzt), dann würde die Regel im Laufe der Zeit ungültig werden. [Deshalb habe ich oben auch modified und nicht changed verwendet, falls das jemand mal umgedreht verwenden will :smileywink:]. Das Verhalten, das daraus resultieren würde, sehe ich als zumindest "unschön" an.
Viele Grüße,
Holger
0
Please sign in to leave a comment.
Comments
6 comments