Workspace: versehentlich in den CSS-Ordner kopiertes kopf.js entfernt
Eine verunglueckte Kopierzeile hatte assets/js/kopf.js zusaetzlich nach assets/css/ gelegt. Die Datei war nirgends eingebunden, aber ueber das Netz erreichbar und haette bei spaeteren Aenderungen fuer Verwirrung gesorgt, welche der beiden die echte ist.
This commit is contained in:
@@ -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/');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
Reference in New Issue
Block a user