1. Powermail patchen
In verschiedensten Quellen/Foren/Newsbeiträgen wird festgestellt, dass man Datumsfelder bei powermail nicht vorbelegen kann - jüngstens fand ich bei typo3.net die Aussage, dass das "Datumsfeld ... aktuell komplett umgebaut" wird.
Nun nützt mir das aber wenig - wenn ich diese Funktionalität grade brauche. Also habe ich mir die Datei pi1/class.tx_powermail_html.php angesehen und mittels t3lib::devLog(...) analysiert. Siehe da: der "prefill"-Eintrag wird in der Funktion setGlobalMarkers() zwar verarbeitet, aber beim Datumsfeld in der Funktion html_date() nicht beachtet.
Setze ich nun die 3 Zeilen der prefill-Konfiguration wie im folgenden Patch nochmal im Bereich "wenn date2cal installiert ist ..." ein, dann wird die Vorbelegung wie erwartet ausgeführt.
Der Patch gilt für Powermail in der Version 1.5.6.
Patch für prefill bei powermail date field
Language: diff diff -uNr pi1/class.tx_powermail_html.php.org pi1/class.tx_powermail_html.php --- pi1/class.tx_powermail_html.php.org 20 diff -uNr pi1/class.tx_powermail_html.php.org pi1/class.tx_powermail_html.php --- pi1/class.tx_powermail_html.php.org 2010-11-29 17:15:32.000000000 +0100 +++ pi1/class.tx_powermail_html.php 2010-12-06 16:36:49.288744730 +0100 @@ -724,6 +724,10 @@ if (isset($this->piVarsFromSession['uid' . $this->uid])) $value = $this->div->nl2nl2($this->piVarsFromSession['uid' . $this->uid]); + if (!empty($this->conf['prefill.']['uid' . $this->uid])) { // 4. prefilling with typoscript for current field enabled + $value= $this->cObj->cObjGetSingle($this->conf['prefill.']['uid' . $this->uid], $this->conf['prefill.']['uid' . $this->uid . '.']) . '" '; // add typoscript value + } + // init jscalendar class $JSCalendar = JSCalendar::getInstance(); $JSCalendar->setConfigOption('ifFormat', $this->conf['format.']['date']);
2. Datumsbelegung mit TypoScript konfigurieren
In meinem Beispiel habe ich die Datumsfelder "Beginn" (uid8) und "Ende" (uid9).
Das erste Feld soll beim Formularausfüllen auf den morgigen Tag, das zweite auf "morgen + 30 Tage" gesetzt werden. Eine Anregung für die Berechnung habe ich z.B. hier gefunden.
Also wird uid8.data (nicht .value !!) mit einem Timestamp vorbelegt, der "heute + 24h" entspricht. uid9.data erhält dann entsprechend "heute + 31 * 24h".
Powermail Setup - Datum vorbelegen
Language: typoscript plugin.tx_powermail_pi1 { prefill { # Beginn uid8 = TEXT uid8.data = date:U + (1*86400) uid8.prioriCalc = 1 uid8.strftime = %d. %m. %Y # Ende uid9 = TEXT uid9.data = date:U + (31*86400) uid9.prioriCalc = 1 uid9.strftime = %d. %m. %Y } }