Filipe: "Es darf vor allem keine Stellen geben, an denen ein Benutzer
etwas falsch machen kann, nur weil die Seite es nicht verstaendlich
genug erklaert."
Gemessen: 30 Stellen in 16 Dateien benutzten confirm() oder prompt().
Das Haus hatte die richtige Bauweise laengst -- einen <dialog>, in
aufgaben.html sogar ausfuehrlich begruendet -- aber sie stand IN EINER
SEITE. Wer anderswo etwas loeschen liess, hatte sie nicht.
confirm('Wirklich loeschen?') stellt die falsche Frage: Es fragt, ob
man sicher ist, und nennt nicht, WAS passiert, was BLEIBT und ob es
ZURUECK geht. Jetzt beantwortet jeder der 41 Dialoge alle drei.
Neu: workspace/assets/js/nachfrage.js -- window.frageNach() mit
Pflichtgrund, Zahlenfeld, einzeiliger Eingabe und Abtippsicherung.
Drei Ausgaenge: <dialog> / confirm()-Notnagel fuer Safari vor 15.4 /
Abbruch (Esc, Klick daneben, "Doch nicht" -- immer false).
DREIMAL DERSELBE FALLSTRICK, dreimal nachgemessen statt vermutet:
.dialog stand in aufgaben.css und leistung.css -> auf dateien.html
waere der Dialog ein weisser Systemkasten gewesen. 14 Regeln
klammergenau nach module.css verschoben (Klammern gezaehlt, nicht
per Muster geschnitten -- heute frueh hat ein nicht-gieriges
Muster schon einmal CSS zerrissen).
Das Formular trug .neu neu--blank -- und .neu gibt seine Abstaende
nur in aufgaben.css. Gemessen: padding 0px, und die Felder
verloren ihre height:44px. Jetzt steht alles unter
.nachfrage__form in module.css; der Dialog borgt nichts mehr.
Die erste Fassung der Pruefung zaehlte nachfrage.js SELBST als
Nutzer -- damit war jede Seite trivialerweise "Nutzer" und die
Pruefung gruen ohne Inhalt. Jetzt ausdruecklich ausgenommen.
ZWEI FUNDE NEBENBEI:
hilfeAufraeumen() wird im Betrieb NIE aufgerufen. Der Kommentar
behauptete "wird beim Start aufgerufen (siehe index.js)" -- das
war nie wahr; einziger Aufrufer ist die eigene Pruefung. Folge:
geschlossene vertrauliche Faelle bleiben unbegrenzt stehen. NICHT
eingeschaltet (das loescht echte Daten und ist Filipes
Entscheidung), sondern der Kommentar richtiggestellt.
Einen Hilfe-Fall zu schliessen ist endgueltig -- es gibt keine
Route, die ihn wieder oeffnet. Vorher stand darueber nur die
Frage nach einem Schlusswort. Jetzt sagt der Dialog es.
pruef-struktur hat meine eigene Pruefung von heute Nachmittag
erwischt: Sie bildete ihr Datum aus UTC. Beim Beheben erst
heuteLokal(datum) genommen -- die Funktion nimmt gar kein Argument
und haette still "heute" statt "+3 Tage" geliefert. Jetzt tagLokal(3),
nachgerechnet: Abstand 3 Tage.
Am Bildschirm angesehen (Rechner 1280, Handy 390): passt rein, Esc
ergibt false, Fokus liegt auf dem harmlosen Knopf, Knoepfe 44px auf
Touch. Der Platzhalter im Abtippfeld zeigte den erwarteten Namen --
das sah aus wie ein schon ausgefuelltes Feld, entfernt.
Neu: server/pruef-nachfrage.mjs -- 17/0, mit sechs Gegenproben und
beiden Richtungen (wer fragt, laedt die Datei; wer nie fragt, laedt
sie nicht -- sonst truege die Anmeldewand 4,8 KB fuer nichts).
pruef-meldungen 8/0, pruef-css-klassen gruen, pruef-struktur gruen,
pruef-leistung gruen.
119 lines
5.3 KiB
HTML
119 lines
5.3 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>Anfrage · Der Treff</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=202609191956" />
|
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
|
<link rel="stylesheet" href="assets/css/bereich.css?v=202609191956" />
|
|
<link rel="stylesheet" href="assets/css/treff.css?v=202609191956" />
|
|
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609191956" />
|
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
|
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
|
</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">Der Treff</a> · <span id="marke-was">Anfrage</span></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">
|
|
|
|
<!-- ==================================================================
|
|
DIE ANFRAGE AUS DER COMMUNITY (17.09.2026)
|
|
|
|
Filipe: „ich will dass die leute sich da anonym bei mir melden
|
|
können und eine anfrage machen können. ich will dass es
|
|
aber profissionel gemacht ist bitte wie ein fragebogen."
|
|
|
|
VERTRAULICH, NICHT NAMENLOS - seine Entscheidung. Es gibt keine
|
|
Selbstanmeldung im Treff; jeder Zugang kommt von DogFather selbst.
|
|
Eine wirklich namenlose Anfrage wäre also nicht anonymer, sondern
|
|
nur schlechter: Man könnte niemandem antworten, und aus einer
|
|
Anfrage würde nie ein Gespräch.
|
|
|
|
„Anonym" heißt hier deshalb: NIEMAND AUS DER COMMUNITY SIEHT SIE.
|
|
Nicht die anderen Mitglieder, nicht die Modis - nur DogFather und
|
|
die rechte Hand. Und das steht auf dieser Seite, bevor jemand
|
|
anfängt zu tippen, statt im Kleingedruckten darunter.
|
|
============================================================== -->
|
|
|
|
<section class="kopf-zeile">
|
|
<div>
|
|
<p class="marke">Mitmachen</p>
|
|
<!-- DER NAME DER ROLLE STEHT NICHT IN DIESER DATEI.
|
|
|
|
Sie ist ohne Anmeldung aus dem offenen Netz lesbar (gemessen
|
|
am 17.09.2026: jede Datei unter /workspace/ antwortet mit
|
|
200). Der Server schickt das Wort in seiner Antwort mit --
|
|
dieselbe Regel wie bei den Treff-Regeln und im Chat.
|
|
|
|
Was hier steht, ist die ehrliche Ueberschrift, falls die
|
|
Antwort ausbleibt: eine Anfrage ist es so oder so. -->
|
|
<h1 class="titel" id="titel">Anfrage stellen</h1>
|
|
<p class="unterzeile">
|
|
Ein paar Fragen - ehrlich beantwortet ist mehr wert als
|
|
vollständig. Du kannst zwischendurch aufhören und später
|
|
weitermachen: Deine Antworten bleiben so lange in diesem
|
|
Browser. Zu uns kommen sie erst, wenn du abschickst.
|
|
</p>
|
|
</div>
|
|
</section>
|
|
|
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
|
|
|
<p class="leise" id="ladezeile">einen Moment …</p>
|
|
|
|
<!-- Der Stand, wenn schon eine Anfrage vorliegt (oder eine Sperrfrist
|
|
läuft). Steht ganz oben: Wer hier landet und schon geschickt hat,
|
|
will als Erstes wissen, was daraus wurde - nicht das Formular
|
|
noch einmal sehen. -->
|
|
<section class="bw-stand" id="stand" hidden></section>
|
|
|
|
<form class="bw-bogen" id="bogen" hidden novalidate>
|
|
<div id="gruppen"></div>
|
|
|
|
<!-- WER DAS LIEST, steht direkt über dem Absenden-Knopf und nicht
|
|
nur oben auf der Seite. Wer hier unten ankommt, hat oben zehn
|
|
Minuten hinter sich. -->
|
|
<p class="bw-wer-liest" id="wer-liest"></p>
|
|
|
|
<div class="bw-abschluss">
|
|
<button type="submit" class="knopf" id="abschicken">Anfrage abschicken</button>
|
|
<a class="schritt" href="bereich.html?b=mitmachen">Doch nicht</a>
|
|
</div>
|
|
</form>
|
|
|
|
</main>
|
|
|
|
<!-- Der Fuß gehört zu jeder Seite - siehe pruef-css-klassen. -->
|
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
|
|
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
|
<script src="assets/js/auskunft.js?v=202609191956" defer></script>
|
|
<script src="assets/js/bewerben.js?v=202609191956" defer></script>
|
|
</body>
|
|
</html>
|