Klickbare Profilseiten fuer jedes Team-Mitglied

Wunsch: Klick auf eine Person (z.B. Bananenstift) oeffnet eine eigene
Seite mit grossem Foto und Vorstellungstext daneben - fuer jeden.

- Neue Seite profil.html: generische Profilseite, liest Person per
  ?p=<slug> aus MODIS/SCOUTS/CREATORS, zeigt grosses Foto (4:5, farbiger
  Rahmen passend zur Person), Name, Rolle, Vorstellungstext, optional
  Zitat und Social-Links. Welt/Theme (blau=Team Dogi, rot=Agentur) und
  Hintergrundmotiv passen sich automatisch an, ob die Person Modi,
  Scout oder Creator ist. Unbekannter Slug zeigt eine freundliche
  Fehlermeldung statt kaputter Seite.
- data-modis.js, data-scouts.js, data-creator.js: neues Feld "slug"
  (eindeutige ID fuer die URL) und "bio" (Vorstellungstext) fuer jede
  Person ergaenzt. VanVan behaelt ihre eigene, ausfuehrlichere Seite
  (vanvan.html) und wird nicht auf profil.html umgeleitet.
- team-modis.html, team-scouts.html, creator.html, index.html
  (Team-Vorschau): Karten sind jetzt komplett anklickbar (ganze Karte
  ist ein Link), nicht mehr nur ein kleiner Knopf.
- Bugfix: gerade curly quotes ("„...\"") mitten in einem doppelt
  angefuehrten JS-String schlossen den String vorzeitig ab und haetten
  main.js kaputt gemacht (per node --check gefunden, bevor es live ging).

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-07-31 20:21:16 +02:00
co-authored by Claude Opus 5
parent b728d3f89d
commit 87c95dd0f8
8 changed files with 220 additions and 13 deletions
+3 -2
View File
@@ -53,12 +53,13 @@ document.addEventListener("DOMContentLoaded", () => {
const grid = document.getElementById("scouts-grid");
if (!grid || !window.SCOUTS) return;
grid.innerHTML = window.SCOUTS.map((s) => `
<div class="profile-card">
<a class="profile-card" href="profil.html?p=${s.slug}">
<div class="avatar">${(s.avatar || s.photo) ? `<img src="${s.avatar || s.photo}" alt="${s.name}" loading="lazy">` : `<span class="avatar-initial">${s.name.charAt(0).toUpperCase()}</span>`}</div>
<h3>${s.name}</h3>
<div class="role">${s.role}</div>
${s.quote ? `<p class="quote">„${s.quote}"</p>` : `<p class="small muted">Zitat folgt</p>`}
</div>`).join("");
<span class="btn btn-outline" style="margin-top:.7rem;pointer-events:none;">Profil ansehen</span>
</a>`).join("");
});
</script>
</body>