This is an old revision of the document!


deutsches Datumsformat

Hallo,

Die erste Version meiner 6.0 Anleitung hat leider mit dem Release Candidate jegliche Funktion eingestellt, weshalb ich hier eine erneute Version anbieten möchte, mit welcher man Version 6.0 mit dem deutschem Datum betreiben kann.

Diese Anleitung ist nur für die neue Version 6.0 RC geeignet! Eine identische Anleitung für 5.3/5.4 findet Ihr hier: vTiger 5.3 / 5.4 auf deutsches Datumsformat dd.mm.yyyy umstellen

Durch die komplett überarbeitete und deutlich komplexere Oberfläche wird dafür allerdings etwas mehr Aufwand notwendig als bisher.

Los gehts:

vtigerCRM 6.0 RC

1. neuer Eintrag in die 'vtiger_date_format' Tabelle mit folgender Query:

INSERT INTO `vtiger_date_format`
(`date_formatid`, `date_format`, `sortorderid`, `presence`)
VALUES
(4, 'dd.mm.yyyy', 0, 1);

Mit dem Wert in der 3. Spalte könnt Ihr die Sortierung der Datumsformate anpassen. Da ich möchte, dass er direkt an oberster Stelle steht, habe ich eine 0 eingesetzt.

2. /vtlib/Vtiger/Functions.php

File: /vtlib/Vtiger/Functions.php
Function: currentUserJSDateFormat($localformat)
An die gut erkennbare if-Anweisung folgendes anhängen:

elseif ($current_user->date_format == 'dd.mm.yyyy') {
   $dt_popup_fmt = "%d.%m.%Y";
}

Function: currentUserDisplayDate($value)

Innerhalb der Funktion finden:

if ($dat_fmt == '') {
$dat_fmt = 'dd-mm-yyyy';
}

Den Abschnitt folgendermaßen anpassen:

if ($dat_fmt == '') {
$dat_fmt = 'dd.mm.yyyy';
}

3. /include/fields/DateTimeField.php

Funktion : __convertToDBFormat(...) [Line ~95]

folgendes an passender Stelle einfügen: (If Abfragen sind gut erkennbar)

elseif ($format == 'dd.mm.yyyy') {
       if(strpos($date, "-") !== false) {
             list($d, $m, $y) = explode('-', $date);
       } else {
             list($d, $m, $y) = explode('.', $date);
       }
}

An dieser Stelle wird leider ab und zu ein Format dd-mm-yyyy und die Einstellung des Users dd.mm.yyyy übergeben. Deshalb die zusätzlichen Zeilen, welche das nochmals prüfen.

