SideBarMenu

Auf dieser Seite... (ausblenden)

  1.   1.  Allgemeines
  2.   2.  Die Klasse PageLayout
    1.   2.1  Seitentitel
    2.   2.2  Hilfe
    3.   2.3  Reiternavigation
    4.   2.4  Hinzugügen von Inhalten
    5.   2.5  Entfernen von Inhalten
    6.   2.6  Darstellung von Meldungen
    7.   2.7  Anzeige des Seitenkopfs
  3.   3.  Beispiel

Mit der Version 2.0 steht eine neue API in Stud.IP zur Verfügung, mit der verschiedene Anpassungen an der HTML-Grundstruktur der Ausgabe möglich sind. Das umfaßt einfache Dinge wie das Setzen des Seitentitels, ermöglicht aber auch das Hinzufügen oder Entfernen von HTML-Elementen im HEAD-Bereich der Seite, um beispielsweise eigene Style-Sheets oder JavaScipt-Dateien einbinden zu können.

1.  Allgemeines

Alle Änderungen werden nun über die Klasse PageLayout vorgenommen. Die "alte" Vorgehensweise über das Setzen bestimmter globaler Variablen funktioniert für eine Übergangszeit weiterhin, sollte aber ab der Version 2.0 nicht mehr verwendet werden. Das betrifft die Variablen:

  • $CURRENT_PAGE
  • $HELP_KEYWORD
  • $_NOHEADER
  • $_html_head_title
  • $_include_additional_header
  • $_include_additional_html
  • $_include_extra_stylesheet
  • $_include_stylesheet

Einige (selten verwendete) Variablen werden bereits ab der Version 2.0 gar nicht mehr unterstützt:

  • $body_class
  • $body_id

2.  Die Klasse PageLayout

Die Anpassung der HTML-Grundstruktur passiert über die neue Klasse PageLayout. Dazu bietet die Klasse eine Reihe statischer Methoden, die die verschiedenen Möglichkeiten abdecken.

2.1  Seitentitel

setTitle($title)
Setzt den aktuellen Seitentitel, sowohl für die Anzeige im Browserfester als auch in Stud.IP.
Beispiel:
PageLayout::setTitle(_('Startseite'));
getTitle()
Liefert den aktuellen Seitentitel zurück.

2.2  Hilfe

setHelpKeyword($help_keyword)
Setzt das Hilfe-Thema für die angezeigte Seite. Dieses wird dann beim Aufruf der Hilfe-Funktion an den Hilfe-Server übermittelt.
Beispiel:
PageLayout::setHelpKeyword('Basis.Startseite');
getHelpKeyword()
Liefert das eingestellte Hilfe-Thema zurück.

2.3  Reiternavigation

setTabNavigation($path)
Setzt den Pfad im Navigationsbaum, an dem die Reiternavigation startet. Es werden dann die beiden Ebenen unterhalb des angegebenen Navigationspunkts als Reiter (1. und 2. Ebene) angezeigt. Die Voreinstellung ist das jeweils aktive Element der Hauptnavigation. Ein explizites Setzen ist nur für Navigationskontexte mit Reiteranzeige notwendig, die an anderer Stelle als der Hauptnavigation eingebunden sind (wie z.B. das Impressum). Man kann auch die Anzeige der Reiternavigation ganz ausschalten, wenn man NULL als $path übergibt.
Beispiel:
PageLayout::setTabNavigation('/links/siteinfo');
getTabNavigation()
Liefert die Reiternavigation zurück.

2.4  Hinzugügen von Inhalten

