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:
2026-08-23 17:23:19 +02:00
co-authored by Claude Opus 5
parent a5cd4bdcbd
commit bd9051bfb7
14 changed files with 104 additions and 56 deletions
+4 -4
View File
@@ -13,8 +13,8 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <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-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" /> <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/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
<style> <style>
/* Zeitstrahl: die Linie verbindet die Nummernkreise. Sie liegt hinter /* Zeitstrahl: die Linie verbindet die Nummernkreise. Sie liegt hinter
den Kreisen (z-index) und endet beim letzten Schritt, damit sie nicht den Kreisen (z-index) und endet beim letzten Schritt, damit sie nicht
@@ -183,7 +183,7 @@
<div id="wd-fuss"></div> <div id="wd-fuss"></div>
<script src="/assets/js/i18n-wd-ablauf.js?v=20260823wd11"></script> <script src="/assets/js/i18n-wd-ablauf.js?v=20260823wd12"></script>
<script src="/assets/js/wd-core.js?v=20260823wd11"></script> <script src="/assets/js/wd-core.js?v=20260823wd12"></script>
</body> </body>
</html> </html>
+5 -5
View File
@@ -13,8 +13,8 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <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-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" /> <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/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
<style> <style>
/* ---------- Schrittanzeige ---------- /* ---------- Schrittanzeige ----------
Zeigt alle vier Schritte gleichzeitig statt nur "3 von 4". Man sieht Zeigt alle vier Schritte gleichzeitig statt nur "3 von 4". Man sieht
@@ -418,8 +418,8 @@
<div id="wd-fuss"></div> <div id="wd-fuss"></div>
<script src="/assets/js/i18n-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=20260823wd11"></script> <script src="/assets/js/wd-core.js?v=20260823wd12"></script>
<script src="/assets/js/wd-anfrage.js?v=20260823wd11"></script> <script src="/assets/js/wd-anfrage.js?v=20260823wd12"></script>
</body> </body>
</html> </html>
+4 -4
View File
@@ -13,8 +13,8 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <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-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" /> <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/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
<style> <style>
.fq-thema { scroll-margin-top: 90px; } .fq-thema { scroll-margin-top: 90px; }
.fq-thema + .fq-thema { margin-top: clamp(2rem, 4vw, 3rem); } .fq-thema + .fq-thema { margin-top: clamp(2rem, 4vw, 3rem); }
@@ -195,7 +195,7 @@
<div id="wd-fuss"></div> <div id="wd-fuss"></div>
<script src="/assets/js/i18n-wd-faq.js?v=20260823wd11"></script> <script src="/assets/js/i18n-wd-faq.js?v=20260823wd12"></script>
<script src="/assets/js/wd-core.js?v=20260823wd11"></script> <script src="/assets/js/wd-core.js?v=20260823wd12"></script>
</body> </body>
</html> </html>
+4 -4
View File
@@ -16,8 +16,8 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <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-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" /> <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/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
<style> <style>
/* ---------- Nur auf der Startseite gebraucht ---------- */ /* ---------- Nur auf der Startseite gebraucht ---------- */
@@ -407,8 +407,8 @@
<div id="wd-fuss"></div> <div id="wd-fuss"></div>
<script src="/assets/js/i18n-wd-index.js?v=20260823wd11"></script> <script src="/assets/js/i18n-wd-index.js?v=20260823wd12"></script>
<script src="/assets/js/wd-core.js?v=20260823wd11"></script> <script src="/assets/js/wd-core.js?v=20260823wd12"></script>
<script> <script>
/* --------------------------------------------------------------------- /* ---------------------------------------------------------------------
Marken-Intro (Masterplan S.3, Schritt 02: "Nach erfolgreichem Code Marken-Intro (Masterplan S.3, Schritt 02: "Nach erfolgreichem Code
+4 -4
View File
@@ -13,8 +13,8 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <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-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" /> <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/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
<style> <style>
/* Sprungmarken. /* Sprungmarken.
Frueher eine waagerecht wischbare Leiste. Rueckmeldung 22.08.2026: Frueher eine waagerecht wischbare Leiste. Rueckmeldung 22.08.2026:
@@ -331,7 +331,7 @@
<div id="wd-fuss"></div> <div id="wd-fuss"></div>
<script src="/assets/js/i18n-wd-leistungen.js?v=20260823wd11"></script> <script src="/assets/js/i18n-wd-leistungen.js?v=20260823wd12"></script>
<script src="/assets/js/wd-core.js?v=20260823wd11"></script> <script src="/assets/js/wd-core.js?v=20260823wd12"></script>
</body> </body>
</html> </html>
+5 -5
View File
@@ -12,8 +12,8 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <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-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" /> <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/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
<style> <style>
.po-login { max-width: 440px; margin: clamp(1.5rem,6vh,4rem) auto; } .po-login { max-width: 440px; margin: clamp(1.5rem,6vh,4rem) auto; }
@@ -134,8 +134,8 @@
<div id="wd-fuss"></div> <div id="wd-fuss"></div>
<script src="/assets/js/i18n-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=20260823wd11"></script> <script src="/assets/js/wd-core.js?v=20260823wd12"></script>
<script src="/assets/js/wd-portal.js?v=20260823wd11"></script> <script src="/assets/js/wd-portal.js?v=20260823wd12"></script>
</body> </body>
</html> </html>
+4 -4
View File
@@ -13,8 +13,8 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <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-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" /> <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/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
<style> <style>
.pfo-projekt { overflow: hidden; padding: 0; margin-bottom: clamp(1.4rem, 3vw, 2.2rem); } .pfo-projekt { overflow: hidden; padding: 0; margin-bottom: clamp(1.4rem, 3vw, 2.2rem); }
.pfo-bild { .pfo-bild {
@@ -192,7 +192,7 @@
<div id="wd-fuss"></div> <div id="wd-fuss"></div>
<script src="/assets/js/i18n-wd-portfolio.js?v=20260823wd11"></script> <script src="/assets/js/i18n-wd-portfolio.js?v=20260823wd12"></script>
<script src="/assets/js/wd-core.js?v=20260823wd11"></script> <script src="/assets/js/wd-core.js?v=20260823wd12"></script>
</body> </body>
</html> </html>
+4 -4
View File
@@ -13,8 +13,8 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <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-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" /> <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/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
<style> <style>
.pr-preis-gross { font-family: var(--font-head); font-weight: 800; color: var(--wd-blau); white-space: nowrap; } .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> <div id="wd-fuss"></div>
<script src="/assets/js/i18n-wd-preise.js?v=20260823wd11"></script> <script src="/assets/js/i18n-wd-preise.js?v=20260823wd12"></script>
<script src="/assets/js/wd-core.js?v=20260823wd11"></script> <script src="/assets/js/wd-core.js?v=20260823wd12"></script>
</body> </body>
</html> </html>
+3 -3
View File
@@ -8,8 +8,8 @@
<link rel="icon" type="image/png" href="/assets/img/favicon.png" /> <link rel="icon" type="image/png" href="/assets/img/favicon.png" />
<link rel="manifest" href="/webdesign/app.webmanifest" /> <link rel="manifest" href="/webdesign/app.webmanifest" />
<meta name="theme-color" content="#05070b" /> <meta name="theme-color" content="#05070b" />
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
</head> </head>
<body class="wd"> <body class="wd">
<div id="wd-kopf"></div> <div id="wd-kopf"></div>
@@ -400,6 +400,6 @@
<div id="wd-fuss"></div> <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> </body>
</html> </html>
+1 -1
View File
@@ -34,7 +34,7 @@
Start alle alten Zwischenspeicher weg. Muss bei jeder Änderung an den Start alle alten Zwischenspeicher weg. Muss bei jeder Änderung an den
Dateien unten hochgezählt werden, sonst hängen Nutzer auf einem alten Dateien unten hochgezählt werden, sonst hängen Nutzer auf einem alten
Stand fest. */ Stand fest. */
const CACHE_NAME = "dogfather-webdesign-v11"; const CACHE_NAME = "dogfather-webdesign-v12";
/* Bausteine, die die Oberfläche zum Anzeigen braucht. Bewusst KEINE /* Bausteine, die die Oberfläche zum Anzeigen braucht. Bewusst KEINE
HTML-Datei in dieser Liste. */ HTML-Datei in dieser Liste. */
+4 -4
View File
@@ -13,8 +13,8 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <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-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" /> <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/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
<style> <style>
.ue-kopf { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(1.5rem, 4vw, 3rem); align-items: center; } .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 /* Auf dem Handy zuerst der Text, dann das Bild: sonst schiebt ein
@@ -127,7 +127,7 @@
<div id="wd-fuss"></div> <div id="wd-fuss"></div>
<script src="/assets/js/i18n-wd-ueber.js?v=20260823wd11"></script> <script src="/assets/js/i18n-wd-ueber.js?v=20260823wd12"></script>
<script src="/assets/js/wd-core.js?v=20260823wd11"></script> <script src="/assets/js/wd-core.js?v=20260823wd12"></script>
</body> </body>
</html> </html>
+53 -5
View File
@@ -11,8 +11,8 @@
<link rel="apple-touch-icon" href="/assets/img/wd-app-180.png" /> <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-capable" content="yes" />
<meta name="apple-mobile-web-app-title" content="DF Verwaltung" /> <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/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
<style> <style>
/* ===================================================================== /* =====================================================================
Verwaltungsbereich — bewusst NUR AUF DEUTSCH. Verwaltungsbereich — bewusst NUR AUF DEUTSCH.
@@ -761,7 +761,7 @@
<div class="vw-detail-blatt" id="vw-detail-blatt"></div> <div class="vw-detail-blatt" id="vw-detail-blatt"></div>
</div> </div>
<script src="/assets/js/wd-core.js?v=20260823wd11"></script> <script src="/assets/js/wd-core.js?v=20260823wd12"></script>
<script> <script>
/* ===================================================================== /* =====================================================================
Verwaltung: Anfragen ansehen, Status ändern, Notizen, Archivieren. 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 */ } 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 || {}); opt.headers = Object.assign({ Authorization: "Bearer " + token }, opt.headers || {});
return window.WD.api(pfad, opt); 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 ---------------- */ /* ---------------- Anmeldung ---------------- */
function zeigeAnmeldung() { function zeigeAnmeldung() {
document.getElementById("vw-anmeldung").hidden = false; document.getElementById("vw-anmeldung").hidden = false;
+5 -5
View File
@@ -9,8 +9,8 @@
<link rel="icon" type="image/png" href="/assets/img/favicon.png" /> <link rel="icon" type="image/png" href="/assets/img/favicon.png" />
<link rel="manifest" href="/webdesign/app.webmanifest" /> <link rel="manifest" href="/webdesign/app.webmanifest" />
<meta name="theme-color" content="#05070b" /> <meta name="theme-color" content="#05070b" />
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
</head> </head>
<body class="wd"> <body class="wd">
<div id="wd-kopf"></div> <div id="wd-kopf"></div>
@@ -137,8 +137,8 @@
<div id="wd-fuss"></div> <div id="wd-fuss"></div>
<script src="/assets/js/i18n-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=20260823wd11"></script> <script src="/assets/js/wd-core.js?v=20260823wd12"></script>
<script src="/assets/js/wd-widerruf.js?v=20260823wd11"></script> <script src="/assets/js/wd-widerruf.js?v=20260823wd12"></script>
</body> </body>
</html> </html>
+4 -4
View File
@@ -21,8 +21,8 @@
<meta name="apple-mobile-web-app-capable" content="yes" /> <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-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" /> <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/main.css?v=20260823wd12" />
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd11" /> <link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd12" />
<style> <style>
/* ===================================================================== /* =====================================================================
Zugangswand — nur hier gebraucht, deshalb bewusst NICHT in Zugangswand — nur hier gebraucht, deshalb bewusst NICHT in
@@ -177,8 +177,8 @@
</div> </div>
</main> </main>
<script src="/assets/js/i18n-wd-zugang.js?v=20260823wd11"></script> <script src="/assets/js/i18n-wd-zugang.js?v=20260823wd12"></script>
<script src="/assets/js/wd-core.js?v=20260823wd11"></script> <script src="/assets/js/wd-core.js?v=20260823wd12"></script>
<script> <script>
(function () { (function () {
"use strict"; "use strict";