Files
dogfather-universe/medien-casper.html
T
DogFatherGitandClaude Opus 5 399260b805 "Stimmen" verwandelt: Fans reichen selbst Testimonials ein
Nutzer-Wunsch 20.08.2026: "eine richtig geile kachel ... wo die leute mit
namen und tiktok namen mir eine nachricht schreiben können die ich in die
verwaltung kriege, und dann kann ich die ausgewählten über die
verwaltungsseite auf die website hinzufügen ... das wird mega persoenlich
zu den fans, bitte wirklich krass geil speziell."

- Neue, augenschonend gestaltete Einreich-Kachel auf stimmen.html: Name,
  TikTok-Name (optional), Nachricht -- landet NIE automatisch oeffentlich,
  sondern immer erst als Entwurf in der Verwaltung.
  Warmer Babyblau/Rosé-Farbverlauf, wandernder Lichtschein, pulsierendes
  Herz -- ersetzt die 3 ewigen "Hier steht bald..."-Platzhalterkarten.
- Neue Verwaltungs-Sektion "💬 Stimmen verwalten": Warteschlange (offene
  zuerst), Freigeben/Ablehnen/Löschen pro Eintrag.
- Freigegebene Stimmen erscheinen automatisch in einer neuen, spezielleren
  Zitat-Kartenoptik (großes Anführungszeichen, Name + TikTok-Chip) --
  Abschnitt bleibt komplett unsichtbar, solange keine einzige freigegeben
  wurde.
- Backend: neue Tabelle `testimonials` (Migration 0006), routes/
  testimonials.js (oeffentliches Einreichen + Lesen freigegebener,
  admin-Warteschlange + Status/Loeschen mit neuer TESTIMONIALS_MANAGE-
  Berechtigung). 18 automatisierte Tests gegen eine Fake-DB bestanden.
- Alles per Playwright visuell durchgespielt: leerer Zustand, Einreichen
  -> Erfolgsmeldung, freigegebene Stimmen-Anzeige, Verwaltungs-Warteschlange
  mit allen Aktionen.

Backend-Teil (server-internal/, cloudflare-worker/migrations/) noch ohne
Deploy-Zugriff -- Dogi muss ihn manuell auf dogiintern ausrollen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 23:37:31 +02:00

69 lines
3.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de" data-theme="hasidog">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Medien — Casper — DOGFATHER UNIVERSE</title>
<meta name="description" content="Fotos und Videos rund um Husky Casper an einem Ort." />
<link rel="icon" type="image/png" href="assets/img/favicon.png" />
<link rel="manifest" href="/manifest.json" />
<meta name="theme-color" content="#0b0d10" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="DOGFATHER UNIVERSE" />
<meta property="og:title" content="Medien — Casper — DOGFATHER UNIVERSE" />
<meta property="og:description" content="Fotos und Videos rund um Husky Casper an einem Ort." />
<meta property="og:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
<meta property="og:url" content="https://dogfather-universe.com/medien-casper.html" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Medien — Casper — DOGFATHER UNIVERSE" />
<meta name="twitter:description" content="Fotos und Videos rund um Husky Casper an einem Ort." />
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
<link rel="stylesheet" href="assets/css/main.css?v=20260820k" />
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260820k" />
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260820k" />
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260820k" />
</head>
<body class="mit-hintergrund" data-welt="casper" style="--page-bg:url('/assets/img/bg-casper.jpg');--page-bg-mobile:url('/assets/img/bg-casper-mobile.jpg');">
<div id="site-header"></div>
<main>
<section class="hero page-bg">
<div class="hero-banner"><img src="/assets/img/bg-casper.jpg" alt="" loading="eager" /></div>
<div class="container">
<span class="eyebrow" data-i18n="mc_eyebrow">Welt 2 — HasiDog</span>
<h1 data-i18n="mc_h1">Medien — Casper</h1>
<p class="lead worlds" data-i18n="mc_lead">Fotos und Videos rund um Husky Casper — alles an einem Ort.</p>
</div>
</section>
<section class="section-tight" id="fotos">
<div class="container">
<h2 class="text-center" data-i18n="mc_fotos_h2">📸 Fotos</h2>
<div id="foto-grid" class="grid grid-4"></div>
</div>
</section>
<section class="section-tight" id="videos">
<div class="container">
<h2 class="text-center" data-i18n="mc_videos_h2">🎥 Videos</h2>
<div id="video-grid" class="grid grid-3"></div>
</div>
</section>
</main>
<div id="lightbox" class="lightbox">
<button class="lightbox-close" aria-label="Schließen">×</button>
<div id="lightbox-content"></div>
</div>
<div id="site-footer"></div>
<script src="assets/js/data-media.js?v=20260820k"></script>
<script src="assets/js/data-videos.js?v=20260820k"></script>
<script src="assets/js/medien-welt.js?v=20260820k"></script>
<script src="assets/js/i18n-medien-casper.js?v=20260820k"></script>
<script src="assets/js/main.js?v=20260820k"></script>
</body>
</html>