Der Erklaerkasten auf jeder Seite ist weg
Filipe, mit dem Kasten im Bild: "das muss sofort weg. ueberall das ist scheisse." Entfernt, nicht ausgeblendet: - workspace/assets/js/erklaerung.js - server/workspace-erklaerung.js samt Router-Einbindung in index.js - server/pruef-erklaerung.mjs - der Stilblock in start.css - die Skript-Zeile auf allen 25 Seiten AUSGEBLENDET WAERE KEIN ENTFERNEN. Der Weg haette weiter geantwortet, das Skript waere weiter geladen worden, und beim naechsten Umbau waere der Kasten irgendwo wieder aufgetaucht. Was weg soll, wird weggenommen. NACHGEMESSEN STATT ANGENOMMEN: - kein Verweis auf die geloeschten Dateien mehr im Repo, - der Server startet ohne Fehler (frische Datenbank, Protokoll leer), - keine Reste (erkl__, erklaerung.js) in Seiten oder Stilvorlagen. Vier andere Pruefungen nennen ebenfalls "Erklaerung" -- sie meinen ANDERE: den Satz im Neu-Fenster des Chats, die Stufen-Seite, die Rollenkarten. Die bleiben unberuehrt; nachgesehen, nicht vermutet. pruef-workspace-seiten, pruef-css-klassen und pruef-lesbarkeit laufen gruen. Die Zahl der Pruefungen sinkt um die der geloeschten Datei -- das ist hier richtig: Sie prueften etwas, das es nicht mehr gibt. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -1,86 +0,0 @@
|
||||
/* =====================================================================
|
||||
Die kurze Erklärung auf jeder Seite (14.09.2026)
|
||||
|
||||
Filipe: „ich will in jeder seite auch eine kleine detaillierte aber
|
||||
schnelle erklärung kurz und knapps noch zu jeder seite."
|
||||
|
||||
---------------------------------------------------------------------
|
||||
WARUM SIE OFFEN DASTEHT UND NICHT HINTER EINEM KLICK
|
||||
|
||||
„Schnell" war seine Bedingung. Eine Erklärung, die man erst
|
||||
aufklappen muss, ist genau dann nicht da, wenn man sie braucht —
|
||||
nämlich beim ersten Mal, wenn man noch nicht weiß, dass es sie gibt.
|
||||
Drei kurze Zeilen kosten weniger Platz als ein Aufklapper kostet:
|
||||
Aufmerksamkeit.
|
||||
|
||||
---------------------------------------------------------------------
|
||||
WO SIE HINGEHÄNGT WIRD
|
||||
|
||||
Nach der Kopfzeile, wenn es eine gibt — sonst als erstes Element im
|
||||
Inhalt. Fünf Seiten haben keine `.kopf-zeile` (Chat, Kalender,
|
||||
Start, Team, Teamlage); ohne den zweiten Fall hätten ausgerechnet
|
||||
die am häufigsten benutzten Seiten keine Erklärung bekommen, und
|
||||
zwar lautlos.
|
||||
|
||||
---------------------------------------------------------------------
|
||||
SIE BAUT NICHTS UM, WENN NICHTS DA IST
|
||||
|
||||
Kein Text zur Seite, keine Antwort, nicht angemeldet: dann entsteht
|
||||
auch kein Kasten. Ein leerer Rahmen mit drei Überschriften wäre
|
||||
schlechter als gar keiner — er sieht aus wie ein Fehler.
|
||||
===================================================================== */
|
||||
(() => {
|
||||
const datei = (location.pathname.split('/').pop() || '').toLowerCase();
|
||||
if (!/^[a-z0-9-]+\.html$/.test(datei)) return; // Anmeldeseiten u. ä.
|
||||
|
||||
const el = (t, k, text) => {
|
||||
const n = document.createElement(t);
|
||||
if (k) n.className = k;
|
||||
if (text !== undefined) n.textContent = text;
|
||||
return n;
|
||||
};
|
||||
|
||||
/** Eine Zeile: Schild links, Satz rechts. */
|
||||
function zeile(schild, satz) {
|
||||
const z = el('div', 'erkl__zeile');
|
||||
z.append(el('span', 'erkl__schild', schild));
|
||||
z.append(el('span', 'erkl__satz', satz));
|
||||
return z;
|
||||
}
|
||||
|
||||
function zeichne(d) {
|
||||
const kasten = el('section', 'erkl');
|
||||
/* Ein Bereich mit Namen: Ein Vorleseprogramm sagt dadurch an, was
|
||||
das hier ist, statt drei Wortpaare vorzulesen. */
|
||||
kasten.setAttribute('aria-label', 'Kurze Erklärung zu dieser Seite');
|
||||
|
||||
kasten.append(zeile('Wofür', d.wofuer));
|
||||
kasten.append(zeile('Du tust', d.tun));
|
||||
if (d.merke) {
|
||||
const z = zeile('Merke', d.merke);
|
||||
z.dataset.merke = 'ja';
|
||||
kasten.append(z);
|
||||
}
|
||||
if (Array.isArray(d.sichtbar) && d.sichtbar.length) {
|
||||
/* DIESE ZEILE IST GERECHNET, NICHT GESCHRIEBEN -- sie kommt aus
|
||||
derselben Rechtetafel wie die Schranke selbst. Deshalb darf
|
||||
sie hier so bestimmt dastehen. */
|
||||
kasten.append(zeile('Sieht', d.sichtbar.join(' · ')));
|
||||
}
|
||||
|
||||
const kopf = document.querySelector('main .kopf-zeile');
|
||||
if (kopf) { kopf.insertAdjacentElement('afterend', kasten); return; }
|
||||
const inhalt = document.querySelector('main');
|
||||
if (inhalt) inhalt.insertBefore(kasten, inhalt.firstElementChild);
|
||||
}
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
const a = await fetch('/workspace/api/erklaerung?seite=' + encodeURIComponent(datei),
|
||||
{ credentials: 'same-origin' });
|
||||
if (!a.ok) return; // 401/404: dann eben nicht
|
||||
const d = await a.json();
|
||||
if (d?.hat_text) zeichne(d);
|
||||
} catch { /* ohne Erklärung ist die Seite vollständig benutzbar */ }
|
||||
})();
|
||||
})();
|
||||
Reference in New Issue
Block a user