Admin Page
Für Backend-Benutzer können eigenständige Seiten innerhalb der Verwaltung zur Verfügung gestellt werden. Das entspricht den bisherigen "Plugin-Seiten" auf Projektebene, die allerdings direkt im Backend als normale Menüpunkte angelegt wurden.
Admin Pages stehen in allen Projekten zur Verfügung und beziehen ihren Inhalt aus der ZIP-Datei des Plugins, siehe zu dieser Funktionsweise auch die Static Content Extension.
fun registerAdminPage(info: AdminPageInfo)
AdminPageInfo
besteht aus id
, title
, staticPath
, handler
und guard
. id
ist eine frei wählbare ID, die über alle Admin Pages eines Plugins hinweg eindeutig sein muss. Es ist kein Problem, wenn mehrere Plugins eine Admin Page mit derselben ID bereitstellen, da zum Ansprechen einer Admin Page auch die id
des Plugins herangezogen wird.
title
ist der Titel, wie er im Verwaltungsmenü auftaucht. staticPath
ist der Unterordner im static
Ordner des Plugin-ZIPs, aus dem die Dateien ausgeliefert werden.
Der optionale Wert handler
ist ein RequestHandler
, der aufgerufen wird, falls eine Datei angefordert wird, die nicht existiert. Hiermit können die Actions der bisherigen Plugin-Seiten nachgebildet werden.
Der optionale Wert guard
ist ein StaticContentHandler.Guard
, wie er auch bei Static Content verwendet wird. Falls definiert, wird die intercept
Methode von guard
in folgenden Fällen mit diesen Werten aufgerufen:
resource=""
- um zu prüfen, ob die Admin Page dem Backend-Benutzer in der Navigation angezeigt werden soll oder nicht. Wirdtrue
zurückgegeben, taucht die Admin Page in der Navigation nicht auf.resource="index.html"
,resource="assets/style.css"
,resource="dynamic/do-something-action"
- um zu prüfen, ob der Request auf diese Ressource erlaubt werden soll oder nicht. Wirdtrue
zurückgegeben, erfolgt die Auslieferung der Ressource nicht, ebenfalls wird wederhandler
aufgerufen noch eine eigene Fehlermeldung generiert.
Beispiel
In der Pluginhauptklasse wird die Admin Page registriert. In der Plugin-ZIP müssen die Dateien dementsprechend im Ordner static/import-ma/ liegen.
override fun load() {
registerAdminPage(
AdminPageInfo(
"import-mitarbeiter", // id
"Mitarbeiterimport", // title
"import-ma", // staticPath
null, // handler
null // guard
)
)
}
Im Backend stellt sich die Admin Page im Menü wie folgt dar.