(edit)
Hide minor edits - Show changes to markup
(:redirect 'http://docs.studip.de/develop/Entwickler/Navigation':)
Für die Erzeugung und Konfiguration eines Navigationsobjekts gibt es im wesentlichen vier Operationen:
Für die Erzeugung und Konfiguration eines Navigationsobjekts gibt es im wesentlichen fünf Operationen:
StartNavigation
BrowseNavigation
CourseNavigation
MessagingNavigation
CommunityNavigation
ProfileNavigation
CalendarNavigation
SearchNavigation
ToolsNavigation
AdminNavigation
LoginNavigation
/ Wurzelknoten der Navigation start persönliche Startseite my_courses meine Veranstaltungen … … browse Veranstaltungen und Einrichtungen my_courses meine Veranstaltungen courses Veranstaltungen Suchen / Hinzufügen … … course gewählte Veranstaltung / Einrichtung forum Forum files Dateibereich … … messaging systeminterne Nachrichten calendar Terminkalender schedule Stundenplan … … community Wer ist Online adress_book Adressbuch chat Chat studygroups Studiengruppen score Rangliste profile Prilseite view persönliche Homepage avatar Hochladen des persönlichen Bildes … … calendar Termine und Stundenplan search Die neue Suchseite courses archiv studygroups persons institutes literature resources tools Die neue Werkzeugseite news votes literature elearning admin Administrationsbereich course Veranstaltungen config globale Einstellungen … … links Link-Liste oben rechts account Kontoeinstellungen des Benutzers search Suche logout Logout … … login Menü auf der Login-Seite login Login register Registrieren … …
Anmerkung: Die Punkte "course", "links" und "login" besitzen kein Symbol in der Top-Navigation.
Die globale Struktur der Navigation sieht derzeit (es werden sich noch Änderungen durch geplante Umbauten der Navigation ergeben) so aus:
Die globale Struktur der Navigation sieht derzeit so aus:
homepage persönliche Homepage
chat Stud.IP Chat online Wer ist online? homepage Homepage und Einstellungen
community Wer ist Online adress_book Adressbuch chat Chat studygroups Studiengruppen score Rangliste profile Prilseite
search Die neue Suchseite courses archiv studygroups persons institutes literature resources tools Die neue Werkzeugseite news votes literature elearning
account Kontoeinstellungen des Benutzers
Das Einhängen in die vorhandene Navigationsstruktur erfolgt wahlweise entweder über die statische Methode Navigation::addItem($path, $navigation) oder über die Methode addSubNavigation($name, $navigation) des übergeordneten Navigationsobjekts. Entsprechend gibt es auch die Methode Navigation::removeItem($path) bzw. removeSubNavigation($name), um einen Eintrag wieder zu entfernen. Die Methode Navigation::insertItem($path, $where, $navigation) fügt einen Eintrag an einer bestimmten Position in die vorhandene Navigation ein.
Navigation::addItem($path, $navigation)
addSubNavigation($name, $navigation)
Navigation::removeItem($path)
removeSubNavigation($name)
Navigation::insertItem($path, $where, $navigation)
Das Einhängen in die vorhandene Navigationsstruktur erfolgt wahlweise entweder über die statische Methode Navigation::addItem($path, $navigation) oder über die Methode addSubNavigation($name, $navigation) des übergeordneten Navigationsobjekts. Entsprechend gibt es auch die Methode Navigation::removeItem($path) bzw. removeSubNavigation($name), um einen Eintrag wieder zu entfernen. Die Methode Navigation::insertItem($path, $navigation, $where) fügt einen Eintrag an einer bestimmten Position in die vorhandene Navigation ein.
Navigation::insertItem($path, $navigation, $where)
Setzt ein Bild für den Navigationspunkt. Zusätzliche Attribute für den img-Tag können ebenfalls übergeben werden (title, style o.ä.).
img
Setzt ein Bild für den Navigationspunkt, entweder über den Pfad zu einer Bilddatei (z.B. in einem Plugin) oder über einen Bildnamen aus dem Assets-Bereich (der Normalfall im Kernsystem). Zusätzliche Attribute für den img-Tag können ebenfalls übergeben werden (title, style o.ä.).
Das Einhängen in die vorhandene Navigationsstruktur erfolgt wahlweise entweder über die statische Methode Navigation::addItem($path, $navigation) oder über die Methode addSubNavigation($name, $navigation) des übergeordneten Navigationsobjekts. Entsprechend gibt es auch die Methode Navigation::removeItem($path) bzw. removeSubNavigation($name), um einen Eintrag wieder zu entfernen.
$test1nav = new Navigation('Test 1', 'demo.php', array('test' => 1); $test2nav = new Navigation('Test 2', 'demo.php', array('test' => 2);
$test1nav = new Navigation('Test 1', 'demo.php', array('test' => 1); // URL: demo.php?test=1 $test2nav = new Navigation('Test 2', 'demo.php', array('test' => 2); // URL: demo.php?test=2
Die globale Struktur der Navigation sieht derzeit (es können sich noch Änderungen ergeben) so aus:
my_courses Meine Veranstaltungen
my_courses meine Veranstaltungen
my_courses meine Veranstaltungen courses Veranstaltungen Suchen / Hinzufügen
timetable Stundenplan
schedule Stundenplan
alle persönliche Homepage bild Hochladen des persönlichen Bildes
view persönliche Homepage avatar Hochladen des persönlichen Bildes
course Veranstaltungen config globale Einstellungen
Anmerkung: Die Punkte "course", "links" und "login" haben kein Symbol in der Top-Navigation.
Ab Version 1.11 soll eine neue API zur Manipulation der globlan Navigationsstruktur in Stud.IP Einzug halten. Damit sollen dynamische Änderungen an der Navigation leichter möglich und gleichzeitig der Pflegeaufwand der zentralen Dateien reduziert werden. Der Begriff "Navigation" umfaßt dabei nicht nur die Reiternavigation, sondern unter anderem auch die Icons in der Kopfzeile – im folgenden "Top-Navigation" genannt – und die Links auf der persönlichen Startseite sowie ggf. in der Info-Box vorhandene Navigationspunkte (sofern es dort welche gibt).
Ab Version 1.11 soll eine neue API zur Manipulation der globalen Navigationsstruktur in Stud.IP Einzug halten. Damit sollen dynamische Änderungen an der Navigation leichter möglich und gleichzeitig der Pflegeaufwand der zentralen Dateien reduziert werden. Der Begriff "Navigation" umfaßt dabei nicht nur die Reiternavigation, sondern unter anderem auch die Icons in der Kopfzeile – im folgenden "Top-Navigation" genannt – und die Links auf der persönlichen Startseite, sowie ggf. in der Info-Box vorhandene Navigationspunkte (sofern es dort welche gibt).
Besitzt ein Navigationspunkt, der weitere Unterpunkte hat, keine eigene URL, so wird automatisch die URL des ersten Unterpunkts verwendet, der eine URL besitzt. Das ist besonders dann praktisch, wenn der erste Punkt der Subnavigation je nach Rechtestufe manchmal nicht angezeigt wird. So verweist der übergeordnete Reiter immer automatisch auf den ersten sichtbaren Reiter der Subnavigation. Enthält die Subnavigation keine (sichtbaren) Elemente, wird der übergeordnete Reiter dann ebenfalls automatisch ausgeblendet.
Besitzt ein Navigationspunkt, der weitere Unterpunkte hat, keine eigene URL, so wird automatisch die URL des ersten Unterpunkts verwendet, der eine URL gesetzt hat. Das ist besonders dann praktisch, wenn der erste Punkt der Subnavigation je nach Rechtestufe manchmal nicht angezeigt wird. So verweist der übergeordnete Reiter immer automatisch auf den ersten sichtbaren Reiter der Subnavigation. Enthält die Subnavigation keine (sichtbaren) Elemente, wird der übergeordnete Reiter dann ebenfalls automatisch ausgeblendet.
Erzeugt einen Navigationspunkt und setzt Titel und URL (und ggf. URL-Parameter).
Erzeugt einen Navigationspunkt und setzt Titel und (optional) URL und ggf. URL-Parameter.
Setzt den Titel bzw. die URL. URL-Parameter können wir beim URLHelper als Array von Schlüssel/Wert-Paaren übergeben werden.
URLHelper
Setzt den Titel bzw. die URL. Weitere URL-Parameter können wie beim URLHelper als Array von Schlüssel/Wert-Paaren übergeben werden.
title
style
Beispiel:
Ein kleines Beispiel:
$navigation = new Navigation(_('Admin'));
$navigation = new Navigation('Admin');
array('title' => _('Zu Ihrer Administrationsseite')));
array('title' => 'Zu Ihrer Administrationsseite'));
Das Einhängen in die vorhandene Navigationsstruktur erfolgt wahlweise entweder über die statische Methode Navigation::addItem($path, Navigation $navigation) oder über die Methode addSubNavigation($name, Navigation $navigation) des übergeordneten Navigationsobjekts. Entsprechend gibt es auch die Methode Navigation::removeItem($path) bzw. removeSubNavigation($name), um einen Eintrag wieder zu entfernen.
Navigation::addItem($path, Navigation $navigation)
addSubNavigation($name, Navigation $navigation)
$demonav = new Navigation('Demo', 'demo.php');
Um den Punkt "Hochladen des persönlichen Bildes" auf eine eigene Seite umzuleiten:
Um den Punkt "Hochladen des persönlichen Bildes" der Homepage auf eine eigene Seite in einem Plugin umzuleiten:
Der auf der jeweils aktuellen Stud.IP-Seite "aktive" Navigationspunkt muß markiert werden, damit die korrekte Reiternavigation ausgwählt und dieser Punkt dort entsprechend hervorgehoben werden kann. Die "alte" Methode, die globale Variable $reiter_view zu setzen, funktioniert nun nicht mehr. Stattdessen muß man einen Navigationspunkt explizit aktivieren:
$reiter_view
Der auf der jeweils aktuellen Stud.IP-Seite "aktive" Navigationspunkt muß markiert werden, damit die korrekte Reiternavigation ausgewählt und dieser Punkt dort entsprechend hervorgehoben werden kann. Die "alte" Methode, die globale Variable $reiter_view zu setzen, funktioniert nun nicht mehr. Stattdessen muß man einen Navigationspunkt explizit aktivieren:
(:toc:)
Die gesamte Navigation wird von der Klasse Navigation in Stud.IP verwaltet, d.h. Navigationspunkte werden generell als Objekte erzeugt. Jeder Navigationspunkt kann beliebig viele Unterpunkte besitzen, so daß die Menge aller Navigationspunkte zusammen einen Baum bildet (zumindest solange ein Punkt nur an einer Stelle in der Navigation eingehängt wird). Einzelne Navigationspunkte können über ihren Pfad im Baum angesprochen werden. Jedem Navigationobjekt kann ein Bild zugewiesen werden, allerdings werden derzeit nur für die Punkte der Top-Navigation diese auch angezeigt. Navigationspunkte, die keine URL besitzen, werden automatisch ausgeblendet. Das gleiche gilt für Punkte der Top-Navigation, die kein Bild gesetzt haben.
Navigation
$navigation = new Navigation(_('Admin')); $navigation->setURL('adminarea_start.php'); $navigation->setImage('header_admin', array('title' => _('Zu Ihrer Administrationsseite')));
Um zum Beispiel zu einer Veranstaltung einen neuen Reiter "Demo" mit zwei Unterpunkten "Test 1" und "Test 2" hinzuzufügen, würde man zunächst die entsprechenden Navigationsobjekte erzeugen:
$demonav = new Navigation('Demo', 'demo.php'); $test1nav = new Navigation('Test 1', 'demo.php', array('test' => 1); $test2nav = new Navigation('Test 2', 'demo.php', array('test' => 2);
und diese dann an der entsprechenden Stelle in die globale Navigationsstruktur einhängen:
Navigation::addItem('/course/demo', $demonav); $demonav->addSubNavigation('test1', $test1nav); $demonav->addSubNavigation('test2', $test2nav);
oder alternativ:
Navigation::addItem('/course/demo', $demonav); Navigation::addItem('/course/demo/test1', $test1nav); Navigation::addItem('/course/demo/test2', $test2nav);
Um den Link "Meine Veranstaltungen" von der Startseite zu entfernen:
Navigation::removeItem('/start/my_courses');
$navigation = Navigation::getItem('/homepage/bild'); $navigation->setURL(PluginEngine::getURL($plugin));
Navigation::activateItem('/course/demo/test1');
Alternativ kann man auch statt der Klasse Navigation die Klasse AutoNavigation verwenden, die einen Navigationspunkt automatisch als aktiviert meldet, wenn die URL der aktuellen Seite der URL der Navigation entspricht und alle im Navigationsobjekt gesetzten URL-Parameter auch im aktuellen Request vorhanden sind und dort den gleichen Wert haben. Im oben beschriebenen Beispiel sähe das dann so aus:
AutoNavigation
$demonav = new Navigation('Demo', 'demo.php'); $test1nav = new AutoNavigation('Test 1', 'demo.php', array('test' => 1); $test2nav = new AutoNavigation('Test 2', 'demo.php', array('test' => 2); [...]
/ Wurzelknoten der Navigation start persönliche Startseite my_courses Meine Veranstaltungen homepage persönliche Homepage … … browse Veranstaltungen und Einrichtungen … … course gewählte Veranstaltung / Einrichtung forum Forum files Dateibereich … … messaging systeminterne Nachrichten calendar Terminkalender timetable Stundenplan … … chat Stud.IP Chat online Wer ist online? homepage Homepage und Einstellungen alle persönliche Homepage bild Hochladen des persönlichen Bildes … … calendar Termine und Stundenplan admin Administrationsbereich … … links Link-Liste oben rechts search Suche logout Logout … … login Menü auf der Login-Seite login Login register Registrieren … …
Source: Basis-Wiki-Hilfe | Last change: April 01, 2011, at 11:46 PM, tthelen | Local view: Basis-Hilfe