Skip to main content

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 idtitlestaticPathhandler und guardid 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. Wird true 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. Wird true zurückgegeben, erfolgt die Auslieferung der Ressource nicht, ebenfalls wird weder handler 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.

admin-page-menu.png