Arbeit der parallelen Session gesichert (Profilbilder für Stimmen, Diene-Zugang)
Wie beim vorherigen Mal lag das nur als Arbeitskopie auf dem Server, nicht in git. Unverändert übernommen, bevor darauf aufgebaut wird: - Profilbild-Auswahl für die Stimmen (data-stimmen-avatare.js neu, stimmen.js, i18n-stimmen.js, stimmen.html, verwaltung.html, main.css) - Dritte Zugangs-Kachel für Diene (gate.html, server/gate.js) Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
/* =====================================================================
|
||||
data-stimmen-avatare.js — Auswahlbilder für die "Stimmen" (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").
|
||||
|
||||
EINE gemeinsame Liste für beide Seiten: stimmen.html (dort wählt die
|
||||
einreichende Person selbst) und verwaltung.html (dort kann Dogi/VanVan
|
||||
das Bild nachträglich ändern). Getrennte Listen wären auseinander-
|
||||
gelaufen, sobald irgendwann ein Bild dazukommt oder wegfällt.
|
||||
|
||||
Bewusst nur Figuren, Maskottchen und das Logo — KEINE echten Personen
|
||||
aus dem Team. Sonst könnte sich eine fremde Person mit dem Gesicht von
|
||||
Dogi, VanVan oder einem Modi als Absender darstellen.
|
||||
|
||||
WICHTIG: Die "id"-Werte müssen mit der Liste
|
||||
ERLAUBTE_AVATARE in server-internal/routes/testimonials.js
|
||||
übereinstimmen — der Server nimmt nur bekannte Ids an, damit über das
|
||||
öffentliche Formular kein beliebiger Pfad eingeschleust werden kann.
|
||||
===================================================================== */
|
||||
window.STIMMEN_AVATARE = [
|
||||
{ id: "husky-hoodie", name: "DogFather-Husky", datei: "/assets/img/stimmen-avatare/stimme-husky-hoodie.png" },
|
||||
{ id: "hase-hoodie", name: "HasiDog", datei: "/assets/img/stimmen-avatare/stimme-hase-hoodie.png" },
|
||||
{ id: "husky-kopf", name: "Husky-Kopf", datei: "/assets/img/stimmen-avatare/stimme-husky-kopf.png" },
|
||||
{ id: "husky-kosmos", name: "Kosmos-Husky", datei: "/assets/img/stimmen-avatare/stimme-husky-kosmos.png" },
|
||||
{ id: "hase-kosmos", name: "Kosmos-Hase", datei: "/assets/img/stimmen-avatare/stimme-hase-kosmos.png" },
|
||||
{ id: "casper", name: "Casper", datei: "/assets/img/stimmen-avatare/stimme-casper.png" },
|
||||
{ id: "casper-blick", name: "Casper (Blick)", datei: "/assets/img/stimmen-avatare/stimme-casper-blick.png" },
|
||||
{ id: "logo", name: "DogFather-Logo", datei: "/assets/img/stimmen-avatare/stimme-logo.png" },
|
||||
];
|
||||
|
||||
/* Liefert die Bilddatei zu einer gespeicherten Auswahl.
|
||||
- bekannte Id -> das zugehörige Auswahlbild
|
||||
- "/uploads/…" -> ein von der Verwaltung hochgeladenes eigenes Foto
|
||||
(kommt als vollständige Adresse vom Server, siehe testimonials.js)
|
||||
- sonst -> null, dann zeigt die Karte wie bisher den Anfangs-
|
||||
buchstaben des Namens. */
|
||||
window.stimmeAvatarBild = function (wert) {
|
||||
if (!wert) return null;
|
||||
if (/^https?:\/\//i.test(wert)) return wert;
|
||||
const treffer = (window.STIMMEN_AVATARE || []).find((a) => a.id === wert);
|
||||
return treffer ? treffer.datei : null;
|
||||
};
|
||||
Reference in New Issue
Block a user