From 79f01864949b39cdd324a9bbe08100e0c7ff3593 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Fri, 28 Aug 2026 13:40:14 +0200 Subject: [PATCH] Wissen: Kategorie muss ausdruecklich gewaehlt werden Filipes PDF ueber TikTok LIVE Studio landete unter "TikTok - Grundlagen & Funktionen" statt unter "Streaming mit PC". Ursache ist ein Denkfehler von mir, kein Bedienfehler: Das Kategoriefeld war mit dem ERSTEN Eintrag der Liste vorbelegt. Wer es nicht bewusst aendert, merkt nichts -- die Pflichtangabe hat still fuer ihn entschieden. Eine Vorbelegung, die niemand gewaehlt hat, ist keine Voreinstellung, sondern ein Fehler mit Ansage. Jetzt steht dort "- Kategorie waehlen -", und ohne Auswahl geht das Formular nicht ab (Browser blockt, zusaetzlich eigene Pruefung). Vorbelegt wird nur noch, wenn man AUS einer Kategorie heraus hochlaedt -- dann ist es eine informierte Annahme statt einer geratenen. Ausserdem: zwanzig Eintraege in einer flachen Liste findet man nicht. Das Feld ist jetzt nach denselben sechs Welten gruppiert wie die Kacheln auf der Seite (optgroup). Geprueft: alle 20 waehlbar, "Streaming mit PC" ist dabei. Nach dem Veroeffentlichen steht in einer gruenen Zeile, WO die Anleitung gelandet ist -- sonst merkt man einen Irrtum erst, wenn man sie irgendwann sucht. Die Meldung nutzt dieselbe Zeile wie Fehler, aber nicht dieselbe Farbe: Eine Erfolgsmeldung in Warnrot liest sich wie ein Problem. Bereits hochgeladene PDFs lassen sich ueber "Bearbeiten" umhaengen -- die Datei bleibt dabei unberuehrt. --- workspace/assets/css/wissen.css | 10 +++++++ workspace/assets/js/wissen.js | 49 ++++++++++++++++++++++++++++++--- workspace/aufgaben.html | 10 +++---- workspace/bereich.html | 12 ++++---- workspace/calls.html | 14 +++++----- workspace/dateien.html | 12 ++++---- workspace/index.html | 4 +-- workspace/kalender.html | 12 ++++---- workspace/personen.html | 12 ++++---- workspace/profil.html | 12 ++++---- workspace/report.html | 14 +++++----- workspace/scouting.html | 12 ++++---- workspace/start.html | 8 +++--- workspace/startcheck.html | 14 +++++----- workspace/wissen.html | 12 ++++---- 15 files changed, 129 insertions(+), 78 deletions(-) diff --git a/workspace/assets/css/wissen.css b/workspace/assets/css/wissen.css index 094c2604..8bccbd8c 100644 --- a/workspace/assets/css/wissen.css +++ b/workspace/assets/css/wissen.css @@ -314,3 +314,13 @@ .schalter, .schalter__gleis, .schalter__punkt { transition: none; } .kachel:hover { transform: none; } } + +/* Bestätigung in derselben Zeile wie Fehler, aber nicht in Warnrot -- + eine Erfolgsmeldung in Rot liest sich wie ein Problem. */ +.fehler[data-gut="ja"] { + color: #79d1a2; + padding: 9px 13px; + background: rgba(95, 201, 154, .09); + border: 1px solid rgba(95, 201, 154, .3); + border-radius: var(--radius-klein); +} diff --git a/workspace/assets/js/wissen.js b/workspace/assets/js/wissen.js index 503caed0..86b61c8d 100644 --- a/workspace/assets/js/wissen.js +++ b/workspace/assets/js/wissen.js @@ -22,7 +22,14 @@ if (text !== undefined) k.textContent = text; return k; }; - const melde = (t) => { $('fehler').textContent = t || ''; }; + /* Dieselbe Zeile fuer Fehler und Bestaetigungen -- aber nicht + dieselbe Farbe. Eine Erfolgsmeldung in Warnrot liest sich wie ein + Problem. */ + const melde = (text, gut = false) => { + const e = $('fehler'); + e.textContent = text || ''; + if (gut) e.dataset.gut = 'ja'; else delete e.dataset.gut; + }; const datum = (iso) => (iso ? iso.slice(0, 10).split('-').reverse().join('.') : ''); const groesse = (b) => (b >= 1048576 ? (b / 1048576).toFixed(1) + ' MB' : Math.round(b / 1024) + ' KB'); @@ -322,7 +329,13 @@ $('n-datei-block').hidden = !!eintrag; $('n-titel').value = eintrag ? eintrag.titel : ''; $('n-beschreibung').value = eintrag ? (eintrag.beschreibung || '') : ''; - $('n-kategorie').value = eintrag ? eintrag.kategorie : (zustand().k || aufbau.kategorien[0].schluessel); + /* NICHT die erste Kategorie vorbelegen. Genau daran ist eine PDF + ueber TikTok LIVE Studio unter "TikTok - Grundlagen" gelandet: + Das Feld stand still auf dem ersten Eintrag der Liste, und wer es + nicht bewusst aendert, merkt es nicht. Vorbelegt wird nur, wenn + man aus EINER Kategorie heraus hochlaedt -- dann ist es eine + informierte Annahme, keine geratene. */ + $('n-kategorie').value = eintrag ? eintrag.kategorie : (zustand().k || ''); $('n-stufe').value = eintrag ? eintrag.stufe : 'einsteiger'; $('n-geraet').value = eintrag ? eintrag.geraet : 'egal'; $('n-tags').value = eintrag ? eintrag.tags.join(', ') : ''; @@ -353,7 +366,26 @@ f.append(o); } }; - setz('n-kategorie', aufbau.kategorien.map((k) => [k.schluessel, k.nr + '. ' + k.name])); + /* Nach Welten gruppiert -- dieselbe Gliederung wie auf der Seite. + Zwanzig Eintraege in einer flachen Liste findet man nicht. */ + const kf = $('n-kategorie'); + kf.textContent = ''; + const platzhalter = document.createElement('option'); + platzhalter.value = ''; + platzhalter.textContent = '— Kategorie wählen —'; + platzhalter.disabled = true; + kf.append(platzhalter); + for (const welt of aufbau.welten) { + const gruppe = document.createElement('optgroup'); + gruppe.label = welt.name; + for (const k of aufbau.kategorien.filter((x) => x.welt === welt.schluessel)) { + const o = document.createElement('option'); + o.value = k.schluessel; + o.textContent = k.name; + gruppe.append(o); + } + if (gruppe.children.length) kf.append(gruppe); + } setz('n-stufe', Object.entries(aufbau.stufen)); setz('n-geraet', Object.entries(aufbau.geraete)); @@ -442,6 +474,11 @@ veroeffentlicht: $('n-datum').value, }; if (angaben.titel.length < 3) { $('n-fehler').textContent = 'Der Titel fehlt.'; return; } + if (!angaben.kategorie) { + $('n-fehler').textContent = 'Wähle die Kategorie aus, in der die Anleitung stehen soll.'; + $('n-kategorie').focus(); + return; + } knopf.disabled = true; try { @@ -463,8 +500,12 @@ $('n-fehler').textContent = (await a.json().catch(() => ({}))).fehler || 'Das hat nicht geklappt.'; return; } + const kat = aufbau.kategorien.find((k) => k.schluessel === angaben.kategorie); formularSchliessen(); - melde(''); + /* Sagen, WO sie gelandet ist -- sonst merkt man einen Irrtum erst, + wenn man sie irgendwann sucht. */ + melde(`„${angaben.titel}“ liegt jetzt unter „${kat ? kat.name : angaben.kategorie}“.`, true); + setTimeout(() => melde(''), 7000); $('n-stand').textContent = ''; await laden_(); } catch { /* umgeleitet */ } finally { knopf.disabled = false; } diff --git a/workspace/aufgaben.html b/workspace/aufgaben.html index 9b4a8438..145e22e3 100644 --- a/workspace/aufgaben.html +++ b/workspace/aufgaben.html @@ -7,9 +7,9 @@ - - - + + + @@ -134,7 +134,7 @@ - - + + diff --git a/workspace/bereich.html b/workspace/bereich.html index e57a678c..9f7a801b 100644 --- a/workspace/bereich.html +++ b/workspace/bereich.html @@ -7,10 +7,10 @@ - - - - + + + + @@ -98,7 +98,7 @@ - - + + diff --git a/workspace/calls.html b/workspace/calls.html index eae5d518..667cbd6d 100644 --- a/workspace/calls.html +++ b/workspace/calls.html @@ -7,10 +7,10 @@ - - - - + + + + @@ -49,8 +49,8 @@ - - - + + + diff --git a/workspace/dateien.html b/workspace/dateien.html index d17a08b4..306fb3b2 100644 --- a/workspace/dateien.html +++ b/workspace/dateien.html @@ -7,10 +7,10 @@ - - - - + + + + @@ -88,7 +88,7 @@ - - + + diff --git a/workspace/index.html b/workspace/index.html index fd8fd211..02b4ed28 100644 --- a/workspace/index.html +++ b/workspace/index.html @@ -25,7 +25,7 @@ type="image/webp" media="(max-width: 899px)" /> - + @@ -130,6 +130,6 @@

- + diff --git a/workspace/kalender.html b/workspace/kalender.html index b8f29569..1ab6a374 100644 --- a/workspace/kalender.html +++ b/workspace/kalender.html @@ -7,10 +7,10 @@ - - - - + + + + @@ -94,7 +94,7 @@ - - + + diff --git a/workspace/personen.html b/workspace/personen.html index 57bff049..fdcd4b06 100644 --- a/workspace/personen.html +++ b/workspace/personen.html @@ -7,10 +7,10 @@ - - - - + + + + @@ -87,7 +87,7 @@ - - + + diff --git a/workspace/profil.html b/workspace/profil.html index c09cbbb2..8226476e 100644 --- a/workspace/profil.html +++ b/workspace/profil.html @@ -7,10 +7,10 @@ - - - - + + + + @@ -127,7 +127,7 @@ - - + + diff --git a/workspace/report.html b/workspace/report.html index fa99f895..78741aea 100644 --- a/workspace/report.html +++ b/workspace/report.html @@ -7,10 +7,10 @@ - - - - + + + + @@ -86,8 +86,8 @@ - - - + + + diff --git a/workspace/scouting.html b/workspace/scouting.html index 4be04520..35336731 100644 --- a/workspace/scouting.html +++ b/workspace/scouting.html @@ -7,10 +7,10 @@ - - - - + + + + @@ -124,7 +124,7 @@ - - + + diff --git a/workspace/start.html b/workspace/start.html index a024140b..3f43fd22 100644 --- a/workspace/start.html +++ b/workspace/start.html @@ -7,8 +7,8 @@ - - + + @@ -56,7 +56,7 @@

- - + + diff --git a/workspace/startcheck.html b/workspace/startcheck.html index a3d714ad..a0950cb4 100644 --- a/workspace/startcheck.html +++ b/workspace/startcheck.html @@ -7,10 +7,10 @@ - - - - + + + + @@ -65,8 +65,8 @@ - - - + + + diff --git a/workspace/wissen.html b/workspace/wissen.html index d490d749..8f4fc93c 100644 --- a/workspace/wissen.html +++ b/workspace/wissen.html @@ -7,10 +7,10 @@ - - - - + + + + @@ -165,7 +165,7 @@ - - + +