content_date - CMS_DATE - neues Format

Alles rund um Module und Plugins in CONTENIDO 4.9.
Antworten
steve04
Beiträge: 46
Registriert: Fr 5. Nov 2010, 20:26
Kontaktdaten:

content_date - CMS_DATE - neues Format

Beitrag von steve04 » Di 1. Dez 2015, 08:56

Guten Morgen,

ich versuche gerade zum ersten Mal, das Modul content_date zu verwenden und hätte gern noch eine andere Formatierung oder gar zwei, z.B.

TT.MM. oder nur TT.

Wenn ich das Modul im Editor bediene, kann ich ja unter diversen Formaten wählen. Dort hätte ich halt gern noch ein, zwei weitere Einträge.
Kann ich da etwas daran drehen, ohne den Core verändern zu müssen?
Wie würde es gehen?

Vielen Dank schon mal!
Stephan

rethus
Beiträge: 1826
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: content_date - CMS_DATE - neues Format

Beitrag von rethus » Di 1. Dez 2015, 10:22

Da musst du schon an den Core, oder du erstellst eine eigene Klasse als Abkömmling von cContentTypeAbstact.

Hier für einen Laien der einfachere Weg:

Verändere contenido/classes/content_types/class.content.type.date.php indem du nach Zeile 80 dein gewünschtes Format eingibt.

Auszug ab Zeile 80:

Code: Alles auswählen

$this->_dateFormatsPhp = array(
            conHtmlentities('{"dateFormat":"","timeFormat":""}') => '',
            conHtmlentities('{"dateFormat":"d.m.Y","timeFormat":""}') => $this->_formatDate('d.m.Y'),
            conHtmlentities('{"dateFormat":"D, d.m.Y","timeFormat":""}') => $this->_formatDate('D, d.m.Y'),
            conHtmlentities('{"dateFormat":"d. F Y","timeFormat":""}') => $this->_formatDate('d. F Y'),
            conHtmlentities('{"dateFormat":"Y-m-d","timeFormat":""}') => $this->_formatDate('Y-m-d'),
            conHtmlentities('{"dateFormat":"d/F/Y","timeFormat":""}') => $this->_formatDate('d/F/Y'),
            conHtmlentities('{"dateFormat":"d/m/y","timeFormat":""}') => $this->_formatDate('d/m/y'),
            conHtmlentities('{"dateFormat":"F y","timeFormat":""}') => $this->_formatDate('F y'),
            conHtmlentities('{"dateFormat":"F-y","timeFormat":""}') => $this->_formatDate('F-y'),
            conHtmlentities('{"dateFormat":"d.m.Y","timeFormat":"H:i"}') => $this->_formatDate('d.m.Y H:i'),
            conHtmlentities('{"dateFormat":"m.d.Y","timeFormat":"H:i:s"}') => $this->_formatDate('m.d.Y H:i:s'),
            conHtmlentities('{"dateFormat":"","timeFormat":"H:i"}') => $this->_formatDate('H:i'),
            conHtmlentities('{"dateFormat":"","timeFormat":"H:i:s"}') => $this->_formatDate('H:i:s'),
            conHtmlentities('{"dateFormat":"","timeFormat":"h:i A"}') => $this->_formatDate('h:i A'),
            conHtmlentities('{"dateFormat":"","timeFormat":"h:i:s A"}') => $this->_formatDate('h:i:s A')
        );
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable - Onlineshops, Hosting, Domains und Webentwicklung
suther.de - Webentwicklung, IT-Service, IT-Beratung, Linux-Administration

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

steve04
Beiträge: 46
Registriert: Fr 5. Nov 2010, 20:26
Kontaktdaten:

Re: content_date - CMS_DATE - neues Format

Beitrag von steve04 » Di 1. Dez 2015, 13:23

Vielen Dank für die prompte und kompetente Antwort!
Ob ich dafür an den Core gehe, muss ich noch mal genauer überdenken.

Viele Grüße,
Stephan

Oldperl
Beiträge: 4016
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Franken, Bayern
Kontaktdaten:

Re: content_date - CMS_DATE - neues Format

Beitrag von Oldperl » Mi 2. Dez 2015, 08:44

