Entwickler, der außergewöhnliche CRM- und Laravel-Lösungen liefert

Als erfahrener Entwickler spezialisiere ich mich auf Laravel- und Vue.js-Entwicklung, die Implementierung von Vtiger CRM sowie auf vielfältige WordPress-Projekte. Meine Arbeit zeichnet sich durch kreative, dynamische und benutzerzentrierte Weblösungen aus, die individuell an die Bedürfnisse meiner Kunden angepasst werden.

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.

Ändern des Datumsformats in Vtiger 7: Benutzerformat auf dd.mm.yyyy anpassen

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!

Schritt 1: Neuen Datumsformat-Eintrag in der Datenbank hinzufügen

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';

Schritt 2: Änderung in vtlib/Vtiger/Functions.php

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';
  }

Schritt 3: Anpassungen in include/fields/DateTimeField.php

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'
  ),

Schritt 5: Anpassung in modules/Calendar/RepeatEvents.php

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;

Schritt 6: Änderungen in resources/app.js

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 ? '.' : '-');

Schritt 7: Änderung in layouts/vlayout/modules/Vtiger/resources/dashboards/Widget.js

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';
  }

Schritt 8: Anpassungen in resources/helper.js

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 ? "." : "-");

Schritt 9: Änderung in layouts/v7/resources/helper.js

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);

Ergebnis und Fazit

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.