Personen loeschen -- mit Vorschau und einer Sicherung unmittelbar davor

Wunsch Filipe: "ich will auch die moeglichkeit haben die loeschen zu
koennen."

Das ist die einzige Handlung im ganzen Workspace, die sich nicht
rueckgaengig machen laesst. Vier Vorkehrungen:

1. NUR DOGFATHER. Nicht die Leitung, nicht ein Manager -- "nur DogFather
   hat alle endgueltigen Rechte" heisst genau hier etwas. Ein Manager
   kann weiterhin sperren; das reicht fuer den Alltag und ist umkehrbar.
   Alle anderen bekommen 404, auch fuer die Vorschau: Die verraet, wie
   viel an einer Person haengt.

2. VORSCHAU. Vor dem Klick steht da, was MITGEHT (Profil, Start-Check,
   Content-Saeulen, Sitzungen, Zustaendigkeit) und was BLEIBT und nur
   seine Zuordnung verliert (Aufgaben, Termine, Bereichseintraege,
   Dateien, Leads). Eine Aufgabe verschwinden zu lassen, weil jemand
   geht, waere Geschichtsfaelschung.

   Dazu die gefaehrlichste Einzelwarnung: Wer einen Scout loescht, nimmt
   seinen Creators die zustaendige Person weg. Die Vorschau nennt sie
   beim Namen.

3. EINE SICHERUNG DIREKT DAVOR -- und wenn sie scheitert, wird NICHT
   geloescht. Damit ist "geloescht" wiederherstellbar. Das ist der
   eigentliche Gewinn aus der Sicherungsarbeit von heute Nachmittag.

4. Der Name muss getippt werden. Nicht als Schikane: Der Loeschknopf
   sitzt neben dem Sperrknopf, und die beiden sind sehr verschieden. Wer
   den Namen tippt, hat die Zeile gelesen, die er trifft.

ZWEI FEHLER, die erst die Pruefung sichtbar gemacht hat:

a) Alle Loeschungen schrieben in DIESELBE Tagessicherung. Nach der
   dritten kannte sie die erste geloeschte Person nicht mehr -- die
   Sicherung haette genau in dem Fall versagt, fuer den sie da ist.
   Loeschungen bekommen jetzt eine eigene Datei ("vorher-…") mit
   Zeitstempel, die nie ueberschrieben wird. Aufgefallen nur, weil die
   Pruefung die ANZAHL der Dateien zaehlt und nicht bloss, ob eine da ist.

b) Der Zeitstempel hatte Sekundenaufloesung -- drei Loeschungen in
   derselben Sekunde ergaben wieder eine einzige Datei. Jetzt mit
   Millisekunden, plus Zaehler als Notloesung. Und: Eine Sicherung vor
   dem Loeschen setzt NICHT den Vermerk fuer den planmaessigen Lauf,
   sonst faellt die naechtliche Sicherung aus.

Dabei auch ein Fehler in meiner eigenen Pruefung gefunden: Sie griff die
alphabetisch erste Datei und nannte sie "die aelteste" -- "vorher-…-2.db"
sortiert aber VOR "vorher-….db", weil "-" kleiner ist als ".". Sie prueft
jetzt die Eigenschaft selbst: JEDE geloeschte Person muss sich aus
irgendeiner Sicherung zurueckholen lassen.

