Cookbook: Code-Struktur/Darstellungsschicht
Allgemeines: Die Darstellungsschicht ist eng verbunden mit der Applikationsschicht. Logic, Datenaufbereitung und PHP-Code befinden sich ausschließlich in der Applikationsschicht. Die Darstellungsschicht ist somit frei jedlicher Applications-Logic. Sie kann sich so auf Darstellung und Layout beschränken. In der Darstellungsschicht finden sich lediglich Code-Schnipsel zur Anzeige der aufgearbeiteten Werte. Es gilt also die Aufteilung:

Applikationsschicht  :  PHP-Code und Application-Logic
Darstellungsschicht  :  HTML-Code mit PHP-Schnipseln zur Datenanzeige

Komplexere oder immer wiederkehrende HTML-Tags wie z.B. Menus, Elemente zur Datumsauswahl, etc. wurden in der Klasse CHTMLGenerator realisiert und werden als Code-Schnipsel in die Darstellungsschicht implementiert. Beispiel für die Darstellung einer Combo-Box:

 
<?php
       CHTMLGenerator::getNrComboInput("NrList", 1, 8, 10, "Form");
?>

 
Verzeichnis: Der Code der Darstellungsschicht befindet sich im Verzeichnis: Cookbook\. Alle PHP-Sites wurden in eigene Files (nach dem Muster *.php) angelegt.
CHTMLGenerator: Beschreibung:

Komplexere oder immer wiederkehrende HTML-Tags wie z.B. Menus, Elemente zur Datumsauswahl, etc. wurden in der Klasse CHTMLGenerator realisiert. CHTMLGenerator findet sich in der Datei Cookbook\HTMLGenerator.inc.php


Die Methoden:

  public function getForwardButton(CSession $Session, $Value)  
  public function getBackButton(CSession $Session, $Value)  

CSession wertet die GET-Zeile ($_SERVER["QUERY_STRING"]) nach den Parametern &BackForm und &ForwardForm aus (siehe auch die Beschreibung zu CSession). In $_SESSION[] werde diese dann in ein Array abgelegt, in dem für jede PHP-Site (definiert durch $_SERVER["PHP_SELF"]) hinterlegt werden kann wohin sie nach Bearbeitung weiter leiten soll (&ForwardForm), bzw. wohin sie zurückkehren soll (&BackForm).

Mit getForwardButton() bzw. mit getBackButton() wird der Code für einen entsprechender Button erzeugt, der dann zu der durch &ForwardForm bzw. &BackForm definierten Site weiterleitet. Ist für die aktuelle Site kein Wert definiert, dann wird die Darstellung unterdrückt. In $Value wird der anzuzeigende Text auf dem Button übergeben.


  public function getComboInput($Name, $List, $Default, $Form = null)  

Die String-Liste $List wird in einem <SELECT>-Tag dargestellt. Die Voreinstellung aus dieser Liste wird in $Default übergeben. Die Anweisung:

 
<?php

      $List = array(
                     "Montag",
                     "Dienstag",
                     "Mittwoch",
                     "Donnerstag",
                     "Freitag",
                     "Samstag",
                     "Sonntag")

       CHTMLGenerator::getComboInput("Weekday", $List, "Sonntag", "Form");
?>

 

erzeugt das folgende Element:



Aus den in $Name übergebenen Wert wird der Name für das <SELECT>-Tag gebildet.

In $Form wird optional der Name der HTML-Form übergeben. Ist er belegt, dann wird nach Änderung der Auswahl ein submit() auf die definierte HTML-Form ausgelöst.


  public function getNrComboInput($Name, $MinNr, $MaxNr, $Default, $Form = null)  

Im Bereich von $MinNr bis $MaxNr wird eine numerische, ganzzahlige Zahlenfolge erstellt und diese in einem <SELECT>-Tag dargestellt. Die Voreinstellung aus dieser Liste wird in $Default übergeben. Die Anweisung:

 
<?php

       CHTMLGenerator::getNrComboInput("NrList", 1, 8, 10, "Form");
?>

 

erzeugt das folgende Element:



Aus den in $Name übergebenen Wert wird der Name für das <SELECT>-Tag gebildet.

In $Form wird optional der Name der HTML-Form übergeben. Ist er belegt, dann wird nach Änderung der Auswahl ein submit() auf die definierte HTML-Form ausgelöst.


  public function getTab($Tabs, $TabHeight, $TabStartWidth = 5, $TabEndWidth = 0)  

Stellt die Tabulatoren einer Tabulator-Page dar. Eine dynamisch arbeitende Tabulator-Page kann über den Austausch von String-Arrays realisiert ist. Die Anweisungen:

 
<?php

      
       $Tabs = array(
       "Tab 1" => array(
       "Label" => "Tab 1",
       "Link" => ""
       "Width" => 149),
       "Tab 2" => array(
       "Label" => "Tab 2",
       "Link" => $_SERVER['PHP_SELF']."?Action=Tab2Action"
       "Width" => 149),
       "Tab 3" => array(
       "Label" => "Tab 3",
       "Link" => $_SERVER['PHP_SELF']."?Action=Tab3Action"
       "Width" => 149)),

       CHTMLGenerator::getTab($Tabs, 18);
?>

 

erzeugen die folgenden Tabulatoren einer Tabulator-Page:

   Tab 1  Tab 2  Tab 3  

Díe Informationen zum Aufbau der Tabulatoren sind in dem Array $Tabs enthalten. Dies umfaßt 2 Dimensionen:

$Tabs["Tab"]["Label"]  =  Label, der auf dem Tab angezeigt wird
$Tabs["Tab"]["Link"]  =  Link, des Tab. Für den aktiven Tab wird ein Leerstring ("Tab") übergeben. Dieser wird dann nicht als Hyperlink dargesetellt
$Tabs["Tab"]["Width"]  =  Breite des Tab in Pixel

In $TabHeight wird die Höhe der Tabulatoren angegeben. Optional kann in $TabStartWidth (Default = 5) noch der Linke Randabstand (in Pixel) der Tabulatoren festgelegt werden. Mit dem ebenfalls optionalen Parameter $TabEndWidth (Default = 0) kann die Länge des Rechte Randes (in Pixel) bestimmt werden. Wird dieser Wert auf 0 gesetzt, dann erstreckt sich der rechte Randbereich über die gesamte Restbreite.


  public function getMenu(CSession $Session)  

In Abhängigkeit von den Benutzerrechten erzeugt getMenu() die Menuleiste für Genealogie. Die notwendigen Informationen werden aus $Session gelesen. Eine beispielhafte Menuleiste, die durch die Anweisung:

 
<?php

       CHTMLGenerator::getMenu($Session);
?>

 

erzeugt worden sein könnte findet sich hier. Die einzelnen Sub-Menupunkte sind <div>-Blöcke, die über ihre CSS-Eigenschaften mittels Java-Script sichtbar, bzw. unsichtbar geschaltet werden. Der notwendige Jave-Script Code wird ebenfalls von getMenu() erzeugt. Eine Beschreibung hierzu findet sich hier.
.:  :.