Files
DogFatherGitandClaude Opus 5 4b3ec450d5 Webdesign-Bereich: Fundament, oeffentliche Seiten, Zugangsschutz, PayPal
Umsetzung des "Website Masterplan" (16 Seiten) unter /webdesign.

Zugangsschutz mit EIGENER Schranke (server/webdesign-gate.js) statt gate.js:
gate.js laesst seit dem oeffentlichen Start am 21.08.2026 jeden durch, weil
die Pruefung auf SITE_PUBLIC_LAUNCH_AT als allererste Zeile steht. Haette man
/webdesign dahintergehaengt, waere der ausdruecklich nicht-oeffentliche Bereich
inklusive Preisen und spaeteren Kundendaten ab der ersten Sekunde fuer jeden
lesbar gewesen. Eigenes Sitzungs-Cookie, bereich="webdesign" im Token, damit
ein gueltiges Universe-Cookie hier NICHT gilt. 37/37 Tests.

Sieben oeffentliche Seiten in fuenf Sprachen (de, de-CH mit echtem Dialekt, en,
fr, pt). Preise, Zeitrahmen, Paketnamen und die 30-%-Regel stehen an genau
EINER Stelle in wd-core.js -- der Masterplan verlangt "ueberall
widerspruchsfrei", und vier Kopien laufen bei der ersten Preisaenderung
auseinander.

Als App installierbar auf Handy und PC. Der Service Worker speichert bewusst
KEINE HTML-Seite zwischen: nach dem Abmelden wuerden sonst geschuetzte Seiten
weiter ausgeliefert, ohne dass der Server je gefragt wird. 18/18 Tests.

Handy-Abnahme ueber alle Seiten in fuenf Breiten (320-1440) und fuenf Sprachen:
40/40. Der Test fand 35 echte Fehler (Touch-Ziele unter 44px), behoben im
Designsystem statt einzeln pro Seite.

PayPal (Wunsch 22.08.2026 "sofort auf meinem paypal"): Orders API mit
intent=CAPTURE, also sofortiger Einzug statt blosser Reservierung. Gebuehr und
Nettobetrag getrennt gespeichert. Betraege durchgehend als Ganzzahl in Cent.
Gefaelschte Webhooks werden abgewiesen. Fail closed solange Zugangsdaten
fehlen. 28/28 Tests gegen einen nachgebauten PayPal-Server.

Datenbank: 15 Tabellen mit Praefix wd_, fachlich vollstaendig vom Universe
getrennt.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-22 18:06:52 +02:00

109 lines
4.9 KiB
JavaScript

