Mit diesem Code kann man in einer eigenen Backend Extension das DateTime Popup verwenden (in der alten Modul Programmierung):
Schritt 1: DateTime Feld erzeugen
Diese Funktion erzeugt ein DateTime Feld mittels TCA Array. Das kann man dann in seinem Formular mit $this->makeDateTime(‚mystartdate‘) ausgeben lassen.
protected function makeDateTime($fieldname) { #$PA['fieldChangeFunc'] = ''; // Onnchange function, if required $PA['itemFormElName'] = $fieldname; // Datetime $PA['fieldConf']['config'] = array( 'type' => 'input', 'size' => '20', 'max' => '20', 'eval' => 'datetime', 'default' => '0', 'checkbox' => '0', ); $row = array( 'uid' => '1' ); $t3libTCEformsObj = t3lib_div::makeInstance('t3lib_TCEforms'); return $t3libTCEformsObj->getSingleField_typeInput('dummytable', 'testtest', $row, $PA); }
Was noch fehlt ist ein default-value – ich habe alle Varianten von timestamp, strftime, usw. durchprobiert ohne Erfolg. Wer weiß wie, gerne per Kommentar ergänzen!
Übrigens kann man damit auch andere TCA Felder ausgeben, z.B. Textfeld:
$PA['itemFormElName'] = 'test3'; $PA['itemFormElValue'] = 'test3value'; // Value the form element should have // Text field config $PA['fieldConf']['config'] = array( 'type' => 'input', 'size' => '30', 'eval' => 'required,trim' );
Schritt 1: ExtJS Codes laden
Das Feld mit dem DataTime Picker Icon wird angezeigt, allerdings fehlt noch das Popup dazu. Ich habe dazu in der mod1 -> index.php -> main-Funktion vor dem Aufruf von $this->moduleContent(); folgendes hinzugefügt:
//load datetime picker $pageRenderer = $this->doc->getPageRenderer(); $pageRenderer->loadExtJS(); $pageRenderer->addJsFile($this->backPath . '../t3lib/js/extjs/tceforms.js'); $pageRenderer->addJsFile($this->doc->backPath . '../t3lib/js/extjs/ux/Ext.ux.DateTimePicker.js'); // Define settings for Date Picker $typo3Settings = array( 'datePickerUSmode' => $GLOBALS['TYPO3_CONF_VARS']['SYS']['USdateFormat'] ? 1 : 0, 'dateFormat' => array('j-n-Y', 'G:i j-n-Y'), 'dateFormatUS' => array('n-j-Y', 'G:i n-j-Y'), ); $pageRenderer->addInlineSettingArray('', $typo3Settings);
Schritt 3: Wert auslesen
Hier brauchts nochmal Firebug um den Wert auszulesen, bei mir wurde automatisch ein „_hr“ an den Feldnamen angefügt (???):
$datestart = t3lib_div::_GP('mystartdate_hr'));
Links und Sourcen dazu:
- typo3/sysext/scheduler/mod1/index.php
- TCA-Beispiel: http://lists.typo3.org/pipermail/typo3-dev/2011-November/044614.html
- HTML Beispiel: http://lists.typo3.org/pipermail/typo3-dev/2011-November/044602.html