From 2649038d5ecc12725872b835f76a49ee61b86985 Mon Sep 17 00:00:00 2001 From: Frank Tovar Date: Fri, 6 Feb 2026 18:43:15 +0100 Subject: [PATCH] Revise FAQ for player edge cases --- wwwroot/app.js | 16 +++++------ wwwroot/js/i18n.js | 66 ++++++++++++++++++++++++++-------------------- 2 files changed, 45 insertions(+), 37 deletions(-) diff --git a/wwwroot/app.js b/wwwroot/app.js index 60491bd..3db724f 100644 --- a/wwwroot/app.js +++ b/wwwroot/app.js @@ -391,6 +391,7 @@ function faqTree() { items: [ { q: t("help.q.join"), a: t("help.a.join") }, { q: t("help.q.adminKey"), a: t("help.a.adminKey") }, + { q: t("help.q.displayName"), a: t("help.a.displayName") }, ], }, { @@ -399,6 +400,7 @@ function faqTree() { { q: t("help.q.limit"), a: t("help.a.limit") }, { q: t("help.q.editNames"), a: t("help.a.editNames") }, { q: t("help.q.mediaRules"), a: t("help.a.mediaRules") }, + { q: t("help.q.cantAdd"), a: t("help.a.cantAdd") }, ], }, { @@ -406,7 +408,11 @@ function faqTree() { items: [ { q: t("help.q.howVote"), a: t("help.a.howVote") }, { q: t("help.q.finalize"), a: t("help.a.finalize") }, + { q: t("help.q.voteBlocked"), a: t("help.a.voteBlocked") }, + { q: t("help.q.jokerAfterFreeze"), a: t("help.a.jokerAfterFreeze") }, { q: t("help.q.linkedVotes"), a: t("help.a.linkedVotes") }, + { q: t("help.q.newGameAfterFinal"), a: t("help.a.newGameAfterFinal") }, + { q: t("help.q.scoreRange"), a: t("help.a.scoreRange") }, ], }, { @@ -414,15 +420,7 @@ function faqTree() { items: [ { q: t("help.q.resultsLocked"), a: t("help.a.resultsLocked") }, { q: t("help.q.resultsContent"), a: t("help.a.resultsContent") }, - ], - }, - { - title: t("help.cat.admin"), - items: [ - { q: t("help.q.openResults"), a: t("help.a.openResults") }, - { q: t("help.q.linkDuplicates"), a: t("help.a.linkDuplicates") }, - { q: t("help.q.grantJoker"), a: t("help.a.grantJoker") }, - { q: t("help.q.reset"), a: t("help.a.reset") }, + { q: t("help.q.editInResults"), a: t("help.a.editInResults") }, ], }, ]; diff --git a/wwwroot/js/i18n.js b/wwwroot/js/i18n.js index 33a8d48..d5ad52f 100644 --- a/wwwroot/js/i18n.js +++ b/wwwroot/js/i18n.js @@ -160,40 +160,45 @@ const translations = { "lightbox.close": "Close", "help.label": "Help", "help.title": "FAQ & tips", - "help.intro": "Expand a section to see answers for players and admins.", + "help.intro": "Expand a section for common player questions and edge cases.", "help.cat.gettingStarted": "Getting started", "help.cat.suggest": "Suggest phase", "help.cat.vote": "Vote phase", "help.cat.results": "Results phase", - "help.cat.admin": "Admin tools", "help.q.join": "How do I join?", "help.a.join": "Register with a username, password, and display name. Then log in with the same credentials.", "help.q.adminKey": "What is the admin key?", "help.a.adminKey": "If your host shares the admin key, enter it during registration to unlock admin controls.", + "help.q.displayName": "Why do I need a display name?", + "help.a.displayName": "Suggestions and votes show who submitted them. You need a display name before you can add games or scores.", "help.q.limit": "How many games can I add?", - "help.a.limit": "Up to 5 suggestions per player. A joker lets you add one extra during the vote phase.", + "help.a.limit": "Up to 5 suggestions per player in Suggest. Each joker granted in Vote lets you add one more; every joker is consumed when you use it.", "help.q.editNames": "Can I edit or delete suggestions later?", "help.a.editNames": "Game names lock after leaving Suggest. Optional fields stay editable; admins can edit or delete any time.", "help.q.mediaRules": "Any rules for links and images?", "help.a.mediaRules": "Use http(s) links. Screenshots must end with an image file (png, jpg, gif, webp, avif). Invalid links are rejected.", + "help.q.cantAdd": "Why was my suggestion rejected?", + "help.a.cantAdd": "You can only add games in Suggest or with a joker in Vote. Provide a display name, stay within the 5 + joker limit, use http(s) links to reachable media, and keep player counts between 1 and 32 with min \u2264 max.", "help.q.howVote": "How do votes work?", - "help.a.howVote": "Move the 0–10 slider for each game. Your score and emoji update immediately.", + "help.a.howVote": "Move the 0–10 slider for each game. Scores save instantly; you can adjust until you finalize.", "help.q.finalize": "What does finalize do?", - "help.a.finalize": "Finalize locks your votes until you unfinalize. You must score every game first.", + "help.a.finalize": "Finalize locks your votes while you're in Vote. You must score every game first. Toggle it off in the same phase to make changes.", + "help.q.voteBlocked": "Why can't I vote?", + "help.a.voteBlocked": "Voting only works in the Vote phase when you're logged in and have a display name. If you skipped the display name, re-register; admins cannot add one for you.", + "help.q.jokerAfterFreeze": "I finalized but thought of a great game. Can I still add it?", + "help.a.jokerAfterFreeze": "Ask an admin for a joker during Vote. It gives you one extra slot, consumes the joker, and unfinalizes everyone so the new game can be scored.", "help.q.linkedVotes": "What are linked games?", - "help.a.linkedVotes": "Admins can link duplicates. Changing one linked slider updates all siblings; votes are shared.", + "help.a.linkedVotes": "Admins can link duplicates during Vote. Linked games share scores. Linking or unlinking clears votes for that group and reopens affected players to rescore.", + "help.q.newGameAfterFinal": "A new game appeared after I finalized. What now?", + "help.a.newGameAfterFinal": "New games (from jokers) or link changes remove finalization. Check your list and score every game again before finalizing.", + "help.q.scoreRange": "What scores are allowed?", + "help.a.scoreRange": "Scores must be whole numbers from 0 to 10. Anything outside that range is rejected.", "help.q.resultsLocked": "Why can't I see results?", "help.a.resultsLocked": "Results stay hidden until an admin opens them. You move to Results automatically when unlocked.", "help.q.resultsContent": "What do results show?", "help.a.resultsContent": "A leaderboard with averages, vote counts, your own score, and any links or media for each game.", - "help.q.openResults": "How do I open or close results?", - "help.a.openResults": "Admins toggle results on the Admin panel. Opening moves everyone to Results; closing sends players back to Vote and clears finalizations.", - "help.q.linkDuplicates": "How do I merge duplicates?", - "help.a.linkDuplicates": "In Vote, pick two games under Admin › Link games. Linking clears votes for that group and unfinalizes affected players.", - "help.q.grantJoker": "When should I grant a joker?", - "help.a.grantJoker": "Grant a joker during Vote to let a player add one extra suggestion; their finalized state resets.", - "help.q.reset": "Reset vs factory reset?", - "help.a.reset": "Reset clears suggestions/votes and phases but keeps players. Factory reset wipes everything, including players, and reseeds the app.", + "help.q.editInResults": "Can I edit games or votes in Results?", + "help.a.editInResults": "No. Suggestions and votes are locked in Results. Changes require moving back to Vote (for example if an admin closes results or resets).", }, de: { "lang.label": "Sprache", @@ -356,40 +361,45 @@ const translations = { "lightbox.close": "Schließen", "help.label": "Hilfe", "help.title": "FAQ & Tipps", - "help.intro": "Klappe einen Abschnitt auf, um Antworten für Spieler und Admins zu sehen.", + "help.intro": "Klappe einen Abschnitt auf, um häufige Spielerfragen und Sonderfälle zu sehen.", "help.cat.gettingStarted": "Erste Schritte", "help.cat.suggest": "Phase Vorschlagen", "help.cat.vote": "Phase Bewerten", "help.cat.results": "Phase Ergebnisse", - "help.cat.admin": "Admin-Werkzeuge", "help.q.join": "Wie kann ich mitmachen?", "help.a.join": "Registriere dich mit Benutzername, Passwort und Anzeigenamen. Danach mit denselben Daten anmelden.", "help.q.adminKey": "Was ist der Admin-Schlüssel?", "help.a.adminKey": "Wenn der Host dir den Admin-Schlüssel gibt, trage ihn bei der Registrierung ein, um Admin-Rechte zu erhalten.", + "help.q.displayName": "Warum brauche ich einen Anzeigenamen?", + "help.a.displayName": "Vorschläge und Stimmen zeigen, von wem sie stammen. Ohne Anzeigenamen kannst du keine Spiele oder Wertungen hinzufügen.", "help.q.limit": "Wie viele Spiele darf ich hinzufügen?", - "help.a.limit": "Bis zu 5 Vorschläge pro Spieler. Ein Joker erlaubt während der Abstimmung einen zusätzlichen Vorschlag.", + "help.a.limit": "Bis zu 5 Vorschläge pro Spieler in Vorschlagen. Jeder Joker in der Abstimmungsphase ermöglicht einen weiteren; der Joker wird beim Nutzen verbraucht.", "help.q.editNames": "Kann ich Vorschläge später ändern oder löschen?", "help.a.editNames": "Spieltitel sind nach Verlassen der Vorschlagsphase gesperrt. Optionale Felder bleiben bearbeitbar; Admins können jederzeit ändern oder löschen.", "help.q.mediaRules": "Gibt es Regeln für Links und Bilder?", "help.a.mediaRules": "Nutze http(s)-Links. Screenshots müssen auf eine Bilddatei enden (png, jpg, gif, webp, avif). Ungültige Links werden abgelehnt.", + "help.q.cantAdd": "Warum wurde mein Vorschlag abgelehnt?", + "help.a.cantAdd": "Du kannst nur in Vorschlagen oder mit einem Joker in Abstimmen hinzufügen. Gib einen Anzeigenamen an, bleib innerhalb des 5-Plus-Joker-Limits, nutze erreichbare http(s)-Links und halte Spielerzahlen zwischen 1 und 32 mit Min \u2264 Max.", "help.q.howVote": "Wie funktioniert die Abstimmung?", - "help.a.howVote": "Bewege den 0–10 Schieberegler für jedes Spiel. Deine Wertung und das Emoji aktualisieren sich sofort.", + "help.a.howVote": "Bewege den 0–10 Schieberegler für jedes Spiel. Stimmen speichern sofort; du kannst ändern, bis du abschließt.", "help.q.finalize": "Was bedeutet Abschließen?", - "help.a.finalize": "Abschließen sperrt deine Stimmen, bis du wieder öffnest. Zuerst müssen alle Spiele bewertet sein.", + "help.a.finalize": "Abschließen sperrt deine Stimmen in der Phase Abstimmen. Alle Spiele müssen bewertet sein. Schalte es in derselben Phase wieder aus, um Änderungen zu machen.", + "help.q.voteBlocked": "Warum kann ich nicht abstimmen?", + "help.a.voteBlocked": "Abstimmen geht nur in der Phase Abstimmen, wenn du eingeloggt bist und einen Anzeigenamen hast. Wenn du keinen angegeben hast, registriere dich neu; Admins können ihn nicht nachtragen.", + "help.q.jokerAfterFreeze": "Ich habe abgeschlossen, aber mir fällt ein tolles Spiel ein. Kann ich es noch hinzufügen?", + "help.a.jokerAfterFreeze": "Bitte in der Abstimmungsphase einen Admin um einen Joker. Er gibt dir einen zusätzlichen Slot, verbraucht den Joker und öffnet alle Finalisierungen, damit das neue Spiel bewertet werden kann.", "help.q.linkedVotes": "Was sind verknüpfte Spiele?", - "help.a.linkedVotes": "Admins können Duplikate verknüpfen. Ein Regler ändert dann die Stimmen aller verknüpften Spiele gemeinsam.", + "help.a.linkedVotes": "Admins können in der Abstimmungsphase Duplikate verknüpfen. Verknüpfte Spiele teilen Stimmen. Verknüpfen oder Trennen löscht die Stimmen der Gruppe und öffnet betroffene Spieler erneut.", + "help.q.newGameAfterFinal": "Nach dem Abschließen ist ein neues Spiel aufgetaucht. Was nun?", + "help.a.newGameAfterFinal": "Neue Spiele (durch Joker) oder Link-Änderungen heben Finalisierungen auf. Prüfe deine Liste und bewerte alles erneut, bevor du wieder abschließt.", + "help.q.scoreRange": "Welche Wertungen sind erlaubt?", + "help.a.scoreRange": "Nur ganze Zahlen von 0 bis 10 sind gültig. Alles andere wird abgelehnt.", "help.q.resultsLocked": "Warum sehe ich keine Ergebnisse?", "help.a.resultsLocked": "Ergebnisse bleiben verborgen, bis ein Admin sie freigibt. Danach wechselst du automatisch zur Ergebnisphase.", "help.q.resultsContent": "Was zeigen die Ergebnisse?", "help.a.resultsContent": "Eine Rangliste mit Durchschnitt, Stimmenanzahl, deiner eigenen Stimme sowie Links und Medien pro Spiel.", - "help.q.openResults": "Wie öffne oder schließe ich Ergebnisse?", - "help.a.openResults": "Admins schalten im Admin-Bereich die Ergebnisse frei. Öffnen bringt alle in die Ergebnisphase; Schließen schickt Spieler zurück zur Abstimmung und entfernt Finalisierungen.", - "help.q.linkDuplicates": "Wie verbinde ich Duplikate?", - "help.a.linkDuplicates": "In der Abstimmungsphase zwei Spiele unter Admin › Spiele verknüpfen auswählen. Verknüpfen löscht die Stimmen dieser Gruppe und öffnet betroffene Spieler erneut.", - "help.q.grantJoker": "Wann sollte ich einen Joker vergeben?", - "help.a.grantJoker": "Vergib während der Abstimmung einen Joker, damit ein Spieler einen zusätzlichen Vorschlag machen kann; seine Finalisierung wird zurückgesetzt.", - "help.q.reset": "Reset vs. Werkseinstellung?", - "help.a.reset": "Reset löscht Vorschläge/Stimmen und Phasen, behält aber Spieler. Werkseinstellung entfernt alles inklusive Spieler und setzt die App neu auf.", + "help.q.editInResults": "Kann ich in den Ergebnissen noch etwas ändern?", + "help.a.editInResults": "Nein. Vorschläge und Stimmen sind in den Ergebnissen gesperrt. Änderungen erfordern eine Rückkehr zur Abstimmungsphase (z. B. wenn ein Admin die Ergebnisse schließt oder zurücksetzt).", } };