Navigation über mehrere Seiten

Um innerhalb eines Moduls wieder zu den Seiten zurücknavigieren zu können, von denen der User gekommen ist, muss man sich die entsprechenden Seitenaufrufe merken um dann später auf diese Informationen zurückgreifen zu können.

Dies geschieht mit der Klasse Navigation (navigation.php). In der common.php wird ein globales Objekt dieser Klasse angelegt. Dieses Objekt ist überall verfügbar und heißt $_SESSION['navigation'].

Das Objekt soll alle Urls sammeln, die ein Benutzer innerhalb eines Moduls besucht. So hat man dann die Möglichkeit immer wieder zur richtigen Seite zurück zu navigieren. Allerdings muss die URL-Sammlung von uns richtig gepflegt werden. Dazu besitzt das Objekt einige Methoden.

Beim Einstieg in ein Modul muss dieses Objekt neu initialisiert werden, da es bereits in anderen Modulen mit Urls gefüllt sein könnte.

$_SESSION['navigation']->clear();

Nun müssen alle Seiten, die aufgerufen werden, (auch die erste Modulseite) diesem Objekt hinzugefügt werden

$_SESSION['navigation']->addUrl(CURRENT_URL);

Hat man nun irgendwo einen Zurückbutton, so wurde dieser entweder mit mit Javascript history.back() oder einer festen URL belegt. Dies ist nun nicht mehr nötig. Hier kann man dann einfach die Php-Seite aufrufen:

$g_root_path/adm_program/system/back.php

Wurde eine Seite wieder ohne zurücknavigation verlassen, so muss diese auch aus dem Objekt entfernt werden. Dies geht mit

$_SESSION['navigation']->deleteLastUrl();

Dies ist zum Beispiel der Fall, wenn man einen Termin ändern will. Dann muss die Bearbeitungsseite erst in das Objekt mit addUrl aufgenommen werden. Wird nun der Termin verändert und gespeichert, so landet man im dates_function Skript. Da dieses keine Ausgabe hat, muss es selber nicht dem Objekt hinzugefügt werden, es muss aber bei erfolgreichem Speichern die vorherige Seite aus dem Objekt mit deleteLastUrl löschen.

Ein Hinweis zu dem back.php Script. Dieses ruft immer die VORLETZTE Seite aus dem Objekt auf, da meistens die letzte Seite im Objekt die aktuelle Seite ist.