From fc03a3c3a99aadf5a728476037c7504d3abf6396 Mon Sep 17 00:00:00 2001 From: Thomas Stallinger Date: Wed, 26 Aug 2026 09:45:27 +0200 Subject: [PATCH] Rename-Label 'Flotten-Management' + zweistufige Navigation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Siehe ADR-0020 (platform-docs) für die vollständige Begründung. - base.html: Nav-Marke 'Kundenplattform' -> 'Flotten-Management'. Navigation von flacher horizontaler Liste auf vertikale Primär-Spalte (Flotte/Organisation/Installationsmedium/Admin) + horizontale Sekundär-Nav umgestellt. Struktur und Gruppen sind jetzt Unterpunkte von Organisation. Aktive Kategorie wird aus dem URL-Pfad abgeleitet, keine Router-Änderungen nötig, URLs unverändert. - app.py: FastAPI-Titel ebenfalls angepasst (aktuell dormant, da /docs deaktiviert). Co-Authored-By: Claude Opus 5 --- app.py | 2 +- templates/base.html | 66 ++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 60 insertions(+), 8 deletions(-) diff --git a/app.py b/app.py index 6ebec97..c473ebd 100644 --- a/app.py +++ b/app.py @@ -20,7 +20,7 @@ from routers import ( # erreichbar und legten die komplette interne Routenstruktur (inkl. aller # /admin/*-Pfade) offen - fuer eine Plattform in aktiver Entwicklung # unnoetige Aufklaerungshilfe fuer Angreifer. -app = FastAPI(title="Tuxflotte Kundenplattform", docs_url=None, redoc_url=None, openapi_url=None) +app = FastAPI(title="Tuxflotte Flotten-Management", docs_url=None, redoc_url=None, openapi_url=None) app.mount("/static", StaticFiles(directory="static"), name="static") diff --git a/templates/base.html b/templates/base.html index cdb0ae2..378d7e1 100644 --- a/templates/base.html +++ b/templates/base.html @@ -11,28 +11,80 @@ .optionen label { font-weight: normal; } td form { margin-bottom: 0; } .brand-logo { height: 2.2rem; vertical-align: middle; margin-right: 0.5rem; } + + /* Nav-Umbau 26.08.2026 (siehe ADR "Produktname und Navigationsstruktur"): + vertikale Primär-Nav links, Hauptbereich rechts. Pico bringt kein + Sidebar-Pattern mit, daher dieses schlanke Flex-Layout - nutzt + weiterhin Picos CSS-Variablen, damit Dark/Light-Mode automatisch + erhalten bleibt (kein eigenes Farbschema hier definiert). */ + .app-layout { display: flex; align-items: flex-start; gap: 2rem; } + .primary-nav { flex: 0 0 12rem; } + .primary-nav ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.25rem; } + .primary-nav a { display: block; padding: 0.5rem 0.75rem; border-radius: var(--pico-border-radius); text-decoration: none; } + .primary-nav a.active { background: var(--pico-primary-background); color: var(--pico-primary-inverse); } + .app-main { flex: 1 1 auto; min-width: 0; } + .sekundaer-nav ul { display: flex; flex-wrap: wrap; gap: 1rem; list-style: none; padding: 0; margin: 0 0 1rem 0; } + .sekundaer-nav a.active { font-weight: 700; text-decoration: underline; } + @media (max-width: 768px) { + .app-layout { flex-direction: column; } + .primary-nav { flex: 1 1 auto; } + .primary-nav ul { flex-direction: row; flex-wrap: wrap; } + } + {% set pfad = request.url.path %} + {% set aktiver_bereich = + "flotte" if pfad.startswith("/geraete") + else "organisation" if (pfad.startswith("/organisation") or pfad.startswith("/struktur") or pfad.startswith("/gruppen")) + else "installationsmedium" if pfad.startswith("/installationsmedium") + else "admin" if pfad.startswith("/admin") + else "" %} + {% set aktive_unterseite = + "organisation" if pfad.startswith("/organisation") + else "struktur" if pfad.startswith("/struktur") + else "gruppen" if pfad.startswith("/gruppen") + else "" %}
+ {% if user %} +
+ +
+ {% if aktiver_bereich == "organisation" %} + + {% endif %} + {% else %}
+ {% endif %} {% block content %}{% endblock %} + {% if user %} +
+
+ {% else %} + {% endif %}