ZWEI SACHEN, EINE DAVON EIN ECHTER BEFUND. 1) DIE KARTEN KAMEN AN DER RECHTETAFEL VORBEI Der Bauplan sagt in Kapitel 04 und noch einmal in der Abnahme: "Leite die sichtbaren Karten aus derselben Rechte-Tafel ab, die rechte.html verwendet. Eine Rolle sieht nur Karten zu Seiten, die sie oeffnen darf; pruefe das SERVERSEITIG." Ich habe dafuer eine Pruefung geschrieben, die die Seite ueber die ECHTE Schnittstelle sperrt (nicht mit einem UPDATE in der Datenbank -- nur so laeuft tafelLaden() mit). Sie wurde sofort rot: Nach dem Sperren von bereich.html fuer einen Modi lieferte der Server weiterhin ALLE ELF Bereichs-Karten. Im Browser fiel das nicht auf, und das ist der heikle Teil: Die Seite verbindet jede Karte mit einer Kachel, und die Kachelliste ist gefiltert -- die Karten verschwanden also auf dem Bildschirm. Die TEXTE gingen trotzdem hinaus. Eine Oberflaeche, die etwas nicht anzeigt, ist keine Schranke; genau deshalb steht im Bauplan "serverseitig". Jetzt siebt `darfKarte()` an der Quelle. Der Pfad wird aus dem Schluessel GERECHNET (`bereich:highlight` -> /workspace/bereich.html), nicht aus einer Zuordnungsliste -- das ist die Umkehrung von `schluesselVonZiel`, und eine gepflegte Tabelle daneben waere die, die beim naechsten neuen Brett fehlt. Entschieden wird mit `darfSeite` selbst; hier wird nichts davon nachgebaut. Gegenprobe in derselben Pruefung: zuruecksperren -> die Karten sind wieder da (29 von 29). Und eine Zeile dazwischen, die zaehlt, dass NUR sie verschwunden sind -- waere mit der Sperre die halbe Anleitung weggefallen, waere die erste Zeile auch gruen gewesen. 2) „AB DABEI" UND „AB STAMM" AN DER KARTE (Kapitel 04) "Kann ein Community-Mitglied etwas wegen seiner Stufe noch nicht, steht das an der Karte." Auch das abgeleitet: aus TREFF_SCHREIBEN, derselben Tafel, die das Schreiben ENTSCHEIDET. `null` darin heisst "von aussen schreibt hier niemand" -- das ist keine Stufe, die man erreicht, und bekommt deshalb keine Marke. "ab Stamm" an einem Anschlagbrett waere ein Versprechen, das nie eingeloest wird. Als Wort, nicht als Schloss-Symbol: Ein Schloss sagt "du darfst nicht" und laesst offen, ob jemals. "ab Dabei" sagt, dass es kommt -- und wann, steht mit Datum in der Karte "Deine Stufe" darueber. Ruhig gestaltet, nicht rot: Es ist keine Sperre, sondern eine Auskunft ueber die Zeit. GEPRUEFT (pruef-anleitung 166 -> 173) Die wichtigste der neuen Zeilen ist die, dass die Marke nach dem Aufstieg VERSCHWINDET. Eine Marke, die bleibt, ist schlimmer als keine: Sie sagt jemandem, er duerfe etwas nicht, das er laengst darf, und er probiert es gar nicht erst. Gemessen an drei Karten mit drei verschiedenen Antworten (Chat: Dabei, Highlights: Stamm, Anschlagbrett: gar nichts) -- waere die Rechnung grob falsch, traefe sie alle drei gleich. Dazu die Gegenprobe, dass eine Teamrolle keine einzige solche Marke bekommt. Mitgelaufen: pruef-rechtetafel 19, pruef-rechte-umstellen 56, pruef-css-klassen, pruef-tippziele 13 -- alle gruen. Die Abnahmezahlen aus Kapitel 13 (14/29/29/34 mit ihrer Aufteilung) sind nach dem neuen Sieb unveraendert; das ist der Beleg, dass es im Normalfall nichts wegnimmt. Im Browser nachgemessen (390 px, echte Anmeldung): Community sieht vier Marken (Rudel-Chat, Wunschliste, Mitmachen „ab Dabei", Highlights „ab Stamm"), die rechte Hand keine einzige. Co-Authored-By: Claude Opus 5 <[email protected]>
126 lines
5.5 KiB
HTML
126 lines
5.5 KiB
HTML
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||
<title>Talente · Spicy & Dogi</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=202610061743" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610061743" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202610061743" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202610061743" />
|
||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610061743" />
|
||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202610061743" />
|
||
<!-- Wegen des Kastens „Anfragen“ ueber der Liste. Eine eigene Kopie
|
||
der Regel hier waere die zweite Stelle, an der dieselbe Sache
|
||
anders aussieht. -->
|
||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202610061743" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202610061743" />
|
||
<link rel="stylesheet" href="assets/css/haus.css?v=202610061743" />
|
||
</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">Team Dogi</a> · Talente</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">Entwicklung & Nachwuchs</p>
|
||
<h1 class="titel">Talente</h1>
|
||
<p class="unterzeile">
|
||
Zuschauer, die ins Team passen könnten. Ein Trichter, keine Liste –
|
||
jede Stufe hat genau einen nächsten Schritt.
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<!-- DIE ANFRAGEN GEHOEREN AN DEN ANFANG DIESES TRICHTERS.
|
||
|
||
Wer sich selbst meldet, ist ein Kandidat wie jeder andere -- nur
|
||
dass er die erste Frage ("besteht ueberhaupt Interesse?") schon
|
||
beantwortet hat. Deshalb steht der Weg dorthin auf DIESER Seite
|
||
und nicht als eigene Kachel daneben: Sonst waere aus einem Weg
|
||
zwei Seiten geworden, die man abwechselnd aufmacht.
|
||
|
||
Der Kasten steht ueber der Liste, weil eine unbeantwortete
|
||
Anfrage dringender ist als ein Kandidat, der seit Wochen
|
||
beobachtet wird. -->
|
||
<section id="anfragen-tor" class="bw-tor" hidden></section>
|
||
|
||
<!-- ==================================================================
|
||
HIER STEHEN NAMEN VON MENSCHEN, DIE NICHTS DAVON WISSEN.
|
||
|
||
Diese Seite gehört DogFather und der rechten Hand — sonst niemand,
|
||
keine Agentur, und ganz sicher nicht die Community. Durchgesetzt
|
||
wird das in der Rechtetafel UND in workspace-entwicklung.js; der
|
||
Satz hier ist nur die Erinnerung daran, warum.
|
||
|
||
Deshalb gibt es auch keine Rückmeldung an einen Kandidaten und
|
||
keinen heimlichen Test mit einem Zweitkonto. Wer beobachtet wird,
|
||
ohne es zu wissen, hat ein Recht darauf, dass daraus nichts
|
||
Öffentliches wird.
|
||
============================================================== -->
|
||
|
||
<!-- DER ZUGANGSCODE STEHT AUSSERHALB DER LISTE, und das ist kein
|
||
Schönheitsgrund. Die Liste wird nach jeder Änderung neu
|
||
gezeichnet – stünde der Kasten darin, wäre der Code in genau dem
|
||
Moment wieder weg, in dem er entsteht: wenn die Karte auf „Im
|
||
Team“ springt.
|
||
|
||
DERSELBEN KLASSEN WIE IN „PERSONEN & ZUGÄNGE“. Ein Geheimnis
|
||
sieht im ganzen Haus gleich aus – zwei Gestaltungen für dieselbe
|
||
Sache wären zwei Gelegenheiten, eine davon falsch zu machen. -->
|
||
<div class="code-kasten" id="code-kasten" hidden role="status" aria-live="polite">
|
||
<p class="code-kasten__schild">Zugangscode für <span id="code-name"></span></p>
|
||
<p class="code-kasten__code" id="code-wert"></p>
|
||
<p class="code-kasten__hinweis">
|
||
Dieser Code wird <strong>nur jetzt</strong> angezeigt und ist danach nicht mehr
|
||
abrufbar. Persönlich weitergeben und in Bitwarden ablegen.
|
||
</p>
|
||
<div class="t-text__knoepfe">
|
||
<button type="button" class="knopf knopf--klein" id="code-kopieren">Kopieren</button>
|
||
<button type="button" class="abmelden" id="code-schliessen">Verstanden, schließen</button>
|
||
</div>
|
||
</div>
|
||
|
||
<section id="trichter" class="t-trichter" aria-busy="true"></section>
|
||
|
||
<section id="liste" class="t-liste" aria-busy="true">
|
||
<p class="leise">wird geladen …</p>
|
||
</section>
|
||
|
||
</main>
|
||
|
||
<script src="assets/js/meldung.js?v=202610061743" defer></script>
|
||
<script src="assets/js/nachfrage.js?v=202610061743" defer></script>
|
||
|
||
<script src="assets/js/wahl.js?v=202610061743" defer></script>
|
||
<script src="assets/js/bereiche.js?v=202610061743" defer></script>
|
||
<script src="assets/js/installieren.js?v=202610061743" defer></script>
|
||
<script src="assets/js/kopf.js?v=202610061743" defer></script>
|
||
<script src="assets/js/glocke.js?v=202610061743" defer></script>
|
||
<script src="assets/js/holen.js?v=202610061743" defer></script>
|
||
<script src="assets/js/talente.js?v=202610061743" defer></script>
|
||
</body>
|
||
</html>
|