Funktion: __convertToUserFormat((...) [Line ~157]

folgendes an passender Stelle einfügen: (If Abfragen sind gut erkennbar)

elseif ($format == 'dd.mm.yyyy') {
                        $date[0] = $d . '.' . $m . '.' . $y;
}
Funktion: convertToUserFormat(...) [Line ~139]

An dieser Stelle wird das Standard-Format des Vtigers auf dd.mm.yyyy gesetzt. Diese Einstellung ist besonders für die Erweiterung PDFMaker relevant, da diese für Datumsausgaben in PDF's genutzt wird, welche aus einem Workflow genutzt werden.
Suchen:

if(empty($format)) {
    $format = 'dd-mm-yyyy';
}

ersetzen:

if(empty($format)) {
    $format = 'dd.mm.yyyy';
}
Funktion: convertToDBFormat(...) [Line ~139]

Suchen:

if(empty($format)) {
     $format = 'dd-mm-yyyy';
}

ersetzen:

if(empty($format)) {
    $format = 'dd.mm.yyyy';
}

include/ComboStrings.php

Um Line 304 steht die Zuweisung

'date_format_dom' => Array('dd-mm-yyyy'=>'dd-mm-yyyy',
'mm-dd-yyyy'=>'mm-dd-yyyy',
'yyyy-mm-dd'=>'yyyy-mm-dd'
 ),

Daraus folgendes machen:

'date_format_dom' => Array('dd-mm-yyyy'=>'dd-mm-yyyy',
                           'dd.mm.yyyy'=>'dd.mm.yyyy',
                            'mm-dd-yyyy'=>'mm-dd-yyyy',
                            'yyyy-mm-dd'=>'yyyy-mm-dd'
                     ),

/resources/app.js

Function: convertToDatePickerFormat(dateFormat)

Auch hier ist die if-Anweisung wieder gut zu erkennen, welche durch folgendes erweitert werden muss:

 else if (dateFormat == 'dd.mm.yyyy') {
            return 'd.m.Y';
        }

ALT

4. include/js/general.js

4.1 Funktion: patternValidate(..)

Diese Position überprüft eingegebene Datumsangaben und muss ebenfalls um dd.mm.yyyy erweitert werden.
Folgendes suchen:

[php]
case “mm-dd-yyyy” :
case “dd-mm-yyyy” :

   var re = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/

[/php]
und folgendermaßen ergänzen:

[php]
case “mm-dd-yyyy” :
case “dd-mm-yyyy” :
case “dd.mm.yyyy” :

   var re = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/

[/php]
4.2 Funktion splitDateVal(…)
Folgendes suchen:

[php]
case “dd-mm-yyyy” :

   dateelements[0]=dateval.substring(0,dateval.indexOf(datesep))
   dateelements[1]=dateval.substring(dateval.indexOf(datesep)+1,dateval.lastIndexOf(datesep))
   dateelements[2]=dateval.substr(dateval.lastIndexOf(datesep)+1,dateval.length)

[/php]
daraus folgendes machen (case “dd.mm.yyyy” für “dd-mm-yyyy” einfügen)

[php]
case “dd-mm-yyyy” :
case “dd.mm.yyyy” :

   dateelements[0]=dateval.substring(0,dateval.indexOf(datesep))
   dateelements[1]=dateval.substring(dateval.indexOf(datesep)+1,dateval.lastIndexOf(datesep))
   dateelements[2]=dateval.substr(dateval.lastIndexOf(datesep)+1,dateval.length)

[/php]
4.3 Funktion: re_patternValidate(…) [~LIne 4262]

Suchen:

[php]

                      case "dd-mm-yyyy" :
                              var re = /^\d{1,2}(-)\d{1,2}\1\d{4}$/

[/php]
Daraus folgendes machen:

[php]

                      case "dd-mm-yyyy" :
                      case "dd.mm.yyyy" :
                              var re = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/

[/php]
6. include/js/QuickCreate.js

Suchen:

var re = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/

In die dazugehörigen Case-Möglichkeiten einfügen:

case “dd.mm.yyyy” :

7. modules/Reports/Reports.js

7.1 Funktion re_patternValidate(..)

Suche:

[php]
case “mm-dd-yyyy” :
case “dd-mm-yyyy” :
<em id=“mceDel”><em id=“mceDel”> var re = /^\d{1,2}(-)\d{1,2}\1\d{4}$/
<em id=“mceDel”><em id=“mceDel”><em id=“mceDel”><em id=“mceDel”>[/php]
Folgende Option als case hinzufügen:

[php]
case “dd.mm.yyyy” :
[/php]
8. vtiger6/resources/app.js

8.1 Funktion convertToDatePickerFormat [Line ~320]

An die Abfragen folgende Abfrage anhängen:

[php]
else if (dateFormat == 'dd.mm.yyyy') {
return 'd.m.Y';
}
[/php]
8.2 Funktion convertTojQueryDatePickerFormat [Line ~333]

Komplette Funktion mit folgenden Code ersetzen:

[php]
convertTojQueryDatePickerFormat: function(dateFormat){
var i = 0;
if(dateFormat.indexOf(“.”) != -1) {

 var splitDateFormat = dateFormat.split('.');
 var separator = ".";

} else {

 var splitDateFormat = dateFormat.split('-');
 var separator = "-";

}
for(var i in splitDateFormat){

 var sectionDate = splitDateFormat[i];
 var sectionCount = sectionDate.length;
 if(sectionCount == 4){
   var strippedString = sectionDate.substring(0,2);
   splitDateFormat[i] = strippedString;
 }

}
var joinedDateFormat = splitDateFormat.join(separator);
return joinedDateFormat;
},
[/php]
Stefan