Files
dogfather-universe/workspace/rechte.html
T
DogFatherGitandClaude Opus 5 d231e989cf Screenshots an einen Beitrag hängen
Filipe (Runde vom 23.09.2026): „mach das man da bitte screenshots
oder kurzschnitte von den live reinposten kann. nach dem selben
prinzip wie bei den anderen nebendran."

ES FEHLTE WENIGER, ALS MEINE EIGENE NOTIZ BEHAUPTETE. Dort stand „ein
eigener Brocken (Upload, Groessenpruefung, Sicherheit), kein
Nebenbei". Nachgemessen statt geglaubt: Die Spalte `dateien.eintrag_id`
gibt es seit dem Video-Einlesen, die Karten zeichnen ihren
Bildstreifen bereits, und die Auslieferung entscheidet die
Sichtbarkeit schon am BEITRAG statt an der Ablage. Gefehlt hat genau
ein Weg -- das Hochladen. Wieder ein Beleg dafuer, dass auch meine
eigenen Listen altern.

„NACH DEM SELBEN PRINZIP" IST WOERTLICH GENOMMEN: `dateiErkennen` aus
dem Chat (eine Fassung, drei Benutzer -- Chat, Support, Beitraege),
derselbe Ordner wie die Dateiablage (die Auslieferung kennt nur einen
Pfad), `express.raw` mit Rechtepruefung VOR der Annahme des Rumpfes.

DER KNOPF STEHT AN DER KARTE, nicht im Anlege-Formular. Ein
Bildschirmfoto faellt einem meist spaeter ein -- beim Nachschauen,
wenn jemand fragt. Wer es nur beim Anlegen mitgeben koennte, muesste
den Beitrag loeschen und neu schreiben. Er erscheint nur, solange
noch Platz ist (drei je Beitrag), damit er nie eine Absage bringt.

ZWEI FEHLER IN MEINEM EIGENEN CODE, beide beim ersten Laden gefunden:
`DATEN_ORDNER` war nicht importiert, und `bereichVon()` hatte ich
erfunden -- es gibt sie nicht. Der Bereich steht am Eintrag selbst
und ist dort auch richtiger: Er kommt aus der Datenbank, nicht aus
der Adresse.

UND ZWEI MESSFEHLER, beide dieselbe Sorte wie den ganzen Tag: Ich
fragte „darf die Community?" an einem Beitrag, den sie gar nicht
sieht (404 -- richtige Antwort, falsche Frage), dann an einem
freigegebenen (403 -- sie braucht eine Stufe zum Schreiben, auch das
richtig). Die Frage, die wirklich zaehlt, ist eine andere: Gilt fuer
ein Bild dieselbe Regel wie fuer einen Beitrag? Gemessen: Beitrag
403, Bild 403. Ein zweiter Weg mit anderen Rechten waere die Tuer,
die niemand bemerkt.

Gemessen: pruef-eintrag-bild, 24 Pruefungen, 0 Fehler -- darunter
als Bild getarntes HTML (415), SVG (415, es ist XML und darf Skripte
enthalten), PDF (415), die Grenze von drei am Server, und das
Abnehmen samt Datei. Gruen: pruef-highlights (31), pruef-anhaenge,
pruef-fassungen, pruef-galerie, pruef-video, pruef-css-klassen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-24 11:44:01 +02:00

