Öffentliche Avatar-Uploads vor dem Absenden verkleinern (1,1 MB -> ~40 KB)
Der Performance-Check (pruef-tempo.mjs, neu) fand als größte Einzel- ressource ein 1,1-MB-Profilbild, ausgeliefert an jeden Besucher der Startseite und von stimmen.html -- angezeigt wird es handgroß. Ursache: Das öffentliche Stimmen-Formular (stimmen.js) lud Profilbilder ROH hoch. Die Bildaufbereitung vom 27.08. bekam nur die Verwaltung, nicht das öffentliche Formular. So landete das Kamera-Foto in voller Auflösung auf dem Server. - bild-vorbereiten.js (neu): die Verkleinerungs-Funktion, jetzt einmal und parametrisierbar (maxBreite). Verwaltung nutzt weiter 1600px, Avatare 512px. Test pruef-bild-vorbereiten.mjs: 8/8, u.a. 512er-Avatar ~40 KB statt >1 MB. - stimmen.js: verkleinert vor dem Upload (window.bildVorbereiten mit maxBreite 512); fällt die Funktion aus, wird das Original genommen -- kein Upload darf daran scheitern. - stimmen.html: lädt bild-vorbereiten.js; veralteten Kommentar richtiggestellt (behauptete "kein Upload", obwohl es seit 21.08. einen gibt -- mit Bremse, Typ-/Größenlimit, Freigabe-Pflicht). Zwei neue Checks als bleibende Absicherung mit committet: pruef-links.mjs (41 interne Ziele, 0 kaputt) und pruef-assets.mjs (67 Ressourcen, 0 fehlen). NOCH OFFEN: verwaltung.html hat noch eine eigene, identische Inline-Kopie der Funktion -- die Zusammenführung ist ein eigener, testbarer Schritt (das Inline-Skript dort ist groß und die Verwaltung hinter dem Gate schwer live zu testen). Das bestehende 1,1-MB-Bild auf dem Server bleibt, bis es neu hochgeladen/ersetzt wird. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
+20
-15
@@ -19,10 +19,10 @@
|
||||
<meta name="twitter:description" content="Was die Community und das Team über DogFather sagen." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
</head>
|
||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-stimmen.jpg');--page-bg-mobile:url('/assets/img/bg-stimmen-mobile.jpg');">
|
||||
<div id="site-header"></div>
|
||||
@@ -70,13 +70,17 @@
|
||||
<!-- Profilbild-Auswahl (21.08.2026, Nutzer-Wunsch: "ich soll auch
|
||||
paar geile bilder zum aussuchen haben als profilbild falls die
|
||||
leute kein bild mit schicken, das soll denen auch als
|
||||
möglichkeit gegeben sein"). Bewusst OHNE Datei-Upload: das
|
||||
Formular ist öffentlich und ohne Anmeldung erreichbar, ein
|
||||
offener Upload wäre eine Einladung für beliebiges Material.
|
||||
Wer ein eigenes Foto möchte, schickt es Dogi direkt — er kann
|
||||
es in der Verwaltung hinterlegen. Die Kacheln werden aus
|
||||
data-stimmen-avatare.js aufgebaut, damit Seite und Verwaltung
|
||||
garantiert dieselbe Auswahl zeigen. -->
|
||||
möglichkeit gegeben sein"). Die festen Kacheln kommen aus
|
||||
data-stimmen-avatare.js, damit Seite und Verwaltung dieselbe
|
||||
Auswahl zeigen.
|
||||
Dazu eine "eigenes Bild"-Kachel mit echtem Datei-Upload (auch
|
||||
21.08.2026 ergänzt; ein früherer Kommentar hier behauptete noch
|
||||
"kein Upload" -- das stimmte nicht mehr und ist am 28.08.2026
|
||||
richtiggestellt). Der Upload ist mehrfach abgesichert: nur
|
||||
Bildtypen, max. 5 MB, Bremse pro IP gegen Massen-Uploads, vor
|
||||
dem Absenden im Browser auf 512px verkleinert (bild-vorbereiten.js),
|
||||
und NICHTS wird veröffentlicht, bevor Dogi die Stimme freigibt --
|
||||
jede Einreichung landet zuerst in der Warteschlange. -->
|
||||
<div class="field">
|
||||
<span class="stimmen-avatar-titel" data-i18n="st_form_avatar_label">Dein Profilbild (optional)</span>
|
||||
<p class="small muted stimmen-avatar-hinweis" data-i18n="st_form_avatar_hinweis">Ohne Auswahl erscheint einfach der erste Buchstabe deines Namens.</p>
|
||||
@@ -102,9 +106,10 @@
|
||||
</main>
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/data-stimmen-avatare.js?v=20260828b"></script>
|
||||
<script src="assets/js/i18n-stimmen.js?v=20260828b"></script>
|
||||
<script src="assets/js/main.js?v=20260828b"></script>
|
||||
<script src="assets/js/stimmen.js?v=20260828b"></script>
|
||||
<script src="assets/js/data-stimmen-avatare.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-stimmen.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/bild-vorbereiten.js?v=20260828c"></script>
|
||||
<script src="assets/js/stimmen.js?v=20260828c"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user