diff --git a/assets/js/forms.js b/assets/js/forms.js index 8eefbec..c87a087 100644 --- a/assets/js/forms.js +++ b/assets/js/forms.js @@ -22,6 +22,7 @@ const CONTACT_EMAIL = "kontakt@dogfather-universe.example"; // TODO: echte Konta const FORM_TYPES = { "form-creator": "creator", "form-scout": "scout", + "form-modi": "modi", "form-kooperation": "kooperation", }; @@ -108,21 +109,27 @@ function setupForm(formId, subjectLabel) { }); } -/* Der Kopfbereich wechselt sein Hintergrundbild mit dem gewählten Reiter: - Creator bekommt sein eigenes Motiv, Scout und Kooperation das - Spicy-Media-Motiv. So passt das Bild immer zur gewählten Bewerbung. */ +/* Der Kopfbereich wechselt Hintergrundbild, Welt-Farbe (Theme) und Eyebrow- + Text mit dem gewählten Reiter: Creator/Scout/Kooperation sind Spicy-Media- + Agentur (rot), Modi ist Dogfathers persönliches Team (babyblau) — genau + wie überall sonst auf der Seite (Rot = NUR Agentur). So passt Bild UND + Farbwelt immer zur gerade gewählten Bewerbung. */ const TAB_HINTERGRUENDE = { - "tab-creator": "bg-bewerben-creator", - "tab-scout": "bg-bewerben", - "tab-kooperation": "bg-bewerben", + "tab-creator": { bg: "bg-bewerben-creator", theme: "spicymedia", eyebrow: "Manager Dogfather" }, + "tab-scout": { bg: "bg-bewerben", theme: "spicymedia", eyebrow: "Manager Dogfather" }, + "tab-modi": { bg: "bg-dogfather", theme: "dogfather", eyebrow: "🩵 Team Dogi" }, + "tab-kooperation": { bg: "bg-bewerben", theme: "spicymedia", eyebrow: "Manager Dogfather" }, }; function setzeTabHintergrund(tabId) { - const basis = TAB_HINTERGRUENDE[tabId]; - if (!basis) return; + const einstellung = TAB_HINTERGRUENDE[tabId]; + if (!einstellung) return; // Die Bildvariablen hängen am — das Motiv trägt die ganze Seite. - document.body.style.setProperty("--page-bg", `url('/assets/img/${basis}.jpg')`); - document.body.style.setProperty("--page-bg-mobile", `url('/assets/img/${basis}-mobile.jpg')`); + document.body.style.setProperty("--page-bg", `url('/assets/img/${einstellung.bg}.jpg')`); + document.body.style.setProperty("--page-bg-mobile", `url('/assets/img/${einstellung.bg}-mobile.jpg')`); + document.documentElement.setAttribute("data-theme", einstellung.theme); + const eyebrow = document.getElementById("bewerben-eyebrow"); + if (eyebrow) eyebrow.textContent = einstellung.eyebrow; } function setupTabs() { @@ -138,7 +145,13 @@ function setupTabs() { }); }); - // Beim Laden passend zum bereits aktiven Reiter setzen + // Direkt-Link auf einen Reiter, z.B. bewerben.html#modi von der Modi- + // Team-Seite aus — öffnet die Bewerbung gleich auf dem richtigen Tab. + const gewuenscht = location.hash.replace("#", ""); + const linkBtn = gewuenscht && document.querySelector(`.tab-btn[data-tab="tab-${gewuenscht}"]`); + if (linkBtn) linkBtn.click(); + + // Beim Laden passend zum aktiven Reiter setzen (bereits aktiv ODER gerade per Hash geöffnet) const aktiv = document.querySelector(".tab-btn.active"); if (aktiv) setzeTabHintergrund(aktiv.dataset.tab); } @@ -147,5 +160,6 @@ document.addEventListener("DOMContentLoaded", () => { setupTabs(); setupForm("form-creator", "Creator"); setupForm("form-scout", "Scout"); + setupForm("form-modi", "Modi"); setupForm("form-kooperation", "Kooperation"); }); diff --git a/bewerben.html b/bewerben.html index 34ac391..666a157 100644 --- a/bewerben.html +++ b/bewerben.html @@ -4,17 +4,17 @@ Bewerben — DOGFATHER UNIVERSE - + - + - + @@ -28,9 +28,9 @@
- Manager Dogfather + Manager Dogfather

Werde Teil vom Team

-

Als Creator, Scout oder Kooperationspartner.

+

Als Creator, Scout, Modi oder Kooperationspartner.

@@ -39,6 +39,7 @@
+
@@ -91,6 +92,39 @@ +
+
+
+ + +
+
+ + + Bitte gültige E-Mail-Adresse eingeben. +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+

Modis sind Dogfathers persönliches Team — Chat, Community und Zusammenhalt im Alltag. 🩵

+ +
+
+
+
diff --git a/cloudflare-worker/src/routes/applications.js b/cloudflare-worker/src/routes/applications.js index 71e9349..d82614e 100644 --- a/cloudflare-worker/src/routes/applications.js +++ b/cloudflare-worker/src/routes/applications.js @@ -8,7 +8,7 @@ import { hasPermission } from "../lib/permissions.js"; import { logAction } from "../lib/audit.js"; import { json } from "../lib/http.js"; -const ALLOWED_TYPES = ["creator", "scout", "kooperation"]; +const ALLOWED_TYPES = ["creator", "scout", "kooperation", "modi"]; function can(session, key) { if (!session) return false; @@ -17,6 +17,10 @@ function can(session, key) { } function viewPermissionForType(type) { + // Der Rechte-Katalog kommt fest aus dem Anforderungsdokument und kennt nur + // zwei Bewerbungs-Sichtbereiche (Creator / "Rest"). Scout, Kooperation und + // Modi laufen deshalb alle über APPLICATIONS_VIEW_MANAGER_SCOUT — es wird + // bewusst KEIN neuer Permission-Key erfunden, der nicht im Dokument steht. return type === "creator" ? "APPLICATIONS_VIEW_CREATOR" : "APPLICATIONS_VIEW_MANAGER_SCOUT"; } diff --git a/team-modis.html b/team-modis.html index 2d0212b..c4c29dc 100644 --- a/team-modis.html +++ b/team-modis.html @@ -55,6 +55,9 @@
+