Informationsreiter erweitern

Wenn nur wenige zusätzliche Eingabefelder benötigt werden, hat es sich bewährt, auf einen eigenen Reiter zu verzichten und statt dessen einfach den Informationsreiter entsprechend zu erweitern. Dazu erweitern Sie im admin-Verzeichnis des entsprechenden Typs die navigation.ini:

[information] url = "info.php?tpl_name=information.html&script_name=information.php" title = Information

Über den Parameter tpl_name wir mitgeteilt, welches Template zusätzlich auf dem Informationsreiter eingebunden werden soll (die information.html muss entsprechend im admin-Verzeichnis existieren).

information.html (Teil 1)

<form name="extra"> <div align="center">    <table>        <tr>            <td>               <table border="0" cellspacing="1" cellpadding="4">                   <tr>                       <td>Mein eigenes Eingabefeld</td>                       <td><input type="text" name="extra[anzahl_news]"></td>                   </tr>                </table>            </td>        </tr>    </table> </div> </form>

Die DIV und Table-Tags mitsamt den CSS-Klassen bilden ein Grundgerüst, welches sich an das Design im Adminbereich anpasst.
Innerhalb des Formulars können nun beliebig viele weitere Eingabefelder definiert werden. Der Formularname "extra" darf nicht geändert werden.

Im anschließenden JavaScript-Bereich wird das Speichern und Laden der Felder definiert:

information.html (Teil 2)

{literal} <script language="javascript"> <!-- function do_load_extra() {    f = document.forms["extra"];    f.elements["extra[anzahl_news]"].value = window.parent.get_extra("anzahl_news"); }   function do_unload_extra() {    f = document.forms["extra"]; window.parent.set_extra("anzahl_news", f.elements["extra[anzahl_news]"].value); } //--> </script> {/literal}

Zunächst wird der komplette JavaScript-Teil von Smarty {literal}-Tags umschlossen, da die Template Engine geschweifte Klammern als Funktionsanfang interpretiert und eine Fehlermeldung wirft. Innerhalb dieser Tags findet damit keine Smarty-Funktionalität statt.

Um die Eingaben nun korrekt speichern und laden zu können, werden 2 vordefinierte Funktionen verwendet:

  • do_load_extra()
    Wird beim Laden des Reiters aufgerufen
  • do_undload_extra()
    Wird beim Verlassen oder Speichern des Reiters aufgerufen.

In diesen Funktionen wird über get_extra (den aktuell gespeicherten Wert der Seite auslesen) und set_extra (den Wert in die Seite schreiben) die entsprechende Werte beim Wechseln der Reiter übernommen bzw. geladen. Die Datenbankstruktur wird hierbei nicht geändert. EGOTEC legt bei Bedarf entsprechende "Felder" an. Über die Methoden get_extra und set_extra greifen Sie per Javascript auf diese Einträge zu. Die Speicherung dieser Daten erfolgt in einem objektorientierten Ansatz in der relationalen Datenbank.

Informationsreiter global erweitern

Der Informationsreiter lässt sich auch für alle Seitentypen innerhalb eines Mandanten erweitern. Dazu erstellt man unter

site/Mandant/admin
eine neue HTML-Datei information_global.html.

<form name="extra3"> <div align="center">    <table>       <tr>          <td colspan="2">             {input type="text" name="webcode" title="Webcode" short="Wird bei der Suche mit berücksichtigt"}          </td>       </tr>    </table> </div> </form>
{literal} <script language="javascript"> <!-- function do_load_extra3() {    document.forms["extra3"].elements["extra[webcode]"].value = window.parent.get_extra("webcode"); } function do_unload_extra3() {    window.parent.set_extra("webcode", document.forms["extra3"].elements["extra[webcode]"].value); } //--> </script> {/literal}
warning
Bei globaler Erweiterung (site/_global/) muss im Javascriptbereich die Funktion do_load_extra3 und do_unload_extra3 verwendet werden. Es ist auch darauf zu achten, dass das Formular nicht wie ursprünglich den Namen "extra" sondern extra3 erhällt.
warning
Bei Erweiterung über ein Theme (pub/theme/) muss im Javascriptbereich die Funktion do_load_extra4 und do_unload_extra4 verwendet werden. Es ist auch darauf zu achten, dass das Formular nicht wie ursprünglich den Namen "extra" sondern extra4 erhällt.