addStyle($content)
Fügt eine neues CSS STYLE-Element in den Seitenkopf ein.
Beispiel:
PageLayout::addStyle('#highlight { background-color: red; }');
addStylesheet($source, $attributes = array())
Fügt einen Verweis auf ein Style-Sheet in den Seitenkopf ein. $source kann entweder eine komplette URL oder ein Dateiname sein, der relativ zum Assets-Verzeichnis aufgelöst wird. Optional können weitere Attribute für das LINK-Element übergeben werden.
Beispiel:
PageLayout::addStylesheet('print.css', array('media' => 'print'));
addScript($source)
Bindet eine weitere JavaScript-Datei in den Seitenkopf ein. $source kann entweder eine komplette URL oder ein Dateiname sein, der relativ zum Assets-Verzeichnis aufgelöst wird.
Beispiel:
PageLayout::addScript($this->getPluginURL() . '/vote.js');
addHeadElement($name, $attributes = array(), $content = NULL)
Fügt eine beliebiges HTML-Element in den Seitenkopf ein. $name, $attributes und $content entsprechen den Namen, der Attributliste und dem Inhalt des erzeugten Elements. Ist $content NULL, so wird das Element nicht abgeschlossen (wie META oder LINK), andernfalls wird automatisch auch ein schließendes Tag hinter dem Inhalt ausgegeben (z.B. bei SCRIPT).
Beispiel:
PageLayout::addHeadElement('link',
        array('rel' => 'alternate', 'type' => 'application/rss+xml',
              'title' => 'RSS', 'href' => $feed_url));
addBodyElements($html)
Fügt ein beliebiges HTML-Fragment direkt zu Beginn des BODY in die Seitenausgabe ein. Das ist vor allem in Plugins verwendbar, die Inhalte auf beliebigen Stud.IP-Seiten ausgeben wollen.

2.5  Entfernen von Inhalten

removeStylesheet($source, $attributes = array())
Entfernt einen Verweis auf ein Style-Sheet wieder aus dem Seitenkopf. $source kann wie bei addStylesheet entweder eine komplette URL oder ein Dateiname sein, der relativ zum Assets-Verzeichnis aufgelöst wird.
Beispiel:
PageLayout::removeStylesheet('style.css');
removeScript($source)
Entfernt eine eingebundene JavaScript-Datei wieder aus dem Seitenkopf. $source kann wie bei addScript entweder eine komplette URL oder ein Dateiname sein, der relativ zum Assets-Verzeichnis aufgelöst wird.
removeHeadElement($name, $attributes = array())
Entfernt alle Elemente mit dem angegebenen Namen und den Attributen wieder aus dem Seitenkopf.
Beispiel:
PageLayout::removeHeadElement('link', array('rel' => 'stylesheet'))// remove all style sheets

2.6  Darstellung von Meldungen

Achtung: Diese beiden Funktionen sind erst ab Version 2.1 vorhanden.

postMessage(MessageBox $message)
Veranlaßt das System, das angegebene MessageBox-Objekt bei nächster Gelegenheit anzuzeigen, d.h. bei der nächsten Ausgabe eines Layouts. Die Meldung bleibt so lange gespeichert, bis sie angezeigt wurde, auch über (ggf. mehrere) Redirects hinweg. Alte Seiten, die noch kein Layout verwenden, können auch keine Meldungen hierüber anzeigen.
Beispiel:
PageLayout::postMessage(MessageBox::success('Eintrag gelöscht'));
clearMessages()
Löscht alle Meldungen, die zur Anzeige hinterlegt und noch nicht ausgegeben wurden.

2.7  Anzeige des Seitenkopfs

disableHeader()
Unterdrückt die Anzeige des Seitenkopfs mit dem Navigationsbereich, z.B. für eine Druckansicht (die sollte aber besser mit einem Print-Style-Sheet gelöst werden) oder ein Popup-Fenster.

3.  Beispiel

Zum Abschluß noch ein kleines Beispiel aus einem Plugin, das (u.a.) eine eigene CSS-Datei mitbringt:

PageLayout::setTitle('Neueste Aktivitäten');
PageLayout::setHelpKeyword('Plugins.Activities');
PageLayout::addStylesheet($this->getPluginURL() . '/css/activities.css');

Letzte Änderung am 02.05.2011 13:28 Uhr von eludwig.