Unifi-Voucher-Tool/assets/vendor/README.md
Friederich Loheide 6da46f040a Alle Frontend-Assets lokal ausliefern statt über CDNs
Inter, Font Awesome, Chart.js, qrcodejs und TinyMCE liegen jetzt unter
assets/vendor/ und werden vom eigenen Server ausgeliefert.

Warum:
- Datenschutz: bisher ging bei jedem Seitenaufruf die IP der Nutzer an
  Google Fonts, cdnjs, jsDelivr und Tiny Cloud
- Funktion: UniFi-Installationen stehen oft in abgeschotteten Netzen –
  dort fehlten bisher Schrift, Icons, Diagramme und Editor

Neu: includes/Ui.php
- Ui::head()/Ui::script() binden die Assets ein und hängen einen
  Versionsstempel an (?v=filemtime), damit Browser nach einem Update
  nicht das alte CSS aus dem Cache nehmen
- Ui::themeScript() setzt das Theme aus der gespeicherten Auswahl oder
  – wenn keine vorliegt – aus prefers-color-scheme; global.js folgt
  Systemwechseln live, solange nichts manuell gewählt wurde
- <meta name="color-scheme"> ergänzt, damit Formularelemente passen

Der TinyMCE-API-Key entfällt: der Editor läuft immer lokal (GPL-Variante),
inklusive deutscher Oberfläche, wenn die App auf Deutsch steht.

Neu: tools/demo/build.py – baut aus dem Projekt eine Demo-Instanz ohne
Datenbank (Stubs für Database/Auth, feste Beispieldaten). Damit lassen
sich Screenshots reproduzierbar erzeugen und alle Seiten einmal rendern
(Smoke-Test), ohne eine MySQL-Instanz aufzusetzen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 06:23:44 +00:00

1.4 KiB
Raw Permalink Blame History

Lokale Drittanbieter-Assets

Alle Frontend-Bibliotheken werden aus diesem Ordner ausgeliefert. Damit gibt es im Betrieb keine Verbindungen zu externen CDNs wichtig für den Datenschutz (keine IP-Übertragung an Dritte) und für abgeschottete Netze ohne Internetzugang.

Ordner Inhalt Version Lizenz
inter/ Schriftschnitte 400/500/600/700 als woff2 Inter 4.0 SIL OFL 1.1
fontawesome/ Solid- und Brands-Icons, gekürzte CSS (nur woff2) Font Awesome Free 6.4.0 Icons CC BY 4.0, Fonts SIL OFL 1.1, Code MIT
chartjs/ Diagramme für Dashboard und Reporting Chart.js 4.4.0 MIT
qrcodejs/ QR-Code-Erzeugung im Browser qrcodejs 1.0.0 MIT
tinymce/ WYSIWYG-Editor (GPL-Variante), auf die genutzten Plugins gekürzt TinyMCE 6.8.3 GPL-2.0-or-later

Eingebunden werden sie über Ui::head() bzw. Ui::script() aus includes/Ui.php inklusive Versionsstempel (?v=<filemtime>), damit Browser nach einem Update nicht die alten Dateien aus dem Cache verwenden.

Aktualisieren

# Beispiel Chart.js
curl -L -o assets/vendor/chartjs/chart.umd.min.js \
  https://cdn.jsdelivr.net/npm/chart.js@<version>/dist/chart.umd.min.js

Bei TinyMCE werden nur tinymce.min.js, themes/silver, models/dom, icons/default, die Skins oxide/oxide-dark, die deutsche Sprachdatei und die tatsächlich genutzten Plugins übernommen (siehe initTinyMCE() in admin/settings.php).