Chapter 3. Die web-basierte Benutzeroberflaeche

Table of Contents

Initialisieren von admin_panel
Ausgabe von Tabellen und Widgets

HTML-Code innerhalb von Funktionen sind eine verwirrende Sache, die den Code schwer lesbar machen. Viel von diesem Code wiederholt sich, z.B. fuer Eingabezeilen und Knoepfe. Meist reicht, wie bei einer "richtigen" Fensteroberflaeche, ein Satz an Standard-Elementen, die sich durch Funktionsaufrufe in Tabellen platzieren lassen. Interagiert der Benutzer mit den Oberflaechenelementen, so muessen enstehende oder eingehende Daten in einem einheitlichen Format an das Programm gesendet werden. Genau dies leistet die Klasse admin_panel (panel (engl.) -> Schaltflaeche). Sie bietet eine "fette Schnittstelle" zu vielen kleineren Klassen, die sich um die HTML-Ausgabe, das einlesen von Formularen, und die Kommunikation mit externen Datenquellen wie SQL-Datenbanken, kuemmern. Mensch kann diese Klassen auch getrennt von admin_panel verwenden, sie erlaubt jedoch die Anwendung der Klassen im gegenseitigen Kontext, d.h. wenn beispielsweise ein Datensatz aus einer Datenbank gelesen wurde, so werden Formularfelder mit diesen Daten automatisch gefuellt, falls der entsprechende Feldname innerhalb des gelesenen Datensatzes angegeben wurde - der gelesene Datensatz kann ohne weiteres durch geaenderten Formularinhalt ersetzt werden, indem es an eine Standard-Formfunktion gesendet wird. Auch Befehlsknoepfe koennen kontextbezogen in Formularen platziert werden, z.B. zum loeschen, doch dazu spaeter mehr.

Initialisieren von admin_panel

Um admin_panel zu verwenden, muss zunächst eine Instanz der Klasse erzeugt werden. Das geschieht am besten innerhalb der init()-Funktion. admin_panel muss im Gegenzug eine Referenz zur Anwendung uebergeben werden - auch wenn es in objektorientierten Ueberzeugungstaetern mordphantasien ausloest, sieht das dann so aus:


  function init ()
  {
    # admin_panel ist eine Singleton-Klasse und darf nur 1x an
    # admin_panel::instance uebergeben werden.
    admin_panel::instance (new admin_panel ($this, 'Personeneditor'));
  }

       

Innerhalb der close()-Funktion muss auch admin_panel beendet werden, damit die HTML-Seite vervollstaendigt werden kann.


  function close ()
  {
    $ui =& admin_panel::instance ();
    $ui->close ();
  }

       

Der Anfang der HTML-Seite wird automatisch, mit dem ueber den Konstruktor angegebenen Titel, ausgegeben, wenn man admin_panel nicht davon abhaelt. Da wir keine externen HTML-Templates einbinden wollen, laesst sich damit durchaus leben. Innerhalb des views koennen die Widget-Funktionen von admin_panel verwendet werden. Sie umfassen einfachen Text, Erklaerungen, Ueberschriften, Warnungen, Formularelemente, Check- und Radioboxen und natuerlich Tabellen.

Beispielanwendung (Quelltext)