/* =====================================================================
i18n-wd-zugang.js — Texte der Zugangswand (/webdesign/zugang.html)
Fünf Sprachen wie im gesamten Dogfather Universe.
Schweizerdeutsch ist echter Dialekt, keine ß→ss-Umschrift.
===================================================================== */
window.I18N_WD = {
seiten_titel: {
de: "Zugang — Dogfather Webdesign",
"de-CH": "Zuegang — Dogfather Webdesign",
en: "Access — Dogfather Web Design",
fr: "Accès — Dogfather Web Design",
pt: "Acesso — Dogfather Web Design",
},
zg_eyebrow: {
de: "Nicht öffentlich bis zur Freigabe",
"de-CH": "Nöd öffentlich bis zur Freigab",
en: "Not public until release",
fr: "Non public jusqu'à la validation",
pt: "Não público até à aprovação",
},
zg_h1: {
de: "Willkommen zurück",
"de-CH": "Willkomme zrugg",
en: "Welcome back",
fr: "Bon retour",
pt: "Bem-vindo de volta",
},
zg_text: {
de: "Diese Vorabversion ist nur für Dogfather und VanVan gedacht. Wähle deine Karte und gib deinen persönlichen Zugangscode ein.",
"de-CH": "Die Vorabversion isch nur für dä Dogfather und d VanVan dänkt. Wähl dini Charte und tipp din persönlich Zuegangscode ii.",
en: "This preview is intended for Dogfather and VanVan only. Choose your card and enter your personal access code.",
fr: "Cette version préliminaire est réservée à Dogfather et VanVan. Choisis ta carte et saisis ton code d'accès personnel.",
pt: "Esta versão prévia destina-se apenas ao Dogfather e à VanVan. Escolhe o teu cartão e introduz o teu código de acesso pessoal.",
},
zg_dogfather: { de: "Dogfather", "de-CH": "Dogfather", en: "Dogfather", fr: "Dogfather", pt: "Dogfather" },
zg_vanvan: { de: "VanVan", "de-CH": "VanVan", en: "VanVan", fr: "VanVan", pt: "VanVan" },
/* Beide Karten tragen bewusst dieselbe Rollenbeschreibung — Masterplan
S.4: "Exakt dieselbe vollständige Ansicht", "Exakt dieselben
Verwaltungs-, Änderungs- und Freigaberechte". */
zg_rolle: {
de: "Volladministrator",
"de-CH": "Volladministrator",
en: "Full administrator",
fr: "Administrateur complet",
pt: "Administrador total",
},
zg_code_label: {
de: "Zugangscode",
"de-CH": "Zuegangscode",
en: "Access code",
fr: "Code d'accès",
pt: "Código de acesso",
},
zg_oeffnen: { de: "Öffnen", "de-CH": "Ufmache", en: "Open", fr: "Ouvrir", pt: "Abrir" },
zg_pruefe: {
de: "Wird geprüft…",
"de-CH": "Wird prüeft…",
en: "Checking…",
fr: "Vérification…",
pt: "A verificar…",
},
zg_willkommen: {
de: "Willkommen!",
"de-CH": "Willkomme!",
en: "Welcome!",
fr: "Bienvenue !",
pt: "Bem-vindo!",
},
zg_leer: {
de: "Bitte zuerst den Zugangscode eingeben.",
"de-CH": "Bitte zerscht dä Zuegangscode iigäh.",
en: "Please enter your access code first.",
fr: "Merci de saisir d'abord ton code d'accès.",
pt: "Introduz primeiro o teu código de acesso.",
},
zg_falsch: {
de: "Falscher Zugangscode.",
"de-CH": "Falsche Zuegangscode.",
en: "Wrong access code.",
fr: "Code d'accès incorrect.",
pt: "Código de acesso incorreto.",
},
zg_sicher_titel: {
de: "Warum ein Code?",
"de-CH": "Wieso en Code?",
en: "Why a code?",
fr: "Pourquoi un code ?",
pt: "Porquê um código?",
},
zg_sicher_text: {
de: "Solange die Seite nicht freigegeben ist, soll niemand Preise, Beispiele oder Kundendaten sehen können. Der Code wird ausschließlich auf dem Server geprüft und nie im Browser gespeichert. Nach fünf Fehlversuchen greift eine kurze Wartezeit.",
"de-CH": "So lang d Site nöd freigäh isch, söll niemert Priis, Bispiel oder Kundedate gseh chönne. Dä Code wird nur uf em Server prüeft und nie im Browser gspeicheret. Nach füf Fählversüech chunnt e churzi Wartziit.",
en: "Until the site is released, nobody should be able to see prices, examples or client data. The code is checked exclusively on the server and never stored in the browser. After five failed attempts a short waiting period applies.",
fr: "Tant que le site n'est pas validé, personne ne doit voir les tarifs, les exemples ou les données clients. Le code est vérifié uniquement sur le serveur et n'est jamais stocké dans le navigateur. Après cinq tentatives échouées, un court délai d'attente s'applique.",
pt: "Enquanto o site não for aprovado, ninguém deve conseguir ver preços, exemplos ou dados de clientes. O código é verificado exclusivamente no servidor e nunca é guardado no navegador. Após cinco tentativas falhadas aplica-se um curto período de espera.",
},
zg_zurueck: {
de: "Zum Dogfather Universe",
"de-CH": "Zum Dogfather Universe",
en: "To the Dogfather Universe",
fr: "Vers le Dogfather Universe",
pt: "Para o Dogfather Universe",
},
};