Self-Hosting, Branding, i18n, Barrierefreiheit und Werkzeuge #2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/self-hosted-assets-branding"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Umsetzung der Punkte aus der Nachbesprechung zum Redesign – in acht nachvollziehbaren Commits.
1. Keine externen CDNs mehr
Inter, Font Awesome, Chart.js, qrcodejs und TinyMCE liegen unter
assets/vendor/(2,6 MB) und kommen vom eigenen Server.includes/Ui.phpbindet alles ein und hängt einen Versionsstempel an (?v=filemtime) → kein altes CSS mehr aus dem Browser-Cache nach einem Update2. Branding über die Oberfläche
Neuer Tab Einstellungen → Design: Akzentfarbe hell/dunkel, Markenverlauf, Eckenradius mit Live-Vorschau. Abgeleitete Töne berechnet
color-mixaus der Grundfarbe – eine Farbe genügt. Gilt systemweit inklusive Login, Installer, Updater und E-Mails.3. Bild-Upload statt nur URLs
Logo, Favicon, Login-Logo und Login-Hintergrund lassen sich hochladen (
includes/Upload.php): Endungs-Whitelist, 3-MB-Grenze,getimagesize-Prüfung, SVG-Sanitizing (Skripte, Event-Handler,javascript:-Verweise), zufällige Dateinamen inuploads/mit.htaccess-Sperre für PHP.4. Englische Übersetzungen vervollständigt
API-Schlüssel, Integration & Wartung, Import, Backup, Reporting, 2FA und Audit-Log waren fest auf Deutsch verdrahtet – jetzt rund 200 neue Schlüssel, beide Sprachdateien deckungsgleich, inklusive der JavaScript-Dialoge.
5. Barrierefreiheit und Mobile
Kontrast von 3,1:1 auf 4,9:1 (hell) bzw. 6,4:1 (dunkel), Sprungmarke,
aria-labelfür Icon-Buttons,aria-current, 194 dekorative Icons mitaria-hidden,prefers-reduced-motion. Tabellen werden unter 720 px zu Karten statt horizontal zu scrollen.6. E-Mails und Druck im neuen Look
Marken-HTML-Rahmen für Mails (Tabellen + Inline-Styles), neuer Platzhalter
{VOUCHER_CARD}. Druckvorlage als Ticket mit{QR_CODE}– der QR-Code entsteht lokal im Browser, auch bei Bulk-Erstellung.7. Sicherheit
.htaccessmit CSP und Sicherheits-Headern;includes/,tools/,tests/,updater/storageunduploads/mit eigenen Regeln. Docker setztAllowOverride Allund legt ein Volume füruploads/an. Nginx-Entsprechung steht in der README.8. Werkzeuge und Tests
tools/demo/build.pybaut eine Demo-Instanz ohne Datenbank (Stubs mit festen Beispieldaten),tools/screenshots.pyerzeugt daraus alle Bilder indocs/screenshots. Neue Tests für Upload-Sanitizing und die Ui-Helfer (29 Tests, 55 Assertions), PHPStan deckt die neuen Dateien mit ab, CI prüft zusätzlich die Sprachdateien auf Deckungsgleichheit und unbekannte Schlüssel.Nebenbei behoben
global.jsüberschrieb die Theme-Entscheidung aus dem<head>(kurzes Umspringen, erzwungene Themes wirkungslos)prefers-color-scheme, solange nichts manuell gewählt wurde?tab=…direkt verlinkbar – auch ohne JavaScriptUploadrief__()direkt auf und wäre ohne geladene I18n mit einem Fatal Error abgebrochen (vom neuen Test gefunden)Geprüft
PHPUnit 29/29, PHPStan ohne Befund,
php -lüber alle Dateien, jede Seite einmal gerendert (Smoke-Test über die Demo-Instanz), Upload inklusive SVG-Sanitizing manuell durchgespielt. Alle 18 Screenshots neu erzeugt, README auf 2.6.0.🤖 Generated with Claude Code
E-Mail: - Nachrichten werden in ein markentreues HTML-Gerüst gelegt (Tabellen + Inline-Styles, damit Outlook & Co. es zuverlässig darstellen); die Kopfleiste nutzt den eingestellten Markenverlauf - neuer Platzhalter {VOUCHER_CARD} rendert den Code als hervorgehobene Karte; bestehende Vorlagen mit {VOUCHER_CODE} funktionieren unverändert weiter, sie werden lediglich eingerahmt - Zeilenumbrüche der Vorlage werden vor dem Einsetzen der Platzhalter umgewandelt, Markup aus dem WYSIWYG-Editor bleibt unangetastet Druck: - neue Standardvorlage als Ticket mit QR-Code, Code, Gültigkeit und Anleitung; zentral in Ui::defaultPrintTemplate() - neuer Platzhalter {QR_CODE}; der QR-Code wird lokal im Browser erzeugt (qrcodejs aus assets/vendor), auch bei Bulk-Erstellung für jede Karte - die Druckvorlage ist am Bildschirm ausgeblendet und erscheint nur im Ausdruck Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>