©Sergey Emelyanov 2025 | Alle Rechte vorbehalten
Standardmäßig bietet Vtiger 7 in den Benutzereinstellungen folgende Datumsformate an:
• dd-mm-yyyy
• mm-dd-yyyy
• yyyy-mm-dd
Wie Sie sehen, fehlt hierbei das für uns gewünschte europäische Format dd.mm.yyyy (also tt.mm.jjjj). Mit den Erfahrungen aus Vtiger 7.1 zeige ich Ihnen, wie Sie dieses neue Format in die Liste der voreingestellten Datumsformate integrieren können. Dabei ist zu beachten, dass die Änderung nicht nur den Kalender betrifft, sondern auch den Export in Excel und PDF beeinflusst.
Wichtiger Hinweis:
Bevor Sie Änderungen vornehmen, sollten Sie unbedingt alle relevanten Dateien und die Datenbank sichern. Nutzen Sie beispielsweise diesen Befehl, um das Verzeichnis zu sichern: cp -ar vtigercrm vtigercrm_backup
Außerdem sollten Sie bedenken, dass diese Anleitung auf Vtiger 7.1 basiert und bei neueren Versionen erneut angepasst werden muss. Änderungen auf eigene Gefahr!
Zunächst fügen Sie in der Tabelle vtiger_date_format einen Eintrag für das Format dd.mm.yyyy ein.
Öffnen Sie dazu die MySQL-Konsole und führen Sie folgenden Befehl aus:
INSERT INTO vtiger_date_format (date_formatid, date_format, sortorderid, presence)
VALUES (4, 'dd.mm.yyyy', 0, 1);
Hierbei gibt der Wert im Feld sortorderid die Priorität der Anzeige an – in unserem Fall wird der neue Eintrag als vierter angezeigt. Zudem empfiehlt es sich, den Standardwert neu zu ordnen, beispielsweise so:
UPDATE vtiger_date_format SET sortorderid=1 WHERE date_format='dd-mm-yyyy';
In der Funktion currentUserJSDateFormat (etwa Zeile 31) müssen wir den neuen Datumsformatfall hinzufügen. Direkt im ersten if-Block fügen Sie folgenden Code ein (nach ca. Zeile 30):
elseif ($current_user->date_format == 'dd.mm.yyyy') {
$dt_popup_fmt = "%d.%m.%Y";
}
Außerdem in der Funktion currentUserDisplayDate (etwa Zeile 52) ersetzen Sie den Standard-Datumformatwert durch:
if ($dat_fmt == '') {
$dat_fmt = 'dd.mm.yyyy';
}
Suchen Sie in dieser Datei die Funktion __convertToDBFormat (ca. Zeile 110) und fügen Sie einen neuen Block im if-Statement hinzu:
elseif ($format == 'dd.mm.yyyy') {
if(strpos($date, "-") !== false) {
list($d, $m, $y) = explode('-', $date);
} else {
list($d, $m, $y) = explode('.', $date);
}
}
In der Funktion convertToUserFormat (ca. Zeile 152) ändern Sie den Standardwert, indem Sie:
if(empty($format)) {
$format = 'dd.mm.yyyy';
}
setzen.
Anschließend in der Funktion __convertToUserFormat (ca. Zeile 173) fügen Sie folgenden Block in das if-Statement ein:
elseif ($format == 'dd.mm.yyyy') {
$date[0] = $d . '.' . $m . '.' . $y;
}
Schritt 4: Änderungen in include/ComboStrings.php
Suchen Sie in der Datei den Block 'date_format_dom' (etwa Zeile 305) und ersetzen Sie ihn durch:
'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'
),
In der Funktion formattime (ca. Zeile 45) erweitern Sie den switch-Block um einen neuen case:
case 'dd.mm.yyyy': $format_string = 'd.m.Y H:i'; break;
Innerhalb der Funktion convertToDatePickerFormat (ca. Zeile 540) fügen Sie einen neuen Fall ein:
else if (dateFormat == 'dd.mm.yyyy') {
return 'd.m.Y';
}
In der Funktion convertTojQueryDatePickerFormat (ca. Zeile 552) ersetzen Sie die Zeile:
var splitDateFormat = dateFormat.split('-');
durch folgenden Block:
var dotMode = false;
if(dateFormat.indexOf(".") != -1 && dateFormat.indexOf("-") == -1) {
dotMode = true;
}
var splitDateFormat = dateFormat.split(dotMode ? '.' : '-');
Im weiteren Verlauf der Funktion, im for-Schleifen-Block, ersetzen Sie
var joinedDateFormat = splitDateFormat.join('-');
durch:
var joinedDateFormat = splitDateFormat.join(dotMode ? '.' : '-');
In der Funktion convertToDateRangePicketFormat (etwa Zeile 93) fügen Sie im if-Block folgenden Fall hinzu:
else if(userDateFormat == 'dd.mm.yyyy') {
return 'dd.MM.yyyy';
}
In der Funktion getDateInstance (etwa Zeile 59) suchen Sie den Code-Abschnitt, der die Variable splittedDate definiert, und ersetzen diesen Teil. Ersetzen Sie:
var splittedDate = dateComponent.split("-");
…
var splittedDateFormat = dateFormat.split("-");
durch:
var dotMode = false;
if(dateComponent.indexOf(".") != -1 && dateComponent.indexOf("-") == -1) {
dotMode = true;
}
var splittedDate = dateComponent.split(dotMode ? "." : "-");
…
var splittedDateFormat = dateFormat.split(dotMode ? "." : "-");
Im Bereich um Zeile 85 passen Sie die Funktion getDateInstance wie folgt an:
var dateTimeComponents = dateTime.split(" ");
var dateComponent = dateTimeComponents[0];
var timeComponent = dateTimeComponents[1];
var seconds = '00';
var splitter = '-';
if (dateComponent.includes(".")) {
splitter = '.';
}
var splittedDate = dateComponent.split(splitter);
if(splittedDate.length > 3) {
var errorMsg = app.vtranslate("JS_INVALID_DATE");
throw errorMsg;
}
var splittedDateFormat = dateFormat.split(splitter);
Nachdem Sie die oben beschriebenen Änderungen vorgenommen haben, können Ihre Benutzer nun den neuen Datumsformat dd.mm.yyyy in Vtiger auswählen. Der neue Format wird nicht nur im Kalender angezeigt, sondern auch beim Export in Excel und PDF berücksichtigt.
Ich hoffe, dass in zukünftigen Versionen des Systems das russische Datumsformat standardmäßig integriert wird – bis dahin können Sie mit dieser Anleitung Ihr Vtiger 7.1 ganz nach Ihren Wünschen anpassen.
Wichtig: Führen Sie alle Änderungen mit Vorsicht durch und testen Sie sie in einer sicheren Umgebung, bevor Sie sie in Ihrem produktiven System anwenden.
©Sergey Emelyanov 2025 | Alle Rechte vorbehalten