From 8c1ae513eaaf8489456eeee1cedad9fe3abe3709 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Fri, 26 Jun 2026 01:31:48 +0200 Subject: [PATCH] asdasd --- docs/ANLEITUNG.md | 2 + docs/CONTENT.md | 6 +- docs/WEITERENTWICKLUNG.md | 1 + partials/desktop/shell.php | 150 ++++++++++++++------------ public/assets/desktop/desktop.css | 46 ++++++++ public/assets/desktop/desktop.js | 17 ++- public/index.php | 11 -- src/App/AdminAppsService.php | 5 +- src/App/App.php | 92 ++++++++++------ src/App/AppAccessConfig.php | 8 +- src/Desktop/AppRegistry.php | 3 + src/Desktop/AppVisibility.php | 11 ++ system/apps/admin-apps/assets/app.css | 75 +++++++++++++ system/apps/admin-apps/page.php | 124 +++++++++++---------- 14 files changed, 367 insertions(+), 184 deletions(-) diff --git a/docs/ANLEITUNG.md b/docs/ANLEITUNG.md index 1fbd79be..1cf8887c 100644 --- a/docs/ANLEITUNG.md +++ b/docs/ANLEITUNG.md @@ -65,6 +65,8 @@ Dort koennen derzeit insbesondere verwaltet werden: Administratoren nutzen zusaetzlich `Admin Apps` fuer den globalen App-Bestand, Installationswege, LDAP-Gruppenberechtigungen und erste Integrations-Einstellungen wie den Gitea-Deploy-Status. +Vor dem Login erscheint nun zusaetzlich ein offener `Logoff-Desktop`. Dort gibt es unten nur die Login-Lasche. Sichtbar sind dort ausschliesslich Desktop-Apps, die ein Admin explizit fuer die Nutzung ohne Login freigegeben hat. + ## Module Installierbare Fach-Apps liegen unter `custom/apps//` und koennen als normale `App` im Desktop erscheinen. diff --git a/docs/CONTENT.md b/docs/CONTENT.md index 63091d30..a0057ea7 100644 --- a/docs/CONTENT.md +++ b/docs/CONTENT.md @@ -42,6 +42,9 @@ Diese Benennungen gelten projektweit und sollen in UI, Doku und Weiterentwicklun - `Setup-Bereich` Der zentrale Einstellungsbereich fuer Benutzer, Desktop-Typ, Apps und Bereichsauswahl. Aktuell umgesetzt ueber `User Self Management`. +- `Logoff-Desktop` + Die offene Desktop-Oberflaeche vor dem Login. Dort erscheinen nur die Desktop-Apps, die ein Admin explizit fuer die Nutzung ohne Login freigibt. + ### Menue-Bereiche - `User Setting Bereich` @@ -56,7 +59,7 @@ Diese Benennungen gelten projektweit und sollen in UI, Doku und Weiterentwicklun ### Systemobjekte - `App` - Eine allgemeine Anwendung. Eine App erscheint standardmaessig als Menue-Eintrag, kann zusaetzlich ein Desktop-Icon bekommen und weitere Darstellungen wie Tray-App oder Widget bereitstellen. Admins koennen die LDAP-Gruppenberechtigung pro App verwalten. + Eine allgemeine Anwendung. Eine App erscheint standardmaessig als Menue-Eintrag, kann zusaetzlich ein Desktop-Icon bekommen und weitere Darstellungen wie Tray-App oder Widget bereitstellen. Admins koennen die LDAP-Gruppenberechtigung pro App verwalten und festlegen, ob sie bereits ohne Login auf dem Logoff-Desktop verfuegbar ist. - `Tray-App` Eine App oder Teilfunktion im Bereich neben der Uhr. Tray-Apps sind fuer Schnellaktionen oder Visualisierungen gedacht und koennen eigenstaendig oder zusammen mit der Haupt-App genutzt werden. @@ -78,6 +81,7 @@ Diese Benennungen gelten projektweit und sollen in UI, Doku und Weiterentwicklun Stand dieser Datei: - gemeinsame Desktop-Shell mit den Skins `Apple`, `Windows` und `Linux` +- offene Desktop-Oberflaeche vor dem Login mit eigener Login-Lasche - frei verschiebbare Desktop-Icons - Icon-Positionen lokal gespeichert, pro Benutzer und pro Skin - automatische Schriftfarbanpassung fuer Desktop-Icons anhand des Hintergrunds diff --git a/docs/WEITERENTWICKLUNG.md b/docs/WEITERENTWICKLUNG.md index fb08a2a9..bad10051 100644 --- a/docs/WEITERENTWICKLUNG.md +++ b/docs/WEITERENTWICKLUNG.md @@ -39,6 +39,7 @@ Verbindlich ist: - importierte Module mit eigener Fensterseite ueber konsistente `public/apps//index.php`-Shims anbinden - Widget-Logik einer App muss dieselben fachlichen Regeln wie die App-API verwenden, nicht eigene Sonderwege - App-Berechtigungen fuer LDAP-Gruppen muessen zentral und pro App nachvollziehbar pflegbar bleiben +- die Freigabe fuer den offenen Logoff-Desktop muss pro App zentral pflegbar bleiben - Systemtools duerfen nicht als installierbare Module modelliert werden - neue Modul-Widgets und Modul-Cronjobs sollen ueber Manifest-Metadaten registriert werden statt ueber versteckte Sonderlisten diff --git a/partials/desktop/shell.php b/partials/desktop/shell.php index 9308c914..c4e4b970 100644 --- a/partials/desktop/shell.php +++ b/partials/desktop/shell.php @@ -10,6 +10,9 @@ $wallpaper = $desktopPayload['desktop']['wallpaper']; $debugShellApp = is_array($desktopPayload['shell']['debug_app'] ?? null) ? $desktopPayload['shell']['debug_app'] : null; $debugShellLabel = trim((string) ($debugShellApp['label'] ?? 'Debug')) ?: 'Debug'; $sessionDisplayName = (string) ($desktopPayload['session']['display_name'] ?? 'Gast'); +$publicDesktopMode = (string) ($desktopPayload['desktop']['login']['mode'] ?? '') === 'public-desktop'; +$loginUrl = (string) ($desktopPayload['desktop']['login']['login_url'] ?? ''); +$loginAvailable = !empty($desktopPayload['desktop']['login']['login_available']) && $loginUrl !== ''; $assetVersion = static function (string $publicPath): string { $filesystemPath = dirname(__DIR__, 2) . '/public' . $publicPath; @@ -153,76 +156,91 @@ $renderTrayVisual = static function (array $trayItem, string $displayName = '')
- +
+
+
+
+ + -