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.

Einige Administratoren fragen sich, wie man die Registerkarte „Historie“ aus der Detailansicht – sei es eines Kontakts, eines Geschäftspartners, einer Verkaufschance etc. – entfernt. In dieser Registerkarte wird häufig unnötige Information – nämlich die gesamte Änderungsverlaufshistorie des jeweiligen Objektes – gespeichert, die nicht für alle Benutzer sichtbar sein sollte. Aus Sicherheits- und Übersichtlichkeitsgründen ist es daher sinnvoll, diese Registerkarte entweder komplett zu deaktivieren oder ausschließlich Administratoren zugänglich zu machen.

Wie deaktiviere ich die Registerkarte "Historie" in der Detailansicht von VtigerCRM?

Einige Administratoren fragen sich, wie man die Registerkarte „Historie“ aus der Detailansicht – sei es eines Kontakts, eines Geschäftspartners, einer Verkaufschance etc. – entfernt. In dieser Registerkarte wird häufig unnötige Information – nämlich die gesamte Änderungsverlaufshistorie des jeweiligen Objektes – gespeichert, die nicht für alle Benutzer sichtbar sein sollte. Aus Sicherheits- und Übersichtlichkeitsgründen ist es daher sinnvoll, diese Registerkarte entweder komplett zu deaktivieren oder ausschließlich Administratoren zugänglich zu machen.

Im Folgenden zeige ich Ihnen, wie Sie diesen Eingriff vornehmen können:

  1. Öffnen Sie die Datei
      modules/Vtiger/models/DetailView.php
  2. Suchen Sie in dieser Datei die Funktion:
      public function getDetailViewRelatedLinks() {
  3. Fügen Sie innerhalb dieser Funktion am Anfang die folgende Zeile ein, um Zugriff auf den globalen Benutzer zu erhalten:
      global $current_user;
  4. Suchen Sie weiter in der Funktion den Codeblock, der für das Hinzufügen der Registerkarte „Historie“ zuständig ist. Ursprünglich sieht dieser Block in etwa so aus:   if($parentModuleModel->isTrackingEnabled()) {
        $relatedLinks[] = array(
          'linktype' => 'DETAILVIEWTAB',
          'linklabel' => 'LBL_UPDATES',
          'linkurl' => $recordModel->getDetailViewUrl().'&mode=showRecentActivities&page=1',
          'linkicon' => ''
        );
      }

Um die Registerkarte „Historie“ nur dem Administrator (als Beispiel, Benutzer mit der ID „2“) anzuzeigen, ersetzen Sie diesen Block durch folgenden Code:

  if($current_user->id == '2') {
    $relatedLinks[] = array(
      'linktype' => 'DETAILVIEWTAB',
      'linklabel' => 'LBL_UPDATES',
      'linkurl' => $recordModel->getDetailViewUrl().'&mode=showRecentActivities&page=1',
      'linkicon' => ''
    );
  }

Damit wird die Registerkarte Now updates (Historie) ausschließlich angezeigt, wenn der aktuell angemeldete Benutzer die ID „2“ besitzt – typischerweise unser Administrator. Alle anderen Benutzer sehen diese Registerkarte nicht.

  1. Das Endergebnis sollte in Ihrer Funktion getDetailViewRelatedLinks() etwa so aussehen:

public function getDetailViewRelatedLinks() {
  global $current_user;
  $recordModel = $this->getRecord();
  $moduleName = $recordModel->getModuleName();
  $parentModuleModel = $this->getModule();
  $relatedLinks = array();

  if($parentModuleModel->isSummaryViewSupported()) {
    $relatedLinks = array(array(
      'linktype' => 'DETAILVIEWTAB',
      'linklabel' => vtranslate('LBL_SUMMARY', $moduleName),
      'linkKey' => 'LBL_RECORD_SUMMARY',
      'linkurl' => $recordModel->getDetailViewUrl() . '&mode=showDetailViewByMode&requestMode=summary',
      'linkicon' => ''
    ));
  }

  // Link, der die Detailinformation anzeigt
  $relatedLinks[] = array(
    'linktype' => 'DETAILVIEWTAB',
    'linklabel' => vtranslate('LBL_DETAILS', $moduleName),
    'linkKey' => 'LBL_RECORD_DETAILS',
    'linkurl' => $recordModel->getDetailViewUrl().'&mode=showDetailViewByMode&requestMode=full',
    'linkicon' => ''
  );

 if($current_user->id == '2') {
    $relatedLinks[] = array(
      'linktype' => 'DETAILVIEWTAB',
      'linklabel' => 'LBL_UPDATES',
      'linkurl' => $recordModel->getDetailViewUrl().'&mode=showRecentActivities&page=1',
      'linkicon' => ''
    );
  }

  $relationModels = $parentModuleModel->getRelations();

  foreach($relationModels as $relation) {
    //TODO: Informationsmenge reduzieren
    $link = array(
      'linktype' => 'DETAILVIEWRELATED',
      'linklabel' => $relation->get('label'),
      'linkurl' => $relation->getListUrl($recordModel),
      'linkicon' => '',
      'relatedModuleName' => $relation->get('relatedModuleName'),
      'linkid' => $relation->getId()
    );
    $relatedLinks[] = $link;
  }

  return $relatedLinks;

}

Fazit

Mit dieser Änderung wird die Registerkarte „Historie“ in der Detailansicht eines Datensatzes in VtigerCRM nur noch dem Administrator (oder dem Benutzer mit der ID „2“) angezeigt. Dadurch wird verhindert, dass alle Benutzer die vollständige Objekthistorie einsehen – was aus Sicherheitsgründen sinnvoll ist. Sie können diesen Ansatz anpassen, wenn Sie mehreren Benutzer-IDs oder benutzerdefinierten Rollen Zugriff gewähren möchten.

Ich hoffe, diese Anleitung hilft Ihnen dabei, die gewünschte Anpassung in Ihrem VtigerCRM vorzunehmen. Viel Erfolg!