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.
This commit is contained in:
2026-08-28 13:40:14 +02:00
parent 4d7d9b183b
commit 79f0186494
15 changed files with 129 additions and 78 deletions
+10
View File
@@ -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);
}
+45 -4
View File
@@ -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; }
+5 -5
View File
@@ -7,9 +7,9 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281339" />
</head>
<body class="start">
@@ -134,7 +134,7 @@
</form>
</dialog>
<script src="assets/js/kopf.js?v=202608281334" defer></script>
<script src="assets/js/aufgaben.js?v=202608281334" defer></script>
<script src="assets/js/kopf.js?v=202608281339" defer></script>
<script src="assets/js/aufgaben.js?v=202608281339" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202608281339" />
</head>
<body class="start">
@@ -98,7 +98,7 @@
</main>
<script src="assets/js/kopf.js?v=202608281334" defer></script>
<script src="assets/js/bereich.js?v=202608281334" defer></script>
<script src="assets/js/kopf.js?v=202608281339" defer></script>
<script src="assets/js/bereich.js?v=202608281339" defer></script>
</body>
</html>
+7 -7
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/calls.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/calls.css?v=202608281339" />
</head>
<body class="start">
@@ -49,8 +49,8 @@
</main>
<script src="assets/js/ki.js?v=202608281334" defer></script>
<script src="assets/js/kopf.js?v=202608281334" defer></script>
<script src="assets/js/calls.js?v=202608281334" defer></script>
<script src="assets/js/ki.js?v=202608281339" defer></script>
<script src="assets/js/kopf.js?v=202608281339" defer></script>
<script src="assets/js/calls.js?v=202608281339" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202608281339" />
</head>
<body class="start">
@@ -88,7 +88,7 @@
</main>
<script src="assets/js/kopf.js?v=202608281334" defer></script>
<script src="assets/js/dateien.js?v=202608281334" defer></script>
<script src="assets/js/kopf.js?v=202608281339" defer></script>
<script src="assets/js/dateien.js?v=202608281339" defer></script>
</body>
</html>
+2 -2
View File
@@ -25,7 +25,7 @@
type="image/webp" media="(max-width: 899px)" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
</head>
<body class="gate">
@@ -130,6 +130,6 @@
</p>
</main>
<script src="assets/js/gate.js?v=202608281334" defer></script>
<script src="assets/js/gate.js?v=202608281339" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202608281339" />
</head>
<body class="start">
@@ -94,7 +94,7 @@
</main>
<script src="assets/js/kopf.js?v=202608281334" defer></script>
<script src="assets/js/kalender.js?v=202608281334" defer></script>
<script src="assets/js/kopf.js?v=202608281339" defer></script>
<script src="assets/js/kalender.js?v=202608281339" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/personen.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/personen.css?v=202608281339" />
</head>
<body class="start">
@@ -87,7 +87,7 @@
</main>
<script src="assets/js/kopf.js?v=202608281334" defer></script>
<script src="assets/js/personen.js?v=202608281334" defer></script>
<script src="assets/js/kopf.js?v=202608281339" defer></script>
<script src="assets/js/personen.js?v=202608281339" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/profil.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/profil.css?v=202608281339" />
</head>
<body class="start">
@@ -127,7 +127,7 @@
</main>
<script src="assets/js/kopf.js?v=202608281334" defer></script>
<script src="assets/js/profil.js?v=202608281334" defer></script>
<script src="assets/js/kopf.js?v=202608281339" defer></script>
<script src="assets/js/profil.js?v=202608281339" defer></script>
</body>
</html>
+7 -7
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/report.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/report.css?v=202608281339" />
</head>
<body class="start">
@@ -86,8 +86,8 @@
</main>
<script src="assets/js/ki.js?v=202608281334" defer></script>
<script src="assets/js/kopf.js?v=202608281334" defer></script>
<script src="assets/js/report.js?v=202608281334" defer></script>
<script src="assets/js/ki.js?v=202608281339" defer></script>
<script src="assets/js/kopf.js?v=202608281339" defer></script>
<script src="assets/js/report.js?v=202608281339" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202608281339" />
</head>
<body class="start">
@@ -124,7 +124,7 @@
</div>
</div>
<script src="assets/js/kopf.js?v=202608281334" defer></script>
<script src="assets/js/scouting.js?v=202608281334" defer></script>
<script src="assets/js/kopf.js?v=202608281339" defer></script>
<script src="assets/js/scouting.js?v=202608281339" defer></script>
</body>
</html>
+4 -4
View File
@@ -7,8 +7,8 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281339" />
</head>
<body class="start">
@@ -56,7 +56,7 @@
</p>
</main>
<script src="assets/js/kopf.js?v=202608281334" defer></script>
<script src="assets/js/start.js?v=202608281334" defer></script>
<script src="assets/js/kopf.js?v=202608281339" defer></script>
<script src="assets/js/start.js?v=202608281339" defer></script>
</body>
</html>
+7 -7
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202608281339" />
</head>
<body class="start">
@@ -65,8 +65,8 @@
</main>
<script src="assets/js/ki.js?v=202608281334" defer></script>
<script src="assets/js/kopf.js?v=202608281334" defer></script>
<script src="assets/js/startcheck.js?v=202608281334" defer></script>
<script src="assets/js/ki.js?v=202608281339" defer></script>
<script src="assets/js/kopf.js?v=202608281339" defer></script>
<script src="assets/js/startcheck.js?v=202608281339" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202608281334" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281339" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202608281339" />
</head>
<body class="start">
@@ -165,7 +165,7 @@
</main>
<script src="assets/js/kopf.js?v=202608281334" defer></script>
<script src="assets/js/wissen.js?v=202608281334" defer></script>
<script src="assets/js/kopf.js?v=202608281339" defer></script>
<script src="assets/js/wissen.js?v=202608281339" defer></script>
</body>
</html>