Servus,
rethus hat geschrieben:Da musst du schon an den Core, oder du erstellst eine eigene Klasse als Abkömmling von cContentTypeAbstact.
Nein! Muss er nicht!
Die Liste kann per EffectiveSettings in Form eines Arrays im JSON-Format erweitert werden (siehe contenido/classes/content_types/class.content.type.date.php ab Zeile 98).

Code: Alles auswählen

// add formats from client settings
        $additionalFormats = getEffectiveSettingsByType('cms_date');
        foreach ($additionalFormats as $format) {
            $formatArray = json_decode($format, true);
            // ignore invalid formats
            if (empty($formatArray) || count($formatArray) != 2 || !array_key_exists('dateFormat', $formatArray) || !array_key_exists('timeFormat', $formatArray)) {
                cWarning('An invalid date-time-format has been entered in the client settings.');
                continue;
            }
            $key = conHtmlSpecialChars($format);
            $value = implode(' ', $formatArray);
            $this->_dateFormatsPhp[$key] = $this->_formatDate($value);
        } 
Leider konnte ich weder in der Klasse selbst noch auf dem docs-Portal eine Doku finden, wie dieser Eintrag genau aussehen soll/müsste. Er wird aber zumindest unter https://docs.contenido.org/display/CONDEVE/Settings aufgeführt (einfach mal nach cms_date suchen).
Selbst habe ich es zwar noch nicht getestet, aber ich denke, sofern ich den Code richtig lese, der Eintrag ist analog zu den bereits vorhandenen Einträgen zu machen, wobei der Settings-Name wohl frei wählbar ist.

Code: Alles auswählen

{"dateFormat":"d.m.Y","timeFormat":"H:i"}
Gruß aus Franken
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das neue Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

rethus
Beiträge: 1826
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: content_date - CMS_DATE - neues Format

Beitrag von rethus » Mi 2. Dez 2015, 14:52

Immer gut wenn jemand in der Freizeit Quellcode ließt :wink:
Daumen hoch für deinen Beitrag Oldperl.

Hab mal ein wenig rumgetestet, da man ja auch dazulernen möchte.

Legt man in den Mandanten-Variablen folgendes an:

Code: Alles auswählen

cms_date   |  dateFormat    |   {"dateFormat":"d.m.Y","timeFormat":"H:i"}
wird dies der CMS-Date-Liste hinzugefügt.
Der Wert in den Mandanten-Variablen ist also ein json codierter array.

Allerdings habe ich auch gleich einen Bug entdeckt. Geht man, nach dem abspeichern wieder auf die Variable, um den Wert z.B. zu verändern, steht in dem Textfeld nur noch eine Klammer "{".
Im Sourcecode sieht die das Textfeld dann so aus:

Code: Alles auswählen

<input id="m14" name="csvalue" value="{" dateformat":"yyyy","timeformat":"h:i"}"="" size="30" type="text">
Und noch ein Bug(?), man kann nur ein Datumsformat übergeben. Gibt man komma-separierte json-Arrays an, wird ein Fehler ausgeworfen,
gibt man mehrere Array-Werte an:

Code: Alles auswählen

{"dateFormat":"YYYY","timeFormat":"H:i","dateFormat":"dd","timeFormat":"H:i:s"}
wird nur die jeweils letzte Formatierung erzeugt. Demnach ist der Kommentar im Sourcecode irreführend, das hier mehrere Formate übernommen werden könnten.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable - Onlineshops, Hosting, Domains und Webentwicklung
suther.de - Webentwicklung, IT-Service, IT-Beratung, Linux-Administration

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Oldperl
Beiträge: 4016
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Franken, Bayern
Kontaktdaten:

Re: content_date - CMS_DATE - neues Format

Beitrag von Oldperl » Mi 2. Dez 2015, 16:02

rethus hat geschrieben:Immer gut wenn jemand in der Freizeit Quellcode ließt :wink:
  1. liest und nicht ließt! Man kann' s aber auch lassen... :P
  2. Wer hat was von Freizeit gesagt? Hat man die eigentlich? :mrgreen:
