Værtsside: hvert spil er sin egen startknap

Fejl: spillet blev valgt med radioknapper, hvor Fup og Fakta var afkrydset
som standard. En TV-fjernbetjening flytter fokus uden at afkrydse, og
Enter/OK på en radio sender formularen med den afkrydsede radio, ikke den
fokuserede. Så "Tegn og Gæt" + OK gav game=fof og et Fup og Fakta-rum.

Nu er hvert spil en submit-knap med name="game", så den knap, man trykker
på, er det spil, der startes. Testen fejler på den gamle skabelon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
agw
2026-10-20 21:12:21 +02:00
co-authored by Claude Opus 5.5
parent 7367b72505
commit 64aac361cd
3 changed files with 16 additions and 7 deletions
+1
View File
@@ -900,6 +900,7 @@ button, input { font-family: inherit; }
/* ---------- nyt spil: vælg spørgsmålspakke ---------- */
.new-game { display: flex; flex-direction: column; align-items: center; gap: 20px; }
.new-game .games { display: flex; gap: 16px; flex-wrap: wrap; justify-content: center; }
.packs { display: flex; gap: 8px; margin: 0; padding: 0; border: 0; flex-wrap: wrap; justify-content: center; }
.packs legend { width: 100%; margin-bottom: 8px; color: var(--muted); font-weight: 600; }
.packs label { cursor: pointer; }
+6 -7
View File
@@ -5,13 +5,8 @@
<h1>Weirsøe Party Protocol</h1>
<div class="sub"><span class="b-fup">Fup</span> <span class="b-og">og</span> <span class="b-fakta">Fakta</span></div>
<form method="post" action="/host/new" class="new-game">{% csrf_token %}
<fieldset class="packs games">
<legend>Spil</legend>
<label><input type="radio" name="game" value="fof" checked><span>Fup og Fakta</span></label>
<label><input type="radio" name="game" value="tegn"><span>Tegn og Gæt ✏️</span></label>
</fieldset>
<fieldset class="packs">
<legend>Spørgsmål</legend>
<legend>Spørgsmål til Fup og Fakta</legend>
<label><input type="radio" name="pack" value="alle" checked><span>Alle</span></label>
<label><input type="radio" name="pack" value="familie"><span>Familie</span></label>
<label><input type="radio" name="pack" value="nørd"><span>Nørd</span></label>
@@ -23,7 +18,11 @@
<p class="pack-hint">Slang, memes og dansk pop med zoomer-speaker. Narret = tag en tår, finalen er en shot.</p>
</details>
</fieldset>
<button type="submit" class="btn btn-go">Start et nyt spil</button>
{# hvert spil er sin egen knap: Enter/OK på en fokuseret radio sender formularen med den afkrydsede, ikke den fokuserede #}
<div class="games">
<button type="submit" name="game" value="fof" class="btn btn-go">Start Fup og Fakta</button>
<button type="submit" name="game" value="tegn" class="btn btn-go">Start Tegn og Gæt ✏️</button>
</div>
</form>
{% if username %}<p class="who">Logget ind som {{ username }}</p>{% endif %}
</main>
+9
View File
@@ -203,3 +203,12 @@ class TegnViewTests(TestCase):
self.assertIsInstance(rooms.get_room(code), TegnRoom)
page = self.client.get("/host/", headers={"x-authentik-username": "agw"}, REMOTE_ADDR="127.0.0.1")
self.assertContains(page, 'value="tegn"')
def test_each_game_is_its_own_submit_button(self):
"""Fejlen: spillet var en radio med Fup og Fakta afkrydset. En TV-fjernbetjening flytter fokus uden at
afkrydse, og Enter/OK på den fokuserede "Tegn og Gæt" sendte formularen med game=fof."""
page = self.client.get("/host/", headers={"x-authentik-username": "agw"}, REMOTE_ADDR="127.0.0.1")
html = page.content.decode()
self.assertNotRegex(html, r'<input[^>]*name="game"')
for key in ("fof", "tegn"):
self.assertRegex(html, rf'<button type="submit" name="game" value="{key}"')