also ich hab das mit einer usefunc mal probiert. War auch ne schöne Erfahrung, bringt aber rein gar nichts, denn all das ist nur für die Darstellung und das Verhalten im FE zuständig. Der Speichervorgang bleibt davon völlig unbeeindruckt. #angry#
Guckst Du:
die Felddefinition:
"startdatum" => Array (
"exclude" => 1,
"label" => "LLL:EXT:Vorschau/locallang_db.php:tx_Vorschau_filme.startdatum", "config" => Array (
"type" => "user",
'userFunc' => 'user_class->user_DatetoNULL',
)
),
die Userfunc (noch nicht bis ins Detail ausgefeilt bzw. optimiert aber funktioniert einigermaßen):
class user_class {
function user_DatetoNULL($PA, $fobj) {
// return t3lib_div::view_array($PA);
$out = "
<script language="Javascript" type="text/javascript">
function initDatUM(){
var formInhalt = document.editform.elements['".$PA['itemFormElName']."_hr'].value;
switch (formInhalt.substr(2,1)){
case \".\":
var richtig = teil.replace('.', ',');
document.editform.elements['".$PA['itemFormElName']."_hr'].value = richtig;
break;
case \",\":
document.editform.elements['".$PA['itemFormElName']."_hr'].value = teil;
break;
default:
var contentField = new Date(".($PA['itemFormElValue'] * 1000).");
document.editform.elements['".$PA['itemFormElName']."_hr'].value = contentField.getDate()+'-'+contentField.getMonth()+'-'+contentField.getFullYear();
break;
}
}
function datumsfeld(){
var formInhalt = document.editform.elements['".$PA['itemFormElName']."_hr'].value;
switch(formInhalt.substr(2,1)){
case '.':
var datumarray = formInhalt.split('.');
var meinDatum = new Date(datumarray[2],datumarray[1],datumarray[0],0,0,0);
var meinTimestamp = meinDatum.getTime();
document.editform.elements['".$PA['itemFormElName']."_hr'].value = datumarray[0]+'-'+datumarray[1]+'-'+datumarray[2];
document.editform.elements['".$PA['itemFormElName']."'].value = meinTimestamp / 1000;
break;
case '-':
var datumarray = formInhalt.split('-');
var meinDatum = new Date(datumarray[2],datumarray[1],datumarray[0],0,0,0);
var meinTimestamp = meinDatum.getTime();
document.editform.elements['".$PA['itemFormElName']."_hr'].value = datumarray[0]+'-'+datumarray[1]+'-'+datumarray[2];
document.editform.elements['".$PA['itemFormElName']."'].value = meinTimestamp / 1000;
break;
case '':
document.editform.elements['".$PA['itemFormElName']."'].value = '';
break;
}
}
</script>
";
$out .= t3lib_div::view_array($PA).'<br /><br /><input name="'.$PA['itemFormElName'].'_hr" value="'.htmlspecialchars($PA['itemFormElValue']).'" onfocus="initDatUM();" onblur="datumsfeld();" />'; // '.$PA['onFocus'].'
$out .= "<input type="hidden" name="".$PA[" itemformelname="" value="" />";
return $out;
}
}
gespeichert wird trotzdem eine 0 und kein NULL. An die Speichern-Routinen gehe ich aber eher nicht dran. Mal sehen, denn das wäre echt wichtig, dass das Feld mit NULL anstatt 0 befüllt wird. Die Sortierung für dieses Feld sieht folgendermaßen aus:
"default_sortby" => " ORDER BY nachvorn DESC, IFNULL(startdatum, bundesstart) ASC, filmtitel ASC ",
Was ohne das NULL leider nicht funktioniert. Habt Ihr eine andere Idee?
viele Grüße aus Kölle
der André