tonja_pfeiffer
I'm new here

CMS_INPUT_DATE zweites Datumsfeld mit der Eingabe aus dem ersten vorbelegen?

Jump to solution

Hallo Zusammen,

wir haben in mehreren Eingabekomponenten zwei Datumsfelder, wobei das zweite Datum immer nach dem ersten Datum (oder höchstens gleich dem ersten Datum) sein darf. Hier ein Formularbeispiel:

<CMS_INPUT_DATE name="st_validfrom" useLanguages="no">

        <LANGINFOS>

          <LANGINFO lang="*" label="Valid from" description="Before this date, the paragraph is no longer displayed"/>

          <LANGINFO lang="DE" label="Gültig von" description="Vor diesem Datum wird der Absatz nicht mehr angezeigt"/>

        </LANGINFOS>

      </CMS_INPUT_DATE>

      <CMS_INPUT_DATE name="st_validto" useLanguages="no">

        <LANGINFOS>

          <LANGINFO lang="*" label="Valid to" description="After this date, the paragraph is no longer displayed"/>

          <LANGINFO lang="DE" label="Gültig bis" description="Nach diesem Datum wird der Absatz nicht mehr angezeigt"/>

        </LANGINFOS>

      </CMS_INPUT_DATE>

Die Validierung erfolgt über die Rules. Wählt man das erste Datum sehr weit in der Zukunft aus, was viel geklicke mit sich bringt, dann muss man das anschließend für das zweite Feld noch mal wiederholen.

Ich suche nun den Weg, das zweite Datum mit den im ersten Feld ausgewählten Datum vor zu belegen, damit dort dann nicht mehr so viel geklickt werden muss.

DatumVonBis.PNG

Wir haben versucht, die Vorbelegung über die RULES zu erreichen. Auf den ersten Blick scheint das auf zu funktionieren. Beim Speichern wird der Inhalt des zweiten Datumsfeldes dann aber immer wieder mit der "Vorbelegung" überschrieben.

Hat jemand vielleicht ein Beispiel für mich, wie man das macht?

Viele Grüße,

Tonja

0 Kudos
1 Solution

Accepted Solutions

Hallo,

wir hatte eine ähnliche Anforderung und unsere Regel sieht nun so aus:

<ON_EVENT>
     <IF>
          <AND>
               <NOT>
                    <PROPERTY source="tt_start_date" name="EMPTY"/>
               </NOT>
               <OR>                    
                    <PROPERTY source="tt_end_date" name="EMPTY"/>
                    <LESS_THAN>
                         <PROPERTY source="tt_end_date" name="VALUE"/>
                         <PROPERTY source="tt_start_date" name="VALUE"/>
                    </LESS_THAN>
               </OR>
          </AND>
     </IF>
     <WITH>
          <PROPERTY source="tt_start_date" name="VALUE"/>
     </WITH>
     <DO>
          <PROPERTY source="tt_end_date" name="VALUE"/>
     </DO>
</ON_EVENT>

Sobald das Startdatum gepflegt ist und gleichzeitig das Enddatum leer ist oder vor dem Startdatum liegt, wird das Enddatum auf das Startdatum gesetzt.

View solution in original post

0 Kudos
5 Replies
StefanSchulz
I'm new here

Hi Tonja,

das klingt für mich nicht ganz so einfach. Hier müsste man sich gründlich überlegen, unter welchen Bedingungen das zweite Datumsfeld überschrieben werden soll. Vielleicht postest du einfach mal eure aktuell eingesetzen Regeln und schreibst natürlichsprachig auf, wann eine Überschreibung erfolgen soll. Ich befürchte mal, dass nicht alle Fälle einfach oder überhaupt abzudecken sind.

Gruß

Stefan

0 Kudos

Hallo Stefan,

das waren unsere Rules:

<ON_EVENT>
    <WITH>
        <ADD value="0">
            <PROPERTY source="st_validfrom" name="VALUE"/>
        </ADD>
    </WITH>
    <DO>
        <PROPERTY source="st_validto" name="VALUE"/>
    </DO>
</ON_EVENT>

Wir wollen das Feld immer ändern können. Es geht lediglich darum, wenn man den Kalender vom zweiten  Feld öffnet, dass dieser dann schon das Datum aus dem ersten Feld anzeigt.

Bei Beispiel oben habe ich für das erste Datum den 8.11. genommen und musste ein paar mal klicken bis ich im November war. Das zweite Feld möchte ich nun auf den 10.11 setzten und es wäre dann schön, wenn sich der Kalender vom zweiten Feld mit dem 8.11. ausgewählt öffenen würde, damit ich nur noch die zwei Tage weiter klicken muss.

Viele Grüße,

Tonja

0 Kudos

Ja, diese Regel setzt den Wert natürlich jedesmal, wenn ein Event unter Beteiligung von st_validfrom ausgelöst wird. Hier fehlen Vorbedingungen für die Regel. So wie du es beschreibst, schätze ich mal ein "Wenn st_validto leer ist" könnte erstmal hinreichend sein.

Eine Vorbedingung zur Ausführung der Regel kannst du über deren IF-Teil erstellen. Ein Beispiel dazu findest du hier:

http://www.e-spirit.com/odfs50/de/vorlagenentwicklung/regeln/vorbedingungen/vorbedingung.html?commun...

Gruß

Stefan

Hallo,

wir hatte eine ähnliche Anforderung und unsere Regel sieht nun so aus:

<ON_EVENT>
     <IF>
          <AND>
               <NOT>
                    <PROPERTY source="tt_start_date" name="EMPTY"/>
               </NOT>
               <OR>                    
                    <PROPERTY source="tt_end_date" name="EMPTY"/>
                    <LESS_THAN>
                         <PROPERTY source="tt_end_date" name="VALUE"/>
                         <PROPERTY source="tt_start_date" name="VALUE"/>
                    </LESS_THAN>
               </OR>
          </AND>
     </IF>
     <WITH>
          <PROPERTY source="tt_start_date" name="VALUE"/>
     </WITH>
     <DO>
          <PROPERTY source="tt_end_date" name="VALUE"/>
     </DO>
</ON_EVENT>

Sobald das Startdatum gepflegt ist und gleichzeitig das Enddatum leer ist oder vor dem Startdatum liegt, wird das Enddatum auf das Startdatum gesetzt.

0 Kudos

Vielen Dank,

das funktioniert prima und ist genau das was ich gesucht habe.

Viele Grüße,

Tonja

0 Kudos