Gib dem Framework Zucker
Kommentare

Erweitertes Customizing von eigenen Modulen
Bei eigenen Modulen hat man im Prinzip alle Freiheiten und kann direkt in das Modul selbst eingreifen. Wir haben in der Vergangenheit unzählige Module mit Speziallogik

Erweitertes Customizing von eigenen Modulen

Bei eigenen Modulen hat man im Prinzip alle Freiheiten und kann direkt in das Modul selbst eingreifen. Wir haben in der Vergangenheit unzählige Module mit Speziallogik entwickelt, wie Routenplanung, Kundencockpits, Integration in andere Systeme, Rechnungsmodule etc.

Um ein paar Möglichkeiten zu zeigen, verwende ich hier das über den Module Builder erstellte Modul „Artikelverwaltung“. Es befindet sich in meinem Demosystem unter modules/ ICC_Artikelverwaltung. Als Erstes möchte ich Ihnen zeigen, wie man spezielle Logik in eine Ansicht bringen kann. Dazu werde ich folgende Änderungen in der Datei modules/ ICC_Artikelverwaltung/views/view.edit.php durchführen (Listing 2).

class ICC_ArtikelverwaltungViewEdit extends ViewEdit{
   function ICC_ArtikelverwaltungViewEdit(){
     parent::ViewEdit();
   }
   function display(){
    
    // Eigene Logik Begin
    $this->bean->category_id = "Sales";
    // Eigene Logik Ende

    if (isset($this->bean->id)) {
      $this->ss->assign("FILE_OR_HIDDEN", "hidden");
      if (empty($_REQUEST['isDuplicate']) || $_REQUEST['isDuplicate'] == 'false') {
        $this->ss->assign("DISABLED", "disabled");
      }
    } else {
      $this->ss->assign("FILE_OR_HIDDEN", "file");
    }
    parent::display();
    // Eigene Logik Begin
    global $current_user;
    echo " ";
    // Eigene Logik Ende
    
   }
}

Durch die Aufnahme der Zeile $this->bean->category_id = „Sales“; wird das Feld Category immer auf den Wert Sales gesetzt. Durch die Aufnahme des zweiten individuellen Bereichs wird ein kleiner JavaScript-Schnipsel mit ausgegeben, der ein Alert-Fenster anzeigt, das den Benutzernamen des aktuell angemeldeten Benutzers zeigt. Das Ergebnis sehen Sie in Abbildung 7.

Abb. 7: Individuelle Anpassung über die Ansichtsdatei „view.edit.php“

Ein weiteres Beispiel ist die Veränderung der Modulklasse: Jedes Modul hat eine solche Klasse, die (wenn auch manchmal weitere Klasse dazwischen liegen) immer auf der Klasse SugarBean basiert. SugarBean stellt die Basis und die grundsätzliche Logik im System. Sie finden sie unter data/SugarBean.php. In dem eigenen Modul können Sie also alle Funktionen der Basisklasse überschreiben. Ich überschreibe dafür die Funktion fill_in_additional_detail_fields (Listing 3).

require_once('modules/ICC_Artikelverwaltung/ICC_Artikelverwaltung_sugar.php');
class ICC_Artikelverwaltung extends ICC_Artikelverwaltung_sugar {
  
  function ICC_Artikelverwaltung(){  
    parent::ICC_Artikelverwaltung_sugar();
  }
  
  // Eigene Logik Begin
  function fill_in_additional_detail_fields()
  {
    parent::fill_in_additional_detail_fields();
    $this->description = "Beispieltext";
  }
  // Eigene Logik Ende
}

Die Funktion wird aufgerufen, wenn das Objekt geladen wird. In diesem Beispiel wird einfach der Text Beispieltext in die Eigenschaft description geschrieben. Dies erscheint auch in der Maske.

Als letztes Beispiel möchte ich Ihnen zeigen, wie Sie einfache Veränderungen in der Detailansicht durchführen können. Hierfür ändere ich die Datei modules/ICC_Artikelverwaktung/metadata/editviewdefs.php wie folgt ab:

  // Eigene Logik Beginn 
  array(
    'name' => 'status_id',
    'label' => 'LBL_STATUS',
    'type' => 'multienum',
  )
  // Eigene Logik Ende

Vorher stand in dem Code nur:

'status_id'

Obwohl das Feld Status eigentlich eine normale Auswahlliste ist, wird es nun zur Mehrfachauswahlliste. Das passiert, weil hier der Feldtyp manuell über das Attribut type gesetzt wurde. Der eigentliche Feldtyp spielt dadurch keine Rolle mehr. Mit solchem Customizing muss man aber vorsichtig umgehen, da der Feldtyp in der Datenbank schon zu der Darstellung passen sollte, sonst kann es zu Datenverlust und Fehlern kommen.

Außerdem muss bei Veränderungen der metadata-Dateien drauf geachtet werden, dass sie nicht bereits im Cache liegen, denn dann werden sie nicht neu aufgebaut und man wundert sich, warum die Änderungen nicht erscheinen. Für diesen Fall gibt es im Admin-Bereich die Repair-Funktionen, die die Cache-Dateien und andere neu aufbauen.

Weitere Themen der folgenden Seiten:


  • Erweitertes Customizing von bestehenden Modulen
  • Customizing der Professional-Editionen
  • Fazit
  • Infos zum Autor
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -