This is an old revision of the document!
deutsches Datumsformat
vtigerCRM 6.0
06.03.2014 UPDATE - Small missing line modification in last block
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
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'; }
4. /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' ),
5. /modules/Calendar/RepeatEvents.php
Function: formattime
Diesmal passend in die switch-Anweisung folgendes einfügen:
case 'dd.mm.yyyy': $format_string = 'd.m.Y H:i'; break;
6. /modules/Vtiger/helpers/Util.php
Diese Anpassung ist nur dann notwendig, wenn Ihr auch die Ausgaben der Form “Wed, Dec 18, 2013 at 15:50” anpassen möchtet, sodass am Ende “Wed, 18. Dec 2013 at 15:50 Uhr” erscheint.
Diese Ausgabe richtet sich mit dieser Anpassung besser an der Spracheinstellung des vtigerCRM aus. Die Wochentage bzw. Monatsnamen werden sicherlich noch übersetzt, genau wie das kleine “at”.
Function: formatDateTimeIntoDayString($dateTime) [~213]
Search:
$formatedDate = vtranslate('LBL_'.date('D', $date)). ', ' .vtranslate('LBL_'.date('M', $date)). ' ' .date('d', $date). ', ' .date('Y', $date); //Adding time details $formatedDate .= ' ' .vtranslate('LBL_AT'). ' ' .$displayTime;
Replace with:
if($currentUser->get("language") == "de_de") { $formatedDate = vtranslate('LBL_'.date('D', $date)). ', ' .date('d', $date). '. ' .vtranslate('LBL_'.date('M', $date)). ' ' .date('Y', $date); //Adding time details $formatedDate .= ' um ' .$displayTime. ' Uhr'; } else { $formatedDate = vtranslate('LBL_'.date('D', $date)). ', ' .vtranslate('LBL_'.date('M', $date)). ' ' .date('d', $date). ', ' .date('Y', $date); //Adding time details $formatedDate .= ' ' .vtranslate('LBL_AT'). ' ' .$displayTime; }
7. /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'; }
Function: convertTojQueryDatePickerFormat
Search:
var splitDateFormat = dateFormat.split('-');
Replace with:
var dotMode = false; if(dateFormat.indexOf(".") != -1 && dateFormat.indexOf("-") == -1) { dotMode = true; } var splitDateFormat = dateFormat.split(dotMode?'.':'-');
Search:
var joinedDateFormat = splitDateFormat.join('-');
Replace with:
var joinedDateFormat = splitDateFormat.join(dotMode?'.':'-');
8. /layouts/vlayout/modules/Vtiger/resources/dashboards/Widget.js
Funktion convertToDateRangePicketFormat
Wieder an das Ende der if-Bedingung einfügen:
else if(userDateFormat == 'dd.mm.yyyy') { return 'dd.MM.yyyy'; }
9. /resources/helper.js
Function: getDateInstance : function(dateTime,dateFormat) [~Zeile 53]
Search:
var splittedDate = dateComponent.split("-"); var splittedDateFormat = dateFormat.split("-");
Replace with:
var dotMode = false; if(dateComponent.indexOf(".") != -1 && dateComponent.indexOf("-") == -1) { dotMode = true; } var splittedDate = dateComponent.split(dotMode?".":"-"); var splittedDateFormat = dateFormat.split(dotMode?".":"-");