Genealogie: 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 der Menuleiste:

 
<?php
       CHTMLGenerator::getMenu($Session);
?>

 
Verzeichnis: Der Code der Darstellungsschicht befindet sich im Verzeichnis: Genealogie\. 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 Genealogie\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 getDateFormated($Day, $Month, $Year)  

Stellt das durch $Day, $Month und $Year representierte Datum in dem folgenden Format da:

 
<?php
       CHTMLGenerator::getDateFormated(9, 5, 1995);
?>

   =>  09.05.1995
 
<?php
       CHTMLGenerator::getDateFormated(0, 5, 1995);
?>

   =>  ??.05.1995
 
<?php
       CHTMLGenerator::getDateFormated(9, 0, 1995);
?>

   =>  09.??.1995
 
<?php
       CHTMLGenerator::getDateFormated(9, 5, 0);
?>

   =>  09.05.????
 
<?php
       CHTMLGenerator::getDateFormated(0, 0, 0);
?>

   =>  ??.??.????


  public function getDateInput($Session, $Name,
                          $DefaultDay, $DefaultMonth, $DefaultYear, $Form = null)
 

Zur Eingabe eines Datums durch den Anwender erzeugt die Anweisung:

 
<?php
       CHTMLGenerator::getDateInput($Session, "Date", 9, 3, 1995, "Form");
?>

 

die folgenden Elemente:

..

Mit $DefaultDay, $DefaultMonth und $DefaultYear wird das Datum voreingestellt.

Über $Session wird aus der Parametertabelle auf der Datenbank (mittels getParameter()) der Auswahlbereich für das Jahr gelesen:

Parametergruppe  :  Dates
Parameter  :  Years-From
Years-To

Aus den in $Name übergebenen Wert werden die Namen für die drei <SELECT>-Tags gebildet:

Tag  :  rawurlencode($Name).'Day'
Monat  :  rawurlencode($Name).'Month'
Jahr  :  rawurlencode($Name).'Year'

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


  public function getYearInput($Session, $Name, $DefaultYear, $Form = null)  

Zur Eingabe eines Jahres durch den Anwender erzeugt die Anweisung:

 
<?php
       CHTMLGenerator::getYearInput($Session, "Year", 1995, "Form");
?>

 

das folgende Element:



Mit $DefaultYear wird das Jahr voreingestellt.

Über $Session wird aus der Parametertabelle auf der Datenbank (mittels getParameter()) der Auswahlbereich für das Jahr gelesen:

Parametergruppe  :  Dates
Parameter  :  Years-From
Years-To

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 der Änderung des Jahres ein submit() auf die definierte HTML-Form ausgelöst.


  public function getSexInput($Name, $DefaultSex, $Form = null)  

Zur Eingabe des Geschlechts (einer Person) durch den Anwender erzeugt die Anweisung:

 
<?php
       CHTMLGenerator::getSexInput("SexType", "male", "Form");
?>

 

das folgende Element:



Mit $DefaultSex wird das Geschlecht voreingestellt.

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 der Änderung des Geschlechts ein submit() auf die definierte HTML-Form ausgelöst.


  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 getPersonNameFormated($Person, $ShowID = true)  

Stellt die belegten Namenselemente der durch $Person representierten Person dar. Darüberhinaus wird für alle durch die im Anwenderdialog Name-Type mit Active for short View gekennzeichnete Namenselement, die nicht belegt sind, die Zeichenfolge "???????" ausgegeben. Bei $ShowID = true wird in eckiger Klammer am Ende noch zusätzlich die interne Person-ID angezeigt.


  public function getPersonEventFormated($Person)  

Für eine in $Person representierten Person werden alle Events dargestellt, die im Anwenderdialog mit Active for short View gekennzeichnet sind.


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