pruef-modi-wortleck war rot und meldete 17 Fundstellen -- seit Wochen,
bei jedem Lauf. Eine Warnung, die immer kommt, wird ueberlesen, und
dann auch die echte.
ERST GEMESSEN, OB DIE REGEL UEBERHAUPT NOCH GILT. Seit dem 11.09. gibt
es die eigene Adresse crew. mit einem offenen Modi-Knopf an der Wand --
es waere gut moeglich gewesen, dass die Pruefung etwas bewacht, das es
nicht mehr gibt. Sie gilt: pruef-modi-verborgen setzt mit 80 Pruefungen
durch, dass ein Manager keinen Modi sieht.
UND DABEI KAM ETWAS SCHLIMMERES HERAUS. Auf der echten Seite gemessen:
/workspace/start.html 302 (Anmeldung noetig)
/workspace/assets/js/talente.js 200 25 KB Quelltext
/workspace/assets/js/chat.js 200 85 KB
/workspace/assets/css/entwicklung.css 200 34 KB
Jede Datei unter workspace/ ist OHNE JEDE ANMELDUNG aus dem offenen
Netz abrufbar. Der verborgene Zugang stand also nicht in einer Datei,
die "jeder herunterlaedt, der angemeldet ist" -- sondern in einer, die
man einfach abrufen kann.
Die Rollentabelle in workspace.js sagt seit dem 11.09. genau das
Richtige dazu: "Der Name steht hier und NICHT in einer Datei, die jeder
herunterlaedt -- ausgeliefert wird er nur an den, der ihn selbst
traegt, und an die, die ihn sehen duerfen." Danach ist jetzt gebaut,
ueberall:
- talente.js hatte `rolle: 'modi'` fest im Text, dazu den Namen im
Codekasten und im Rechtevergleich. Die Seite FRAGT ihn jetzt ab;
/talente/lage liefert ihn, und die Route geht nur an DogFather und
die rechte Hand.
- Der Regeltext des Treffs nennt den Namen weiterhin -- Filipe hat am
11.09. ausdruecklich gewaehlt, dass die Community ihn sieht. Er
kommt jetzt als DATEN mit der Antwort, nicht als fester Text.
- Das Feld hiess selbst `modi_frist_tage`. Das Muster \bmodi\b trifft
das nicht, weil danach ein Unterstrich folgt -- ein Leck durch eine
Luecke im Muster, nicht durch eine Entscheidung. Heisst jetzt
`pause_frist_tage`.
- Die uebrigen elf Fundstellen waren Kommentare. Umformuliert, ohne
dass sie weniger erklaeren.
Ergebnis: 17 -> 0. Ohne Ausnahmeliste, ohne die Pruefung zu entschaerfen.
ZWEI LOECHER, DIE ICH DABEI SELBST GERISSEN HAETTE:
darfAnlegen wurde aus `lage` gerechnet -- aber ichHolen() laeuft VOR
laden(), also war `lage` noch null. Der Wert waere dauerhaft falsch
gewesen und der Knopf nie erschienen. Jetzt ist es eine Frage statt
eines Wertes, beantwortet beim Zeichnen. Gefunden beim Nachsehen der
Reihenfolge, nicht im Testlauf -- deshalb steht die Frage ab jetzt in
pruef-uebergang.
Und im HTML des Treffs steht als Ersatzfassung "jemandem aus dem
Team". Kommt der Name nicht an, bleibt sie stehen, die Seite sieht
vollkommen richtig aus, und niemand merkt es. Ein Platzhalter "…"
waere aufgefallen; eine richtige Ersatzfassung faellt nicht auf.
pruef-neue-seiten prueft jetzt, dass wirklich der Name dasteht.
pruef-modi-wortleck 0 Fehler (vorher 17 Fundstellen)
pruef-uebergang 65 (vorher 61), pruef-neue-seiten 97 (vorher 93)
pruef-modi-verborgen 80, pruef-nachwuchs 123, pruef-treff 66,
pruef-treff-werkzeuge 70, pruef-css-klassen -- alle 0 Fehler
Co-Authored-By: Claude Opus 5 <[email protected]>
388 lines
18 KiB
HTML
388 lines
18 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>Kalender · Spicy & Dogi</title>
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
||
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
||
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||
eine Flaeche sind statt zweier. -->
|
||
<meta name="theme-color" content="#06090f" />
|
||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609161659" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609161659" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202609161659" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202609161659" />
|
||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609161659" />
|
||
<link rel="stylesheet" href="assets/css/kalender.css?v=202609161659" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202609161659" />
|
||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||
<link rel="stylesheet" href="assets/css/haus.css?v=202609161659" />
|
||
</head>
|
||
|
||
<body class="start">
|
||
|
||
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
|
||
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
|
||
Pseudo-Elements -- body hat nur ::before und ::after. -->
|
||
<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 Workspace</a> · Kalender</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">
|
||
|
||
<!-- Der Zeitraum ist die Überschrift, nicht eine Beschriftung neben
|
||
Knöpfen: Man liest zuerst, WO man ist, und bewegt sich dann. -->
|
||
<section class="k-kopf">
|
||
<div class="k-kopf__titel">
|
||
<h1 class="k-zeitraum" id="zeitraum">…</h1>
|
||
<p class="k-kopf__unter" id="zeitraum-unter"></p>
|
||
</div>
|
||
<div class="k-nav">
|
||
<button type="button" class="knopf-still k-pfeil" id="zurueck-zeit" aria-label="Vorheriger Zeitraum">‹</button>
|
||
<button type="button" class="knopf-still" id="heute-knopf">Heute</button>
|
||
<button type="button" class="knopf-still k-pfeil" id="vor-zeit" aria-label="Nächster Zeitraum">›</button>
|
||
<button type="button" class="knopf knopf--klein" id="neu-oeffnen">Neuer Termin</button>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Zwei Reihen, die zwei VERSCHIEDENE Fragen beantworten – und deshalb
|
||
beschriftet sind:
|
||
"Als Nächstes" blickt ab heute nach vorn und ändert sich NICHT
|
||
beim Blättern
|
||
"Im September" beschreibt den Monat, den man gerade ansieht
|
||
Ohne Überschriften wären zwei gleich aussehende Reihen verwirrend. -->
|
||
<!-- ==== ALLES DREI IN EINER KACHEL (08.09.2026) =================
|
||
Filipe: "ich will dass das alles in einer geilen kachel ist wie
|
||
die kacheln in der start seite. und noch geiler."
|
||
|
||
Die drei Abschnitte -- was als Naechstes ansteht, was in diesem
|
||
Monat liegt, was von allein weiterlaeuft -- standen frei auf dem
|
||
Hintergrundbild. Drei Ueberschriften ohne Fassung lesen sich als
|
||
drei lose Listen; zusammen sind sie EINE Auskunft: was ausser den
|
||
Terminen im Kalender sonst noch kommt.
|
||
|
||
Der Umschlag traegt die Kacheloptik der Startseite (Fase, Raster,
|
||
Innenschatten), die drei Abschnitte darin nur noch ihre
|
||
Ueberschrift. Faellt alles drei weg, verschwindet auch die
|
||
Kachel -- siehe `:has()` in kalender.css. -->
|
||
<section class="k-anlasskachel">
|
||
|
||
<section class="k-leiste" id="saison-block" hidden>
|
||
<p class="feldschild">Als Nächstes</p>
|
||
<div class="k-anlassreihe" id="saison"></div>
|
||
</section>
|
||
|
||
<section class="k-leiste" id="monat-block" hidden>
|
||
<p class="feldschild" id="monat-titel">Im Monat</p>
|
||
<div class="k-anlassreihe" id="monatsanlaesse"></div>
|
||
</section>
|
||
|
||
<!-- Die laufenden Wiederholungen. Steht bewusst über dem Kalender und
|
||
nicht in einem Menü versteckt: Was von allein weiterläuft, muss
|
||
man sehen können, sonst weiß nach drei Monaten niemand mehr,
|
||
warum jeden Dienstag ein Call im Kalender steht. -->
|
||
<section class="k-leiste k-serien" id="serien-block" hidden>
|
||
<p class="feldschild">Läuft von allein</p>
|
||
<div class="k-serienliste" id="serien"></div>
|
||
</section>
|
||
|
||
</section><!-- /.k-anlasskachel -->
|
||
|
||
<form class="neu" id="neu" hidden>
|
||
<div class="neu__zeile">
|
||
<label class="feld-schild" for="f-titel">Worum geht es?</label>
|
||
<input id="f-titel" maxlength="160" placeholder="z. B. Wochen-Call mit Luna" required />
|
||
</div>
|
||
<div class="neu__raster">
|
||
<div>
|
||
<label class="feld-schild" for="f-art">Art</label>
|
||
<!-- NEUN ARTEN, IN ZWEI GRUPPEN (08.09.2026).
|
||
|
||
Die Gruppen sind nicht Deko: Die ersten drei sind INTERNE
|
||
Termine, die anderen sechs sind AUFTRITTE. Das ist der
|
||
Unterschied, nach dem man sucht ("ist das ein Arbeitstermin
|
||
oder ein Stream?"), und eine Liste aus neun gleichrangigen
|
||
Zeilen laesst ihn nicht erkennen. -->
|
||
<select id="f-art">
|
||
<optgroup label="Intern">
|
||
<option value="call" selected>Call</option>
|
||
<option value="termin">Termin</option>
|
||
<option value="review">Review</option>
|
||
</optgroup>
|
||
<optgroup label="Auftritt">
|
||
<option value="bigmatch">BigMatch</option>
|
||
<option value="turnier">Turnier</option>
|
||
<option value="special">Special-Live</option>
|
||
<option value="collab">Collab</option>
|
||
<option value="raid">Raid-Train</option>
|
||
<option value="charity">Charity</option>
|
||
</optgroup>
|
||
</select>
|
||
</div>
|
||
<div>
|
||
<label class="feld-schild" for="f-beginn">Beginn</label>
|
||
<input id="f-beginn" type="datetime-local" required />
|
||
</div>
|
||
<div>
|
||
<label class="feld-schild" for="f-dauer">Dauer <span class="feld-schild__still">Minuten</span></label>
|
||
<input id="f-dauer" type="number" min="5" max="1440" step="5" value="30" />
|
||
</div>
|
||
<!-- Wiederholen. Die Auswahl wird erst beim Öffnen gefüllt, weil
|
||
ihre Beschriftungen vom gewählten Datum abhängen: "jeden
|
||
Dienstag", "jeden Monat am 2." – so muss niemand raten, was
|
||
ein Rhythmus im eigenen Fall bedeutet. -->
|
||
<div>
|
||
<label class="feld-schild" for="f-takt">Wiederholen</label>
|
||
<select id="f-takt">
|
||
<option value="">Einmalig</option>
|
||
</select>
|
||
</div>
|
||
<div id="feld-teilnehmer" hidden>
|
||
<label class="feld-schild" for="f-teilnehmer">Mit wem</label>
|
||
<select id="f-teilnehmer"><option value="">—</option></select>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- WER SONST NOCH DABEI IST (05.09.2026).
|
||
Wunsch: "ich will auch 2 leute markieren können mit denen der
|
||
call ist."
|
||
|
||
Einzelne Schalter statt eines <select multiple>: Das verliert
|
||
bei einem Fehlklick die ganze Auswahl und ist am Handy kaum zu
|
||
bedienen.
|
||
|
||
FÜR JEDE ROLLE, nicht nur für die Leitung (05.09.2026:
|
||
*"das soll für jeden verfügbar sein"*). Das ist ohne Risiko,
|
||
weil nicht die Oberfläche entscheidet, wen man auswählen darf,
|
||
sondern der Server: /api/personen liefert jeder Rolle nur die
|
||
zugeteilten Namen, und teilnehmerSetzen() lässt alles andere
|
||
still weg. Ein Creator sieht hier also seine Betreuer, keine
|
||
fremden Creator.
|
||
|
||
Die Klassen heißen k-dabei__* und stehen in kalender.css.
|
||
Vorher waren es die .wahl__*-Klassen aus dateien.css -- die
|
||
diese Seite gar nicht einbindet, weshalb die Namen ohne jeden
|
||
Abstand aneinanderklebten. -->
|
||
<div id="feld-dabei" hidden>
|
||
<p class="feld-schild">Wer ist noch dabei?</p>
|
||
<div class="k-dabei" id="dabei-wahl"></div>
|
||
<p class="leise" id="dabei-hinweis"></p>
|
||
</div>
|
||
|
||
<!-- Erscheint nur, wenn ein Rhythmus gewählt ist. Der Satz darunter
|
||
sagt in Worten, was gleich passiert – eine Regel, die man nicht
|
||
vorlesen kann, stellt man später nicht mehr richtig ab. -->
|
||
<div class="neu__zeile k-wdh" id="feld-wdh" hidden>
|
||
<div class="k-wdh__ende">
|
||
<label class="feld-schild" for="f-ende">Läuft bis
|
||
<span class="leise">(leer = bis du sie abstellst)</span></label>
|
||
<input id="f-ende" type="date" />
|
||
</div>
|
||
<p class="k-wdh__satz" id="wdh-satz" aria-live="polite"></p>
|
||
</div>
|
||
<div class="neu__zeile">
|
||
<label class="feld-schild" for="f-ort">Ort oder Link <span class="leise">(optional)</span></label>
|
||
<input id="f-ort" maxlength="400" placeholder="Discord, Meet-Link, Adresse …" />
|
||
</div>
|
||
<div class="neu__zeile">
|
||
<label class="feld-schild" for="f-text">Notiz <span class="leise">(optional)</span></label>
|
||
<textarea id="f-text" rows="2" maxlength="4000"></textarea>
|
||
</div>
|
||
<p class="fehler" id="neu-fehler" role="alert" aria-live="polite"></p>
|
||
<div class="neu__knoepfe">
|
||
<button type="submit" class="knopf knopf--klein" id="neu-speichern">Eintragen</button>
|
||
<button type="button" class="abmelden" id="neu-abbrechen">Abbrechen</button>
|
||
</div>
|
||
</form>
|
||
|
||
|
||
|
||
|
||
<!-- KALENDER ABONNIEREN (06.09.2026, Stufe 3.2 des Plans).
|
||
|
||
Steht unten und zugeklappt: Man richtet ihn EINMAL ein und sieht
|
||
ihn danach nie wieder an. Ein Kasten, der dauerhaft Platz nimmt,
|
||
obwohl er einmal im Leben gebraucht wird, drängt sich vor die
|
||
Termine – und um die geht es hier.
|
||
|
||
Warum es das überhaupt gibt: Der Workspace kann benachrichtigen,
|
||
aber er kann nicht verhindern, dass jemand einen Zahnarzttermin
|
||
auf denselben Dienstag legt. Das kann nur ein Kalender, der die
|
||
Termine dort hat, wo ohnehin nachgesehen wird. -->
|
||
<details class="k-abo" id="abo-block">
|
||
<summary class="k-abo__kopf">
|
||
<span class="k-abo__titel">In deinen eigenen Kalender holen</span>
|
||
<span class="k-abo__unter">Google, Apple, Outlook – einmal einrichten, dann läuft es</span>
|
||
</summary>
|
||
<div class="k-abo__inhalt">
|
||
<p class="k-abo__satz" id="abo-satz">
|
||
Du bekommst einen persönlichen Link. Wer ihn hat, sieht deine Termine –
|
||
gib ihn also nicht weiter. Falls doch: Du kannst ihn jederzeit ersetzen,
|
||
der alte ist dann sofort tot.
|
||
</p>
|
||
|
||
<div class="k-abo__zeile" id="abo-hat" hidden>
|
||
<input class="k-abo__feld" id="abo-link" readonly aria-label="Dein Kalender-Link" />
|
||
<button type="button" class="knopf knopf--klein" id="abo-kopieren">Kopieren</button>
|
||
</div>
|
||
|
||
<p class="k-abo__stand" id="abo-stand"></p>
|
||
|
||
<div class="k-abo__knoepfe">
|
||
<button type="button" class="knopf knopf--klein" id="abo-erzeugen">Link erzeugen</button>
|
||
<button type="button" class="abmelden" id="abo-neu" hidden>Neuen Link erzeugen</button>
|
||
<button type="button" class="abmelden abmelden--warnung" id="abo-aus" hidden>Abschalten</button>
|
||
</div>
|
||
|
||
<p class="k-abo__hilfe" id="abo-hilfe" hidden>
|
||
<strong>So trägst du ihn ein:</strong>
|
||
<span class="k-abo__weg">Google Kalender: links unten bei „Weitere Kalender“ auf das Plus,
|
||
dann „Per URL“ – Link einfügen – „Kalender hinzufügen“.</span>
|
||
<span class="k-abo__weg">iPhone: Einstellungen → Apps → Kalender → Accounts →
|
||
Account hinzufügen → Andere → Kalenderabo hinzufügen – Link einfügen.</span>
|
||
<span class="k-abo__weg">Outlook: Kalender → Kalender hinzufügen → Aus dem Internet abonnieren.</span>
|
||
<span class="k-abo__weg leise">Die Kalender holen neue Termine selbst ab – meist innerhalb
|
||
weniger Stunden, nicht sofort. Das legen Google und Apple fest, nicht wir.</span>
|
||
</p>
|
||
|
||
<p class="fehler" id="abo-fehler" role="alert" aria-live="polite"></p>
|
||
</div>
|
||
</details>
|
||
|
||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<!-- Vier Ansichten auf DENSELBEN Daten. Der Server liefert einen
|
||
Zeitraum, hier wird er nur unterschiedlich dargestellt – so kann
|
||
keine Ansicht etwas anderes zeigen als die andere. -->
|
||
<div class="k-werkzeuge">
|
||
<div class="k-ansichten" role="group" aria-label="Ansicht">
|
||
<button type="button" class="k-ansicht" data-ansicht="monat" aria-pressed="true">Monat</button>
|
||
<button type="button" class="k-ansicht" data-ansicht="woche" aria-pressed="false">Woche</button>
|
||
<button type="button" class="k-ansicht" data-ansicht="liste" aria-pressed="false">Liste</button>
|
||
<button type="button" class="k-ansicht" data-ansicht="zeitstrahl" aria-pressed="false">Zeitstrahl</button>
|
||
</div>
|
||
|
||
<!-- ==== BLÄTTERN, DIREKT ÜBER DEM KALENDER (09.09.2026) ==========
|
||
|
||
Filipe, mit Bildschirmfoto: "ich will dass genau da über dem
|
||
kalender auch noch buttons sind um den monat zu wechseln, tage
|
||
wechseln ... lass die neuen auch richtig geil aussehen, die
|
||
einen rot und die anderen grün von den neuen."
|
||
|
||
Die Pfeile gab es schon -- oben neben der Überschrift, einen
|
||
halben Bildschirm entfernt vom Raster, das sie bewegen. Wer
|
||
durch Monate blättert, sieht auf das Raster und nicht auf die
|
||
Überschrift; der Weg dorthin war jedes Mal ein Blicksprung.
|
||
|
||
WARUM SIE TROTZDEM BESCHRIFTET SIND und nicht nur ‹ › heißen:
|
||
Ein Pfeil sagt nicht, WIE WEIT er springt. In der Monatsansicht
|
||
ist ein Schritt ein Monat, in der Wochenansicht eine Woche, in
|
||
Liste und Zeitstrahl sechs Wochen. Genau das steht jetzt drauf
|
||
und wird beim Umschalten mitgeführt (kalender.js). -->
|
||
<div class="k-schritte" role="group" aria-label="Zeitraum wechseln">
|
||
<button type="button" class="k-schritt k-schritt--zurueck" id="schritt-zurueck">
|
||
<span class="k-schritt__pfeil" aria-hidden="true">‹</span>
|
||
<span class="k-schritt__text" id="schritt-zurueck-text">Monat zurück</span>
|
||
</button>
|
||
<button type="button" class="k-schritt k-schritt--heute" id="schritt-heute">Heute</button>
|
||
<button type="button" class="k-schritt k-schritt--vor" id="schritt-vor">
|
||
<span class="k-schritt__text" id="schritt-vor-text">Monat vor</span>
|
||
<span class="k-schritt__pfeil" aria-hidden="true">›</span>
|
||
</button>
|
||
</div>
|
||
|
||
<div class="k-filter" id="filter"></div>
|
||
</div>
|
||
|
||
<div id="kalender" aria-busy="true"><p class="leise">Kalender wird geladen …</p></div>
|
||
|
||
<!-- Der Tagesdialog. Als echtes <dialog>: Esc schließt, der Tastaturfokus
|
||
bleibt drin, und der Rest der Seite ist für Vorleseprogramme still –
|
||
das alles bringt das Element mit, ohne dass es nachgebaut wird. -->
|
||
<!-- DIE FASSUNG UND DAS GLAS SIND ZWEI EBENEN (screen2, 09.09.2026).
|
||
Der <dialog> selbst traegt nur noch die Fase und den
|
||
Farbverlauf der Fassung; alles Sichtbare liegt in
|
||
`.k-dialog__glas` darin. Ohne diese zweite Ebene muesste die
|
||
Fassung ein `border` sein -- und ein Rand folgt dem Rechteck,
|
||
nicht der abgeschraegten Ecke. Dieselbe Bauart wie bei der
|
||
Zentrale und der Rollenkachel auf der Anmeldeseite. -->
|
||
<dialog id="tagdialog" class="k-dialog" aria-labelledby="tagdialog-titel">
|
||
<div class="k-dialog__glas">
|
||
<div class="k-dialog__kopf">
|
||
<div>
|
||
<strong id="tagdialog-titel" class="k-dialog__titel">…</strong>
|
||
<span id="tagdialog-unter" class="k-dialog__unter"></span>
|
||
</div>
|
||
<button type="button" class="knopf-still" id="tagdialog-zu" aria-label="Schließen">✕</button>
|
||
</div>
|
||
<div id="tagdialog-anlaesse" class="k-dialog__anlaesse"></div>
|
||
<div id="tagdialog-liste" class="k-dialog__liste"></div>
|
||
<div class="k-dialog__fuss">
|
||
<button type="button" class="knopf knopf--klein" id="tagdialog-neu">Hier eintragen</button>
|
||
<span class="k-dialog__tipp">Esc schließt</span>
|
||
</div>
|
||
</div><!-- /.k-dialog__glas -->
|
||
</dialog>
|
||
|
||
<!-- ====================================================================
|
||
DER WECKER (07.09.2026)
|
||
|
||
Filipe: "wie so ein wecker, den man in den eintraegen aktivieren
|
||
oder ausschalten kann ... auch mehrmals informiert."
|
||
|
||
Ein eigener Dialog und kein Aufklapp-Feld im Tagesfenster: Der
|
||
Wecker gehoert zu EINEM Termin, und im Tagesfenster stehen mehrere.
|
||
Ein Feld, das sich dort aufklappt, schiebt alles darunter weg --
|
||
man verliert die Zeile, die man gerade angesehen hat.
|
||
|
||
<dialog> statt eines selbstgebauten Kastens: Es bringt das
|
||
Wichtigste mit, was man sonst vergisst -- Escape schliesst, der
|
||
Tastaturfokus bleibt darin gefangen, und der Rest der Seite ist
|
||
fuer Vorleseprogramme abgemeldet. -->
|
||
<dialog class="tagdialog wecker-dialog" id="wecker-dialog" aria-labelledby="wecker-titel">
|
||
<div class="tagdialog__kopf">
|
||
<div>
|
||
<h2 class="titel" id="wecker-titel">Erinnerung</h2>
|
||
<p class="leise" id="wecker-wann"></p>
|
||
</div>
|
||
<button type="button" class="knopf-still" id="wecker-zu" aria-label="Schließen">✕</button>
|
||
</div>
|
||
<p class="leise wecker-hinweis">
|
||
Nur für dich. Andere Teilnehmer stellen ihre Erinnerungen selbst ein.
|
||
</p>
|
||
<div class="wecker-liste" id="wecker-liste"></div>
|
||
<p class="fehler" id="wecker-fehler" role="alert" aria-live="polite"></p>
|
||
</dialog>
|
||
|
||
</main>
|
||
|
||
<script src="assets/js/wahl.js?v=202609161659" defer></script>
|
||
<script src="assets/js/bereiche.js?v=202609161659" defer></script>
|
||
<script src="assets/js/kopf.js?v=202609161659" defer></script>
|
||
<script src="assets/js/glocke.js?v=202609161659" defer></script>
|
||
<script src="assets/js/kalender.js?v=202609161659" defer></script>
|
||
<script src="assets/js/kalender-abo.js?v=202609161659" defer></script>
|
||
</body>
|
||
</html>
|