From 915b71e43dbba16df2ddf9d0d997ddebbd8ec79e Mon Sep 17 00:00:00 2001 From: qcigano Date: Tue, 4 Aug 2026 10:27:14 +0200 Subject: [PATCH] Teddy-Praemien: zeigt jetzt WELCHE Teddys schon erhalten wurden, nicht nur wie viele MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Statt "Bereits erhalten: 1x kleiner Teddy, 1x grosser Teddy" steht im Abo-Bereich jetzt eine Liste mit dem tatsaechlichen Teddy-Namen, dem Einloesedatum und einem Link zum Produkt — damit Kundinnen sehen, welchen Teddy sie schon besitzen, und keinen doppelt waehlen. Dafuer haelt das Konto beim Einloesen fest, WELCHER Teddy vergeben wurde (neues Feld abo.erhalteneTeddys mit Slug, Name und Datum). Bewusst als Verlauf gespeichert statt aus der aktuellen Abo-Einstellung abgeleitet: VanVan kann die hinterlegten Teddy-Produkte jederzeit im Adminbereich austauschen — eine nachtraeglich berechnete Liste wuerde dann einen Teddy anzeigen, den die Kundin nie bekommen hat. Die Anzeige nimmt den aktuellen, uebersetzten Produktnamen und faellt auf den gespeicherten Namen zurueck, falls das Produkt spaeter umbenannt oder entfernt wird. Nebenbei behoben: Beim Einloesen wanderte der Teddy in den Warenkorb, BEVOR geprueft wurde, ob ueberhaupt eine Praemie offen ist. Bei einem zweiten Klick landete er dadurch erneut gratis im Warenkorb, ohne im Konto gezaehlt zu werden. Jetzt wird zuerst geprueft. Ausserdem sichert getAccount() nun auch die Listenfelder gegen kaputte Speicherwerte ab. Getestet (Browser): Leerzustand, Einloesen beider Arten, Speicherung im Konto, zweiter Klick ohne offene Praemie, Altkonto ohne Namensliste (ehrlicher Ersatztext) und entferntes Produkt (gespeicherter Name greift). Beschriftungen in allen 4 Sprachen geprueft. Co-Authored-By: Claude Opus 5 --- src/i18n/ui.ts | 32 +++++++++++-- src/pages/ch/konto/angemeldet.astro | 74 +++++++++++++++++++++++++---- src/pages/en/konto/angemeldet.astro | 74 +++++++++++++++++++++++++---- src/pages/fr/konto/angemeldet.astro | 74 +++++++++++++++++++++++++---- src/pages/konto/angemeldet.astro | 74 +++++++++++++++++++++++++---- src/scripts/account.ts | 44 +++++++++++++++-- src/scripts/cart.ts | 7 ++- src/styles/global.css | 35 ++++++++++---- 8 files changed, 359 insertions(+), 55 deletions(-) diff --git a/src/i18n/ui.ts b/src/i18n/ui.ts index aed6bbf..a9ed26c 100644 --- a/src/i18n/ui.ts +++ b/src/i18n/ui.ts @@ -269,7 +269,13 @@ export const ui = { aboMonateSuffix: "Monate", aboFortschrittKleinTemplate: "🧸 Noch {n} Monat(e) bis zum nächsten kleinen Teddy", aboFortschrittGrossTemplate: "🧸 Noch {n} Monat(e) bis zum nächsten großen Teddy", - aboPraemienErhaltenTemplate: "Bereits erhalten: {klein}× kleiner Teddy, {gross}× großer Teddy", + aboPraemienErhaltenTitel: "Diese Teddys hast du schon bekommen:", + aboPraemienKeine: "Du hast noch keinen Teddy eingelöst.", + aboPraemienAmTemplate: "erhalten am {datum}", + aboPraemienAnsehen: "ansehen", + aboPraemienUnbekannt: "Teddy aus einer früheren Einlösung", + aboTeddyArtKlein: "Kleiner Teddy", + aboTeddyArtGross: "Großer Teddy", aboPraemienVerfuegbarTitle: "🎉 Verfügbare Prämien", aboKeinePraemienVerfuegbar: "Aktuell keine Prämie zum Einlösen verfügbar.", aboEinloesenBtn: "Jetzt einlösen", @@ -580,7 +586,13 @@ export const ui = { aboMonateSuffix: "months", aboFortschrittKleinTemplate: "🧸 {n} more month(s) until your next small teddy", aboFortschrittGrossTemplate: "🧸 {n} more month(s) until your next large teddy", - aboPraemienErhaltenTemplate: "Already received: {klein}× small teddy, {gross}× large teddy", + aboPraemienErhaltenTitel: "Teddies you've already received:", + aboPraemienKeine: "You haven't redeemed a teddy yet.", + aboPraemienAmTemplate: "received on {datum}", + aboPraemienAnsehen: "view", + aboPraemienUnbekannt: "Teddy from an earlier redemption", + aboTeddyArtKlein: "Small teddy", + aboTeddyArtGross: "Large teddy", aboPraemienVerfuegbarTitle: "🎉 Available rewards", aboKeinePraemienVerfuegbar: "No reward available to redeem right now.", aboEinloesenBtn: "Redeem now", @@ -891,7 +903,13 @@ export const ui = { aboMonateSuffix: "Monet", aboFortschrittKleinTemplate: "🧸 No {n} Monet bis zum nächschte chliine Teddy", aboFortschrittGrossTemplate: "🧸 No {n} Monet bis zum nächschte grosse Teddy", - aboPraemienErhaltenTemplate: "Scho erhalte: {klein}× chliine Teddy, {gross}× grosse Teddy", + aboPraemienErhaltenTitel: "Die Teddys hesch scho ueberchoo:", + aboPraemienKeine: "Du hesch no kein Teddy iiglöst.", + aboPraemienAmTemplate: "erhalte am {datum}", + aboPraemienAnsehen: "aaluege", + aboPraemienUnbekannt: "Teddy us ere frueehere Iiloesig", + aboTeddyArtKlein: "Chliine Teddy", + aboTeddyArtGross: "Grosse Teddy", aboPraemienVerfuegbarTitle: "🎉 Verfüegbari Prämie", aboKeinePraemienVerfuegbar: "Momentan kei Prämie zum Ilöse verfüegbar.", aboEinloesenBtn: "Jetzt ilöse", @@ -1202,7 +1220,13 @@ export const ui = { aboMonateSuffix: "mois", aboFortschrittKleinTemplate: "🧸 Encore {n} mois avant votre prochain petit ours", aboFortschrittGrossTemplate: "🧸 Encore {n} mois avant votre prochain grand ours", - aboPraemienErhaltenTemplate: "Déjà reçus : {klein}× petit ours, {gross}× grand ours", + aboPraemienErhaltenTitel: "Les ours que vous avez déjà reçus :", + aboPraemienKeine: "Vous n'avez pas encore utilisé de récompense ours.", + aboPraemienAmTemplate: "reçu le {datum}", + aboPraemienAnsehen: "voir", + aboPraemienUnbekannt: "Ours d'une récompense antérieure", + aboTeddyArtKlein: "Petit ours", + aboTeddyArtGross: "Grand ours", aboPraemienVerfuegbarTitle: "🎉 Récompenses disponibles", aboKeinePraemienVerfuegbar: "Aucune récompense à échanger pour le moment.", aboEinloesenBtn: "Échanger maintenant", diff --git a/src/pages/ch/konto/angemeldet.astro b/src/pages/ch/konto/angemeldet.astro index 3b4b3ed..bed4a56 100644 --- a/src/pages/ch/konto/angemeldet.astro +++ b/src/pages/ch/konto/angemeldet.astro @@ -560,9 +560,12 @@ const angekommeneBestellungen = beispielBestellungen.filter((b) => b.status === -
- - + {/* Zeigt nicht nur WIE VIELE Teddys schon eingeloest wurden, sondern WELCHE genau — + mit Name und Datum. So sieht die Kundin auf einen Blick, welchen Teddy sie schon + besitzt, und waehlt keinen doppelt. Wird per JS aus abo.erhalteneTeddys befuellt. */} +
+

+
    @@ -607,7 +610,7 @@ const angekommeneBestellungen = beispielBestellungen.filter((b) => b.status === -