diff --git a/aktion-detail.html b/aktion-detail.html
index 60e3c24..b3fc08a 100644
--- a/aktion-detail.html
+++ b/aktion-detail.html
@@ -43,7 +43,7 @@
@@ -61,14 +61,20 @@ document.addEventListener("DOMContentLoaded", () => {
const summaryEl = document.getElementById("aktion-summary");
const bodyEl = document.getElementById("aktion-body");
const photoEl = document.getElementById("aktion-photo");
+ const backEl = document.getElementById("aktion-back");
if (!aktion) {
titleEl.textContent = "Aktion nicht gefunden";
summaryEl.textContent = "Diese Aktion existiert nicht (mehr) oder wurde noch nicht angelegt.";
- bodyEl.innerHTML = `
Bitte über alle Aktionen zurückgehen.
`;
+ bodyEl.innerHTML = `Bitte über alle Events zurückgehen.
`;
return;
}
+ // Zurück-Button zeigt auf die Events-Sektion der passenden Welt
+ // (jede Aktion gehört zu Dogfather/HasiDog/Casper, siehe data-aktionen.js).
+ const welt = ["dogfather", "hasidog", "casper"].includes(aktion.welt) ? aktion.welt : "dogfather";
+ if (backEl) backEl.href = `medien-${welt}.html#events`;
+
titleEl.textContent = aktion.title;
summaryEl.textContent = aktion.summary;
bodyEl.innerHTML = `
diff --git a/aktionen.html b/aktionen.html
deleted file mode 100644
index 18164cf..0000000
--- a/aktionen.html
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
-
-Aktionen & Projekte — DOGFATHER UNIVERSE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Aktionen & Projekte
-
Was Team Dogi gerade bewegt
-
Von Tierwohl-Aktionen bis Merchandise-Kooperationen.
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/js/data-aktionen.js b/assets/js/data-aktionen.js
index 3d16061..49ea27f 100644
--- a/assets/js/data-aktionen.js
+++ b/assets/js/data-aktionen.js
@@ -1,15 +1,18 @@
/* =====================================================================
data-aktionen.js — Aktionen & Projekte-Datenobjekt
- aktionen.html rendert daraus die Übersichtskarten, aktion-detail.html
- liest per URL-Parameter (?id=slug) den passenden Eintrag aus und
- zeigt die Detailansicht — so gibt es EIN Template für alle Aktionen,
- ohne für jede neue Aktion eine neue HTML-Datei zu brauchen.
+ Die 3 Welten-Medienseiten (medien-dogfather.html / medien-hasidog.html
+ / medien-casper.html) rendern daraus je Welt die passenden Events,
+ aktion-detail.html liest per URL-Parameter (?id=slug) den passenden
+ Eintrag aus und zeigt die Detailansicht — so gibt es EIN Template für
+ alle Aktionen, ohne für jede neue Aktion eine neue HTML-Datei zu
+ brauchen.
Felder:
id – eindeutiger Slug (für aktion-detail.html?id=...)
title, summary, description (Array von Absätzen)
status – "geplant" | "läuft" | "abgeschlossen"
+ welt – "dogfather" | "hasidog" | "casper"
tag – kurzer Kategorie-Text fürs Badge
photo – Pfad zu assets/img/... oder "" für Platzhalter
===================================================================== */
@@ -20,6 +23,7 @@ const AKTIONEN = [
title: "Weihnachtsaktion & Portugal-Trip",
tag: "Tierwohl",
status: "geplant",
+ welt: "dogfather",
summary: "Weihnachtsaktion für Tierheime in Portugal — Team Dogi hilft Tieren in Not.",
description: [
"Jedes Jahr organisiert Team Dogi eine Weihnachtsaktion zugunsten von Tierheimen in Portugal.",
@@ -32,6 +36,7 @@ const AKTIONEN = [
title: "Community-Treffen (Geburtstag)",
tag: "Community",
status: "geplant",
+ welt: "dogfather",
summary: "Ein persönliches Treffen mit der Community rund um Dogfathers Geburtstag.",
description: [
"Team Dogi ist Familie — deshalb gibt es ein reales Treffen mit der Community.",
@@ -44,6 +49,7 @@ const AKTIONEN = [
title: "Kooperation: VanVan Teddys",
tag: "Merchandise",
status: "läuft",
+ welt: "dogfather",
summary: "Merchandise-Kooperation rund um VanVan — Teddys für die Community.",
description: [
"Gemeinsam mit VanVan entstehen limitierte Teddys als Teil des Merchandise-Angebots.",
@@ -56,6 +62,7 @@ const AKTIONEN = [
title: "Online-Shop (in Planung)",
tag: "Merchandise",
status: "geplant",
+ welt: "dogfather",
summary: "Der eigene Online-Shop für Tassen, Decken, Popsockets, Schlüsselanhänger, Sticker & mehr.",
description: [
"Aktuell läuft der Merchandise-Vertrieb nur über private Einzelbestellungen.",
diff --git a/assets/js/data-media.js b/assets/js/data-media.js
new file mode 100644
index 0000000..470c0d6
--- /dev/null
+++ b/assets/js/data-media.js
@@ -0,0 +1,38 @@
+/* =====================================================================
+ data-media.js — Foto-Datenobjekt für die 3 Welten-Medienseiten
+ (medien-dogfather.html / medien-hasidog.html / medien-casper.html)
+
+ Ersetzt das frühere gallery.js (eine gemeinsame Galerie mit
+ "dogfather/team/hasidog/manager"-Filter) — auf Wunsch von Dogi gibt es
+ jetzt genau 3 Welten: dogfather, hasidog, casper. Team-Mitglieder-Fotos
+ und das Logo passen in keine der 3 Welten und wurden bewusst entfernt
+ (bleiben aber weiterhin auf ihren eigenen Profilseiten sichtbar).
+
+ Felder pro Foto: { id, welt: "dogfather"|"hasidog"|"casper", alt, src }
+ ===================================================================== */
+
+const MEDIA = [
+ // ---- Dogfather ----
+ { id: 1, welt: "dogfather", alt: "Dogfather Profilbild", src: "assets/img/dogfather-portrait.jpg" },
+ { id: 2, welt: "dogfather", alt: "Dogfather — Team Dogi Karte", src: "assets/img/card-dogfather.jpg" },
+ { id: 3, welt: "dogfather", alt: "Dogfather Hauptfoto", src: "assets/img/dogfather-main.jpg" },
+ { id: 4, welt: "dogfather", alt: "Dogfather Charakter-Artwork", src: "assets/img/char-dogfather.jpg" },
+ { id: 5, welt: "dogfather", alt: "Dogfather als Manager", src: "assets/img/manager-dogfather-portrait.jpg" },
+
+ // ---- HasiDog ----
+ { id: 6, welt: "hasidog", alt: "HasiDog — das Maskottchen", src: "assets/img/char-hasidog.jpg" },
+ { id: 7, welt: "hasidog", alt: "HasiDog & Casper Sticker", src: "assets/img/sticker-hasidog-casper.png" },
+ { id: 8, welt: "hasidog", alt: "Schlaft schön — Buch-Illustration", src: "assets/img/hasidog-casper-book.jpg" },
+
+ // ---- Casper ----
+ { id: 9, welt: "casper", alt: "Casper Hauptfoto", src: "assets/img/casper-main.jpg" },
+ { id: 10, welt: "casper", alt: "Husky Casper", src: "assets/img/casper-1.jpg" },
+ { id: 11, welt: "casper", alt: "Casper unterwegs", src: "assets/img/casper-2.jpg" },
+ { id: 12, welt: "casper", alt: "Casper", src: "assets/img/casper-3.jpg" },
+ { id: 13, welt: "casper", alt: "Casper", src: "assets/img/casper-4.jpg" },
+ { id: 14, welt: "casper", alt: "Casper & Dogfather", src: "assets/img/dogfather-casper-1.jpg" },
+ { id: 15, welt: "casper", alt: "Dogfather & Casper Nase an Nase", src: "assets/img/dogfather-casper-2.jpg" },
+ // TODO: Aktionen-Fotos (Weihnachtsaktion, VanVan-Teddys) ergänzen, sobald vorhanden.
+];
+
+if (typeof window !== "undefined") window.MEDIA = MEDIA;
diff --git a/assets/js/data-videos.js b/assets/js/data-videos.js
new file mode 100644
index 0000000..debab0d
--- /dev/null
+++ b/assets/js/data-videos.js
@@ -0,0 +1,21 @@
+/* =====================================================================
+ data-videos.js — Video-Datenobjekt für die 3 Welten-Medienseiten
+
+ Bisher gibt es noch keine echten TikTok-Video-Links/Embeds — die
+ Struktur steht aber pro Welt bereit, damit nur noch echte Videos
+ eingetragen werden müssen (src leer = Platzhalter "folgt in Kürze").
+
+ Felder pro Video: { id, welt: "dogfather"|"hasidog"|"casper", title, src }
+ ===================================================================== */
+
+const VIDEOS = [
+ { id: 1, welt: "dogfather", title: "Streamer-Highlight", src: "" },
+ { id: 2, welt: "dogfather", title: "Halligalli-Moment", src: "" },
+ { id: 3, welt: "hasidog", title: "HasiDog-Chaos", src: "" },
+ { id: 4, welt: "hasidog", title: "Musik-Clip", src: "" },
+ { id: 5, welt: "casper", title: "Casper-Moment", src: "" },
+ { id: 6, welt: "casper", title: "Husky-Chaos", src: "" },
+ // TODO: Echte TikTok-Video-Links/Embeds ergänzen, sobald verfügbar.
+];
+
+if (typeof window !== "undefined") window.VIDEOS = VIDEOS;
diff --git a/assets/js/gallery.js b/assets/js/gallery.js
deleted file mode 100644
index bed1a38..0000000
--- a/assets/js/gallery.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/* =====================================================================
- gallery.js — filterbare Mediengalerie + Lightbox (für medien.html)
-
- MEDIA-Array unten mit echten Bildern befüllen sobald verfügbar
- (assets/img/...). Bis dahin rendert jeder Eintrag ohne "src" einen
- Platzhalter-Block mit passendem Alt-Text, damit die Struktur schon
- steht und nur noch Bilder eingehängt werden müssen.
- ===================================================================== */
-
-const MEDIA = [
- { id: 1, category: "dogfather", alt: "Dogfather Profilbild", src: "assets/img/dogfather-portrait.jpg" },
- { id: 2, category: "dogfather", alt: "Dogfather — Team Dogi Karte", src: "assets/img/card-dogfather.jpg" },
- { id: 3, category: "team", alt: "VanVan — Team Dogi Karte", src: "assets/img/card-vanvan.jpg" },
- { id: 4, category: "team", alt: "Diene — Team Dogi Karte", src: "assets/img/card-diene.jpg" },
- { id: 5, category: "team", alt: "Miss — Team Dogi Karte", src: "assets/img/card-miss.jpg" },
- { id: 6, category: "team", alt: "Marina alias FlauschiRex — Team Dogi Karte", src: "assets/img/card-marina.jpg" },
- { id: 7, category: "hasidog", alt: "HasiDog & Casper Sticker", src: "assets/img/sticker-hasidog-casper.png" },
- { id: 8, category: "hasidog", alt: "Husky Casper", src: "assets/img/casper-1.jpg" },
- { id: 9, category: "hasidog", alt: "Casper & Dogfather", src: "assets/img/dogfather-casper-1.jpg" },
- { id: 10, category: "hasidog", alt: "Casper", src: "assets/img/casper-3.jpg" },
- { id: 11, category: "hasidog", alt: "Casper", src: "assets/img/casper-4.jpg" },
- { id: 12, category: "hasidog", alt: "Dogfather & Casper Nase an Nase", src: "assets/img/dogfather-casper-2.jpg" },
- { id: 13, category: "hasidog", alt: "Schlaft schön — Buch-Illustration", src: "assets/img/hasidog-casper-book.jpg" },
- { id: 14, category: "hasidog", alt: "Casper unterwegs", src: "assets/img/casper-2.jpg" },
- { id: 15, category: "manager", alt: "Dogfather Logo", src: "assets/img/logo-dogfather.png" },
- // TODO: Aktionen-Fotos (Weihnachtsaktion, VanVan-Teddys) ergänzen, sobald vorhanden.
-];
-
-function renderGalleryItem(item) {
- const media = item.src
- ? `
`
- : `${item.alt}
Foto folgt
`;
- return `
-
- ${media}
- ${item.alt}
- `;
-}
-
-function initGallery() {
- const grid = document.getElementById("gallery-grid");
- const filterBar = document.getElementById("gallery-filters");
- if (!grid || !filterBar) return;
-
- const categories = ["alle", ...new Set(MEDIA.map((m) => m.category))];
- filterBar.innerHTML = categories
- .map(
- (c, i) =>
- ``
- )
- .join("");
-
- function draw(filter) {
- const items = filter === "alle" ? MEDIA : MEDIA.filter((m) => m.category === filter);
- grid.innerHTML = items.map(renderGalleryItem).join("") || `Keine Bilder in dieser Kategorie.
`;
- bindLightbox();
- }
-
- filterBar.addEventListener("click", (e) => {
- const btn = e.target.closest(".filter-btn");
- if (!btn) return;
- filterBar.querySelectorAll(".filter-btn").forEach((b) => b.classList.remove("active"));
- btn.classList.add("active");
- draw(btn.dataset.filter);
- });
-
- function bindLightbox() {
- const lb = document.getElementById("lightbox");
- const lbContent = document.getElementById("lightbox-content");
- if (!lb || !lbContent) return;
- grid.querySelectorAll(".gallery-item").forEach((el) => {
- el.addEventListener("click", () => {
- lbContent.innerHTML = el.innerHTML;
- lb.classList.add("open");
- });
- });
- }
-
- draw("alle");
-
- const lb = document.getElementById("lightbox");
- if (lb) {
- lb.addEventListener("click", (e) => {
- if (e.target === lb || e.target.closest(".lightbox-close")) {
- lb.classList.remove("open");
- }
- });
- document.addEventListener("keydown", (e) => {
- if (e.key === "Escape") lb.classList.remove("open");
- });
- }
-}
-
-document.addEventListener("DOMContentLoaded", initGallery);
diff --git a/assets/js/main.js b/assets/js/main.js
index 7605ee5..1cb05c8 100644
--- a/assets/js/main.js
+++ b/assets/js/main.js
@@ -43,11 +43,15 @@
],
},
{
+ // Medien ist bewusst nach den 3 Welten aufgeteilt statt nach
+ // Foto/Video/Aktionen getrennt zu sein — Wunsch von Dogi: pro Welt
+ // (Dogfather/HasiDog/Casper) gibt es EINE Seite mit allem
+ // kategorisiert (Fotos, Videos, Events), siehe medien-*.html.
label: "Medien",
children: [
- { label: "Galerie", href: "medien.html" },
- { label: "Videos", href: "videos.html" },
- { label: "Aktionen", href: "aktionen.html" },
+ { label: "Dogfather", href: "medien-dogfather.html" },
+ { label: "HasiDog", href: "medien-hasidog.html" },
+ { label: "Casper", href: "medien-casper.html" },
],
},
{ label: "Links", href: "links.html" },
diff --git a/assets/js/medien-welt.js b/assets/js/medien-welt.js
new file mode 100644
index 0000000..d83bc9a
--- /dev/null
+++ b/assets/js/medien-welt.js
@@ -0,0 +1,78 @@
+/* =====================================================================
+ medien-welt.js — gemeinsame Render-Logik für die 3 Welten-Medienseiten
+ (medien-dogfather.html / medien-hasidog.html / medien-casper.html)
+
+ Jede der 3 Seiten setzt und
+ lädt data-media.js, data-videos.js, data-aktionen.js VOR dieser Datei —
+ so gibt es EIN Template/Skript für alle 3 Welten, ohne Code-Verdopplung.
+ ===================================================================== */
+
+function renderFotoItem(item) {
+ const media = item.src
+ ? `
`
+ : `${item.alt}
Foto folgt
`;
+ return `${media}${item.alt}`;
+}
+
+function renderVideoItem(item) {
+ const media = item.src
+ ? ``
+ : `${item.title}
Video folgt
`;
+ return `${media}${item.title}`;
+}
+
+function renderAktionItem(a) {
+ return `
+
+ ${a.tag} · ${a.status}
+ ${a.title}
+ ${a.summary}
+ Details ansehen →
+ `;
+}
+
+function bindLightbox() {
+ const lb = document.getElementById("lightbox");
+ const lbContent = document.getElementById("lightbox-content");
+ if (!lb || !lbContent) return;
+ document.querySelectorAll("#foto-grid .gallery-item").forEach((el) => {
+ el.addEventListener("click", () => {
+ lbContent.innerHTML = el.innerHTML;
+ lb.classList.add("open");
+ });
+ });
+}
+
+document.addEventListener("DOMContentLoaded", () => {
+ const welt = document.body.dataset.welt;
+ if (!welt) return;
+
+ const fotoGrid = document.getElementById("foto-grid");
+ if (fotoGrid) {
+ const fotos = (window.MEDIA || []).filter((m) => m.welt === welt);
+ fotoGrid.innerHTML = fotos.map(renderFotoItem).join("") || `Noch keine Fotos in dieser Welt.
`;
+ bindLightbox();
+ }
+
+ const videoGrid = document.getElementById("video-grid");
+ if (videoGrid) {
+ const videos = (window.VIDEOS || []).filter((v) => v.welt === welt);
+ videoGrid.innerHTML = videos.map(renderVideoItem).join("") || `Noch keine Videos in dieser Welt.
`;
+ }
+
+ const aktionenGrid = document.getElementById("aktionen-grid");
+ if (aktionenGrid) {
+ const aktionen = (window.AKTIONEN || []).filter((a) => a.welt === welt);
+ aktionenGrid.innerHTML = aktionen.map(renderAktionItem).join("") || `Aktuell keine Events in dieser Welt.
`;
+ }
+
+ const lb = document.getElementById("lightbox");
+ if (lb) {
+ lb.addEventListener("click", (e) => {
+ if (e.target === lb || e.target.closest(".lightbox-close")) lb.classList.remove("open");
+ });
+ document.addEventListener("keydown", (e) => {
+ if (e.key === "Escape") lb.classList.remove("open");
+ });
+ }
+});
diff --git a/casper.html b/casper.html
index e2ce0dd..36af08e 100644
--- a/casper.html
+++ b/casper.html
@@ -76,7 +76,7 @@
diff --git a/community.html b/community.html
index ed3f76a..04bd5d5 100644
--- a/community.html
+++ b/community.html
@@ -74,7 +74,7 @@
💬 Offenes Ohr
Immer erreichbar, immer präsent.
diff --git a/hasidog.html b/hasidog.html
index 2fdc692..b95e8c9 100644
--- a/hasidog.html
+++ b/hasidog.html
@@ -175,8 +175,8 @@
diff --git a/index.html b/index.html
index 0bf586e..f0d718d 100644
--- a/index.html
+++ b/index.html
@@ -166,9 +166,9 @@
🩵 Community
Team Dogi ist Familie.
🐾 Casper
Der Husky an Dogfathers Seite.
🧑🤝🧑 Modi-Team
VanVan, Diene & Co.
- 🎁 Aktionen
Projekte, Kooperationen, Tierwohl.
- 🖼️ Galerie
Fotos aus allen drei Welten.
- ▶️ Videos
Die besten Highlights.
+ 🖼️ Medien: Dogfather
Fotos, Videos & Events.
+ 🐰 Medien: HasiDog
Fotos, Videos & Events.
+ 🐺 Medien: Casper
Fotos, Videos & Events.
@@ -192,7 +192,7 @@
Was gerade läuft
@@ -208,7 +208,7 @@
diff --git a/medien-casper.html b/medien-casper.html
new file mode 100644
index 0000000..caefb29
--- /dev/null
+++ b/medien-casper.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+Medien — Casper — DOGFATHER UNIVERSE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Welt 2 — HasiDog
+
Medien — Casper
+
Fotos, Videos und Events rund um Husky Casper — alles an einem Ort.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/medien-dogfather.html b/medien-dogfather.html
new file mode 100644
index 0000000..a0e2872
--- /dev/null
+++ b/medien-dogfather.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+Medien — Dogfather — DOGFATHER UNIVERSE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Welt 1 — Dogfather
+
Medien — Dogfather
+
Fotos, Videos und Events aus Dogfathers Welt — alles an einem Ort.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/medien-hasidog.html b/medien-hasidog.html
new file mode 100644
index 0000000..93efc7b
--- /dev/null
+++ b/medien-hasidog.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+Medien — HasiDog — DOGFATHER UNIVERSE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Welt 2 — HasiDog
+
Medien — HasiDog
+
Fotos, Videos und Events aus der HasiDog-Welt — alles an einem Ort.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/medien.html b/medien.html
deleted file mode 100644
index de30809..0000000
--- a/medien.html
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
-Medien-Galerie — DOGFATHER UNIVERSE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Medien
-
Galerie
-
Bilder aus allen drei Welten — filterbar nach Kategorie.
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/sitemap.xml b/sitemap.xml
index 9aecc5b..426ff4e 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -8,10 +8,10 @@
https://REPLACE-WITH-YOUR-DOMAIN.tld/community.html2026-07-30
https://REPLACE-WITH-YOUR-DOMAIN.tld/hasidog.html2026-07-30
https://REPLACE-WITH-YOUR-DOMAIN.tld/casper.html2026-07-30
- https://REPLACE-WITH-YOUR-DOMAIN.tld/aktionen.html2026-07-30
https://REPLACE-WITH-YOUR-DOMAIN.tld/zeitreise.html2026-07-30
- https://REPLACE-WITH-YOUR-DOMAIN.tld/medien.html2026-07-30
- https://REPLACE-WITH-YOUR-DOMAIN.tld/videos.html2026-07-30
+ https://REPLACE-WITH-YOUR-DOMAIN.tld/medien-dogfather.html2026-08-01
+ https://REPLACE-WITH-YOUR-DOMAIN.tld/medien-hasidog.html2026-08-01
+ https://REPLACE-WITH-YOUR-DOMAIN.tld/medien-casper.html2026-08-01
https://REPLACE-WITH-YOUR-DOMAIN.tld/links.html2026-07-30
https://REPLACE-WITH-YOUR-DOMAIN.tld/manager.html2026-07-30
https://REPLACE-WITH-YOUR-DOMAIN.tld/werte.html2026-07-30
diff --git a/streamer.html b/streamer.html
index 00a959c..8d2beb6 100644
--- a/streamer.html
+++ b/streamer.html
@@ -151,8 +151,8 @@
– DogFather 🩵