Arbeit der parallelen Session in git gesichert (war nur auf dem Server)

Diese Änderungen liefen bereits live auf dem Server, lagen dort aber
ausschließlich als nicht eingecheckte Arbeitskopie — bei jedem Deploy
(stash/pull/pop) und bei jedem Serverproblem wären sie verloren gewesen.
Deshalb hier unverändert in git übernommen, bevor darauf aufgebaut wird.

Enthalten (nicht von mir gebaut, nur gesichert):
- Supporter: eigener fester Zugangscode statt Einmalcode-Login
  (Migration 0009, lib/crypto.js scrypt-Hash, routes/supporter.js,
  abonnieren.html, supporter.html, i18n-abonnieren/-supporter)
- Stimmen: Profilbilder (Migration 0010, routes/testimonials.js)
- Event-Bild-Upload: voller Pfad statt relativem (routes/events.js)
- Neue/überarbeitete Hintergrundbilder für viele Seiten
- Teilen-Funktion (streamplan.js, i18n-index/-streamplan, main.css)

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-08-21 17:35:14 +02:00
co-authored by Claude Opus 5
parent 4b294f6c6b
commit 5d0ea11570
65 changed files with 992 additions and 139 deletions
+69 -2
View File
@@ -126,10 +126,62 @@ window.I18N_PAGE = {
de: "Registrieren", "de-CH": "Registriere",
en: "Register", fr: "S'inscrire", pt: "Registrar",
},
ab_tab_register: {
de: "Neu registrieren", "de-CH": "Nöi registriere",
en: "Sign up", fr: "S'inscrire", pt: "Registrar",
},
ab_tab_login: {
de: "Schon registriert? Einloggen", "de-CH": "Scho registriert? Yylogge",
en: "Already registered? Log in", fr: "Déjà inscrit ? Se connecter", pt: "Já registrado? Entrar",
},
ab_switch_login: {
de: "Schon Supporter? Hier einloggen", "de-CH": "Scho Supporter? Da yylogge",
en: "Already a supporter? Log in here", fr: "Déjà supporter ? Connecte-toi ici", pt: "Já é apoiador? Faça login aqui",
},
ab_feld_code_neu: {
de: "Denk dir jetzt deinen Zugangscode aus (mindestens 6 Zeichen)",
"de-CH": "Dänk der jetz din Zuegangscode us (mindeschtens 6 Zeiche)",
en: "Now choose your own access code (at least 6 characters)",
fr: "Choisis maintenant ton code d'accès (au moins 6 caractères)",
pt: "Agora escolha seu código de acesso (mínimo 6 caracteres)",
},
ab_feld_code_platzhalter: {
de: "Frei wählbar — z. B. DogiCrew2026",
"de-CH": "Frei wählbar — z. B. DogiCrew2026",
en: "Anything you like — e.g. DogiCrew2026",
fr: "Comme tu veux — p. ex. DogiCrew2026",
pt: "À sua escolha — ex. DogiCrew2026",
},
ab_code_hinweis_neu: {
de: "Mit diesem Code loggst du dich künftig ein — merk ihn dir gut.",
"de-CH": "Mit däm Code loggsch di künftig y — merk der en guet.",
en: "You'll use this code to log in from now on — keep it safe.",
fr: "Tu utiliseras ce code pour te connecter — garde-le en lieu sûr.",
pt: "Você usará este código para entrar a partir de agora — guarde-o bem.",
},
ab_feld_code_eigen: {
de: "Dein Zugangscode", "de-CH": "Din Zuegangscode",
en: "Your access code", fr: "Ton code d'accès", pt: "Seu código de acesso",
},
ab_btn_login: {
de: "Einloggen", "de-CH": "Yylogge",
en: "Log in", fr: "Se connecter", pt: "Entrar",
},
ab_code_vergessen: {
de: "Code vergessen?", "de-CH": "Code vergässe?",
en: "Forgot your code?", fr: "Code oublié ?", pt: "Esqueceu seu código?",
},
ab_neuer_code_hinweis: {
de: "Fast fertig — leg jetzt deinen neuen Zugangscode fest.",
"de-CH": "Fascht fertig — leg jetz din nöie Zuegangscode fescht.",
en: "Almost done — now set your new access code.",
fr: "Presque fini — définis maintenant ton nouveau code d'accès.",
pt: "Quase pronto — agora defina seu novo código de acesso.",
},
ab_btn_code_speichern: {
de: "Zugangscode speichern", "de-CH": "Zuegangscode spichere",
en: "Save access code", fr: "Enregistrer le code d'accès", pt: "Salvar código de acesso",
},
ab_btn_login_code: {
de: "Login-Code anfordern", "de-CH": "Login-Code aafordere",
en: "Request login code", fr: "Demander un code de connexion", pt: "Solicitar código de login",
@@ -151,8 +203,23 @@ window.I18N_PAGE = {
en: "Confirm", fr: "Confirmer", pt: "Confirmar",
},
ab_eingeloggt_als: {
de: "Eingeloggt. Noch ein letzter Schritt:", "de-CH": "Yyglogget. No en letschte Schritt:",
en: "Logged in. One last step:", fr: "Connecté. Une dernière étape :", pt: "Conectado. Um último passo:",
de: "Eingeloggt.", "de-CH": "Yyglogget.",
en: "Logged in.", fr: "Connecté.", pt: "Conectado.",
},
ab_subscribe_locked_hinweis: {
de: "Dein Konto ist bereit — die Bezahlung startet, sobald das Abo offiziell live geht. Schau einfach bald wieder vorbei.",
"de-CH": "Dis Konto isch parat — d Zahlig startet, sobald s Abo offiziell live gaht. Schau eifach bald wieder verbi.",
en: "Your account is ready — payment opens as soon as the subscription officially launches. Just check back soon.",
fr: "Ton compte est prêt — le paiement s'ouvrira dès le lancement officiel de l'abonnement. Repasse bientôt.",
pt: "Sua conta está pronta — o pagamento abre assim que a assinatura for lançada oficialmente. Volte em breve.",
},
ab_weiter_startseite: {
de: "Zur Startseite →", "de-CH": "Zur Startsiite →",
en: "To the homepage →", fr: "Vers l'accueil →", pt: "Para a página inicial →",
},
ab_weiter_streamplan: {
de: "Zum Streamplan →", "de-CH": "Zum Streamplan →",
en: "To the stream schedule →", fr: "Vers le programme des lives →", pt: "Para a programação de lives →",
},
ab_oder_email: {
de: "oder mit E-Mail", "de-CH": "oder mit E-Mail",