Anpassungen an der HTML-Struktur der Ausgabe

Über die Klasse PageLayout steht eine API in Stud.IP zur Verfügung, die verschiedene Anpassungen an der HTML-Grundstruktur der Ausgabe ermöglicht. Diess 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.  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.

§

1.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.
hasTitle()
Fragt ab, ob für die aktuelle Seite ein Seitentitel gesetzt wurde.

§

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

§

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

§

1.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 = [])
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', ['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 = [], $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', [
    '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.

§

1.5  Entfernen von Inhalten

removeStylesheet($source, $attributes = [])
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 = [])
Entfernt alle Elemente mit dem angegebenen Namen und den Attributen wieder aus dem Seitenkopf.

Beispiel:

PageLayout::removeHeadElement('link', ['rel' => 'stylesheet'])// remove all style sheets

§

1.6  Darstellung von Meldungen

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.

Für jeden Typen der MessageBox gibt es auch eine eigene post<type>-Methoden am PageLayout-Objekt, wie beispielsweise PageLayout::postSuccess() oder PageLayout::postError().

Beispiel:

PageLayout::postMessage(MessageBox::success('Eintrag gelöscht'));
// Äquivalent:
PageLayout::postSuccess('Eintrag gelöscht');

clearMessages()
Löscht alle Meldungen, die zur Anzeige hinterlegt und noch nicht ausgegeben wurden.

§

1.7  Bestätigen von Aktionen

postQuestion($question, $accept_url = "", $decline_url = "")
Holt eine Bestätigung des Nutzers zu einer bestimmten Aktion ein. Wird die Ausführung der Aktion bestätigt, so wird ein POST-Request auf die angegebene $accept_url abgesetzt, im anderen Fall wird die $decline_url über GET aufgerufen. Weitere Details finden sich im ersten Abschnitt unter Modaler Dialog. Der Mechanismus funktioniert analog wie postMessage(), so dass die Bestätigung bei der nächsten Gelegenheit dargestellt wird.

Beispiel:

PageLayout::postQuestion(
    'Wollen Sie diese Aktion wirklich ausführen?',
    URLHelper::getURL('dispatch.php/foo/confimed')
);

§

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

§

1.9  Setzen des Id-Attributs des Elements <body>

setBodyElementId($id)
Setzt die Id des <body>-Elements, um über dieses beispielsweise in CSS oder Javascript gezielter Elemente ansprechen zu können.
getBodyElementId()
Liefert die gesetzte Id des <body>-Elements zurück. Wurde keine Id gesetzt, wird false zurückgeliefert.

§

1.10  Ersetzen der Schnellsuche

addCustomQuicksearch($html)
Ersetzt die Schnellsuche (oben rechts) durch beliebiges HTML.
hasCustomQuicksearch()
Fragt ab, ob die Schnellsuche ersetzt wurde.
getCustomQuicksearch()
Liefert den HTML-Code zurück, der die Schnellsuche ersetzen soll. Wurde kein HTML durch addCustomQuicksearch() gesetzt, liefert diese Methode null zurück.

§

2.  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 June 28, 2019, at 01:39 PM von tleilax.