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