Bearbeiten geht jetzt -- und zwei Bedienelemente, die keine Kacheln sind

DER SERVER LIESS DAS AENDERN DIE GANZE ZEIT ZU. IM TAGESFENSTER FEHLTE
DER KNOPF.

Filipe: "ich hab die gemacht und kann sie nicht bearbeiten." Dort
standen nur "erledigt" und "loeschen". Ein Recht ohne Knopf ist kein
Recht. Jetzt oeffnet "bearbeiten" dasselbe Formular, gefuellt -- ein
Formular, zwei Wege (POST oder PATCH), statt eines zweiten, das genauso
aussieht und beim naechsten Feld auseinanderlaeuft.

Die Wiederholung bleibt beim Bearbeiten aussen vor: Sie ist eine REGEL
und wird unter "Laeuft von allein" geaendert, nicht an einer ihrer
Auspraegungen. Wer das zulaesst, bekommt einen Termin, der aus der
Reihe faellt, ohne dass jemand weiss warum.

UND DIE REGEL DAZU IM SERVER

Filipe: "nur diese person selber." Bis hierher durfte JEDER aendern,
der den Termin ueberhaupt sah -- bei einem Termin mit mehreren
Beteiligten also alle. Jetzt: die Leitung und wer ihn eingetragen hat.
Dieselbe Regel wie beim Loeschen, die dort schon richtig stand.

AUSNAHME "erledigt": Ein Haken, dass ein Gespraech stattgefunden hat,
ist keine Aenderung am Termin, sondern eine Rueckmeldung dazu -- sonst
muesste jeder Beteiligte den Anleger bitten, den eigenen Call
abzuhaken.

Gemessen in pruef-teilnehmer, mit allen drei Faellen. Beim Bauen der
Pruefung ist mir ein Aufbaufehler unterlaufen (Bea statt Pat als
zweite Teilnehmerin -- Luna darf Bea gar nicht einladen), und die
Pruefung hat ihn korrekt als 404 statt 403 gemeldet. Der Fehler lag im
Aufbau, nicht im Code.

DER ANSICHTS-UMSCHALTER WAR VIER KACHELN

`.k-ansicht` stand in der Modulliste. Jeder der vier Knoepfe bekam
damit die volle Behandlung einer Kachel: Fase, Kantenlicht, Eckwinkel,
Raster. Auf 90 mal 32 Pixeln ist das kein Modul, sondern Gedraenge --
vier Fasen und sechzehn Eckwinkel nebeneinander.

Die Modulform ist fuer FLAECHEN gedacht, die etwas enthalten. Ein
Umschalter enthaelt nichts, er waehlt aus, und die richtige Form dafuer
ist die SCHIENE: eine vertiefte Bahn, in der ein erhabenes Stueck aus
gebuerstetem Metall sitzt. Man sieht auf einen Blick, dass die vier
zusammengehoeren und genau eines gewaehlt ist.

DIE GRUPPENKOEPFE AUF DER CALLS-SEITE

Vorher eine Textzeile mit Pfeil, und die Karten darunter begannen ohne
Uebergang -- aufgeklappt sah man nicht, wo eine Gruppe aufhoert. Jetzt
ist der Kopf ein Schalter mit Zustand, die Zahl ein gefasstes Schild,
und die Karten stehen aufgeklappt in einer eigenen vertieften Bahn mit
Farbschiene links.

