s_bauer
I'm new here

Date 'now' in Rules verwenden

Jump to solution

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

1 Solution

Accepted Solutions
marza
I'm new here

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

View solution in original post

6 Replies
marza
I'm new here

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

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 Smiley Happy

Danke für die Info.

0 Kudos
MarcusDau
Occasional Collector

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 Kudos

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 Kudos
MarcusDau
Occasional Collector

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 Kudos

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 Smiley Wink)

<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 Smiley Wink]. Das Verhalten, das daraus resultieren würde,  sehe ich als zumindest "unschön" an.

Viele Grüße,

Holger