33552C11ACC54421A1F1E43377277D9F
  • Stefan Buchali (UDG)
  • 02.02.2018
  • DE

Kleine Helferlein - Teil 1: Wiederkehrender Erscheinungszeitraum

Jeder, der mit Opentext WSM zu tun hat, kennt die Funktion „Verlinkung/Erscheinungszeitraum“, bei der man einer Seite oder einem Modul auf einer Seite ein Start- und/oder ein Enddatum zuweisen kann. Nur innerhalb des definierten Zeitfensters ist es dann sichtbar, um die Publizierung und De-Publizierung kümmert sich – entsprechende Publizierungeinstellungen vorausgesetzt – das CMS.

Nun hatte ich neulich die Anforderung, einen bestimmten Teaser wöchentlich wiederkehrend zu platzieren:
Er sollte von Dienstag 9:00 Uhr bis Mittwoch 18:00 Uhr sichtbar sein. Jede Woche von Neuem.

Da das CMS hierfür (noch?) kein Feature anbietet, wir aber glücklicherweise auf einen DS publizieren, bot sich nach kurzem fachlichem Austausch im Slack die Nutzung von Dynaments in Kombination mit den Datums-Inlinefunktionen an. Mit diesen hat man Zugriff auf die java.util.Calendar-Methoden.

Näheres dazu findet sich in der Dynaments-Dokumentation. Heraus kam hierbei folgendes Schnipsel:

<rde-dm:attribute source="request" attribute="jetzt" mode="write" value="[##].now().dateGet('DAY_OF_WEEK')" />
<rde-dm:attribute source="request" attribute="jetzt" mode="write" op="concat" value="[##].getSystemDate('HH')" />
<rde-dm:attribute source="request" attribute="start" mode="write" value="309" />
<rde-dm:attribute source="request" attribute="ende" mode="write" value="418" />
<rde-dm:attribute mode="condition" tag="notag">
  <rde-dm:constraint>
    ([#request:jetzt#].asInteger() GE [#request:start#].asInteger())
AND ([#request:jetzt#].asInteger() LT [#request:ende#].asInteger())
  </rde-dm:constraint>
  <p>HELLO World</p>
</rde-dm:attribute>

Was genau passiert hier?

  • Zeile 1 liefert die Nummer des aktuellen Tages bezogen auf die Woche, startend mit Sonntag (Sonntag also ist „1“). Diesen Wert legen wir in einem Request-Attribut namens „jetzt“ ab.
  • Zeile 2 hängt die momentane volle Stunde (zweistellig) an. Achtung: Hier erfolgt keine Addition, sondern eine String-Operation (concat)! Somit erhalten wir eine dreistellige Zahl zwischen „100“ (Sonntag, 0 Uhr) und „723“ (Samstag, 23 Uhr), wobei auf „123“ direkt die „200“ folgt.
  • Dies aber ist völlig ausreichend für den hier notwendigen „Von-bis“-Vergleich. Darum speichern wir in Zeilen 3 und 4 diese „Von-“ und „Bis“-Werte im selben Format ihrerseits in Request-Attributen ab.
  • Der folgende Constraint prüft dann, ob „jetzt“ innerhalb der „Start“-„Ende“-Grenzen liegt. Zum korrekten Größenvergleich wandeln wir die jeweiligen Werte, die ja als Strings vorliegen, in Integer um.

Kudos gehen an Thomas Pollinger und Holm Gehre für das entscheidende Stichwort und die gemeinsame Evaluation des Ganzen.


Über den Autor:
Stefan Buchali (UDG)

Stefan Buchali ist Director Software Development bei der UDG United Digital Group. Seit dem Jahr 2001 betreut und entwickelt er zusammen mit seinem Team die Opentext- (vormals RedDot-) basierten Websites namhafter und internationaler Kunden.