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