Search the FirstSpirit Knowledge Base
Hallo liebe Experten,
wir haben für unser Projekt eine eigene Eingabekomponente für Daten angelegt, da das Verhalten von CMS_INPUT_DATE im Bezug auf den Umgang mit Zeitzonen für uns nicht optimal war. Sie funktioniert auch schon ganz gut. Es fehlt nur noch ein Detail: Wenn man das Datum per CMS_VALUE ausgibt, sollte möglichst das Default-Datums- und Zeitformat der generierten Locale verwendet werden. Und das auch wenn die Eingabekomponente an sich als sprachunabhängig gekennzeichnet ist.
Komme ich denn innerhalb der Klassen der Eingabekomponente irgendwie an den Generierungskontext oder auf einem anderen weg an die Language/Locale? Ich konnte dazu leider in der Doku nicht schlau werden, daher würde ich mich sehr freuen, wenn jemand behilflich sein könnte.
Viele Grüße und Dankesehr
Anja Schälicke
Hallo Anja,
der Trick bei CMS_INPUT_DATE ist die interne Implementierung einer Sonderbehandlung von Date
Im sprachunabhängigen Fall wird vor der Auslieferung des Werts die copy()-Methode der ValueEngineer-Instanz aufgerufen, die zur angefragten (also hier Generierungs-)Sprache gehört. Eventuell hilft das weiter?
Beste Grüße
Stefan
Hallo,
der ValueEngineer wird für jede Sprache gesondert erstellt. Die Sprache, in der ein Wert angefragt wurde, steht entsprechend über den ValueEngineerContext bereit.
Sollte dies nicht ausreichen, wären mehr Details z. B. über den Wertetyp eventuell hilfreich.
Beste Grüße
Stefan
Hallo Stefan,
der Wertetyp ist ein Container für ein Datums-Objekt. Die Funktion getLanguage im ValueEngineerContext habe ich auch schon entdeckt und ausprobiert. Die liefert mir bei einer sprachunabhängigen Komponente aber immer nur Deutsch, also die Mastersprache, zurück. Bei CMS_INPUT_DATE funktioniert das aber. Da bekomme ich für ein sprachunabhängiges Feld auf deutschen Seiten 13.12.2017 und auf englischen Dec 13, 2017. Deshalb dachte ich es müsste irgendeinen Trick geben den ich nicht gefunden habe.
So habe ich die Locale bisher abgefragt:
_locale = Locale.getDefault();
if(_context.getLanguage()!= null && _context.getLanguage().getLocale() != null){
_locale = _context.getLanguage().getLocale();
}
Und die habe ich unserem Datums-Container-Objekt mitgegeben.
VG
Anja
Hallo Anja,
der Trick bei CMS_INPUT_DATE ist die interne Implementierung einer Sonderbehandlung von Date
Im sprachunabhängigen Fall wird vor der Auslieferung des Werts die copy()-Methode der ValueEngineer-Instanz aufgerufen, die zur angefragten (also hier Generierungs-)Sprache gehört. Eventuell hilft das weiter?
Beste Grüße
Stefan
Hallo Stefan,
ja, das hilft sehr weiter . Herzlichen Dank, jetzt geht's!
Viele Grüße
Anja