148 lines
6.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>Wer sieht was · Creator Workspace</title>
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241143" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241143" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609241143" />
<link rel="stylesheet" href="assets/css/start.css?v=202609241143" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241143" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609241143" />
<link rel="stylesheet" href="assets/css/module.css?v=202609241143" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609241143" />
</head>
<body class="start">
<div class="schleier" aria-hidden="true"></div>
<header class="kopfleiste">
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
<path d="M14.5 5.5 8 12l6.5 6.5" />
</svg>
<span class="zurueck-knopf__text">Zurück</span>
</button>
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator&nbsp;Workspace</a> · Wer sieht was</span></p>
<div class="kopfleiste__rechts">
<span class="wer" id="wer">…</span>
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
</div>
</header>
<main class="inhalt inhalt--breit">
<section class="kopf-zeile">
<div>
<p class="marke">Rechte · nur für dich</p>
<h1 class="titel">Wer sieht was</h1>
<p class="unterzeile">
Nicht aufgeschrieben, sondern ausgerechnet – aus derselben Tafel,
aus der die Schranke ihre Entscheidung holt. Und umstellbar.
</p>
</div>
</section>
<p class="fehler" id="fehler" role="alert" aria-live="polite" hidden></p>
<!-- Die Leiste sagt, ob etwas von Hand gesetzt ist, und ist der Weg
zurück. Sie steht OBEN und nicht unter der Tabelle: Wer etwas
verstellt hat und es zurückdrehen will, sucht nicht erst
zweihundert Zeilen lang. -->
<div class="rechte-leiste" id="leiste" hidden></div>
<!-- ==================================================================
WARUM DIESE SEITE ÜBERHAUPT EXISTIERT
Filipe: „egal welche Rolle oder Person hinzugefügt wird, soll
immer nur das sehen, was ich erlaube."
Dazu gehört, dass er es NACHSEHEN kann. Eine Regel, die man nur
glauben kann, ist eine Zusage; eine, die man ansehen kann, ist
eine Auskunft.
Und sie ist eine Gegenprobe: Wenn hier bei einer Rolle plötzlich
zwanzig Punkte stehen, wo gestern drei waren, sieht man das in
einer Sekunde. In 74 Rollenabfragen über 20 Module sieht man es
nie.
============================================================== -->
<section class="treff-abschnitt">
<h2 class="treff-abschnitt__titel">Wie viele Seiten je Rolle</h2>
<div class="treff-abschnitt__inhalt">
<p>
Das ist die Zahl, um die es geht. Eine neue Rolle startet bei
<strong>null</strong> – sie bekommt nichts, bis es jemand einträgt.
</p>
</div>
<ul class="rechte-zahlen" id="zahlen">
<li class="leise">wird geladen …</li>
</ul>
</section>
<section class="treff-abschnitt">
<h2 class="treff-abschnitt__titel">Die ganze Tafel</h2>
<div class="treff-abschnitt__inhalt">
<p>
Ein Punkt heißt: diese Rolle darf diese Seite öffnen. Leer heißt
nein – und zwar auch dann, wenn niemand je darüber nachgedacht hat.
Das ist der Unterschied zu vorher.
</p>
<p>
<strong>Ein Klick stellt um</strong>, und er wird sofort gespeichert –
kein Knopf am Ende, an dem eine halbe Änderung verlorengeht. Ein
heller Rahmen heißt: <em>dieses Feld ist von Hand gesetzt</em> und
weicht vom Grundstand im Code ab.
</p>
<p class="leise">
Drei Felder sind fest: Du kannst dir selbst die Rechte-, die Personen-
und die Startseite nicht wegnehmen – sonst käme niemand mehr an die
Rechte, an die Zugänge oder auf die Startseite.
</p>
</div>
<div class="rechte-tafel" id="tafel" aria-busy="true">
<p class="leise">wird geladen …</p>
</div>
</section>
<section class="treff-abschnitt">
<h2 class="treff-abschnitt__titel">Ohne Anmeldung</h2>
<div class="treff-abschnitt__inhalt">
<p>
Diese Seiten sind offen – man kann sich schlecht anmelden, wenn die
Anmeldeseite eine Anmeldung verlangt. Jede andere Seite ist zu.
</p>
<ul class="regel-liste" id="offen"><li class="leise">wird geladen …</li></ul>
</div>
</section>
</main>
<!-- WER kopf.js LAEDT, MUSS AUCH wahl.js LADEN (Regel seit 07.09.2026).
Der Umschalter "Meine Sicht" in der Kopfleiste ist ein selbst
gebautes Bedienelement; dahinter liegt ein unsichtbares Systemfeld
fuer Vorleseprogramme. Ohne wahl.js faellt kopf.js auf dieses Feld
zurueck -- ein grauer Kasten von 92 x 19 Pixeln mit weisser
Schrift, mitten in einer dunklen Leiste.
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
die seit dem 07.09. jede Seite danach absucht. -->
<script src="assets/js/meldung.js?v=202609241143" defer></script>
<script src="assets/js/nachfrage.js?v=202609241143" defer></script>
<script src="assets/js/wahl.js?v=202609241143" defer></script>
<script src="assets/js/bereiche.js?v=202609241143" defer></script>
<script src="assets/js/installieren.js?v=202609241143" defer></script>
<script src="assets/js/kopf.js?v=202609241143" defer></script>
<script src="assets/js/glocke.js?v=202609241143" defer></script>
<script src="assets/js/holen.js?v=202609241143" defer></script>
<script src="assets/js/rechte.js?v=202609241143" defer></script>
</body>
</html>