Community: die echte Sicht messbar machen -- und die Sternchen weg

Filipe: "perfektioniere jede einzelne kategorie der community."

ERST MESSEN. tools/community-blick.mjs meldet sich als GAST an und
fotografiert alle sieben Bretter. Das war noetig, weil als DogFather
auf jedem Brett Knoepfe und Felder stehen, die ein Mitglied nie sieht
-- wer so beurteilt, beurteilt eine Seite, die es fuer die Community
nicht gibt.

Der Weg dorthin war laenger als gedacht, und jeder Umweg steht als
Kommentar im Werkzeug:
  - Die Community hat eine EIGENE Anmeldeseite (crew-index.html); auf
    der anderen gibt es die Rolle "gast" gar nicht.
  - Wer sich zum ersten Mal anmeldet, muss sein Alter bestaetigen
    (400 "alter_offen"), sonst kommt er nicht hinein.
  - Ueber die echte Adresse schickt der Server HSTS, woraufhin
    Chromium alle Unterdateien auf https umbiegt -- der Testserver
    spricht nur http. Ergebnis: eine nackte Seite ohne Stil und ohne
    Skripte, auf der kein Knopf etwas tat. Die Kopfzeile ist richtig
    so und bleibt; stattdessen wird jetzt ueber die Kopfzeile
    angemeldet und das Sitzungsplaetzchen in den Browser gelegt.
Ohne diese drei Punkte fotografiert man die Anmeldeseite und haelt
"0 Karten, kein Schreibfeld" fuer einen Befund ueber die Bretter.

ERSTER BEFUND, BEHOBEN: An zehn Stellen stand **Fettschrift** als
Sternchen im Text. Auf "Regeln & Hilfe" hiess es woertlich "Drei
Stufen: **Hinweis** ..., **Pause** ..., **Ausschluss**" -- ausgerechnet
die drei Stufen, um die es geht, sahen aus wie ein Tippfehler.

KEIN innerHTML: Gebaut wird aus einzelnen Knoten. Was nicht zwischen
zwei Sternchenpaaren steht, wird Text und kann nichts anderes werden.
Ein einzelnes Sternchen bleibt ein Sternchen -- "3 * 4" ist keine
Hervorhebung.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-18 18:33:02 +02:00
co-authored by Claude Opus 5
parent e933de3248
commit d4e05e460a
35 changed files with 653 additions and 404 deletions
+53 -2
View File
@@ -544,7 +544,11 @@
k.append(zeile);
}
if (e.text) k.append(el('p', 'eintrag-text', e.text));
if (e.text) {
const t = el('p', 'eintrag-text');
t.append(mitFett(e.text));
k.append(t);
}
if (stand) {
for (const [feld, name] of [['event_aufgaben', 'Aufgaben'], ['event_regeln', 'Regeln']]) {
@@ -1045,6 +1049,46 @@
} catch { /* dann gilt die alte Regel, siehe darfEintragen */ }
}
/* ---- FETTSCHRIFT IM TEXT (18.09.2026) --------------------------
Im Startkatalog steht an zehn Stellen `**Hinweis**`, `**Pause**`,
`**DogFather**` -- gemeint als Hervorhebung, angezeigt als
Sternchen. Auf „Regeln & Hilfe" stand damit woertlich:
Drei Stufen: **Hinweis** (jemand aus dem Team sagt dir, was
nicht ging), **Pause** ..., **Ausschluss**.
Das sind ausgerechnet die drei Stufen, um die es geht -- und sie
sahen aus wie ein Tippfehler.
KEIN innerHTML, AUCH NICHT HIER. Der Text kommt aus der Datenbank,
und dort schreiben Menschen hinein. Gebaut wird deshalb aus
einzelnen Knoten: Was nicht zwischen zwei Sternchenpaaren steht,
wird Text und kann nichts anderes werden. Ein `<img onerror=…>`
bleibt ein Wort.
Ein einzelnes Sternchen bleibt ein Sternchen: `3 * 4` ist keine
Hervorhebung, und wer das anders faende, haette eine Regel, die
beim Rechnen zuschlaegt. */
function mitFett(text) {
const stueck = document.createDocumentFragment();
const teile = String(text).split(/\*\*(.+?)\*\*/s);
/* split mit einer Gruppe liefert abwechselnd: normal, fett,
normal, fett … Der ungerade Platz ist immer der Inhalt der
Klammern. */
teile.forEach((t, i) => {
if (!t) return;
if (i % 2 === 1) {
const b = document.createElement('strong');
b.textContent = t;
stueck.append(b);
} else {
stueck.append(document.createTextNode(t));
}
});
return stueck;
}
function filterBauen(eintraege = []) {
const ziel = $('filter');
ziel.textContent = '';
@@ -1262,7 +1306,14 @@
const k = el('div', 'startkatalog__karte');
k.append(el('span', 'marke-art', einstellung?.arten?.[v.art] || v.art));
k.append(el('h3', 'startkatalog__name', v.titel));
if (v.text) k.append(el('p', 'startkatalog__text', v.text));
if (v.text) {
/* Auch hier -- sonst sieht das Team im Vorschlag Sternchen und
auf dem Brett danach Fettschrift. Zwei Darstellungen
desselben Textes sind eine zu viel. */
const vt = el('p', 'startkatalog__text');
vt.append(mitFett(v.text));
k.append(vt);
}
const b = el('button', 'schritt', 'Übernehmen');
b.type = 'button';
b.addEventListener('click', async () => {