14 Pruefungen gelaufen, alle gruen.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-07 17:05:28 +02:00
co-authored by Claude Opus 5
parent dd1f561f3b
commit 09a0c17237
25 changed files with 449 additions and 223 deletions
+40
View File
@@ -314,6 +314,46 @@ console.log("\n=== Gegenprobe ===");
}, K.dogi);
ok(!(await siehtTermin(K.luna, c.daten?.id)),
"einen Termin ganz ohne Teilnehmer sieht nur, wer ihn angelegt hat");
/* ================================================================
AENDERN DARF NUR, WER IHN EINGETRAGEN HAT (07.09.2026)
Filipe: "jeder der in seinem kalender was eintraegt soll es auch
bearbeiten koennen, nur diese person selber."
Der Prueffall ist ein Termin MIT einem zweiten Teilnehmer: Der
sieht ihn, darf ihn aber nicht umschreiben. Vorher durfte jeder
aendern, der ihn ueberhaupt sah -- bei einem Termin mit mehreren
Beteiligten also alle.
================================================================ */
const meiner = await ruf("POST", "/workspace/api/termine", {
titel: "Lunas eigener Termin", art: "termin", beginn: heute + "T09:15",
/* PAT, nicht Bea. Luna darf nur einladen, wer zu ihr gehoert -- Bea
betreut Nora. Mein erster Aufbau nahm Bea, und die Pruefung
meldete brav 404 statt 403: Bea sah den Termin gar nicht. Der
Fehler lag im Aufbau, nicht im Code -- und die Pruefung hat
genau das richtig gemeldet. */
teilnehmer: [idPat],
}, K.luna);
ok(meiner.status === 201, `Luna legt einen Termin an (${meiner.status})`);
const selbst = await ruf("PATCH", `/workspace/api/termine/${meiner.daten?.id}`,
{ titel: "Lunas Termin, umbenannt" }, K.luna);
ok(selbst.status === 200, `sie selbst darf ihn umbenennen (${selbst.status})`);
ok(await siehtTermin(K.pat, meiner.daten?.id), "Pat sieht ihn (er ist eingetragen)");
const fremd = await ruf("PATCH", `/workspace/api/termine/${meiner.daten?.id}`,
{ titel: "von Pat umbenannt" }, K.pat);
ok(fremd.status === 403,
`darf ihn aber nicht umbenennen (${fremd.status})`);
/* Und die Ausnahme, die es dabei geben MUSS: Ein Haken "erledigt"
ist eine Rueckmeldung zum Termin, keine Aenderung an ihm. Ohne
diese Zeile muesste jeder Beteiligte den Anleger bitten, den
eigenen Call abzuhaken. */
const haken = await ruf("PATCH", `/workspace/api/termine/${meiner.daten?.id}`,
{ erledigt: true }, K.pat);
ok(haken.status === 200, `abhaken darf sie aber (${haken.status})`);
ok(await siehtTermin(K.dogi, c.daten?.id),
" – der nämlich schon, sonst wäre die Zeile darüber wertlos");
}
+22
View File
@@ -447,6 +447,28 @@ kalenderRouter.patch("/workspace/api/termine/:id", gleicheHerkunft, (req, res) =
const termin = db().prepare(`SELECT t.* ${VERBUND} WHERE ${wo} AND t.id = ?`).get(...werte, id);
if (!termin) return res.status(404).json({ fehler: "nicht_gefunden" });
/* AENDERN DARF, WER IHN EINGETRAGEN HAT -- und die Leitung
(07.09.2026).
Filipe: "jeder der in seinem kalender was eintraegt soll es auch
bearbeiten koennen, nur diese person selber."
Bis hierher durfte JEDER aendern, der den Termin ueberhaupt sieht.
Seit der Kalender nur noch eigene Termine zeigt, faellt das kaum
auf -- aber ein Termin mit mehreren Teilnehmern sehen eben alle,
und dann haette jeder von ihnen Titel und Uhrzeit verstellen
koennen. Dieselbe Regel wie beim Loeschen ein paar Zeilen
weiter unten; sie stand dort schon richtig.
AUSNAHME "erledigt": Ein Haken, dass ein Gespraech stattgefunden
hat, ist keine Aenderung am Termin, sondern eine Rueckmeldung
dazu -- die darf jeder Beteiligte setzen. Sonst muesste man den
Anleger bitten, den eigenen Call abzuhaken. */
const nurErledigt = Object.keys(req.body || {}).every((k) => k === "erledigt");
if (!nurErledigt && !istLeitung(req.person) && termin.erstellt_von !== req.person.id) {
return res.status(403).json({ fehler: "nicht_erlaubt" });
}
const { aus, fehler } = pruefe(req.body || {}, { neu: false });
if (fehler.length) return res.status(400).json({ fehler: fehler.join(" ") });
if (!istLeitung(req.person)) {
+79 -9
View File
@@ -420,20 +420,74 @@
/* Der Kopf ist der Schalter -- <button>, also muessen die Vorgaben des
Browsers zurueck (eigene Schrift, Rand, zentrierter Text). */
/* =====================================================================
DIE GRUPPENKOEPFE SIND SCHALTER AN EINEM GERAET (07.09.2026)
Filipe: "das soll besser viel besser geregelt sein, weil wenn man die
aufmachst sieht das so beschissen aus, mach es im insgesamten viel
krasser besser und geiler."
Vorher war der Kopf eine Textzeile mit einem Pfeil daneben, und die
Karten darunter begannen ohne Uebergang. Aufgeklappt sah man deshalb
nicht, wo eine Gruppe aufhoert und die naechste anfaengt -- drei
Ueberschriften und dazwischen eine Wand.
Jetzt ist der Kopf ein SCHALTER mit Zustand:
ZU eine flache Leiste, dunkel
AUF die Leiste sitzt in einer Fassung, die Zahl wird zum
gefassten Schild, und die Karten darunter stehen in einer
eigenen, leicht vertieften Bahn mit einer Farbschiene
links -- man sieht auf einen Blick, was zu welcher
Gruppe gehoert
Die abgeschnittene Ecke oben links nimmt die Sprache der Module auf,
ohne dass der Kopf ein Modul waere: Er ist ein Bedienelement, und
deshalb hat er keine Eckwinkel und kein Raster. */
.call-brett .stufe__kopf {
appearance: none; -webkit-appearance: none;
width: 100%;
font: inherit; color: inherit; text-align: left;
border: 0; background: none; cursor: pointer;
display: flex; align-items: center; gap: 10px;
padding: 12px 2px;
border-radius: 10px;
transition: background var(--tempo);
border: 0; cursor: pointer;
display: flex; align-items: center; gap: 11px;
padding: 11px 14px 11px 15px;
border-radius: 0;
clip-path: polygon(11px 0, 100% 0, 100% 100%, 0 100%, 0 11px);
background:
linear-gradient(90deg,
color-mix(in srgb, var(--c, var(--akzent)) 22%, transparent) 0%,
transparent 42%),
linear-gradient(180deg, #101724, #0a0f18);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, .07),
0 1px 0 rgba(0, 0, 0, .6);
transition: background var(--tempo), box-shadow var(--tempo);
}
.call-brett .stufe__kopf:hover {
background:
linear-gradient(90deg,
color-mix(in srgb, var(--c, var(--akzent)) 30%, transparent) 0%,
transparent 46%),
linear-gradient(180deg, #141d2d, #0c121c);
}
.call-brett .stufe__kopf:hover { background: rgba(255, 255, 255, .04); }
.call-brett .stufe__kopf:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
.call-brett .stufe__titel { margin: 0; }
.call-brett .stufe__zahl { margin-left: auto; }
.call-brett .stufe__titel { margin: 0; color: var(--c, var(--akzent)); }
/* Die Zahl als gefasstes Schild -- dieselbe Bauart wie auf den Kacheln
und in der Tageskachel. Eine Oberflaeche, eine Sprache. */
.call-brett .stufe__zahl {
margin-left: auto;
min-width: 26px; padding: 2px 8px;
border-radius: 0;
clip-path: polygon(5px 0, 100% 0, 100% 100%, 0 100%, 0 5px);
color: var(--c, var(--akzent));
background:
linear-gradient(150deg, rgba(255, 255, 255, .12) 0%, transparent 52%),
linear-gradient(color-mix(in srgb, var(--c, var(--akzent)) 12%, #080d15),
color-mix(in srgb, var(--c, var(--akzent)) 5%, #080d15));
box-shadow: 0 0 0 1px rgba(190, 215, 245, .18);
}
.call-brett .gruppe__pfeil {
width: 16px; height: 16px; flex: none;
color: var(--text-still);
@@ -441,7 +495,23 @@
}
.call-brett .gruppe[data-zu="ja"] .gruppe__pfeil { transform: rotate(-90deg); }
.call-brett .gruppe[data-zu="ja"] { padding-bottom: 4px; }
.call-brett .gruppe__karten { margin-top: 0; }
/* AUFGEKLAPPT: die Karten stehen in einer eigenen Bahn. Das ist der
Teil, der gefehlt hat -- ohne ihn hoerte die Gruppe optisch beim
Kopf auf, und darunter lagen einfach Karten im Nichts. */
.call-brett .gruppe:not([data-zu="ja"]) .gruppe__karten {
margin-top: 0;
padding: 12px 12px 12px 14px;
background:
linear-gradient(90deg,
color-mix(in srgb, var(--c, var(--akzent)) 10%, transparent) 0 3px,
transparent 3px),
linear-gradient(180deg, rgba(255, 255, 255, .022), rgba(255, 255, 255, .006));
box-shadow:
inset 0 1px 0 rgba(0, 0, 0, .5),
inset 3px 0 0 -1px color-mix(in srgb, var(--c, var(--akzent)) 55%, transparent);
}
/* Die Karten stehen jetzt IN einer Tafel -- sie brauchen keine zweite
schwere Flaeche, sonst liegt Kasten in Kasten. Leichter Grund, gleiche
Schiene. */
+53 -9
View File
@@ -135,21 +135,65 @@
flex-wrap: wrap; gap: 12px;
margin: 4px 0 16px;
}
.k-ansichten { display: flex; gap: 6px; flex-wrap: wrap; }
/* =====================================================================
DER ANSICHTS-UMSCHALTER: EINE SCHIENE, NICHT VIER KACHELN
(07.09.2026)
Filipe hat ihn abfotografiert: "das soll viel besser und geiler
aussehen."
DER GRUND WAR MEIN EIGENER: `.k-ansicht` stand in der Modulliste von
module.css. Jeder der vier Knoepfe bekam damit die volle Behandlung
einer Kachel -- abgeschnittene Ecke, Kantenlicht, Eckwinkel, Raster.
Auf einer Flaeche von 90 mal 32 Pixeln ist das kein Modul, sondern
Gedraenge: vier Fasen, vier Lichter, sechzehn Eckwinkel nebeneinander.
Die Modulform ist fuer FLAECHEN gedacht, die etwas enthalten. Ein
Umschalter enthaelt nichts, er waehlt etwas aus -- und die richtige
Form dafuer ist seit jeher die Schiene: eine vertiefte Bahn, in der
ein erhabenes Stueck sitzt. Man sieht auf einen Blick, dass die vier
zusammengehoeren und dass genau eines gewaehlt ist.
So ist es gebaut:
DIE BAHN dunkel, mit Schatten von oben innen -- eine Fraesung.
DIE STUECKE ohne eigenen Rand; sie liegen IN der Bahn.
DAS GEWAEHLTE als gebuerstetes Metall, leicht erhaben, mit einer
Lichtkante oben und einem Schatten darunter. Dieselbe Sprache wie
die Luenette der Uhr und die Schilder der Kacheln.
===================================================================== */
.k-ansichten {
display: inline-flex; gap: 3px; flex-wrap: wrap;
padding: 3px;
border-radius: 999px;
background: linear-gradient(180deg, #05080e, #0a1018);
box-shadow:
inset 0 2px 4px -1px rgba(0, 0, 0, .95),
inset 0 -1px 0 rgba(190, 215, 245, .12),
0 1px 0 rgba(255, 255, 255, .04);
}
.k-ansicht {
padding: 8px 15px;
border: 1px solid var(--rand); border-radius: 999px;
background: var(--flaeche);
padding: 7px 15px;
border: 0; border-radius: 999px;
background: transparent;
color: var(--text-leise);
font: inherit; font-size: .86rem;
font: inherit; font-size: .86rem; font-weight: 600;
cursor: pointer;
transition: border-color .18s ease, background .18s ease, color .18s ease;
transition: color .18s ease, background .18s ease;
}
.k-ansicht:hover { color: var(--text); border-color: var(--rand-hell); }
.k-ansicht[aria-pressed="true"] {
color: #eaf4fd;
border-color: color-mix(in srgb, var(--akzent) 46%, transparent);
background: color-mix(in srgb, var(--akzent) 15%, transparent);
color: #0a1018;
font-weight: 700;
/* Gebuerstetes Metall -- rund, also conic. Die Lehre vom Nachmittag:
Die Verlaufsart muss zur FORM passen. */
background:
conic-gradient(from 200deg,
#e9f1fb 0deg, #a8b8cc 60deg, #f6fbff 120deg, #93a5bb 190deg,
#e2ebf6 260deg, #b3c2d4 320deg, #e9f1fb 360deg);
box-shadow:
0 1px 0 rgba(255, 255, 255, .5) inset,
0 -1px 0 rgba(0, 0, 0, .35) inset,
0 2px 5px -2px rgba(0, 0, 0, .8);
}
.k-filter { display: flex; gap: 6px; flex-wrap: wrap; }
+7 -7
View File
@@ -89,7 +89,7 @@
}
/* MODULLISTE */
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .k-ansicht, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu) {
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu) {
position: relative;
clip-path: polygon(var(--fase) 0, 100% 0, 100% 100%, 0 100%, 0 var(--fase));
border-radius: 0;
@@ -117,7 +117,7 @@
was übrig bleibt, ist eine Linie, die exakt der Form folgt, Schräge
inklusive. Ein `border` könnte das nicht: Er folgt dem Rechteck. */
/* MODULLISTE */
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .k-ansicht, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu)::before {
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu)::before {
content: "";
position: absolute; inset: 0;
pointer-events: none;
@@ -140,7 +140,7 @@
/* RASTER UND ECKWINKEL. Beides auf ::after -- ein drittes Element gibt
es nicht, und beides ist reine Optik ohne Klicks. */
/* MODULLISTE */
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .k-ansicht, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu)::after {
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu)::after {
content: "";
position: absolute; inset: 0;
pointer-events: none;
@@ -224,7 +224,7 @@
/* Dieselbe Form, kleiner -- keine zweite Gestaltung. */
:root { --fase: 12px; }
/* MODULLISTE */
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .k-ansicht, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu) {
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu) {
filter: drop-shadow(0 3px 8px rgba(0, 0, 0, .7));
}
}
@@ -238,15 +238,15 @@
/* Im Kontrastmodus zählt die Kante, und die muss ein echter `border`
sein. Die Schräge bleibt: Sie ist Geometrie, keine Farbe. */
/* MODULLISTE */
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .k-ansicht, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu) {
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu) {
filter: none; border: 1px solid CanvasText;
}
/* MODULLISTE */
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .k-ansicht, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu)::after {
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu)::after {
display: none;
}
/* MODULLISTE */
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .k-ansicht, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu)::before {
:is(.eintrag-karte, .call, .chat, .datei, .ablage, .zahlkarte, .regel, .zustand, .ki-kasten, .spalte, .balance, .saeulen-kasten, .neu, .call-raum, .creator, .summe, .pdf, .pdf-ablage, .suchleiste, .person, .kk, .fortschritt, .punkt, .dran__punkt, .unterweisung, .warnkarte, .kachel, .tagesblick, .leer-hinweis, .team-karte, .zahl, .k-listentag, .import-vorschau, .code-fenster, .schulung__neu)::before {
display: none;
}
}
+57 -7
View File
@@ -944,7 +944,17 @@
if (!a.ok) { melde('Ändern ging nicht.'); return; }
await laden();
}));
if (LEITUNG.has(ich.rolle) || e.erstellt_von === ich.id) {
if (darfAendern(e)) {
/* BEARBEITEN STAND NIE DA (07.09.2026). Filipe: "ich hab die
gemacht und kann sie nicht bearbeiten." Der Server liess das
Aendern die ganze Zeit zu -- im Tagesfenster gab es nur
"erledigt" und "loeschen". Ein Recht ohne Knopf ist kein
Recht. */
rechts.append(tuKnopf('bearbeiten', () => {
$('tagdialog').close();
formularOeffnen(e.tag, e);
$('neu').scrollIntoView({ block: 'center', behavior: 'smooth' });
}));
rechts.append(tuKnopf('löschen', async () => {
/* Bei einem Serientermin muss unmissverständlich dastehen,
dass NUR dieser eine Tag entfällt. Sonst löscht jemand ihn
@@ -1200,7 +1210,21 @@
/* ---------- Neuer Termin --------------------------------------------------- */
function formularOeffnen(tag) {
/* WELCHEN TERMIN BEARBEITEN WIR GERADE? 0 heisst: einen neuen
anlegen. Ein einziger Merker statt eines zweiten Formulars -- ein
zweites saehe genauso aus und liefe beim naechsten Feld
auseinander. */
let bearbeiteId = 0;
/** Darf ich diesen Termin aendern? Dieselbe Antwort wie im Server
* (workspace-kalender.js): die Leitung -- und wer ihn selbst
* eingetragen hat. Filipe: "jeder der in seinem kalender was
* eintraegt soll es auch bearbeiten koennen, nur diese person
* selber." Hier geht es nur darum, keinen Knopf hinzustellen, der
* eine Absage bringt; die Sperre steht im Server. */
const darfAendern = (e) => LEITUNG.has(ich.rolle) || e.erstellt_von === ich.id;
function formularOeffnen(tag, termin) {
/* Vorbelegung: der angeklickte Tag um 18:00 -- ein realistischer
Zeitpunkt für einen Call, spart in der Regel zwei Klicks. Ohne Tag
(Knopf oben): morgen. */
@@ -1215,6 +1239,27 @@
nicht die Auswahl des letzten Termins mitbringen. `reset()` fasst
sie nicht an, weil es keine Formularfelder sind. */
baueDabei([]);
bearbeiteId = 0;
$('neu-speichern').textContent = 'Anlegen';
/* BEARBEITEN: dieselben Felder, gefuellt. Der Rhythmus bleibt
aussen vor -- eine Wiederholung ist eine REGEL und wird unter
"Laeuft von allein" geaendert, nicht an einer ihrer
Auspraegungen. Wer das hier zulaesst, bekommt einen Termin, der
aus der Reihe faellt, ohne dass jemand weiss warum. */
if (termin) {
bearbeiteId = termin.id;
$('f-titel').value = termin.titel || '';
$('f-art').value = termin.art || 'termin';
if (termin.beginn) $('f-beginn').value = String(termin.beginn).slice(0, 16);
$('f-dauer').value = termin.dauer_min || 30;
$('f-ort').value = termin.ort || '';
$('f-text').value = termin.beschreibung || '';
baueDabei(termin.teilnehmer_ids || []);
$('f-takt').value = '';
wdhVorschau();
$('neu-speichern').textContent = 'Speichern';
}
umschalten(true);
}
@@ -1281,11 +1326,16 @@
}
knopf.disabled = true;
try {
const a = await hole('/workspace/api/termine', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(koerper),
});
/* Ein Formular, zwei Wege. Beim Bearbeiten faellt die
Wiederholung heraus (siehe formularOeffnen) -- sie wuerde beim
PATCH eine zweite Serie anlegen. */
if (bearbeiteId) delete koerper.wiederholung;
const a = await hole(
bearbeiteId ? '/workspace/api/termine/' + bearbeiteId : '/workspace/api/termine', {
method: bearbeiteId ? 'PATCH' : 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(koerper),
});
if (!a.ok) {
$('neu-fehler').textContent = (await a.json().catch(() => ({}))).fehler || 'Ging nicht.';
return;
+9 -9
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -212,10 +212,10 @@
</form>
</dialog>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/aufgaben.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/aufgaben.js?v=202609071653" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/automation.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/automation.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -135,10 +135,10 @@
</main>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/automation.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/automation.js?v=202609071653" defer></script>
</body>
</html>
+14 -14
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -144,14 +144,14 @@
</main>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/checkliste.js?v=202609071638" defer></script>
<script src="assets/js/ampel.js?v=202609071638" defer></script>
<script src="assets/js/schulung.js?v=202609071638" defer></script>
<script src="assets/js/vorlagen.js?v=202609071638" defer></script>
<script src="assets/js/bereich.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/checkliste.js?v=202609071653" defer></script>
<script src="assets/js/ampel.js?v=202609071653" defer></script>
<script src="assets/js/schulung.js?v=202609071653" defer></script>
<script src="assets/js/vorlagen.js?v=202609071653" defer></script>
<script src="assets/js/bereich.js?v=202609071653" defer></script>
</body>
</html>
+11 -11
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/calls.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/calls.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -77,11 +77,11 @@
</main>
<script src="assets/js/ki.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/calls.js?v=202609071638" defer></script>
<script src="assets/js/ki.js?v=202609071653" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/calls.js?v=202609071653" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,17 +9,17 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<!-- aufgaben.css bringt die Dialog- und Formularstile mit (.dialog,
.neu__zeile, .dialog__knoepfe). Sie stehen dort seit dem
Aufgabenbrett; sie hierher zu kopieren hiesse, sie an zwei Stellen
zu pflegen. Dieselbe Lösung nutzen kalender.html und content.html.
Gemeldet von pruef-css-klassen.mjs, bevor jemand einen ungestylten
Dialog zu sehen bekam. -->
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -155,10 +155,10 @@
</form>
</dialog>
<script src="assets/js/bereiche.js?v=202609071638"></script>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638"></script>
<script src="assets/js/glocke.js?v=202609071638"></script>
<script src="assets/js/chat.js?v=202609071638"></script>
<script src="assets/js/bereiche.js?v=202609071653"></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653"></script>
<script src="assets/js/glocke.js?v=202609071653"></script>
<script src="assets/js/chat.js?v=202609071653"></script>
</body>
</html>
+12 -12
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/content.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/content.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -167,12 +167,12 @@
</main>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/checkliste.js?v=202609071638" defer></script>
<script src="assets/js/vorlagen.js?v=202609071638" defer></script>
<script src="assets/js/content.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/checkliste.js?v=202609071653" defer></script>
<script src="assets/js/vorlagen.js?v=202609071653" defer></script>
<script src="assets/js/content.js?v=202609071653" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -96,10 +96,10 @@
</main>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/dateien.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/dateien.js?v=202609071653" defer></script>
</body>
</html>
+2 -2
View File
@@ -27,7 +27,7 @@
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
</head>
<body class="gate">
@@ -202,6 +202,6 @@
</main>
</div>
<script src="assets/js/gate.js?v=202609071638" defer></script>
<script src="assets/js/gate.js?v=202609071653" defer></script>
</body>
</html>
+11 -11
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -258,11 +258,11 @@
</main>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/kalender.js?v=202609071638" defer></script>
<script src="assets/js/kalender-abo.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/kalender.js?v=202609071653" defer></script>
<script src="assets/js/kalender-abo.js?v=202609071653" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -212,10 +212,10 @@
</form>
</dialog>
<script src="assets/js/wahl.js?v=202609071638"></script>
<script src="assets/js/bereiche.js?v=202609071638"></script>
<script src="assets/js/kopf.js?v=202609071638"></script>
<script src="assets/js/glocke.js?v=202609071638"></script>
<script src="assets/js/leistung.js?v=202609071638"></script>
<script src="assets/js/wahl.js?v=202609071653"></script>
<script src="assets/js/bereiche.js?v=202609071653"></script>
<script src="assets/js/kopf.js?v=202609071653"></script>
<script src="assets/js/glocke.js?v=202609071653"></script>
<script src="assets/js/leistung.js?v=202609071653"></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -137,10 +137,10 @@
</main>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/personen.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/personen.js?v=202609071653" defer></script>
</body>
</html>
+11 -11
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -202,11 +202,11 @@
</main>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/steckbrief.js?v=202609071638" defer></script>
<script src="assets/js/profil.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/steckbrief.js?v=202609071653" defer></script>
<script src="assets/js/profil.js?v=202609071653" defer></script>
</body>
</html>
+11 -11
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/report.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/report.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -94,11 +94,11 @@
</main>
<script src="assets/js/ki.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/report.js?v=202609071638" defer></script>
<script src="assets/js/ki.js?v=202609071653" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/report.js?v=202609071653" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -127,10 +127,10 @@
</div>
</div>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/scouting.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/scouting.js?v=202609071653" defer></script>
</body>
</html>
+9 -9
View File
@@ -9,12 +9,12 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<!-- Nur die Startseite: Begrüßungskachel, Uhr, Glockenmulde. Siehe
den Hinweis in start.css -- dort stand es bis zum 07.09.2026. -->
<link rel="stylesheet" href="assets/css/heim.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/heim.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -320,10 +320,10 @@
</p>
</main>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/start.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/start.js?v=202609071653" defer></script>
</body>
</html>
+11 -11
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -73,11 +73,11 @@
</main>
<script src="assets/js/ki.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/startcheck.js?v=202609071638" defer></script>
<script src="assets/js/ki.js?v=202609071653" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/startcheck.js?v=202609071653" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -114,10 +114,10 @@
</main>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/steckbrief.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/steckbrief.js?v=202609071653" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,13 +9,13 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
Dialog "Creator anlegen". -->
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -137,11 +137,11 @@
</main>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/uebersicht.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/uebersicht.js?v=202609071653" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071638" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202609071653" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071653" />
</head>
<body class="start">
@@ -178,10 +178,10 @@
</main>
<script src="assets/js/wahl.js?v=202609071638" defer></script>
<script src="assets/js/bereiche.js?v=202609071638" defer></script>
<script src="assets/js/kopf.js?v=202609071638" defer></script>
<script src="assets/js/glocke.js?v=202609071638" defer></script>
<script src="assets/js/wissen.js?v=202609071638" defer></script>
<script src="assets/js/wahl.js?v=202609071653" defer></script>
<script src="assets/js/bereiche.js?v=202609071653" defer></script>
<script src="assets/js/kopf.js?v=202609071653" defer></script>
<script src="assets/js/glocke.js?v=202609071653" defer></script>
<script src="assets/js/wissen.js?v=202609071653" defer></script>
</body>
</html>