Community: der Chat-Knopf fuehrte auf JEDER Seite ins Leere
ERST DIE METHODE, DANN DER FUND. An einem Tag habe ich in der Community elf Dinge gefunden, die dort nicht hingehoerten -- jedes einzelne, weil ich zufaellig hingesehen habe. Das ist keine Methode. Der Workspace ist fuer die Agentur gebaut worden, und die Community hat ihn geerbt; solche Reste findet man nicht durch Nachdenken, sondern indem man ALLE Seiten durchgeht, die ein Mitglied erreichen kann. server/pruef-community-sicht.mjs tut genau das. Sie leitet aus rechte.js ab, welche Seiten offenstehen (4) und welche nicht (27) -- von Hand aufgezaehlt waere das eine Liste, die bei der naechsten Seite niemand nachzieht --, oeffnet jede davon als Mitglied und fragt zweierlei: Fuehrt ein sichtbarer Weg auf eine verbotene Seite? Steht dort die Sprache eines Arbeitsplatzes? BEIM ERSTEN LAUF: 27 sichtbare Wege, davon ZEHN ins Leere -- und alle zehn derselbe Knopf. Der Chat steht oben rechts in der Kopfleiste, auf jeder einzelnen Seite, mit Zaehler. `chat.html` steht einem Mitglied aber nicht offen: Der Klick landet wieder auf der Startseite. Keine Meldung, kein Grund, nichts passiert -- an der Stelle, die man am ehesten drueckt. Der Knopf haengt jetzt an `darf_chat` aus /api/ich, und das kommt aus derselben Rechtetabelle wie die Schranke dahinter. Die Oberflaeche vergleicht keine Rollennamen -- das waere eine zweite Wahrheit, die bei der naechsten Rechteaenderung auseinanderlaeuft. Dieselbe Ueberlegung steht zwei Zeilen weiter oben schon einmal. UND DIE PRUEFUNG HAT GLEICH MEINEN EIGENEN FEHLER GEFUNDEN: Die erste Fassung stand in `aufbauChat`, wo es die Person gar nicht gibt -- ReferenceError auf allen zehn Seiten. Ohne den Skriptfehler-Abschnitt waere der Knopf verschwunden UND die Seite kaputt gewesen, und das haette wie ein Erfolg ausgesehen. Jetzt haengt es dort, wo die Person ankommt (`werZeigen`) -- ein vorhandener Knopf laesst sich immer entfernen, auf die Reihenfolge des Ladens zu bauen waere eine Annahme. GEGENPROBE: DogFather hat seinen Chat-Knopf weiterhin und 24 Wege auf andere Seiten. Ohne diesen Abschnitt saehe eine abgeschaffte Funktion genauso aus wie eine, die richtig entscheidet. 7 Pruefungen, 0 Fehler. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -20,6 +20,28 @@
|
||||
Steht hier und nicht in jeder Seitendatei -- jede von ihnen setzte
|
||||
bisher dieselbe Zeile selbst zusammen, vierzehnmal. */
|
||||
window.werZeigen = function (ich) {
|
||||
/* DER CHAT-KNOPF GEHOERT NICHT ZU JEDEM (18.09.2026).
|
||||
|
||||
Er wurde auf JEDER Seite gebaut. Fuer ein Mitglied der Community
|
||||
fuehrte er ins Leere: `chat.html` steht ihm nicht offen, der
|
||||
Klick landete wieder auf der Startseite -- keine Meldung, kein
|
||||
Grund, nichts passiert. Gemessen von pruef-community-sicht:
|
||||
zehn Seiten, zehn tote Wege, und der Knopf steht oben rechts,
|
||||
wo man ihn am ehesten drueckt.
|
||||
|
||||
HIER UND NICHT IN `aufbauChat`: Dort gibt es die Person nicht --
|
||||
sie kommt als Parameter in diese Funktion, und zwar je nach
|
||||
Seite frueher oder spaeter als der Knopf gebaut wird. Auf die
|
||||
Reihenfolge zu bauen waere eine Annahme; ein vorhandener Knopf
|
||||
laesst sich dagegen immer entfernen.
|
||||
|
||||
`=== false` und nicht `!`: Fehlt die Angabe (aeltere Antwort des
|
||||
Servers), bleibt alles wie bisher. Ein fehlendes Feld soll
|
||||
niemandem den Chat wegnehmen. */
|
||||
if (ich && ich.darf_chat === false) {
|
||||
document.querySelector('.chat-knopf')?.remove();
|
||||
}
|
||||
|
||||
const ziel = document.getElementById('wer');
|
||||
if (!ziel || !ich) return;
|
||||
ziel.textContent = '';
|
||||
@@ -800,6 +822,7 @@
|
||||
/* Auf der Chatseite selbst gibt es nichts zu verlinken. */
|
||||
if (/\/chat\.html$/.test(location.pathname)) return;
|
||||
|
||||
|
||||
const el = (tag, klasse, text) => {
|
||||
const k = document.createElement(tag);
|
||||
if (klasse) k.className = klasse;
|
||||
|
||||
Reference in New Issue
Block a user