datetime picker im eigenen Backend Modul

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: