Highlights: drei Accounts nebeneinander, nach Zeit geteilt

DogFather, HasiDog und DogFather Clips haben eigene Zuschauer und
einen eigenen Ton -- das steht so schon an KANAELE im Server. Eine
gemeinsame Galerie behauptete, sie waeren ein Topf; wer fuer Clips
schneidet, suchte in jeder Reihe nach den Kacheln, die ihn angehen.

Jetzt drei Spalten nebeneinander, jede zuklappbar, jede mit ihrem
Handle und ihrer Zahl. Eine vierte Spalte gibt es nur, wenn sie
gebraucht wird: Bilder ohne TikTok-Link gehoeren zu keinem Account,
und sie verschwinden zu lassen waere der schlimmere Fehler.

Die Reihenfolge kommt vom SERVER. Der Browser hatte dafuer eine
eigene kleine Liste (KANAL_WORT) -- dieselben drei Namen in anderer
Reihenfolge, ohne Handles. Beim vierten Account waere genau diese
Kopie die vergessene.

Dazu eine Zeitleiste: Aktuell (heute), Diese Woche, Dieser Monat,
Dieses Jahr, Alles. Kalenderzeitraeume, keine Rueckblicke -- wer am
Dienstag "diese Woche" fragt, meint Montag und Dienstag. Jeder
Knopf traegt seine Zahl; ohne sie klickt man ins Leere und weiss
nicht, ob es am Filter lag.

Und beim Anlegen laesst sich der Account waehlen -- fuer Bilder und
Momente ohne Link. Bei einem TikTok-Link leitet der Server ihn
weiterhin aus dem Handle ab; das ist genauer, weil niemand sich
vertippen kann.

Beim Bauen gemessen statt vermutet: Der Spaltenkasten lag IM
Galerie-Raster von #liste und bekam eine Zelle von 376 px --
Elternbreite 1160. Die drei standen untereinander. Die Galerie
gehoert jetzt in die Spalte, nicht um sie herum.

pruef-highlights.mjs: 26 Pruefungen, mit Gegenproben (Gast bekommt
die Liste nicht, erfundener Account wird abgelehnt, zweiter Klick
hebt den Filter auf). pruef-video.mjs weiterhin 67/0.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-20 19:28:22 +02:00
co-authored by Claude Opus 5
parent d77dd216c5
commit 1bdeccc054
5 changed files with 703 additions and 3 deletions
+43 -1
View File
@@ -64,7 +64,7 @@ import {
TREFF_BRETTER, TREFF_ROLLEN, AUSSEN_ROLLEN,
heuteLokal,
gehoertAufDieseAdresse,
bereicheFuer,
bereicheFuer, kanaeleFuer, KANAELE,
} from "./workspace.js";
import { nachrichtSchicken } from "./workspace-chat.js";
import {
@@ -1500,6 +1500,22 @@ bereicheRouter.get("/workspace/api/bereich/:bereich", (req, res) => {
weg. */
kalender_offen: darfSeite(req.person, "/workspace/kalender.html")
&& gehoertAufDieseAdresse(req.person, "/workspace/kalender.html"),
/* DIE KANAELE KOMMEN VOM SERVER (20.09.2026).
Filipe: "die highlights sollen in 3 kategorien sein
nebeneinander, dogfather, hasidog und dogfather clips."
Der Browser hatte dafuer bisher eine eigene kleine Liste
(`KANAL_WORT` in bereich.js) -- in anderer Reihenfolge und
ohne die Handles. Eine zweite Fassung derselben Tatsache ist
die, die beim vierten Account vergessen wird; genau davor
warnt der Kommentar an KANAELE selbst. Deshalb kommt sie von
hier, samt Reihenfolge: DogFather, HasiDog, Clips.
`kanaeleFuer` und nicht `KANAELE`: Wer nicht zum Team gehoert,
hat mit den Accounts nichts zu tun und bekommt die Liste gar
nicht erst. */
kanaele: kanaeleFuer(req.person),
eintraege: treffBrett ? eintraege.map(mitRollenname) : eintraege,
});
} catch (fehler) {
@@ -1760,6 +1776,32 @@ function pruefe(bereich, körper, { neu }) {
else aus.einsatz = t || null;
}
/* ---- ZU WELCHEM ACCOUNT? (20.09.2026) ---------------------------
Filipe: "und wenn man was hinzufuegt soll man auch den account
auswaehlen koennen."
NUR AUF DEN HIGHLIGHTS und nur gegen die echte Kanalliste geprueft.
Ein Aufruf an der Oberflaeche vorbei soll keinen erfundenen Kanal
in die Spalte schreiben koennen -- danach stuende in der Galerie
eine vierte Spalte, die es nicht gibt, und niemand faende heraus,
woher sie kommt. Eine Regel, die nur im Formular steht, ist keine
Regel (siehe der Absatz gleich darunter).
KEIN PFLICHTFELD: Leer bedeutet "noch offen" -- ein falscher
Eintrag ist schlechter als ein leerer, genau wie an KANAELE
vermerkt. Und wer einen TikTok-Link einfuegt, bekommt den Kanal
ohnehin aus dem Handle abgeleitet; DAS ist genauer als jede
Auswahl, weil niemand sich vertippen kann. Diese Zeilen
ueberschreiben das nicht: Die Video-Route setzt `quelle_kanal`
selbst und geht hier nicht durch. */
if (bereich === "highlight" && körper.quelle_kanal !== undefined) {
const w = String(körper.quelle_kanal ?? "").trim();
if (!w) aus.quelle_kanal = null;
else if (KANAELE.some((k) => k.wert === w)) aus.quelle_kanal = w;
else fehler.push("Diesen Account gibt es nicht.");
}
/* Ein Agentur-Eintrag gehoert NIEMANDEM einzeln (07.09.2026).
Er gilt fuer alle, und genau deshalb sieht ihn auch jeder (siehe