From 46c7c31e036ae0750637d97e787e806b5ca55949 Mon Sep 17 00:00:00 2001 From: TekH Date: Sun, 6 Sep 2026 10:50:05 +0200 Subject: [PATCH] Add customer logo area to action bar Introduced a customer logo section in `EnvelopeSenderPage.razor` that dynamically displays a customer logo or a placeholder when no logo is configured. The logo is fetched from the `CustomImagesService` and styled using new CSS classes in `sender-page.css`. - Added `_companyLogo` property to store customer logo configuration. - Updated `CustomImagesService` to fetch both app and customer logos. - Modified `appsettings.json` to include logo paths and styles. - Enhanced CSS for a three-section action bar layout. - Added placeholder styling for missing customer logos. - Updated initialization logic to load logos dynamically. - Documented implementation details in `SF-74-PLAN.md`. The implementation is modular and deployment-specific, allowing logo paths and styles to be updated via configuration without code changes. --- .../Pages/EnvelopeSenderPage.razor | 20 +- .../wwwroot/css/sender-page.css | 28 ++ EnvelopeGenerator.Server/SF-74-PLAN.md | 415 ++++++++++++++++++ 3 files changed, 462 insertions(+), 1 deletion(-) create mode 100644 EnvelopeGenerator.Server/SF-74-PLAN.md diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/EnvelopeSenderPage.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/EnvelopeSenderPage.razor index 89dd8d71..706705cb 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/EnvelopeSenderPage.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/EnvelopeSenderPage.razor @@ -41,6 +41,22 @@
Umschlag-Übersicht
+ @* ── Kunden-Logo (Mitte) ───────────────────────────────────────── *@ +
+ @if (_companyLogo is not null && !string.IsNullOrEmpty(_companyLogo.Src)) + { + Kunden-Logo + } + else + { +
Kunden-Logo
+ } +
+ + @* ── Toolbar (rechts) ─────────────────────────────────────────── *@
+``` + +--- + +## 🔲 Phase 6f — Action Bar Redesign + +### Ziel-Layout (aus Screenshot) + +``` +┌──────────────────────────────────────────────────────────────────────────────┐ +│ [Logo] Umschlag-Übersicht │ [Kunden-Logo] │ [+Neu] [Bearb.] [Lösch.] │ +│ signFLOW Portal-Übers│ │ [↺] [→|] │ +│ │ │ [Zurückrufen?] [Dok.] [XLS] │ +└──────────────────────────────────────────────────────────────────────────────┘ +``` + +### Neue CSS-Klassen in `sender-page.css` + +```css +.sender-toolbar-right { display: flex; flex-direction: column; gap: .35rem; align-items: flex-end; } +.sender-toolbar-row { display: flex; align-items: center; gap: .5rem; } +.sender-toolbar-row--primary { /* Hauptbuttons */ } +.sender-toolbar-row--secondary { /* Dokument anzeigen, Export */ } +``` + +### `Zurückrufen/löschen` — Offene Frage ❓ + +> **Ticket-Kommentar-Entwurf (Deutsch, für Marlon Schreiber):** +> +> Hallo @Marlon Schreiber, +> +> im Screenshot sehe ich einen Button „Zurückrufen/löschen". Könntest du den +> Unterschied zum bereits vorhandenen „Löschen"-Button erläutern? +> +> Meine Vermutung: „Zurückrufen" bedeutet das Widerrufen eines **bereits gesendeten** +> Umschlags (Status → `EnvelopeWithdrawn`), während „Löschen" einen noch nicht +> gesendeten Umschlag entfernt. Ist das korrekt? Und falls ja: +> - Sollen Empfänger bei einem Widerruf automatisch benachrichtigt werden? +> - Soll der Status auf `Zurückgerufen` gesetzt werden und der Umschlag +> weiterhin in der Liste erscheinen (aber inaktiv)? +> +> Bitte kurz antworten, damit ich dies korrekt implementieren kann. + +--- + +## Implementierungsreihenfolge Phase 6 + +``` +6a (Logo) → 6b (Kunden-Logo) → 6c (Grid-Spalten) → 6d (PDF Preview) → 6e (Excel) → 6f (Action Bar) +``` + +Jede Teilphase ist unabhängig deploybar. `6f` fasst alle Layout-Änderungen zusammen +und sollte zuletzt implementiert werden, wenn alle Komponenten fertig sind. + +--- + +## Bekannte Einschränkungen & Offene Punkte + +| # | Thema | Status | +|---|-------|--------| +| 1 | `DxPdfViewer` → InteractiveServer zwingend | Architektonisch gelöst (6d) | +| 2 | Excel-Export: Template-Spalten leer im Export | Akzeptiert, Future Task (CustomizeCell) | +| 3 | `Zurückrufen/löschen` — Bedeutung unklar | Kommentar-Frage vorbereitet (6f) | +| 4 | `EnvelopeTypeTitle` Mapping prüfen | Vor 6c verifizieren | +| 5 | Logo-Pfade produktionsspezifisch | Via `appsettings.json` konfigurierbar | +| 6 | Server-seitige Pages — inline Farben bleiben | Out-of-scope | + +--- + +## Nicht in diesem Ticket + +- `Einstellungen`-Seite (separates Ticket) +- Mobile Responsive (separates Ticket) +- Excel CustomizeCell vollständige Implementierung (Future Task) +- Widerruf-Backend (wartet auf Klärung) + +--- + +*Erstellt: 2026-09-01 | Aktualisiert: 2026-09-03 | Ticket: SF-74 | Projekt: signFLOW*