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:
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:
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:
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:
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.