diff --git a/workspace/assets/css/kopf.js b/workspace/assets/css/kopf.js deleted file mode 100644 index d4f1ae4f..00000000 --- a/workspace/assets/css/kopf.js +++ /dev/null @@ -1,68 +0,0 @@ -/* =================================================================== - Gemeinsames Verhalten der Kopfleiste: Zurück-Knopf und Abmelden. - - Liegt bewusst in einer eigenen Datei. Vorher stand das Abmelden in - jeder Seitendatei noch einmal -- fünfmal derselbe Block, fünfmal eine - Stelle zum Vergessen, wenn sich etwas ändert. - =================================================================== */ -(() => { - 'use strict'; - - const START = '/workspace/start.html'; - - /* Gibt es eine sinnvolle vorherige Seite INNERHALB des Workspace? - - Blindes history.back() reicht nicht: Wer die Adresse direkt eingibt - oder gerade von der Anmeldung kommt, landet damit außerhalb des - Workspace oder wieder im Anmeldeformular. Deshalb wird zuerst - geprüft, woher der Aufruf kam. */ - function hatVorherigeSeite() { - if (!document.referrer) return false; - let u; - try { u = new URL(document.referrer); } catch { return false; } - if (u.origin !== location.origin) return false; - if (!u.pathname.startsWith('/workspace/')) return false; - /* Die Anmeldeseite ist kein sinnvolles Ziel -- wer angemeldet ist, - würde dort sofort wieder weitergeleitet. */ - if (u.pathname === '/workspace/' || u.pathname.endsWith('/index.html')) return false; - /* Gleiche Seite heißt: neu geladen, nicht hergekommen. */ - if (u.pathname === location.pathname) return false; - return true; - } - - /* Die Startseite hat den Knopf gar nicht erst im Dokument -- dort gibt - es kein "davor". Deshalb genügt hier die Prüfung, ob er existiert. */ - const knopf = document.getElementById('zurueck'); - if (knopf) { - const beschriftung = knopf.querySelector('.zurueck-knopf__text'); - if (hatVorherigeSeite()) { - knopf.hidden = false; - knopf.addEventListener('click', () => { - /* history.back() statt eines festen Ziels: Es führt wirklich - dorthin zurück, wo man war -- samt Bildlaufposition. Nur wenn - es keine Historie gibt, wird ersatzweise umgeleitet. */ - if (history.length > 1) history.back(); - else location.assign(START); - }); - } else { - /* Kein Verlauf, aber wir sind in einem Unterbereich: dann wenigstens - ein Weg zur Übersicht. */ - knopf.hidden = false; - if (beschriftung) beschriftung.textContent = 'Übersicht'; - knopf.addEventListener('click', () => location.assign(START)); - } - } - - const abmelden = document.getElementById('abmelden'); - if (abmelden) { - abmelden.addEventListener('click', async () => { - abmelden.disabled = true; - try { - await fetch('/workspace/api/abmelden', { - method: 'POST', credentials: 'same-origin', - }); - } catch { /* Auch ohne Antwort weiterleiten -- das Cookie läuft ohnehin ab. */ } - location.assign('/workspace/'); - }); - } -})();