43 Pruefungen, Schwerpunkt auf dem, was NICHT gehen darf.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-08-31 23:13:14 +02:00
co-authored by Claude Opus 5
parent 2dbf9fb57a
commit ac81f288c8
23 changed files with 656 additions and 117 deletions
+12
View File
@@ -182,3 +182,15 @@
/* In der Personenliste liegen die Karten direkt untereinander; der
Abstand zur nächsten Rolle kommt von .gruppe selbst. */
.gruppe .person:last-child { margin-bottom: 0; }
/* Der Löschknopf. Ruhig wie die anderen, bis man ihn ansieht – dann
deutlich rot. Ein dauerhaft roter Knopf in jeder Zeile macht die
ganze Liste nervös; einer, der erst beim Überfahren rot wird, warnt
genau im richtigen Moment. */
.schritt[data-gefahr="ja"] { color: var(--text-still); }
.schritt[data-gefahr="ja"]:hover:not(:disabled) {
color: var(--warn);
border-color: rgba(255, 154, 162, .55);
background: rgba(255, 154, 162, .1);
}
.schritt[data-gefahr="ja"]:focus-visible { outline-color: var(--warn); }
+81
View File
@@ -200,6 +200,16 @@
if (!a.ok) { melde((await a.json().catch(() => ({}))).fehler || 'Ging nicht.'); return; }
await laden();
}));
/* Löschen steht ganz rechts, hinter dem Sperren -- der harmlosere
Weg zuerst. Und nur für DogFather: "Nur DogFather hat alle
endgültigen Rechte" heißt genau hier etwas. Ein Manager kann
weiterhin sperren, das reicht für den Alltag und ist umkehrbar. */
if (ich.rolle === 'admin') {
const weg = tuKnopf('Löschen', () => loeschenFragen(p));
weg.dataset.gefahr = 'ja';
knoepfe.append(weg);
}
}
k.append(links, knoepfe);
@@ -238,6 +248,77 @@
sehen müsste.
-------------------------------------------------------------------------- */
/* ---------- Löschen ------------------------------------------------------
Die einzige Handlung hier, die sich nicht rückgängig machen lässt.
Deshalb wird sie NICHT mit einem confirm() abgetan, sondern zeigt
vorher, was daran hängt: was mitgeht, was nur seine Zuordnung
verliert, und wer danach ohne Betreuung dasteht.
Der Name muss getippt werden. Nicht als Schikane -- der Löschknopf
sitzt neben dem Sperrknopf, und die beiden sind sehr verschieden.
Wer den Namen tippt, hat die Zeile gelesen, die er trifft.
Den Knopf gibt es nur für DogFather; der Server prüft dasselbe noch
einmal und antwortet allen anderen mit 404. */
async function loeschenFragen(person) {
let v;
try {
const a = await hole(`/workspace/api/verwaltung/personen/${person.id}/loeschbar`);
if (!a.ok) { melde('Das Löschen ist hier nicht möglich.'); return; }
v = await a.json();
} catch { return; }
if (v.hindernis) { melde(v.hindernis); return; }
const zeilen = [];
const mit = Object.entries(v.mit).filter(([, n]) => n > 0);
const bleibt = Object.entries(v.bleibt).filter(([, n]) => n > 0);
zeilen.push(`„${v.person.name}" wirklich löschen?`, '');
if (mit.length) {
zeilen.push('Wird MITGELÖSCHT:');
for (const [was, n] of mit) zeilen.push(` · ${was}: ${n}`);
zeilen.push('');
}
if (bleibt.length) {
zeilen.push('BLEIBT erhalten, verliert nur die Zuordnung:');
for (const [was, n] of bleibt) zeilen.push(` · ${was}: ${n}`);
zeilen.push('');
}
if (v.verliertBetreuung.length) {
zeilen.push(`ACHTUNG: ${v.verliertBetreuung.join(', ')} `
+ `${v.verliertBetreuung.length === 1 ? 'steht' : 'stehen'} danach ohne zuständige Person da.`, '');
}
if (!mit.length && !bleibt.length && !v.verliertBetreuung.length) {
zeilen.push('An dieser Person hängt nichts.', '');
}
zeilen.push('Vorher wird automatisch eine Sicherung geschrieben.', '',
`Zum Bestätigen den Namen genau eingeben: ${v.person.name}`);
const eingabe = prompt(zeilen.join('\n'), '');
if (eingabe === null) return;
if (eingabe.trim() !== v.person.name) {
melde('Der Name stimmt nicht – es wurde nichts gelöscht.');
return;
}
try {
const a = await hole(`/workspace/api/verwaltung/personen/${person.id}`, {
method: 'DELETE',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: eingabe.trim() }),
});
const d = await a.json().catch(() => ({}));
if (!a.ok) { melde(d.fehler || 'Löschen hat nicht geklappt.'); return; }
/* Die Sicherung nennen. Wer gerade etwas Unumkehrbares getan hat,
soll sofort wissen, woraus es sich zurückholen lässt. */
melde(`„${v.person.name}" wurde gelöscht. Sicherung davor: ${d.sicherung}`);
await laden();
} catch { /* umgeleitet */ }
}
const SPEICHER = 'dfw_personen_alle';
let alle = [];
let alleZeigen = false;
+6 -6
View File
@@ -7,9 +7,9 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
</head>
<body class="start">
@@ -134,8 +134,8 @@
</form>
</dialog>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/aufgaben.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/aufgaben.js?v=202608312313" defer></script>
</body>
</html>
+7 -7
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/automation.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/automation.css?v=202608312313" />
</head>
<body class="start">
@@ -127,8 +127,8 @@
</main>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/automation.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/automation.js?v=202608312313" defer></script>
</body>
</html>
+7 -7
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202608312313" />
</head>
<body class="start">
@@ -98,8 +98,8 @@
</main>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/bereich.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/bereich.js?v=202608312313" defer></script>
</body>
</html>
+8 -8
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/calls.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/calls.css?v=202608312313" />
</head>
<body class="start">
@@ -49,9 +49,9 @@
</main>
<script src="assets/js/ki.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/calls.js?v=202608312305" defer></script>
<script src="assets/js/ki.js?v=202608312313" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/calls.js?v=202608312313" defer></script>
</body>
</html>
+7 -7
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/content.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/content.css?v=202608312313" />
</head>
<body class="start">
@@ -153,8 +153,8 @@
</main>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/content.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/content.js?v=202608312313" defer></script>
</body>
</html>
+7 -7
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202608312313" />
</head>
<body class="start">
@@ -88,8 +88,8 @@
</main>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/dateien.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/dateien.js?v=202608312313" defer></script>
</body>
</html>
+2 -2
View File
@@ -25,7 +25,7 @@
type="image/webp" media="(max-width: 899px)" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
</head>
<body class="gate">
@@ -143,6 +143,6 @@
</p>
</main>
<script src="assets/js/gate.js?v=202608312305" defer></script>
<script src="assets/js/gate.js?v=202608312313" defer></script>
</body>
</html>
+7 -7
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202608312313" />
</head>
<body class="start">
@@ -94,8 +94,8 @@
</main>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/kalender.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/kalender.js?v=202608312313" defer></script>
</body>
</html>
+7 -7
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/personen.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/personen.css?v=202608312313" />
</head>
<body class="start">
@@ -116,8 +116,8 @@
</main>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/personen.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/personen.js?v=202608312313" defer></script>
</body>
</html>
+7 -7
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/profil.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/profil.css?v=202608312313" />
</head>
<body class="start">
@@ -127,8 +127,8 @@
</main>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/profil.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/profil.js?v=202608312313" defer></script>
</body>
</html>
+8 -8
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/report.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/report.css?v=202608312313" />
</head>
<body class="start">
@@ -86,9 +86,9 @@
</main>
<script src="assets/js/ki.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/report.js?v=202608312305" defer></script>
<script src="assets/js/ki.js?v=202608312313" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/report.js?v=202608312313" defer></script>
</body>
</html>
+7 -7
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202608312313" />
</head>
<body class="start">
@@ -124,8 +124,8 @@
</div>
</div>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/scouting.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/scouting.js?v=202608312313" defer></script>
</body>
</html>
+5 -5
View File
@@ -7,8 +7,8 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
</head>
<body class="start">
@@ -68,8 +68,8 @@
</p>
</main>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/start.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/start.js?v=202608312313" defer></script>
</body>
</html>
+8 -8
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202608312313" />
</head>
<body class="start">
@@ -65,9 +65,9 @@
</main>
<script src="assets/js/ki.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/startcheck.js?v=202608312305" defer></script>
<script src="assets/js/ki.js?v=202608312313" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/startcheck.js?v=202608312313" defer></script>
</body>
</html>
+5 -5
View File
@@ -7,9 +7,9 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202608312313" />
</head>
<body class="start">
@@ -52,7 +52,7 @@
</main>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/uebersicht.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/uebersicht.js?v=202608312313" defer></script>
</body>
</html>
+7 -7
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202608312305" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/start.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608312313" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202608312313" />
</head>
<body class="start">
@@ -170,8 +170,8 @@
</main>
<script src="assets/js/wahl.js?v=202608312305" defer></script>
<script src="assets/js/kopf.js?v=202608312305" defer></script>
<script src="assets/js/wissen.js?v=202608312305" defer></script>
<script src="assets/js/wahl.js?v=202608312313" defer></script>
<script src="assets/js/kopf.js?v=202608312313" defer></script>
<script src="assets/js/wissen.js?v=202608312313" defer></script>
</body>
</html>