rethus hat geschrieben:Und noch ein Bug(?), man kann nur ein Datumsformat übergeben. Gibt man komma-separierte json-Arrays an, wird ein Fehler ausgeworfen,
gibt man mehrere Array-Werte an:

Code: Alles auswählen

{"dateFormat":"YYYY","timeFormat":"H:i","dateFormat":"dd","timeFormat":"H:i:s"}
wird nur die jeweils letzte Formatierung erzeugt. Demnach ist der Kommentar im Sourcecode irreführend, das hier mehrere Formate übernommen werden könnten.
Und wieder NEIN! :wink:
Steht soviel ich mich jetzt gerade erinnere auch so nicht im Code. Dort steht nämlich

Code: Alles auswählen

$additionalFormats = getEffectiveSettingsByType('cms_date');
Damit werden alle Einträge für 'cms_date'
rethus hat geschrieben:

Code: Alles auswählen

cms_date   |  dateFormat    |   {"dateFormat":"d.m.Y","timeFormat":"H:i"}
in ein Array eingelesen. Man muss also nur anstelle von 'dateFormat' nur immer wieder einen anderen Namen eingeben (Beispiel: DateFormat-EN und DateFormat-DE). Dann werden die entsprechenden Einträge am Ende des Auswahlfeldes hinzugefügt.

Gruß aus Franken

Ortwin
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das neue Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

rethus
Beiträge: 1826
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: content_date - CMS_DATE - neues Format

Beitrag von rethus » Mi 2. Dez 2015, 16:23

Oldperl hat geschrieben: Und wieder NEIN!
Hui, so kennen wir dich ja gar nicht, hier direkt rumzubrüllen? :shock: Harter Tag?

Bei mir steht in Zeile 98 dieser Kommentar:
// add formats from client settings
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable - Onlineshops, Hosting, Domains und Webentwicklung
suther.de - Webentwicklung, IT-Service, IT-Beratung, Linux-Administration

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Oldperl
Beiträge: 4016
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Franken, Bayern
Kontaktdaten:

Re: content_date - CMS_DATE - neues Format

Beitrag von Oldperl » Mi 2. Dez 2015, 19:17

rethus hat geschrieben:Bei mir steht in Zeile 98 dieser Kommentar:
// add formats from client settings
Man beachte den Plural... :roll:
Und wo steht da bitte das er die Angabe nur in einer einzelnen Einstellung erwartet?

Gruß aus Franken

Ortwin
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das neue Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: content_date - CMS_DATE - neues Format

Beitrag von frederic.schneider_4fb » Do 3. Dez 2015, 09:00

Guten Morgen die Herren,

vielen Dank erneut für Eure Vorarbeit. In der Tat ist es richtig: Über den Typ "cms_date" können beliebig viele (System-/Mandanten-)Variablen gesetzt und so die CMS_DATE-Formate erweitert werden. Ich nehme ein Beispiel mal in der Dokumentation unter "Settings" auf, damit jemand Drittes nicht wieder von Neuem suchen muss. Ferner kann ich bestätigen, dass die geschweiften Klammern beim Bearbeiten geschluckt werden. Ich nehme das als Ticket auf. Ggf. löse ich das auch direkt heute (sonst nächste Woche), da das für mich ein durchaus ärgerlicher Fehler ist.
Frederic Schneider
Entwickler bei der four for business AG

Oldperl
Beiträge: 4016
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Franken, Bayern
Kontaktdaten:

Re: content_date - CMS_DATE - neues Format

Beitrag von Oldperl » Do 3. Dez 2015, 09:35

Guten Morgen Frederic ;)
Immer gerne! :D

Gruß aus Franken

Ortwin
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das neue Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: content_date - CMS_DATE - neues Format

Beitrag von frederic.schneider_4fb » Do 3. Dez 2015, 10:59

Anbei die korrigierte Datei include.clientsettings.php (Ordner contenido/includes) aus der Entwicklerversion CONTENIDO 4.9.9. Wie immer der Hinweis, dass der Einsatz deshalb ohne Gewähr ist.
Dateianhänge
include.clientsettings.zip
Entwicklerversion CONTENIDO 4.9.9
(2.22 KiB) 27-mal heruntergeladen
Frederic Schneider
Entwickler bei der four for business AG

Antworten