Der Modi bekommt seine eigene Seite -- und sein Brett zurueck
DER WICHTIGSTE FUND, und er kam nicht aus dem Nachdenken: Ein Modi sah
auf dem Aufgabenbrett GAR NICHTS -- nicht einmal seine eigenen Aufgaben.
sichtbar() endet mit `default: 0=1`, und 'modi' stand nicht darin.
Genau dieser Fehler ist am 01.09.2026 schon dem Manager passiert; der
Kommentar zwei Zeilen darueber warnt woertlich davor ("Ein leeres Brett
sieht aus wie 'nichts zu tun', nicht wie ein Fehler; deshalb ist das
vermutlich lange niemandem aufgefallen"). Der Rollen-Rundgang meldete
fuer den Modi trotzdem brav "aufgaben.html ok" -- die Seite laedt ja,
sie war nur leer. Gefunden hat es erst eine Pruefung, die eine Aufgabe
ANLEGT und sie danach wiederzufinden versucht.
Ein Modi sieht jetzt die Aufgaben des ganzen Modi-Teams (Filipes
Entscheidung "sie sind untereinander ein Team"), aendern darf er
weiterhin nur seine eigenen. Die Nummern werden bei jeder Abfrage frisch
gelesen -- eine beim Serverstart gebaute Liste waere ab dem naechsten
neuen Modi falsch, und niemand wuesste warum.
DIE STARTSEITE. Ein Modi hatte keine einzige Kachel: Jede traegt eine
feste Rollenliste, und 'modi' darf dort nicht stehen -- bereiche.js
bekommt jeder ausgeliefert, der die Seite oeffnet. Die Kacheln kommen
deshalb vom Server (MODI_BEREICHE), samt Beschriftung. Nur die Ziele zu
schicken haette nicht gereicht: Unter "Dashboard" stuende sonst "Alle
Creator auf einen Blick" -- fuer jemanden ohne Creator. Die Worte
gehoeren zum Empfaenger, nicht zum Ziel.
Neun Kacheln in drei Gruppen: Aufgaben, Chat, Kalender, Dateien /
Live-Ablauf, Community, Technik / Profil, Wissen. Nichts aus der
Agentur -- diese Seiten drehen sich um betreute Creator oder um Rechte.
`null` heisst "nimm deine eigene Liste", eine LEERE Liste hiesse "keine
Kacheln". Verwechselte man die beiden, haetten die fuenf bekannten
Rollen ab sofort eine leere Startseite.
ZWEI DINGE HAT DAS BILDSCHIRMFOTO GEZEIGT, NICHT DER CODE:
* Ueber der Modi-Startseite stand "Spicy Media" -- die Marke einer
Agentur, mit der er nichts zu tun hat. Jetzt "Team Dogi", wie auf
der oeffentlichen Seite. Ersetzt wird nur der Textknoten: In dem
Element sitzen zwei Zierrauten, ein textContent haette sie lautlos
geloescht.
* Auf seinem Aufgabenbrett stand das Creator-Vorlagenbrett, 80
Aufgaben fuer den Aufbau eines Kanals. Fuer einen Moderator ist
davon nichts gedacht. Ausgeblendet, bis sein Katalog aus Teil 2 des
Anforderungsdokuments da ist -- nichts ist ehrlicher als etwas
Fremdes.
Dazu: "0 betreut" stand dauerhaft auf seiner Startseite, eine Zahl, die
nie etwas anderes sagen kann. Jetzt zaehlt sie, wie viele im Modi-Team
sind. Und der Satz unter der Begruessung war nur das Wort "Modi", neben
fuenf Rollen mit einem ganzen Satz -- das sah nicht verborgen aus,
sondern unfertig.
KATEGORIEN (Kapitel 6.1), nach Filipes Entscheidung nur bei den Modis.
Acht Stueck; hier steht, wohin die dreizehn aus Teil 2 fallen
(Branding/Team/Kommunikation -> Planung, Wachstum -> Community).
Der heikelste Fall ist nicht das Setzen, sondern das SCHICKEN durch
jemanden, der es nicht darf: Eine Absage ("Unbekannte Kategorie") waere
die Auskunft, dass es das Feld gibt. Also faellt der Wert lautlos weg
und die Aufgabe entsteht ganz normal. Wer die Kategorien benutzen darf,
bekommt bei einem Tippfehler dagegen sehr wohl eine Absage.
Das Feld erscheint nur, wenn die Aufgabe wirklich zu einem Modi gehoert
-- bei DogFather also erst, wenn er einen als Person auswaehlt. Sonst
stuende es auch an jeder Creator-Aufgabe. Verborgen heisst dabei auch
"nichts mitschicken": Ein Wert in einem unsichtbaren Feld wandert sonst
beim naechsten Speichern mit.
KEINE NEUE CSS-KLASSE fuer die Kategorie auf der Karte. Sie muesste in
sieben gleichlautenden Kopien der Modulliste gepflegt werden -- sieben
Gelegenheiten fuer einen Unterschied, fuer eine Zeile Text.
AUSSERDEM BERICHTIGT, UND ES WAR SCHON VORHER ROT: pruef-start-ansicht
erwartete drei Kachelgruppen. Seit b45de94 gibt es vier ("Rund um das
Team"). Bevor ich die Zahl angefasst habe, habe ich meine Aenderungen
beiseitegelegt und den Lauf wiederholt -- schon auf dem unveraenderten
Stand rot, also nicht von mir. Geprueft werden jetzt die NAMEN: Vier
Gruppen koennten auch drei richtige und eine doppelte sein.
GEPRUEFT: pruef-modi-verborgen (57), pruef-modi-kategorien (22, neu),
pruef-rollen (113 statt 97 -- der Modi laeuft jetzt ueber jede der 16
Seiten), pruef-start-ansicht, pruef-aufgabenbrett, pruef-sicht,
pruef-verborgen, pruef-personen-formular (24), pruef-personen-liste,
pruef-css-klassen, pruef-spicy (60).
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -133,13 +133,52 @@
|
||||
zahlen.set(kachel, bisher);
|
||||
}
|
||||
|
||||
/* =================================================================
|
||||
WELCHE KACHELN DIESE PERSON SIEHT (10.09.2026)
|
||||
|
||||
ZWEI QUELLEN, und die Reihenfolge ist die Aussage:
|
||||
|
||||
1. Schickt der Server eine Liste, gilt sie. Das ist der Weg fuer
|
||||
Rollen, die in bereiche.js gar nicht vorkommen duerfen --
|
||||
diese Datei bekommt jeder ausgeliefert, der die Seite
|
||||
oeffnet, und ein Rollenname darin waere mit einem Blick in
|
||||
den Quelltext gefunden.
|
||||
2. Sonst wie bisher: die Rollenliste an der Kachel selbst.
|
||||
|
||||
Nach der ANGESEHENEN Rolle, nicht der eigenen -- sonst stuenden
|
||||
bei der Sicht auf einen Creator weiterhin "Personen & Zugaenge"
|
||||
und "Automationen" da, die er gar nicht hat. Genau daran war zu
|
||||
sehen, dass die Sicht nicht greift. Der Server richtet sich beim
|
||||
Bauen seiner Liste nach derselben Person.
|
||||
|
||||
`null` heisst "nimm deine eigene Liste", eine LEERE Liste hiesse
|
||||
"keine Kacheln". Die beiden auseinanderzuhalten ist kein
|
||||
Feinschliff: Verwechselte man sie, haetten die fuenf bekannten
|
||||
Rollen ab sofort eine leere Startseite. */
|
||||
function eigeneGruppen(wer) {
|
||||
const vomServer = ich && ich.bereiche;
|
||||
if (Array.isArray(vomServer)) {
|
||||
/* Nach Gruppen buendeln, in der Reihenfolge, in der sie kommen
|
||||
-- eine Map behaelt sie, ein Objekt sortierte Zahlenschluessel
|
||||
um. Hier sind es Woerter, aber darauf zu bauen waere die Art
|
||||
Annahme, die spaeter jemanden Zeit kostet. */
|
||||
const nach = new Map();
|
||||
for (const b of vomServer) {
|
||||
if (!nach.has(b.gruppe)) {
|
||||
nach.set(b.gruppe, { name: b.gruppe, unter: b.gruppeUnter || '', bereiche: [] });
|
||||
}
|
||||
nach.get(b.gruppe).bereiche.push(b);
|
||||
}
|
||||
return [...nach.values()];
|
||||
}
|
||||
return GRUPPEN
|
||||
.map((g) => ({ ...g, bereiche: g.bereiche.filter((b) => b.rollen.includes(wer.rolle)) }))
|
||||
.filter((g) => g.bereiche.length);
|
||||
}
|
||||
|
||||
let laufNr = 0;
|
||||
for (const gruppe of GRUPPEN) {
|
||||
/* Nach der ANGESEHENEN Rolle -- sonst stuenden bei der Sicht auf
|
||||
einen Creator weiterhin "Personen & Zugaenge" und "Automationen"
|
||||
da, die er gar nicht hat. Genau daran war zu sehen, dass die
|
||||
Sicht nicht greift. */
|
||||
const meine = gruppe.bereiche.filter((b) => b.rollen.includes(zeigt.rolle));
|
||||
for (const gruppe of eigeneGruppen(zeigt)) {
|
||||
const meine = gruppe.bereiche;
|
||||
if (!meine.length) continue;
|
||||
|
||||
const abschnitt = el('section', 'gruppe');
|
||||
@@ -681,9 +720,34 @@
|
||||
Liste (mit dem erklaerenden Zusatz dahinter), dann der Name vom
|
||||
Server, zuletzt der nackte Schluessel. So aendert sich fuer die
|
||||
fuenf bekannten Rollen nichts. */
|
||||
/* DIE ZIERZEILE UEBER DEM TITEL (10.09.2026).
|
||||
|
||||
Sie nennt den Betrieb -- fest "Spicy Media" in start.html. Fuer
|
||||
einen Modi stimmt das nicht, er gehoert zu Team Dogi; der Server
|
||||
schickt dann den passenden Namen mit.
|
||||
|
||||
ERSETZT WIRD NUR DER TEXTKNOTEN, nicht der ganze Inhalt: In dem
|
||||
Element sitzen zwei <i class="zraute"> als Zierrauten links und
|
||||
rechts. Ein textContent darauf haette sie geloescht -- und zwar
|
||||
lautlos, denn eine fehlende Raute sieht nicht nach Fehler aus,
|
||||
sondern nach Absicht. Ein neues Element drumherum waere die
|
||||
andere naheliegende Loesung und aendert die Flex-Aufteilung; das
|
||||
hier aendert am Aufbau gar nichts. */
|
||||
if (ich.marke) {
|
||||
const marke = document.querySelector('.zmarke');
|
||||
if (marke) {
|
||||
for (const knoten of marke.childNodes) {
|
||||
if (knoten.nodeType === 3 && knoten.textContent.trim()) {
|
||||
knoten.textContent = ` ${ich.marke} `;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$('rollentext').textContent = ich.sicht
|
||||
? `Arbeitsplatz von ${ich.sicht.name} · ${ROLLENTEXT[zeigt.rolle] || zeigt.rolle}`
|
||||
: (ROLLENTEXT[ich.rolle] || ich.rolle_name || ich.rolle);
|
||||
? `Arbeitsplatz von ${ich.sicht.name} · `
|
||||
+ `${ROLLENTEXT[zeigt.rolle] || ich.sicht.rolle_name || zeigt.rolle}`
|
||||
: (ROLLENTEXT[ich.rolle] || ich.rolle_text || ich.rolle_name || ich.rolle);
|
||||
|
||||
/* Datum und Rolle in der Anrede -- wie im Vorbild, wo unter "Noch
|
||||
wach, Dogi" das Datum steht und daneben "ADMIN & PARTNER".
|
||||
|
||||
Reference in New Issue
Block a user