====== deutsches Datumsformat ======
===== vtigerCRM 6.0/6.1 =====
**26.09.2014 UPDATE ** - VtigerCRM 6.1 Kompatibilität geprüft
==== 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?".":"-");