Ich verwende nun die "calendarfield"-Erweiterung auf einem Contao 3.2.12 und versuche, in einer eigenen Extension in einem Frontend-Formular den Datepicker zu verwenden, was grundsätzlich auch funktioniert. Details sind mir aber recht unklar (habe mir viele Threads zu calendarfield durchgelesen, aber keinen dazu gefunden). Meine Formularwidgets generiere ich mit folgender Methode:
PHP-Code:
private function generateWidgets($arrFields)
{
$arrWidgets = array();
foreach ($arrFields as $arrField)
{
$strClass = $GLOBALS['TL_FFL'][$arrField['inputType']];
if (!class_exists($strClass))
{
$this->log('Widget Class '.$strClass.' not found!', __CLASS__.'::'.__FUNCTION__, TL_ERROR);
continue;
}
$arrField['eval']['required'] = $arrField['eval']['mandatory'];
$objWidget = new $strClass($this->prepareForWidget($arrField, $arrField['name'], $arrField['value']));
$arrWidgets[$arrField['name']] = $objWidget;
}
return $arrWidgets;
}
Der Code für mein CalendarField sieht derzeit so aus:
PHP-Code:
'ga_wishdate1' => array
(
'name' => 'ga_wishdate1',
'inputType' => 'calendar',
'eval' => array('rgxp'=>'date','useFadeInOut'=>false,'draggable'=>true, 'togglesOnly'=>false),
),
Das Ergebnis im Frontend ist ein Text-Eingabefeld, und wenn man in das Eingabefeld klickt, öffnet sich der Datepicker und das ausgewählte Datum wird ins Textfeld geschrieben. Soweit wunderbar, an der Stelle auch ein Dankeschön für die Erweiterung
Nun ist es aber so, dass man im Textfeld selber den Text nicht mehr verändern kann. Das hätte ich aber gerne und vermute mal, dass ich dazu entsprechende Optionen für den Datepicker einstellen soll. Das kann man ja scheinbar, indem man diese ins 'eval'-Feld schreibt. Aber irgendwie geht das nicht immer, so wird z.B. die Option 'draggable' übernommen und steht hinterher so auch im Javascript, aber die Optionen 'useFadeInOut' und 'togglesOnly' z.B. finde ich dort nicht bzw. sie sind mit denselben Werten belegt wie vorher auch (den Fade-Effekt würde ich z.B. auch gerne deaktivieren).
Wenn ich das CalendarField im Formulargenerator verwende, gibt es die Option "Nur Datumsauswahl erlauben", die verhindert, dass man das Datum im Textfeld manuell ändern kann. Aber die Option wird nur angezeigt, wenn man auch ein Kalender-Icon anzeigt. Was ich notfalls auch machen könnte, jedoch kommt mir das alles etwas komisch vor und ich weiss nicht ob ich ganz auf dem falschen Dampfer bin.
Weiss vielleicht jemand, was ich am obigen Code ändern muss, damit manuelle Änderung des Feldes möglich ist?
Oder gibt es irgendwo Beispielcode für die Verwendung des calendarfield in eigene Erweiterungen? Habe im Erweiterungskatalog auch keine Erweiterung gefunden, die von calendarfield abhängig ist.
Ein anderes Problem betrifft wohl den Datepicker selbst, es tritt auch im Contao-Backend auf, wo der Datepicker eingebunden ist: das Ändern der Zeit mit dem Mausrad funktioniert bei Firefox und Chrome nicht, im IE8 dagegen schon. Kennt das Problem jemand und weiss wie man das lösen kann?
Grüsse,
fluppi