Vertraulicher Meldeweg, klappbare Abschnitte, lila Stunden, Logos
Eine Nacht voller Auftraege von Filipe. Der Reihe nach: 1. VERTRAULICH MELDEN -- der groesste neue Teil. "es soll auch eine kategorie also eine hauptkachel geben wo die community leute sich anonym melden koennen wenn sie probleme haben ... rechte hand und dogfather sollen zugriff auf diese anonyme nachrichten haben. also anonym fuer die anderen." WICHTIG, UND ES STEHT SO AUF DER SEITE: "anonym" heisst hier VERTRAULICH. DogFather und die rechte Hand sehen den Namen -- so bestellt und auch richtig, ohne Namen kann man niemandem helfen. Anonym ist es gegenueber allen anderen: kein Modi, kein anderes Mitglied. Wer glaubt, er schreibe unerkannt, schreibt anders und fuehlt sich hinterher getaeuscht -- deshalb steht der Satz im Formular, bevor jemand tippt. Der strikte Wechsel (melden -> warten -> antworten -> warten) ist im SERVER erzwungen, nicht nur im Knopf. Ein ausgegrauter Knopf ist keine Regel. Geschlossen wird nur von der Leitung; abgeschlossene Faelle werden nach 90 Tagen samt Nachrichten geloescht -- hier stehen die empfindlichsten Texte des Hauses. Modis sind ausdruecklich AUSSEN VOR: Sehr oft geht es in diesen Meldungen um eine Moderationsentscheidung. 2. JEDE KATEGORIE LAESST SICH ZUKLAPPEN. "man soll auf dieser seite jede kategorie auf und zu klappen koennen mit einem button ... ueberall wo so eine liste entstehen kann." Das Muster gab es auf der Startseite schon; es steht jetzt als `abschnittKlappbar` in kopf.js und wird von den Brettern und dem Zeitstrahl benutzt. Die Koepfe sind echte <button> (fuer die Tastatur), der Zustand haelt in localStorage, und er haengt je Brett UND Art -- sonst waere "Regel zugeklappt" ueberall gleichzeitig zu. 3. DIE SPRUNGLEISTE SIEHT AUS WIE ETWAS ZUM ANFASSEN. Vorher unterstrichene Woerter, die aussahen wie eine Fusszeile. Jetzt Marken mit Rahmen in einem eigenen Block. 4. DIE STUNDEN SIND LILA. UMGERECHNET, NICHT NEU GEWAEHLT: Jeder der fuenf Verlaufsstopps wurde nach OKLCH zerlegt, der Farbton auf 303 Grad gedreht, zurueckgerechnet. Helligkeit und Buntheit blieben gleich -- eine frei gegriffene Palette waere heller oder bunter geworden, und die Uhr damit unruhiger. 5. DIE KARTEN "UNSERE SEITEN": babyblau und lila, mit schwebenden Logos. Beide Logos wurden zu MASKEN gerechnet (tools/logo-maske.mjs): Die PNG tragen nur Alpha, die Farbe kommt aus dem CSS. Dadurch passt dasselbe Logo in jede Kachel, egal welchen Ton sie hat -- und VanVans 378-KB- Logo wurde dabei zu 109 KB. Vier Stueck je Karte, verschieden gross, zwei Bahnen, 26 bis 41 Sekunden Umlauf. Der erste Versuch war mit 5-9 % Deckkraft praktisch unsichtbar; jetzt 10-16 %. 6. "ENTWICKLUNG" HEISST JETZT "EURE AUFGABEN". Filipe hat recht: Die Kachel fuehrt seit dem 11.09. auf den Katalog -- eine Aufgabenliste. Der Name blieb stehen, weil beim Umhaengen des Ziels niemand ihn angefasst hat. Der Name "Entwicklung" ist damit frei fuer das, was er darunter versteht (Auswertung je Person mit Verlauf und Text) -- das ist noch NICHT gebaut. DREI PRUEFUNGEN, DIE ZUFAELLIG GRUEN WAREN, sind nebenbei aufgefallen: - pruef-kachelraster wartete feste 500 ms auf eine gestaffelte Einblendung und mass vier Reihen, wo drei sind. Jetzt reducedMotion. - pruef-start-ansicht scrollte 600 px und nahm an, danach liege keine Kachel mehr unter dem Zeiger. - pruef-wege-nach-draussen zaehlte das Kachelraster ueber ALLE Gruppen statt je Gruppe. GEMESSEN: pruef-hilfe (neu) 55/0, pruef-wege-nach-draussen 64/0, pruef-jeder-hat-eine-seite 65/0, pruef-community-sicht 10/0, pruef-bereiche-lesend, pruef-steckbrief, pruef-start-ansicht, pruef-kachelraster alle gruen. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -370,6 +370,97 @@
|
||||
stand(false);
|
||||
};
|
||||
|
||||
/* ---------- GANZE ABSCHNITTE AUF UND ZU (19.09.2026) ------------------
|
||||
|
||||
Filipe: „man soll auf dieser seite jede kategorie auf und zu
|
||||
klappen können mit einem button, übrigens will ich das überall
|
||||
überall wo so eine liste entstehen kann hatte ich dir schon mal
|
||||
gesagt."
|
||||
|
||||
UNTERSCHIED ZU `klappe()` DARÜBER: Das dort verbirgt die hinteren
|
||||
Zeilen EINER Liste („nur die letzten 4"). Das hier klappt einen
|
||||
ganzen Abschnitt samt Überschrift zu. Zwei verschiedene Fragen,
|
||||
deshalb zwei Funktionen — eine, die beides kann, müsste bei jedem
|
||||
Aufruf erklärt bekommen, was gemeint ist.
|
||||
|
||||
DAS MUSTER STAMMT VON DER STARTSEITE, wo es seit dem 10.09.2026
|
||||
funktioniert: ein Knopf als Überschrift, ein Pfeil, der sich dreht,
|
||||
der Zustand in localStorage. Es steht jetzt hier, weil Filipe es
|
||||
„überall" haben will — und weil eine zweite Abschrift die wäre, die
|
||||
beim nächsten Umbau ausschert. (start.js hat seine eigene Fassung
|
||||
noch; sie tut dasselbe und ist geprüft. Wer sie anfasst, stellt sie
|
||||
auf diese hier um.)
|
||||
|
||||
`schluessel` darf fehlen: Dann merkt sich die Seite nichts und
|
||||
alles steht beim nächsten Besuch offen. Das ist der richtige
|
||||
Rückfall — ein Abschnitt, der zu ist und von dem man nicht mehr
|
||||
weiß, warum, sieht aus wie fehlender Inhalt. */
|
||||
window.abschnittKlappbar = function (kopf, kasten, schluessel, zuVorgabe = false) {
|
||||
if (!kopf || !kasten) return;
|
||||
|
||||
/* Der Knopf muss ein Knopf sein. Ein `<h2 onclick>` ist für die
|
||||
Tastatur nicht erreichbar und für Vorleseprogramme unsichtbar. */
|
||||
if (kopf.tagName !== 'BUTTON') kopf.setAttribute('role', 'button');
|
||||
if (!kopf.hasAttribute('tabindex') && kopf.tagName !== 'BUTTON') kopf.tabIndex = 0;
|
||||
|
||||
let zu = zuVorgabe;
|
||||
if (schluessel) {
|
||||
try {
|
||||
const gemerkt = localStorage.getItem('abschnitt:' + schluessel);
|
||||
if (gemerkt) zu = gemerkt === 'zu';
|
||||
} catch { /* privates Fenster: dann eben die Vorgabe */ }
|
||||
}
|
||||
|
||||
const stand = (istZu) => {
|
||||
kopf.dataset.zu = istZu ? 'ja' : 'nein';
|
||||
kopf.setAttribute('aria-expanded', istZu ? 'false' : 'true');
|
||||
kasten.hidden = istZu;
|
||||
};
|
||||
stand(zu);
|
||||
|
||||
/* NUR EINMAL EINHÄNGEN. Die Bretter bauen sich bei jeder
|
||||
Aktualisierung neu auf; hinge der Zuhörer zweimal daran, würde
|
||||
ein Klick zweimal umschalten und damit gar nichts tun. */
|
||||
if (kopf.dataset.klappBereit) return;
|
||||
kopf.dataset.klappBereit = 'ja';
|
||||
|
||||
const um = () => {
|
||||
zu = !zu;
|
||||
stand(zu);
|
||||
if (schluessel) {
|
||||
try { localStorage.setItem('abschnitt:' + schluessel, zu ? 'zu' : 'auf'); }
|
||||
catch { /* egal */ }
|
||||
}
|
||||
};
|
||||
kopf.addEventListener('click', um);
|
||||
if (kopf.tagName !== 'BUTTON') {
|
||||
kopf.addEventListener('keydown', (e) => {
|
||||
if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); um(); }
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/** Der Pfeil, der sich beim Zuklappen dreht.
|
||||
*
|
||||
* Als Funktion, damit nicht an jeder Stelle dasselbe SVG steht --
|
||||
* und damit ein späterer anderer Pfeil an EINER Stelle geändert
|
||||
* wird. */
|
||||
window.klappPfeil = function () {
|
||||
const p = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
||||
p.setAttribute('class', 'klapp-pfeil');
|
||||
p.setAttribute('viewBox', '0 0 24 24');
|
||||
p.setAttribute('aria-hidden', 'true');
|
||||
const weg = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
||||
weg.setAttribute('d', 'm6 9.5 6 6 6-6');
|
||||
weg.setAttribute('fill', 'none');
|
||||
weg.setAttribute('stroke', 'currentColor');
|
||||
weg.setAttribute('stroke-width', '2.2');
|
||||
weg.setAttribute('stroke-linecap', 'round');
|
||||
weg.setAttribute('stroke-linejoin', 'round');
|
||||
p.append(weg);
|
||||
return p;
|
||||
};
|
||||
|
||||
/* Gibt es eine sinnvolle vorherige Seite INNERHALB des Workspace?
|
||||
|
||||
Blindes history.back() reicht nicht: Wer die Adresse direkt eingibt
|
||||
|
||||
Reference in New Issue
Block a user