Verwaltung: Ausweis erneuert sich selbst statt nach dem Code zu fragen
Rueckmeldung: "wieso werd ich auch immer meinen zugangscode gefragt wenn ich die kategorie wechseln tue das ist schwachsin." Er hat recht, und es war ein echter Fehler. DIE URSACHE Der Ausweis fuer die interne Schnittstelle (/webdesign/api-ausweis) gilt 15 Minuten. Danach antwortete jede Anfrage mit 401, und die Verwaltung tat das Haerteste, was moeglich ist: Token verwerfen und Codeeingabe zeigen -- beim blossen Wechsel eines Reiters. Doppelt falsch: Die ZUGANGSSITZUNG selbst gilt 8 Stunden. Der Code war also gar nicht noetig; ein frischer Ausweis haette genuegt und war jederzeit abrufbar. Ein Rauswurf mitten in der Arbeit ist die haerteste denkbare Reaktion auf ein Problem, das sich unsichtbar loesen laesst. Wer gerade ein Angebot beziffert hat, verliert damit seinen Platz. DIE LOESUNG Bei 401 wird EINMAL ein neuer Ausweis geholt und die Anfrage wiederholt. Nur wenn auch das scheitert, kommt die Codeeingabe -- dann ist die Sitzung wirklich abgelaufen. Das Wiederholen ist auch bei Absendungen unbedenklich: Eine mit 401 abgewiesene Anfrage hat serverseitig nichts bewirkt. Alle gleichzeitig wartenden Aufrufe teilen sich EINEN Erneuerungsversuch. Ohne das holt beim Oeffnen eines Reiters mit drei Abfragen jede ihren eigenen Ausweis -- drei statt einem. GEPRUEFT: 5 Pruefungen mit kuenstlich abgelaufenem Ausweis. Der Reiterwechsel fragt NICHT mehr nach dem Code, der Inhalt erscheint trotzdem, genau EIN neuer Ausweis wird geholt, und der naechste Wechsel laeuft ebenfalls durch. Ist dagegen die Zugangssitzung selbst abgelaufen, erscheint die Codeeingabe weiterhin -- das soll sie dann auch. Verwaltung weiterhin 69 von 69. Versionsstempel und Cache-Name auf v12. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
<style>
|
||||
/* Zeitstrahl: die Linie verbindet die Nummernkreise. Sie liegt hinter
|
||||
den Kreisen (z-index) und endet beim letzten Schritt, damit sie nicht
|
||||
@@ -183,7 +183,7 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-ablauf.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/i18n-wd-ablauf.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
<style>
|
||||
/* ---------- Schrittanzeige ----------
|
||||
Zeigt alle vier Schritte gleichzeitig statt nur "3 von 4". Man sieht
|
||||
@@ -418,8 +418,8 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-anfrage.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-anfrage.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/i18n-wd-anfrage.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-anfrage.js?v=20260823wd12"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+4
-4
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
<style>
|
||||
.fq-thema { scroll-margin-top: 90px; }
|
||||
.fq-thema + .fq-thema { margin-top: clamp(2rem, 4vw, 3rem); }
|
||||
@@ -195,7 +195,7 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-faq.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/i18n-wd-faq.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
<style>
|
||||
/* ---------- Nur auf der Startseite gebraucht ---------- */
|
||||
|
||||
@@ -407,8 +407,8 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-index.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/i18n-wd-index.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
<script>
|
||||
/* ---------------------------------------------------------------------
|
||||
Marken-Intro (Masterplan S.3, Schritt 02: "Nach erfolgreichem Code
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
<style>
|
||||
/* Sprungmarken.
|
||||
Frueher eine waagerecht wischbare Leiste. Rueckmeldung 22.08.2026:
|
||||
@@ -331,7 +331,7 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-leistungen.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/i18n-wd-leistungen.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
<style>
|
||||
.po-login { max-width: 440px; margin: clamp(1.5rem,6vh,4rem) auto; }
|
||||
|
||||
@@ -134,8 +134,8 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-portal.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-portal.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/i18n-wd-portal.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-portal.js?v=20260823wd12"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
<style>
|
||||
.pfo-projekt { overflow: hidden; padding: 0; margin-bottom: clamp(1.4rem, 3vw, 2.2rem); }
|
||||
.pfo-bild {
|
||||
@@ -192,7 +192,7 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-portfolio.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/i18n-wd-portfolio.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
<style>
|
||||
.pr-preis-gross { font-family: var(--font-head); font-weight: 800; color: var(--wd-blau); white-space: nowrap; }
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-preise.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/i18n-wd-preise.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
<link rel="icon" type="image/png" href="/assets/img/favicon.png" />
|
||||
<link rel="manifest" href="/webdesign/app.webmanifest" />
|
||||
<meta name="theme-color" content="#05070b" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
</head>
|
||||
<body class="wd">
|
||||
<div id="wd-kopf"></div>
|
||||
@@ -400,6 +400,6 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
Start alle alten Zwischenspeicher weg. Muss bei jeder Änderung an den
|
||||
Dateien unten hochgezählt werden, sonst hängen Nutzer auf einem alten
|
||||
Stand fest. */
|
||||
const CACHE_NAME = "dogfather-webdesign-v11";
|
||||
const CACHE_NAME = "dogfather-webdesign-v12";
|
||||
|
||||
/* Bausteine, die die Oberfläche zum Anzeigen braucht. Bewusst KEINE
|
||||
HTML-Datei in dieser Liste. */
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
<style>
|
||||
.ue-kopf { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(1.5rem, 4vw, 3rem); align-items: center; }
|
||||
/* Auf dem Handy zuerst der Text, dann das Bild: sonst schiebt ein
|
||||
@@ -127,7 +127,7 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-ueber.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/i18n-wd-ueber.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
<link rel="apple-touch-icon" href="/assets/img/wd-app-180.png" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-title" content="DF Verwaltung" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
<style>
|
||||
/* =====================================================================
|
||||
Verwaltungsbereich — bewusst NUR AUF DEUTSCH.
|
||||
@@ -761,7 +761,7 @@
|
||||
<div class="vw-detail-blatt" id="vw-detail-blatt"></div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
<script>
|
||||
/* =====================================================================
|
||||
Verwaltung: Anfragen ansehen, Status ändern, Notizen, Archivieren.
|
||||
@@ -811,12 +811,60 @@
|
||||
try { if (t) sessionStorage.setItem(TOKEN_SCHLUESSEL, t); else sessionStorage.removeItem(TOKEN_SCHLUESSEL); } catch (e) { /* egal */ }
|
||||
}
|
||||
|
||||
function api(pfad, optionen) {
|
||||
var opt = optionen || {};
|
||||
/* ---------------------------------------------------------------------
|
||||
API-Aufruf MIT selbsttätiger Erneuerung des Ausweises
|
||||
|
||||
Warum das nötig ist (Rückmeldung 23.08.2026: "wieso werd ich auch
|
||||
immer meinen zugangscode gefragt wenn ich die kategorie wechseln
|
||||
tue das ist schwachsin"):
|
||||
|
||||
Der Ausweis für die interne Schnittstelle gilt 15 Minuten. Danach
|
||||
antwortete jede Anfrage mit 401, und die Verwaltung warf zurück auf
|
||||
die Codeeingabe — beim blossen Wechsel eines Reiters.
|
||||
|
||||
Das war doppelt falsch. Erstens ist die Zugangssitzung selbst
|
||||
8 Stunden gültig; der Code war also gar nicht nötig, ein frischer
|
||||
Ausweis hätte genügt. Zweitens ist ein Rauswurf mitten in der Arbeit
|
||||
die härteste denkbare Reaktion auf ein Problem, das sich unsichtbar
|
||||
lösen lässt.
|
||||
|
||||
Jetzt: Bei 401 wird EINMAL ein neuer Ausweis geholt und die Anfrage
|
||||
wiederholt. Nur wenn auch das scheitert, kommt die Codeeingabe —
|
||||
dann ist die Sitzung wirklich abgelaufen.
|
||||
|
||||
Ein Wiederholen ist hier unbedenklich, auch bei Absendungen: Eine
|
||||
mit 401 abgewiesene Anfrage hat serverseitig nichts bewirkt. */
|
||||
var ausweisLaeuft = null;
|
||||
|
||||
async function ausweisErneuern() {
|
||||
/* Alle gleichzeitig wartenden Anfragen teilen sich EINEN Versuch.
|
||||
Sonst holt jeder offene Aufruf seinen eigenen Ausweis, und beim
|
||||
Öffnen eines Reiters mit drei Abfragen wären es drei. */
|
||||
if (!ausweisLaeuft) {
|
||||
ausweisLaeuft = ausweisHolen().finally(function () { ausweisLaeuft = null; });
|
||||
}
|
||||
var neu = await ausweisLaeuft;
|
||||
if (neu) { token = neu; tokenSchreiben(neu); }
|
||||
return neu;
|
||||
}
|
||||
|
||||
function rufAuf(pfad, optionen) {
|
||||
var opt = Object.assign({}, optionen || {});
|
||||
opt.headers = Object.assign({ Authorization: "Bearer " + token }, opt.headers || {});
|
||||
return window.WD.api(pfad, opt);
|
||||
}
|
||||
|
||||
async function api(pfad, optionen) {
|
||||
try {
|
||||
return await rufAuf(pfad, optionen);
|
||||
} catch (fehler) {
|
||||
if (fehler.status !== 401) throw fehler;
|
||||
var neu = await ausweisErneuern();
|
||||
if (!neu) throw fehler; // Sitzung wirklich abgelaufen
|
||||
return await rufAuf(pfad, optionen);
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------- Anmeldung ---------------- */
|
||||
function zeigeAnmeldung() {
|
||||
document.getElementById("vw-anmeldung").hidden = false;
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
<link rel="icon" type="image/png" href="/assets/img/favicon.png" />
|
||||
<link rel="manifest" href="/webdesign/app.webmanifest" />
|
||||
<meta name="theme-color" content="#05070b" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
</head>
|
||||
<body class="wd">
|
||||
<div id="wd-kopf"></div>
|
||||
@@ -137,8 +137,8 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-widerruf.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-widerruf.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/i18n-wd-widerruf.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-widerruf.js?v=20260823wd12"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
|
||||
<style>
|
||||
/* =====================================================================
|
||||
Zugangswand — nur hier gebraucht, deshalb bewusst NICHT in
|
||||
@@ -177,8 +177,8 @@
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script src="/assets/js/i18n-wd-zugang.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd11"></script>
|
||||
<script src="/assets/js/i18n-wd-zugang.js?v=20260823wd12"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd12"></script>
|
||||
<script>
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
Reference in New Issue
Block a user