Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Weitere Ankerpunkte erstellt / verlinkt

...

Damit nicht jedes Template seine eigenen Formulare definieren muss, liefert der i-doit Kern viele “Smarty Plugins” mit, dazu später mehr.

Nötige Vorbereitung für eine eigene Kategorie

...

  1. Anpassen einzelner Attribut-Daten und anschließende Weiterleitung an parent::create_data. Dies wird beispielsweise in der Passwort-Kategorie verwendet: Wir verschlüsseln das Passwort und lassen die übergeordnete Methode den Datensatz mit Hilfe von generischer Logik speichern.
    Ein anderes Beispiel BeisReihenfolge der Datenübergabepiel ist die Monitor-Kategorie. Hier wird lediglich die Bildschirmgröße entsprechend der ausgewählten “Einheit” berechnet und ebenfalls an parent::create_data übergeben.
  2. Theoretisch können wir an dieser Stelle die “INSERT INTO …” Query selbst erzeugen und an die Datenbank übermitteln. Dies wird nicht empfohlen und auch von i-doits Kern-Kategorien nicht gemacht!
    Diese Option sollte nur dann gewählt werden, wenn ein komplexer Datensatz nicht von der generischen Implementierung gespeichert werden kann.

...

Diese Methode wird aufgerufen, wenn ein User im i-doit-Frontend in die Kategorie hinein navigiert. Diese Methode kann, sofern es sich um eine “einfache” Kategorie (also ohne spezielle Logik) handelt, übersprungen werden, da i-doit alle notwendigen Daten selbstständig verarbeiten kann.
Damit ist das auslesen der Kategorie Daten zum jeweiligen Objekt und die übergabe an das Template gemeint. Außerdem werden die “UI Parameter” aus der Attribut-Definition an das Template übergeben (mehr dazu im Bereich “Reihenfolge Reihenfolge der Datenübergabe”Datenübergabe)

Im Fall einer “View”-Kategorie oder komplexen Daten, die vor der Übergabe an das Template verarbeitet werden müssen, muss die “process”-Methode genutzt und die zugrundeliegenden Daten manuell an das Template weitergeleitet werden.

...

Je nach Smarty-Plugin gibt es eine Reihe verschiedener Parameter, die man übergeben kann, um die jeweiligen Formularfelder mit Daten zu befüllen. Im Quelltext findet man die verschiedenen Plugins im Verzeichnis <i-doit>/src/classes/smarty. Weitere Beispiele folgen im Bereich “Smarty Plugins”Smarty Plugins.

Liste vorbereiten via process_list (nur Multi-Value-Kategorien)

...

Code Block
languagexml
themeRDark
<table class="contentTable">
    <tr>
        <td class="key">Label</td>
        <td class="value">Form field</td>
    </tr>
    <tr>
        <td colspan="2">
            <hr class="mt5 mb5" />
        </td>
    </tr>
    <tr>
        <td class="key">
            [{isys type='f_label' name='C__CATG__ATTRIBUTE_ID' ident="LC__LANGUAGE_CONSTANT"}]
        </td>
        <td class="value">
            [{isys type="f_count" name="C__CATG__ATTRIBUTE_ID"}]
        </td>
    </tr>
</table>

Smarty-

...

Plugins 
Anchor
smarty-plugin
smarty-plugin

Die meistbenutzten Smarty Plugins lauten:

...

  • handle_smarty_include
    Diese Methode wird sowohl im VIEW- als auch EDIT-Modus aufgerufen und muss HTML zurückliefern das den eigentlichen Popup-Trigger beinhaltet - dabei handelt es sich um ein beliebiges HTML Element, dass ein “onclick” Attribut erhält, dessen Inhalt mit Hilfe von $this->process_overlay(...) erzeugt wird. Üblicherweise beinhaltet das HTML auch noch ein Formular-Feld, dass den jeweiligen Popup-Wert beinhaltet.
  • handle_smarty_request
    Diese Methode wird via Ajax-Request aufgerufen, wenn der Popup-Trigger aktiviert wurde. Sie muss das Popup spezifische Smarty-Template rendern und den Request mittels die; beenden. i-doit wird das Template im Frontend empfangen, in das HTML des Popups einbetten und darstellen.

Reihenfolge der

...

Datenübergabe 
Anchor
reihenfolge-der-daten
reihenfolge-der-daten

Wie zuvor beschrieben, kann die UI Klasse im besten Fall die komplette Verarbeitung der Daten und UI Parameter übernehmen. Das heißt, sie übergibt sowohl Daten aus der DAO als auch die UI-Parameter aus der Attribut-Definition direkt an das TOM.

...