Der Installieren-Knopf war nie zu sehen — jetzt schon
Filipe, 22.09.2026: "und nochmal, ich will einen installieren button.
damit die leute es viel einfacher haben die seite auf dem pc oder auf
dem handy zu installieren!!! bitte das hab ich auch schon paar mal
gefragt. mach das es ist seeeeeeeehr wichtig."
Er hatte recht, und der Knopf war seit dem 20.09. gebaut. Er konnte
nur nie erscheinen. ZWEI URSACHEN, beide ausserhalb dessen, was
geprueft wurde:
1. DER SERVICE WORKER LIEF NIE. Er wurde ausschliesslich in glocke.js
angemeldet -- also erst, wenn jemand Benachrichtigungen ERLAUBT.
Auf Filipes Rechner stehen sie auf "Vom Browser blockiert"; das
steht sogar in seiner Kopfleiste auf dem Bildschirmfoto von heute
frueh. Ohne Service Worker macht Chrome kein Installationsangebot.
2. UND AUCH MIT WAERE ES NICHT GEGANGEN: Chrome verlangt einen Service
Worker MIT `fetch`-Zuhoerer. Dieser hatte keinen.
Ohne Angebot kommt `beforeinstallprompt` nie, und der Knopf bleibt
`hidden`. Fuer immer.
WAS SICH GEAENDERT HAT
- Der Service Worker wird jetzt auf JEDER Seite angemeldet, unabhaengig
von Benachrichtigungen. Das gehoert zum Installieren, nicht zur
Glocke.
- sw.js bekommt einen `fetch`-Zuhoerer, der NICHTS ablegt. Das
Versprechen im Kopf der Datei ("bewusst ohne Zwischenspeicher, der
Workspace liegt hinter einer Anmeldung") bleibt damit wortwoertlich
gueltig: Er reicht Seitenaufrufe durch und baut nur dann selbst eine
Antwort, wenn das Netz weg ist. Keine Serverantwort wird aufgehoben.
- Der Knopf zeigt sich, sobald der Browser installieren KANN, statt
erst nach dem Angebot. Geprueft wird die Faehigkeit
(`'onbeforeinstallprompt' in window`), nicht der Name des Browsers.
- DIE ANMELDEWAND BEKOMMT IHN AUCH. Sie hat keine Kopfleiste und
deshalb bisher gar kein Angebot -- dabei ist sie die Seite, auf der
jeder zuerst landet. Genau die Leute, um die es Filipe geht.
- Dafuer steht der Knopf jetzt in einer eigenen Datei
(assets/js/installieren.js) statt in kopf.js, das die Wand nicht
laedt. Und sein Stil in gate.css statt in module.css -- vierter Fall
derselben Art nach .knopf-still, dem Schalter und .feld-hinweis.
- Ohne `nachfrage.js` (also auf der Wand) erklaert er den Weg als
Absatz unter sich. Der erste Entwurf rief `window.frageNach?.()`
auf: Auf dem iPhone steht der Knopf dort von Anfang an da, und er
haette beim Antippen stumm nichts getan.
- Der Aufruf haengt nicht mehr an der Reihenfolge der Skriptzeilen.
chat.html und leistung.html laden kopf.js OHNE `defer`, dort waere
installieren.js immer zu spaet gekommen -- zwei von 37 Seiten ohne
Knopf, ohne Meldung.
- Chromes Manifest-Warnung zum `share_target` behoben (enctype).
WARUM DIE PRUEFUNG DAS NICHT GEFUNDEN HAT -- und was jetzt anders ist
Sie war gruen, die ganze Zeit. Sie hat `beforeinstallprompt` SELBST
zugestellt und gemessen, ob der Knopf darauf reagiert. Die eine Frage,
auf die es ankam -- "bietet der Browser es ueberhaupt an?" -- hat sie
nie gestellt.
Jetzt fragt sie Chrome direkt (`Page.getInstallabilityErrors`, sein
eigenes Urteil) und misst die Voraussetzungen statt der Reaktion:
laeuft ein Service Worker, OBWOHL Benachrichtigungen auf "denied"
stehen; hat sw.js einen fetch-Zuhoerer; legt er wirklich nichts ab;
steht der Knopf auf der Wand und tut er dort auch etwas.
Gemessen, mit Benachrichtigungen auf "denied":
Service Worker: activated
Chromes Urteil: kein einziges Hindernis
Manifest: nichts beanstandet
Knopf: 124x45 px, sichtbar, genau einer
pruef-installieren 29/0 (von 14). Dazu gruen: pruef-css-klassen,
pruef-struktur, pruef-crew-adresse, pruef-start-ansicht.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -46,7 +46,9 @@ const express = (await import("express")).default;
|
||||
const ec = express.response.cookie;
|
||||
express.response.cookie = function (n, w, o) { return ec.call(this, n, w, { ...(o || {}), secure: false }); };
|
||||
await import("./index.js");
|
||||
notbremse(220_000, "pruef-installieren");
|
||||
/* 220 -> 360 s: Abschnitt 0 startet einen weiteren Browser
|
||||
und wartet auf den Service Worker. */
|
||||
notbremse(360_000, "pruef-installieren");
|
||||
await new Promise((r) => setTimeout(r, 900));
|
||||
const BASIS = `http://127.0.0.1:${PORT}`;
|
||||
|
||||
@@ -101,6 +103,155 @@ try {
|
||||
return { ctx, s };
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
0. BIETET DER BROWSER ES UEBERHAUPT AN? (neu am 22.09.2026)
|
||||
=====================================================================
|
||||
DAS HIER IST DIE FRAGE, DIE ZWEI TAGE LANG NIEMAND GESTELLT HAT.
|
||||
|
||||
Die Pruefungen darunter stellen `beforeinstallprompt` SELBST zu und
|
||||
messen, was die Seite damit macht. Das war richtig gedacht und
|
||||
vollstaendig wertlos: Sie waren gruen, waehrend der Knopf auf
|
||||
Filipes Rechner seit dem 20.09. unsichtbar blieb, weil das echte
|
||||
Ereignis nie kam. Er hat dreimal danach gefragt.
|
||||
|
||||
ZWEI URSACHEN, beide ausserhalb dessen, was gemessen wurde:
|
||||
|
||||
1. Der Service Worker wurde nur in `glocke.js` angemeldet, also
|
||||
erst beim ERLAUBEN von Benachrichtigungen. Auf Filipes
|
||||
Rechner stehen sie auf "Vom Browser blockiert".
|
||||
2. Der Service Worker hatte keinen `fetch`-Zuhoerer. Chrome
|
||||
verlangt ihn fuer sein Installationsangebot.
|
||||
|
||||
Ohne Service Worker kein Angebot, ohne Angebot kein Knopf.
|
||||
|
||||
GEMESSEN WIRD JETZT AN DER QUELLE: `Page.getInstallabilityErrors`
|
||||
ist Chromes eigenes Urteil ueber genau diese Frage. Eine leere
|
||||
Liste heisst, dass der Browser es anbietet. Das kann keine
|
||||
nachgestellte Veranstaltung vortaeuschen.
|
||||
|
||||
`beforeinstallprompt` selbst wird hier bewusst NICHT verlangt: In
|
||||
dieser Umgebung (kein Profil, kein Nutzerverhalten, kein Fenster)
|
||||
loest Chromium es nicht aus. Das Urteil oben ist die Aussage, auf
|
||||
die es ankommt.
|
||||
===================================================================== */
|
||||
{
|
||||
const ctx0 = await browser.newContext({ viewport: { width: 1280, height: 860 } });
|
||||
const s0 = await ctx0.newPage();
|
||||
const cdp = await ctx0.newCDPSession(s0);
|
||||
await cdp.send("Page.enable");
|
||||
/* OHNE ANMELDUNG UND OHNE BENACHRICHTIGUNGSRECHT -- genau die Lage,
|
||||
in der es bisher nicht ging. Die Anmeldewand ist ausserdem die
|
||||
Seite, auf der jeder zuerst landet. */
|
||||
await s0.goto(BASIS + "/workspace/", { waitUntil: "networkidle" });
|
||||
await s0.waitForTimeout(2200);
|
||||
|
||||
const sw = await s0.evaluate(async () => {
|
||||
if (!("serviceWorker" in navigator)) return { da: false };
|
||||
const r = await navigator.serviceWorker.getRegistration("/workspace/");
|
||||
return { da: !!r, aktiv: !!r?.active, stand: r?.active?.state || null,
|
||||
recht: Notification.permission };
|
||||
});
|
||||
ok(sw.recht !== "granted",
|
||||
`Benachrichtigungen sind NICHT erlaubt (${sw.recht}) -- genau Filipes Lage`);
|
||||
ok(sw.da === true && sw.aktiv === true,
|
||||
`und trotzdem laeuft ein Service Worker (${sw.stand}) `
|
||||
+ `-- vorher haette hier "keiner" gestanden`);
|
||||
|
||||
/* Der `fetch`-Zuhoerer: ohne ihn bietet Chrome nichts an. Gemessen
|
||||
an der Datei, nicht am Gedaechtnis. */
|
||||
const { readFileSync: lies } = await import("node:fs");
|
||||
const { fileURLToPath: alsPfad } = await import("node:url");
|
||||
const { dirname: ordnerVon } = await import("node:path");
|
||||
const wurzel = join(ordnerVon(alsPfad(import.meta.url)), "..");
|
||||
const swText = lies(join(wurzel, "workspace", "sw.js"), "utf8");
|
||||
ok(/addEventListener\(\s*["']fetch["']/.test(swText),
|
||||
"sw.js hat einen fetch-Zuhoerer -- Chromes Bedingung fuers Anbieten");
|
||||
/* UND ER LEGT NICHTS AB. Das Versprechen im Kopf der Datei ist
|
||||
keine Absichtserklaerung, sondern wird hier nachgesehen: Wer
|
||||
`caches.open` einbaut, hebt Antworten auf -- hinter einer
|
||||
Anmeldung waeren das persoenliche Daten auf fremden Geraeten. */
|
||||
ok(!/caches\.(open|match)|cache\.put/.test(swText),
|
||||
"und er legt nichts ab -- keine persoenlichen Daten auf dem Geraet");
|
||||
|
||||
let urteil = null;
|
||||
try {
|
||||
urteil = (await cdp.send("Page.getInstallabilityErrors")).installabilityErrors;
|
||||
} catch (f) { urteil = "unlesbar: " + f.message; }
|
||||
/* DRITTER AUSGANG: Kann die Frage gar nicht gestellt werden, ist
|
||||
das kein Bestehen. Eine Pruefung, die ihre Voraussetzung nicht
|
||||
hat, muss das sagen. */
|
||||
ok(Array.isArray(urteil),
|
||||
Array.isArray(urteil) ? "Chrome laesst sich nach der Installierbarkeit fragen"
|
||||
: `KONNTE NICHT NACHSEHEN (${urteil})`);
|
||||
ok(Array.isArray(urteil) && urteil.length === 0,
|
||||
Array.isArray(urteil) && urteil.length
|
||||
? `Chrome nennt Hindernisse: ${urteil.map((f) => f.errorId).join(", ")}`
|
||||
: "und nennt kein einziges Hindernis -- die Seite ist installierbar");
|
||||
|
||||
let manifest = null;
|
||||
try { manifest = await cdp.send("Page.getAppManifest"); } catch { /* s.o. */ }
|
||||
const mFehler = (manifest?.errors || []).filter((f) => f.critical !== 0);
|
||||
ok(!!manifest?.url, `Chrome findet das Manifest (${manifest?.url || "nicht"})`);
|
||||
ok(mFehler.length === 0 && (manifest?.errors || []).length === 0,
|
||||
(manifest?.errors || []).length
|
||||
? `es meldet: ${(manifest.errors || []).map((f) => f.message).join(" | ").slice(0, 120)}`
|
||||
: "und beanstandet nichts daran");
|
||||
|
||||
/* DER KNOPF STEHT AUF DER ANMELDEWAND. Sie hat keine Kopfleiste und
|
||||
hatte deshalb frueher gar kein Angebot -- dabei landet dort
|
||||
jeder zuerst. */
|
||||
const aufWand = await s0.evaluate(() => {
|
||||
const k = document.querySelector(".install-knopf");
|
||||
if (!k) return { da: false };
|
||||
const r = k.getBoundingClientRect();
|
||||
return { da: true, sichtbar: !k.hidden, breit: Math.round(r.width),
|
||||
hoch: Math.round(r.height), imPlatz: !!k.closest("[data-install-platz]"),
|
||||
wort: k.textContent.trim() };
|
||||
});
|
||||
ok(aufWand.da && aufWand.imPlatz,
|
||||
`der Knopf steht auf der Anmeldewand, an seinem vorgesehenen Platz`);
|
||||
ok(aufWand.sichtbar === true && aufWand.hoch >= 44,
|
||||
`und ist zu sehen und zu treffen (${aufWand.breit}x${aufWand.hoch} px, "${aufWand.wort}")`);
|
||||
ok(/installieren/i.test(aufWand.wort || ""),
|
||||
`und sagt, was er tut ("${aufWand.wort}")`);
|
||||
|
||||
/* GEGENPROBE: nur EIN Knopf. Seit der Aufruf nicht mehr an der
|
||||
Reihenfolge der Skriptzeilen haengt, kann er aus zwei Richtungen
|
||||
kommen. */
|
||||
const anzahl = await s0.locator(".install-knopf").count();
|
||||
ok(anzahl === 1, `und zwar genau einer (${anzahl})`);
|
||||
|
||||
/* UND ER TUT ETWAS, WENN MAN IHN DRUECKT.
|
||||
Das ist hier keine Formalie, sondern der Fall, an dem der erste
|
||||
Entwurf gescheitert waere: Der Knopf rief `window.frageNach?.()`
|
||||
auf. Diese Seite laedt `nachfrage.js` NICHT -- also war die
|
||||
Funktion `undefined`, und `?.()` verschluckt das lautlos. Auf
|
||||
dem iPhone steht der Knopf hier von Anfang an da. Er haette
|
||||
stumm dagestanden, und wer ihn drueckt, sucht den Fehler bei
|
||||
sich.
|
||||
|
||||
Gegenprobe gleich dahinter: ein zweiter Druck macht die
|
||||
Erklaerung wieder zu. Sonst sammeln sich Absaetze. */
|
||||
const ohneDialog = await s0.evaluate(() => typeof window.frageNach !== "function");
|
||||
ok(ohneDialog, "auf der Anmeldewand gibt es den Dialogbaustein nicht (nachfrage.js fehlt dort)");
|
||||
|
||||
await s0.click(".install-knopf");
|
||||
await s0.waitForTimeout(400);
|
||||
const hinweis = await s0.evaluate(() => {
|
||||
const h = document.querySelector(".install-hinweis");
|
||||
return h ? h.textContent.replace(/\s+/g, " ").trim() : null;
|
||||
});
|
||||
ok(!!hinweis && /Menü|Teilen|Home-Bildschirm/i.test(hinweis),
|
||||
`er erklaert trotzdem den Weg ("${(hinweis || "nichts").slice(0, 60)}…")`);
|
||||
|
||||
await s0.click(".install-knopf");
|
||||
await s0.waitForTimeout(300);
|
||||
const zu = await s0.locator(".install-hinweis").count();
|
||||
ok(zu === 0, `und ein zweiter Druck macht sie wieder zu (${zu})`);
|
||||
|
||||
await ctx0.close();
|
||||
}
|
||||
|
||||
/* ---- Zustand 2: der Browser bietet es an ----------------------- */
|
||||
const a = await seiteAuf();
|
||||
/* Chromium loest `beforeinstallprompt` in dieser Umgebung nicht von
|
||||
@@ -111,8 +262,19 @@ try {
|
||||
const sichtbarVorher = await a.s.evaluate(() =>
|
||||
!!document.querySelector(".install-knopf:not([hidden])"));
|
||||
ok(vorher === 1, `der Knopf steht im Dokument (${vorher})`);
|
||||
ok(sichtbarVorher === false,
|
||||
"bleibt aber versteckt, solange der Browser nichts anbietet — kein Knopf ohne Wirkung");
|
||||
/* HIER STAND: "bleibt versteckt, solange der Browser nichts
|
||||
anbietet". Das war bis zum 22.09.2026 richtig -- und genau der
|
||||
Grund, warum Filipe ihn nie gesehen hat. `beforeinstallprompt`
|
||||
kommt in Chrome nicht verlaesslich sofort und gar nicht mehr,
|
||||
wenn es kurz vorher weggeklickt wurde.
|
||||
|
||||
Jetzt zeigt er sich, sobald der Browser das Installieren
|
||||
ueberhaupt KANN (`'onbeforeinstallprompt' in window`, wahr bei
|
||||
allen Chromium-Browsern) -- und faellt auf die Erklaerung
|
||||
zurueck, falls das Angebot ausbleibt. Wo auch das nicht zutrifft
|
||||
und kein Apple-Geraet vorliegt, bleibt er weg. */
|
||||
ok(sichtbarVorher === true,
|
||||
"und ist in einem Browser, der installieren kann, von Anfang an zu sehen");
|
||||
|
||||
await a.s.evaluate(() => {
|
||||
const e = new Event("beforeinstallprompt");
|
||||
@@ -201,6 +363,13 @@ try {
|
||||
await browser.close();
|
||||
}
|
||||
|
||||
/* Die Zahl gehoert in die Bedingung. Faellt sie, ist still ein
|
||||
Abschnitt ausgefallen -- und genau der neue Abschnitt 0 ist der,
|
||||
auf den es ankommt. */
|
||||
if (geprueft < 29) {
|
||||
console.log(` FEHL nur ${geprueft} Pruefungen gelaufen -- erwartet waren 29+`);
|
||||
fehler++;
|
||||
}
|
||||
console.log(`\n${fehler ? fehler + " FEHLER" : "Alles in Ordnung"} — ${geprueft} Prüfungen\n`);
|
||||
try { rmSync(ordner, { recursive: true, force: true }); } catch { /* egal */ }
|
||||
process.exit(fehler ? 1 : 0);
|
||||
|
||||
@@ -16,15 +16,15 @@
|
||||
verdeckt. Gefunden hat es pruef-struktur.
|
||||
|
||||
Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. -->
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
<!-- Ohne diese drei nimmt ein iPhone einen Bildschirmausschnitt als
|
||||
Symbol, Android zeichnet die Leiste weiss, und die Seite oeffnet
|
||||
ausserhalb der App -- auf einer Seite, die genau erklaeren soll,
|
||||
WARUM das Telefon nicht klingelt, ist das besonders unpassend. -->
|
||||
<link rel="manifest" href="/workspace/crew.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<style>
|
||||
/* Bewusst in der Seite und nicht in einer eigenen Datei: Diese Seite
|
||||
soll auch dann noch etwas anzeigen, wenn genau das schiefgeht,
|
||||
@@ -125,6 +125,8 @@
|
||||
</main>
|
||||
|
||||
|
||||
<script src="assets/js/anruf-probe.js?v=202609221359" defer></script>
|
||||
|
||||
<script src="assets/js/anruf-probe.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"share_target": {
|
||||
"action": "/workspace/teilen.html",
|
||||
"method": "GET",
|
||||
"enctype": "application/x-www-form-urlencoded",
|
||||
"params": {
|
||||
"title": "title",
|
||||
"text": "text",
|
||||
@@ -22,25 +23,25 @@
|
||||
},
|
||||
"icons": [
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-192.png?v=202609221359",
|
||||
"src": "/assets/img/app-symbole/workspace-192.png?v=202609221415",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-512.png?v=202609221359",
|
||||
"src": "/assets/img/app-symbole/workspace-512.png?v=202609221415",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609221359",
|
||||
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609221415",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609221359",
|
||||
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609221415",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
|
||||
@@ -1223,6 +1223,87 @@ body.suche-offen { overflow: hidden; }
|
||||
auf der Anmeldeseite gibt es nichts anderes zu tun. */
|
||||
.gate .knopf { width: 100%; margin-top: 18px; padding: 13px 18px; font-size: .95rem; }
|
||||
|
||||
/* ---- Der Installieren-Knopf (20.09.2026, hierher am 22.09.2026) ----
|
||||
|
||||
Er sieht aus wie die anderen Knöpfe der Kopfleiste -- mit einem
|
||||
Unterschied: ein leiser Akzentrand. Er ist ein Angebot, keine
|
||||
Warnung, und er verschwindet, sobald er überflüssig ist. Deshalb
|
||||
darf er auffallen, ohne zu drängen. */
|
||||
.install-knopf {
|
||||
appearance: none;
|
||||
display: inline-flex; align-items: center; gap: 7px;
|
||||
min-height: 44px; padding: 0 13px;
|
||||
border-radius: var(--radius-klein);
|
||||
border: 1px solid color-mix(in srgb, var(--akzent) 45%, transparent);
|
||||
background: color-mix(in srgb, var(--akzent) 12%, transparent);
|
||||
color: var(--text);
|
||||
font: inherit; font-size: .86rem; font-weight: 600;
|
||||
cursor: pointer; white-space: nowrap;
|
||||
transition: background var(--tempo), border-color var(--tempo);
|
||||
}
|
||||
.install-knopf:hover {
|
||||
background: color-mix(in srgb, var(--akzent) 22%, transparent);
|
||||
border-color: color-mix(in srgb, var(--akzent) 70%, transparent);
|
||||
}
|
||||
.install-knopf:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
|
||||
.install-knopf__zeichen {
|
||||
flex: none; width: 17px; height: 17px;
|
||||
fill: none; stroke: currentColor; stroke-width: 1.8;
|
||||
stroke-linecap: round; stroke-linejoin: round;
|
||||
}
|
||||
|
||||
/* AM HANDY NUR DAS ZEICHEN -- ABER NUR IN DER KOPFLEISTE.
|
||||
Dort ist es eng, und ein Pfeil in eine Ablage wird als
|
||||
"herunterladen/installieren" verstanden; das Wort kostet 90 px, die
|
||||
woanders fehlen. Der `aria-label` sagt es weiterhin vollständig.
|
||||
|
||||
Auf der Anmeldewand gilt das NICHT: Dort ist Platz, dort kennt
|
||||
niemand das Zeichen aus dem Zusammenhang, und dort ist der Knopf
|
||||
ein Angebot an Leute, die die Seite zum ersten Mal sehen. Ein
|
||||
nacktes Symbol wäre da ein Rätsel.
|
||||
(Vorher stand die Regel ohne Einschränkung. Das wäre genau der
|
||||
Fehler gewesen, den sie auf der Leiste vermeidet: eine Entscheidung
|
||||
aus einem Zusammenhang in einen anderen mitgenommen.) */
|
||||
@media (max-width: 760px) {
|
||||
.kopfleiste__rechts .install-knopf__text { display: none; }
|
||||
.kopfleiste__rechts .install-knopf { padding: 0; width: 44px; justify-content: center; }
|
||||
}
|
||||
@media (forced-colors: active) {
|
||||
.install-knopf { border: 1px solid CanvasText; }
|
||||
}
|
||||
|
||||
/* ---- Auf der Anmeldewand -------------------------------------------
|
||||
Eine eigene Zeile, mittig, mit Luft nach oben. Der Knopf ist hier
|
||||
das zweite Anliegen -- wer herkommt, will sich anmelden. */
|
||||
.gate-install {
|
||||
display: flex; flex-direction: column; align-items: center;
|
||||
gap: 10px;
|
||||
margin: 22px 0 6px;
|
||||
}
|
||||
.gate-install:empty { display: none; }
|
||||
|
||||
/* Die Erklärung für den Fall ohne Dialogbaustein (iPhone, und überall
|
||||
dort, wo `nachfrage.js` nicht geladen ist). Sie klappt unter dem
|
||||
Knopf auf und beim zweiten Antippen wieder zu. */
|
||||
.install-hinweis {
|
||||
display: grid; gap: 6px;
|
||||
max-width: 34rem;
|
||||
margin: 0;
|
||||
padding: 13px 15px;
|
||||
border: 1px solid var(--rand-hell);
|
||||
border-radius: var(--radius-klein, 12px);
|
||||
background: color-mix(in srgb, var(--tinte) 88%, #ffffff 12%);
|
||||
font-size: .86rem; line-height: 1.55;
|
||||
text-align: left;
|
||||
}
|
||||
.install-hinweis__titel { font-size: .92rem; color: var(--text); }
|
||||
.install-hinweis__weg { color: var(--text); }
|
||||
.install-hinweis__dazu { color: var(--text-leise); }
|
||||
|
||||
@media (forced-colors: active) {
|
||||
.install-hinweis { border: 1px solid CanvasText; }
|
||||
}
|
||||
|
||||
/* ---------- Filterleiste --------------------------------------------
|
||||
Eine Reihe von `.schritt`-Knoepfen, von denen genau einer gedrueckt
|
||||
ist. Stand bis 22.09.2026 doppelt in dateien.css und bereich.css --
|
||||
|
||||
@@ -1023,45 +1023,17 @@
|
||||
.tperson[data-rolle="hand"]::before { display: none; }
|
||||
}
|
||||
|
||||
/* ---- Der Installieren-Knopf (20.09.2026) ---------------------------
|
||||
/* Der Installieren-Knopf steht seit dem 22.09.2026 in gate.css.
|
||||
|
||||
Er sieht aus wie die anderen Knöpfe der Kopfleiste -- mit einem
|
||||
Unterschied: ein leiser Akzentrand. Er ist ein Angebot, keine
|
||||
Warnung, und er verschwindet, sobald er überflüssig ist. Deshalb
|
||||
darf er auffallen, ohne zu drängen. */
|
||||
.install-knopf {
|
||||
appearance: none;
|
||||
display: inline-flex; align-items: center; gap: 7px;
|
||||
min-height: 44px; padding: 0 13px;
|
||||
border-radius: var(--radius-klein);
|
||||
border: 1px solid color-mix(in srgb, var(--akzent) 45%, transparent);
|
||||
background: color-mix(in srgb, var(--akzent) 12%, transparent);
|
||||
color: var(--text);
|
||||
font: inherit; font-size: .86rem; font-weight: 600;
|
||||
cursor: pointer; white-space: nowrap;
|
||||
transition: background var(--tempo), border-color var(--tempo);
|
||||
}
|
||||
.install-knopf:hover {
|
||||
background: color-mix(in srgb, var(--akzent) 22%, transparent);
|
||||
border-color: color-mix(in srgb, var(--akzent) 70%, transparent);
|
||||
}
|
||||
.install-knopf:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
|
||||
.install-knopf__zeichen {
|
||||
flex: none; width: 17px; height: 17px;
|
||||
fill: none; stroke: currentColor; stroke-width: 1.8;
|
||||
stroke-linecap: round; stroke-linejoin: round;
|
||||
}
|
||||
/* AM HANDY NUR DAS ZEICHEN. Die Leiste ist dort eng, und ein Knopf mit
|
||||
Pfeil-nach-unten-in-eine-Ablage wird als „herunterladen/installieren"
|
||||
verstanden -- das Wort kostet 90 px, die woanders fehlen. Der
|
||||
`aria-label` sagt es weiterhin vollständig. */
|
||||
@media (max-width: 760px) {
|
||||
.install-knopf__text { display: none; }
|
||||
.install-knopf { padding: 0; width: 44px; justify-content: center; }
|
||||
}
|
||||
@media (forced-colors: active) {
|
||||
.install-knopf { border: 1px solid CanvasText; }
|
||||
}
|
||||
Grund: Die Anmeldewand laedt module.css nicht -- sie hat nur
|
||||
gate.css und ihr Haus. Und sie ist seit heute die wichtigste Stelle
|
||||
fuer diesen Knopf, weil jeder dort zuerst landet. Haette er hier
|
||||
gestanden, waere er dort nackt erschienen.
|
||||
|
||||
Es ist derselbe Fall wie bei .knopf-still, beim Schalter, bei der
|
||||
Filterleiste und bei .feld-hinweis: ein gemeinsamer Baustein in
|
||||
einer Seitendatei faellt immer genau dort auf, wo die Datei nicht
|
||||
geladen wird. */
|
||||
|
||||
/* =====================================================================
|
||||
DIE LEISTE FUER DIE TEXTGESTALTUNG (21.09.2026)
|
||||
|
||||
@@ -0,0 +1,273 @@
|
||||
/* =====================================================================
|
||||
installieren.js — die Seite als App aufs Gerät holen
|
||||
=====================================================================
|
||||
|
||||
ZWEI DINGE IN EINER DATEI, und sie gehoeren zusammen:
|
||||
|
||||
1. Der Service Worker wird angemeldet -- IMMER, auf jeder Seite.
|
||||
2. Der Knopf, der das Installieren anbietet.
|
||||
|
||||
WARUM BEIDES HIER STEHT (22.09.2026, nach Filipes drittem Anlauf:
|
||||
"ich will einen installieren button ... das hab ich auch schon paar
|
||||
mal gefragt. mach das es ist seeeeeeeehr wichtig."):
|
||||
|
||||
Der Knopf gab es seit dem 20.09. Er war nur NIE ZU SEHEN. Chrome
|
||||
zeigt sein Installationsangebot (`beforeinstallprompt`) erst, wenn
|
||||
ein Service Worker laeuft -- und der wurde ausschliesslich in
|
||||
`glocke.js` angemeldet, also erst, wenn jemand Benachrichtigungen
|
||||
ERLAUBT. Auf Filipes Rechner stehen sie auf "Vom Browser blockiert".
|
||||
Damit lief nie einer, damit kam das Ereignis nie, damit blieb der
|
||||
Knopf `hidden`. Fuer immer.
|
||||
|
||||
Die Anmeldung gehoert also nicht an die Glocke, sondern an das
|
||||
Installieren -- und beides an jede Seite. Deshalb eine Datei, die
|
||||
ueberall geladen wird, statt einer Abhaengigkeit, die kaum jemand
|
||||
erfuellt.
|
||||
|
||||
UND DESHALB LAEDT AUCH DIE ANMELDEWAND SIE. Sie hat keine
|
||||
Kopfleiste und deshalb frueher kein Angebot bekommen -- dabei ist
|
||||
sie die Seite, auf der jeder zuerst landet.
|
||||
===================================================================== */
|
||||
(() => {
|
||||
'use strict';
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
DER SERVICE WORKER -- ohne Bedingung, aber auch ohne Laerm
|
||||
---------------------------------------------------------------------
|
||||
Er scheitert an genug Stellen, an denen niemand etwas falsch
|
||||
gemacht hat: Privates Fenster, abgeschaltete Worker,
|
||||
Unternehmens-Richtlinie, veralteter Browser. Nichts davon ist ein
|
||||
Fehler, den ein Besucher sehen soll -- die Seite funktioniert auch
|
||||
ohne, sie laesst sich dann nur nicht installieren.
|
||||
|
||||
`load` abwarten: Die Anmeldung zieht Bandbreite, und zwar genau in
|
||||
dem Moment, in dem die Seite noch laedt. */
|
||||
if ('serviceWorker' in navigator) {
|
||||
const anmelden = () => {
|
||||
navigator.serviceWorker.register('/workspace/sw.js', { scope: '/workspace/' })
|
||||
.catch(() => { /* geht hier nicht -- die Seite laeuft trotzdem */ });
|
||||
};
|
||||
if (document.readyState === 'complete') anmelden();
|
||||
else window.addEventListener('load', anmelden, { once: true });
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
DIE SEITE ALS APP INSTALLIEREN (20.09.2026)
|
||||
|
||||
Filipe: „kannst du da dazwischen in der starseite oben, ein button
|
||||
reinsetzen damit die leute die seite installieren koennen auf dem
|
||||
handy oder pc. das soll auch verschwinden wenn die leute es
|
||||
installiert haben."
|
||||
|
||||
WARUM ES DEN KNOPF BRAUCHT: Das Manifest ist seit Langem
|
||||
vollstaendig -- die App LIESS sich installieren. Nur bot das
|
||||
ausschliesslich der Browser selbst an, versteckt in seinem
|
||||
Dreipunktemenue. Wer es nicht sucht, findet es nie. Und ohne
|
||||
installierte App gibt es auf dem Handy keine verlaesslichen
|
||||
Benachrichtigungen; genau daran hing im September das Telefonieren.
|
||||
|
||||
DREI ZUSTAENDE, UND JEDER BRAUCHT EINE ANDERE ANTWORT:
|
||||
|
||||
1. SCHON INSTALLIERT -> gar kein Knopf. Ein Angebot fuer etwas,
|
||||
das man hat, ist Rauschen. Erkannt an `display-mode:
|
||||
standalone` (und an Safaris eigenem `navigator.standalone`).
|
||||
|
||||
2. DER BROWSER BIETET ES AN (Chrome, Edge, Android) -> der Knopf
|
||||
fragt ihn. `beforeinstallprompt` kommt EINMAL und muss
|
||||
aufgehoben werden; wer ihn nicht festhaelt, kann spaeter
|
||||
nicht mehr fragen.
|
||||
|
||||
3. SAFARI AUF DEM iPHONE -> dort gibt es `beforeinstallprompt`
|
||||
NICHT, und es wird ihn nicht geben. Apple laesst nur den Weg
|
||||
ueber „Teilen -> Zum Home-Bildschirm". Ein Knopf, der dort
|
||||
nichts tut, waere schlimmer als keiner -- also sagt er in
|
||||
diesem Fall, was zu tun ist, statt es zu versuchen.
|
||||
|
||||
WARUM AUF JEDER SEITE UND NICHT NUR AUF DER STARTSEITE: Wer den
|
||||
Knopf einmal uebersieht, sieht ihn beim naechsten Mal wieder -- und
|
||||
er verschwindet ohnehin, sobald er ueberfluessig ist.
|
||||
|
||||
(Hier stand "auf allen 32 Seiten". Es sind inzwischen mehr, und
|
||||
seit dem 22.09. auch die Anmeldewand. Eine gezaehlte Zahl in einem
|
||||
Kommentar wird still falsch, sobald jemand eine Seite anlegt --
|
||||
also steht jetzt keine mehr da.)
|
||||
===================================================================== */
|
||||
|
||||
function knopfBauen(wohin) {
|
||||
/* ZWEIMAL AUFGERUFEN HEISST NICHT ZWEI KNOEPFE. Seit der Aufruf
|
||||
nicht mehr an der Reihenfolge der Skriptzeilen haengt, kann er
|
||||
aus zwei Richtungen kommen -- aus kopf.js und aus dem Platz
|
||||
unten in dieser Datei. Zwei Angebote fuer dieselbe Sache sind
|
||||
eines zu viel. */
|
||||
if (!wohin || wohin.querySelector('.install-knopf')) return;
|
||||
|
||||
const el = (tag, klasse, text) => {
|
||||
const k = document.createElement(tag);
|
||||
if (klasse) k.className = klasse;
|
||||
if (text !== undefined) k.textContent = text;
|
||||
return k;
|
||||
};
|
||||
|
||||
/* ---- Zustand 1: schon installiert -> nichts tun --------------- */
|
||||
const schonDrin = () =>
|
||||
(window.matchMedia && window.matchMedia('(display-mode: standalone)').matches)
|
||||
|| window.navigator.standalone === true;
|
||||
if (schonDrin()) return;
|
||||
|
||||
/* Apple: kein `beforeinstallprompt`, aber ein Weg. */
|
||||
const istApple = /iphone|ipad|ipod/i.test(navigator.userAgent)
|
||||
|| (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
|
||||
|
||||
let angebot = null; // der aufgehobene Browser-Vorschlag
|
||||
|
||||
const knopf = el('button', 'install-knopf');
|
||||
knopf.type = 'button';
|
||||
knopf.hidden = true;
|
||||
knopf.title = 'Diese Seite als App installieren';
|
||||
/* DAS WORT VERSCHWINDET AM HANDY (siehe CSS) -- der Satz fuer
|
||||
Vorleseprogramme nicht. Ein Knopf, der dort nur aus einem
|
||||
Pfeil besteht, heisst sonst "Schaltflaeche". */
|
||||
knopf.setAttribute('aria-label', 'Diese Seite als App installieren');
|
||||
const zeichen = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
||||
zeichen.setAttribute('viewBox', '0 0 24 24');
|
||||
zeichen.setAttribute('class', 'install-knopf__zeichen');
|
||||
zeichen.setAttribute('aria-hidden', 'true');
|
||||
zeichen.innerHTML = '<path d="M12 3.5v11M8 11l4 4 4-4"/><path d="M5 18.5h14"/>';
|
||||
knopf.append(zeichen, el('span', 'install-knopf__text', 'Installieren'));
|
||||
|
||||
knopf.addEventListener('click', async () => {
|
||||
if (angebot) {
|
||||
/* Zustand 2: den Browser fragen. Die Antwort interessiert uns
|
||||
nur insofern, als ein angenommener Vorschlag den Knopf
|
||||
ueberfluessig macht -- ein abgelehnter nicht: Vielleicht
|
||||
ueberlegt man es sich morgen anders. */
|
||||
knopf.disabled = true;
|
||||
try {
|
||||
angebot.prompt();
|
||||
const { outcome } = await angebot.userChoice;
|
||||
if (outcome === 'accepted') knopf.remove();
|
||||
} catch { /* dann eben nicht */ }
|
||||
angebot = null;
|
||||
knopf.disabled = false;
|
||||
return;
|
||||
}
|
||||
/* Zustand 3: erklaeren statt versuchen. */
|
||||
erklaeren();
|
||||
});
|
||||
|
||||
/* WARUM DAS NICHT EINFACH `frageNach` AUFRUFT (22.09.2026).
|
||||
|
||||
Der erste Entwurf tat genau das -- und haette auf der
|
||||
Anmeldewand gar nichts getan: Sie laedt `nachfrage.js` nicht,
|
||||
also ist `window.frageNach` dort `undefined`, und `?.()`
|
||||
verschluckt das lautlos. Auf dem iPhone steht der Knopf aber von
|
||||
Anfang an da. Ein Knopf, der beim Antippen nichts tut, ist
|
||||
schlimmer als keiner.
|
||||
|
||||
Die Datei nachzuladen waere die falsche Antwort: 22 KB und die
|
||||
halbe Stilvorlage `module.css` fuer eine Seite, die eine einzige
|
||||
Aufgabe hat. Und ein Kasten, der sich ueber das Codefeld legt,
|
||||
waere dort ohnehin im Weg.
|
||||
|
||||
Also: Wo es den Baustein gibt, wird er benutzt -- die Seite soll
|
||||
eine Sprache sprechen. Wo nicht, steht die Erklaerung als
|
||||
schlichter Absatz unter dem Knopf. Beides sagt dasselbe. */
|
||||
let hinweis = null;
|
||||
function erklaeren() {
|
||||
const titel = 'Als App auf dem Home-Bildschirm';
|
||||
const weg = istApple
|
||||
? 'Tippe unten in Safari auf das Teilen-Zeichen (Viereck mit Pfeil nach oben), '
|
||||
+ 'dann auf „Zum Home-Bildschirm".'
|
||||
: 'Öffne das Menü deines Browsers (die drei Punkte) und wähle dort '
|
||||
+ '„App installieren" oder „Zum Startbildschirm hinzufügen".';
|
||||
const dazu = 'Danach liegt die Seite wie eine App auf deinem Gerät – und '
|
||||
+ 'Anrufe und Nachrichten kommen zuverlässiger an.';
|
||||
|
||||
if (typeof window.frageNach === 'function') {
|
||||
window.frageNach({ titel, was: weg, bleibt: dazu, ja: 'Alles klar', nein: null });
|
||||
return;
|
||||
}
|
||||
|
||||
/* Ohne Dialogbaustein: ein Absatz, der beim zweiten Antippen
|
||||
wieder verschwindet. Kein zweiter, wenn schon einer dasteht. */
|
||||
if (hinweis) { hinweis.remove(); hinweis = null; knopf.setAttribute('aria-expanded', 'false'); return; }
|
||||
hinweis = el('p', 'install-hinweis');
|
||||
hinweis.id = 'install-hinweis';
|
||||
hinweis.append(el('strong', 'install-hinweis__titel', titel));
|
||||
hinweis.append(el('span', 'install-hinweis__weg', weg));
|
||||
hinweis.append(el('span', 'install-hinweis__dazu', dazu));
|
||||
knopf.setAttribute('aria-expanded', 'true');
|
||||
knopf.setAttribute('aria-controls', 'install-hinweis');
|
||||
knopf.insertAdjacentElement('afterend', hinweis);
|
||||
}
|
||||
|
||||
wohin.prepend(knopf);
|
||||
|
||||
/* Der Browser meldet sich, wenn er es anbieten kann. */
|
||||
window.addEventListener('beforeinstallprompt', (e) => {
|
||||
/* Ohne `preventDefault` zeigt der Browser seine eigene Leiste --
|
||||
zwei Angebote fuer dieselbe Sache sind eines zu viel. */
|
||||
e.preventDefault();
|
||||
angebot = e;
|
||||
knopf.hidden = false;
|
||||
});
|
||||
|
||||
/* WANN DER KNOPF ZU SEHEN IST -- und warum nicht erst nach dem
|
||||
Angebot des Browsers (geaendert 22.09.2026).
|
||||
|
||||
Bis heute wurde er ausschliesslich durch `beforeinstallprompt`
|
||||
sichtbar. Das hat zwei Loecher:
|
||||
|
||||
* Apple schickt das Ereignis nie. (Das war bekannt und ist
|
||||
unten schon abgefangen.)
|
||||
* Chrome schickt es zwar, aber nicht verlaesslich sofort -- und
|
||||
gar nicht, wenn es kurz vorher weggeklickt wurde. Dann steht
|
||||
der Knopf da, wo er gebraucht wird, und ist unsichtbar.
|
||||
|
||||
Filipe hat dreimal danach gefragt. Ein Angebot, das man nur unter
|
||||
guenstigen Umstaenden sieht, ist fuer ihn keins.
|
||||
|
||||
GEPRUEFT WIRD DIE FAEHIGKEIT, NICHT DER NAME DES BROWSERS:
|
||||
`'onbeforeinstallprompt' in window` ist bei allen Chromium-
|
||||
Browsern wahr -- Chrome, Edge, Brave, Samsung Internet, Android.
|
||||
Eine Liste von Browsernamen waere die, die beim naechsten
|
||||
veraltet.
|
||||
|
||||
Wo BEIDES nicht zutrifft -- Firefox am Rechner etwa, der
|
||||
Webanwendungen schlicht nicht installiert --, bleibt der Knopf
|
||||
weg. Ein Knopf, der eine Anleitung fuer etwas zeigt, das dieser
|
||||
Browser nicht kann, ist schlimmer als keiner. */
|
||||
const kannVielleicht = 'onbeforeinstallprompt' in window;
|
||||
if (istApple || kannVielleicht) knopf.hidden = false;
|
||||
|
||||
/* Und wenn es geklappt hat, ist er fertig. */
|
||||
window.addEventListener('appinstalled', () => knopf.remove());
|
||||
/* Manche Browser melden `appinstalled` nicht -- dann faellt der
|
||||
Knopf beim naechsten Oeffnen ueber `schonDrin()` weg. Und wer die
|
||||
App waehrend der Sitzung installiert und zurueckwechselt, merkt
|
||||
es hier: */
|
||||
try {
|
||||
window.matchMedia('(display-mode: standalone)')
|
||||
.addEventListener('change', (m) => { if (m.matches) knopf.remove(); });
|
||||
} catch { /* aeltere Browser koennen das nicht -- kein Grund zu scheitern */ }
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
WOHIN DER KNOPF GEHOERT
|
||||
---------------------------------------------------------------------
|
||||
Zwei Faelle, und sie schliessen sich aus:
|
||||
|
||||
* Es gibt eine Kopfleiste -> kopf.js sagt, wohin (es kennt die
|
||||
Reihenfolge der Knoepfe darin).
|
||||
* Es gibt keine -> dann steht auf der Seite ein Platz mit
|
||||
`data-install-platz`, und wir setzen uns selbst hinein.
|
||||
|
||||
Der zweite Fall wird NICHT geraten: Ohne diesen Platz passiert
|
||||
nichts. Ein Knopf, der sich irgendwohin haengt, weil er sonst
|
||||
nirgends hinpasst, landet frueher oder spaeter mitten im Text.
|
||||
--------------------------------------------------------------------- */
|
||||
window.installKnopfBauen = knopfBauen;
|
||||
|
||||
const platz = document.querySelector('[data-install-platz]');
|
||||
if (platz) knopfBauen(platz);
|
||||
})();
|
||||
+20
-129
@@ -1037,138 +1037,29 @@
|
||||
const kopfRechts = document.querySelector('.kopfleiste__rechts');
|
||||
if (kopfRechts) aufbauSuche(kopfRechts);
|
||||
if (kopfRechts) aufbauChat(kopfRechts);
|
||||
if (kopfRechts) aufbauInstallieren(kopfRechts);
|
||||
/* DER AUFRUF DARF NICHT VON DER REIHENFOLGE DER SKRIPTZEILEN
|
||||
ABHAENGEN. Auf chat.html und leistung.html steht `kopf.js` OHNE
|
||||
`defer` -- ein solches Skript laeuft sofort beim Einlesen, also
|
||||
immer vor jedem aufgeschobenen. `installieren.js` gaebe es dort
|
||||
zu diesem Zeitpunkt noch nicht, und `?.()` verschluckt das
|
||||
lautlos: kein Knopf, keine Meldung, auf genau zwei von
|
||||
siebenunddreissig Seiten.
|
||||
|
||||
/* =====================================================================
|
||||
DIE SEITE ALS APP INSTALLIEREN (20.09.2026)
|
||||
|
||||
Filipe: „kannst du da dazwischen in der starseite oben, ein button
|
||||
reinsetzen damit die leute die seite installieren koennen auf dem
|
||||
handy oder pc. das soll auch verschwinden wenn die leute es
|
||||
installiert haben."
|
||||
|
||||
WARUM ES DEN KNOPF BRAUCHT: Das Manifest ist seit Langem
|
||||
vollstaendig -- die App LIESS sich installieren. Nur bot das
|
||||
ausschliesslich der Browser selbst an, versteckt in seinem
|
||||
Dreipunktemenue. Wer es nicht sucht, findet es nie. Und ohne
|
||||
installierte App gibt es auf dem Handy keine verlaesslichen
|
||||
Benachrichtigungen; genau daran hing im September das Telefonieren.
|
||||
|
||||
DREI ZUSTAENDE, UND JEDER BRAUCHT EINE ANDERE ANTWORT:
|
||||
|
||||
1. SCHON INSTALLIERT -> gar kein Knopf. Ein Angebot fuer etwas,
|
||||
das man hat, ist Rauschen. Erkannt an `display-mode:
|
||||
standalone` (und an Safaris eigenem `navigator.standalone`).
|
||||
|
||||
2. DER BROWSER BIETET ES AN (Chrome, Edge, Android) -> der Knopf
|
||||
fragt ihn. `beforeinstallprompt` kommt EINMAL und muss
|
||||
aufgehoben werden; wer ihn nicht festhaelt, kann spaeter
|
||||
nicht mehr fragen.
|
||||
|
||||
3. SAFARI AUF DEM iPHONE -> dort gibt es `beforeinstallprompt`
|
||||
NICHT, und es wird ihn nicht geben. Apple laesst nur den Weg
|
||||
ueber „Teilen -> Zum Home-Bildschirm". Ein Knopf, der dort
|
||||
nichts tut, waere schlimmer als keiner -- also sagt er in
|
||||
diesem Fall, was zu tun ist, statt es zu versuchen.
|
||||
|
||||
WARUM IN DER KOPFLEISTE UND NICHT NUR AUF DER STARTSEITE: Die
|
||||
Leiste steht auf allen 32 Seiten. Wer den Knopf einmal uebersieht,
|
||||
sieht ihn beim naechsten Mal wieder -- und er verschwindet ohnehin,
|
||||
sobald er ueberfluessig ist.
|
||||
===================================================================== */
|
||||
|
||||
function aufbauInstallieren(wohin) {
|
||||
const el = (tag, klasse, text) => {
|
||||
const k = document.createElement(tag);
|
||||
if (klasse) k.className = klasse;
|
||||
if (text !== undefined) k.textContent = text;
|
||||
return k;
|
||||
};
|
||||
|
||||
/* ---- Zustand 1: schon installiert -> nichts tun --------------- */
|
||||
const schonDrin = () =>
|
||||
(window.matchMedia && window.matchMedia('(display-mode: standalone)').matches)
|
||||
|| window.navigator.standalone === true;
|
||||
if (schonDrin()) return;
|
||||
|
||||
/* Apple: kein `beforeinstallprompt`, aber ein Weg. */
|
||||
const istApple = /iphone|ipad|ipod/i.test(navigator.userAgent)
|
||||
|| (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
|
||||
|
||||
let angebot = null; // der aufgehobene Browser-Vorschlag
|
||||
|
||||
const knopf = el('button', 'install-knopf');
|
||||
knopf.type = 'button';
|
||||
knopf.hidden = true;
|
||||
knopf.title = 'Diese Seite als App installieren';
|
||||
/* DAS WORT VERSCHWINDET AM HANDY (siehe CSS) -- der Satz fuer
|
||||
Vorleseprogramme nicht. Ein Knopf, der dort nur aus einem
|
||||
Pfeil besteht, heisst sonst "Schaltflaeche". */
|
||||
knopf.setAttribute('aria-label', 'Diese Seite als App installieren');
|
||||
const zeichen = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
||||
zeichen.setAttribute('viewBox', '0 0 24 24');
|
||||
zeichen.setAttribute('class', 'install-knopf__zeichen');
|
||||
zeichen.setAttribute('aria-hidden', 'true');
|
||||
zeichen.innerHTML = '<path d="M12 3.5v11M8 11l4 4 4-4"/><path d="M5 18.5h14"/>';
|
||||
knopf.append(zeichen, el('span', 'install-knopf__text', 'Installieren'));
|
||||
|
||||
knopf.addEventListener('click', async () => {
|
||||
if (angebot) {
|
||||
/* Zustand 2: den Browser fragen. Die Antwort interessiert uns
|
||||
nur insofern, als ein angenommener Vorschlag den Knopf
|
||||
ueberfluessig macht -- ein abgelehnter nicht: Vielleicht
|
||||
ueberlegt man es sich morgen anders. */
|
||||
knopf.disabled = true;
|
||||
try {
|
||||
angebot.prompt();
|
||||
const { outcome } = await angebot.userChoice;
|
||||
if (outcome === 'accepted') knopf.remove();
|
||||
} catch { /* dann eben nicht */ }
|
||||
angebot = null;
|
||||
knopf.disabled = false;
|
||||
return;
|
||||
Die Zeile in den HTML-Dateien zu verschieben haette es heute
|
||||
behoben und beim naechsten neuen Skript wieder gebrochen. Also
|
||||
lieber gar keine Reihenfolge voraussetzen. */
|
||||
if (kopfRechts) {
|
||||
if (window.installKnopfBauen) window.installKnopfBauen(kopfRechts);
|
||||
else window.addEventListener('load',
|
||||
() => window.installKnopfBauen?.(kopfRechts), { once: true });
|
||||
}
|
||||
/* Zustand 3: erklaeren statt versuchen. */
|
||||
window.frageNach?.({
|
||||
titel: 'Als App auf dem Home-Bildschirm',
|
||||
was: istApple
|
||||
? 'Tippe unten in Safari auf das Teilen-Zeichen (Viereck mit Pfeil nach oben), '
|
||||
+ 'dann auf „Zum Home-Bildschirm".'
|
||||
: 'Öffne das Menü deines Browsers (die drei Punkte) und wähle dort '
|
||||
+ '„App installieren" oder „Zum Startbildschirm hinzufügen".',
|
||||
bleibt: 'Danach liegt die Seite wie eine App auf deinem Gerät – und '
|
||||
+ 'Anrufe und Nachrichten kommen zuverlässiger an.',
|
||||
ja: 'Alles klar',
|
||||
nein: null,
|
||||
});
|
||||
});
|
||||
|
||||
wohin.prepend(knopf);
|
||||
|
||||
/* Der Browser meldet sich, wenn er es anbieten kann. */
|
||||
window.addEventListener('beforeinstallprompt', (e) => {
|
||||
/* Ohne `preventDefault` zeigt der Browser seine eigene Leiste --
|
||||
zwei Angebote fuer dieselbe Sache sind eines zu viel. */
|
||||
e.preventDefault();
|
||||
angebot = e;
|
||||
knopf.hidden = false;
|
||||
});
|
||||
|
||||
/* Auf Apple gibt es diese Meldung nie -- dort steht der Knopf von
|
||||
Anfang an da und erklaert den Weg. */
|
||||
if (istApple) knopf.hidden = false;
|
||||
|
||||
/* Und wenn es geklappt hat, ist er fertig. */
|
||||
window.addEventListener('appinstalled', () => knopf.remove());
|
||||
/* Manche Browser melden `appinstalled` nicht -- dann faellt der
|
||||
Knopf beim naechsten Oeffnen ueber `schonDrin()` weg. Und wer die
|
||||
App waehrend der Sitzung installiert und zurueckwechselt, merkt
|
||||
es hier: */
|
||||
try {
|
||||
window.matchMedia('(display-mode: standalone)')
|
||||
.addEventListener('change', (m) => { if (m.matches) knopf.remove(); });
|
||||
} catch { /* aeltere Browser koennen das nicht -- kein Grund zu scheitern */ }
|
||||
}
|
||||
/* Der Installieren-Knopf steht seit dem 22.09.2026 in einer eigenen
|
||||
Datei: assets/js/installieren.js. Grund war nicht die Groesse,
|
||||
sondern die Anmeldewand: Sie laedt kopf.js nicht (sie hat keine
|
||||
Kopfleiste) -- und sie ist die Seite, auf der jeder zuerst landet.
|
||||
Ein Angebot zum Installieren, das genau dort fehlt, erreicht die
|
||||
Leute nicht, um die es Filipe geht. */
|
||||
|
||||
/* ---------- Der Chat-Knopf mit Zähler -----------------------------------
|
||||
|
||||
|
||||
+18
-17
@@ -12,19 +12,19 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -367,16 +367,17 @@
|
||||
<!-- TEXTFORM ZUERST (21.09.2026): Die Seite fragt beim Zeichnen nach
|
||||
`window.Textform`. Kaeme sie spaeter, waere der erste Eintrag ohne
|
||||
Gestaltung. Kein `defer`, damit sie wirklich vorher dasteht. -->
|
||||
<script src="assets/js/textform.js?v=202609221359"></script>
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/textform.js?v=202609221415"></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/zuteilung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/aufgaben.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/zuteilung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/aufgaben.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-15
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/automation.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/automation.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -168,13 +168,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/automation.js?v=202609221359" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/automation.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-14
@@ -7,14 +7,14 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -180,13 +180,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/befinden.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/befinden.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+21
-20
@@ -12,24 +12,24 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609221415" />
|
||||
<!-- Wegen des Blocks „Willst du dazugehoeren?" auf dem Brett
|
||||
„Mitmachen". Eine eigene Kopie der Regel hier waere die zweite
|
||||
Stelle, an der dieselbe Sache anders aussieht. -->
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -304,17 +304,18 @@
|
||||
<!-- TEXTFORM ZUERST (21.09.2026): Die Seite fragt beim Zeichnen nach
|
||||
`window.Textform`. Kaeme sie spaeter, waere der erste Eintrag ohne
|
||||
Gestaltung. Kein `defer`, damit sie wirklich vorher dasteht. -->
|
||||
<script src="assets/js/textform.js?v=202609221359"></script>
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/textform.js?v=202609221415"></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/ampel.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/schulung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereich.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/ampel.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/schulung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereich.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+19
-17
@@ -7,17 +7,17 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -108,12 +108,14 @@
|
||||
</main>
|
||||
|
||||
<!-- Der Fuß gehört zu jeder Seite - siehe pruef-css-klassen. -->
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>␍
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bewerben.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bewerben.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-16
@@ -7,16 +7,16 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -80,13 +80,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bewerbungen.js?v=202609221359" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bewerbungen.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-16
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/calls.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/calls.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -89,14 +89,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/ki.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/calls.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/calls.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+19
-18
@@ -12,26 +12,26 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<!-- aufgaben.css bringt die Dialog- und Formularstile mit (.dialog,
|
||||
.neu__zeile, .dialog__knoepfe). Sie stehen dort seit dem
|
||||
Aufgabenbrett; sie hierher zu kopieren hiesse, sie an zwei Stellen
|
||||
zu pflegen. Dieselbe Lösung nutzen kalender.html und content.html.
|
||||
Gemeldet von pruef-css-klassen.mjs, bevor jemand einen ungestylten
|
||||
Dialog zu sehen bekam. -->
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/chat.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/chat.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -415,24 +415,25 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<script src="assets/js/bereiche.js?v=202609221359"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415"></script>
|
||||
<!-- TEXTFORM VOR ALLEM ANDEREN (21.09.2026): chat.js und bereich.js
|
||||
fragen beim Zeichnen nach `window.Textform`. Kaeme sie spaeter,
|
||||
waere die erste gezeichnete Nachricht ohne Gestaltung -- und das
|
||||
faellt nur dem auf, der genau hinsieht. KEIN `defer`, damit sie
|
||||
wirklich vor den anderen dasteht. -->
|
||||
<script src="assets/js/textform.js?v=202609221359"></script>
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359"></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359"></script>
|
||||
<script src="assets/js/textform.js?v=202609221415"></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415"></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415"></script>
|
||||
<!-- ANRUF VOR CHAT (18.09.2026): anruf.js stellt `window.anrufStarten`
|
||||
bereit, und chat.js baut die Knoepfe nur, wenn es das gibt.
|
||||
Andersherum waere die Reihenfolge eine stille Abhaengigkeit --
|
||||
die Knoepfe fehlten, und niemand wuesste warum. -->
|
||||
<script src="assets/js/anruf.js?v=202609221359"></script>
|
||||
<script src="assets/js/chat.js?v=202609221359"></script>
|
||||
<script src="assets/js/anruf.js?v=202609221415"></script>
|
||||
<script src="assets/js/chat.js?v=202609221415"></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-16
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/content.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/content.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -179,14 +179,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/content.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/content.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -36,15 +36,15 @@
|
||||
<link rel="preload" as="image" href="assets/img/buehne/crew-gate-hoch-580.webp"
|
||||
type="image/webp" media="(max-width: 899px)" />
|
||||
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<!-- Diese Wand steht NUR auf der Adresse von Team Dogi (ueberall sonst
|
||||
404, siehe crewWeiche). Sie darf das Haus deshalb direkt nennen
|
||||
statt ueber den Platzhalter haus.css zu gehen -- und sie MUSS es:
|
||||
Eine Zugangswand, die sich erst nach dem Umbiegen faerbt, waere
|
||||
die eine Seite, auf der man das Umfaerben sieht. -->
|
||||
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="gate gate--crew">
|
||||
@@ -372,6 +372,20 @@
|
||||
<p class="fuss fuss--woher">Noch keinen Code? Frag im Live nach – Team Dogi gibt ihn dir persönlich.<br />
|
||||
Gehörst du zum Team und dein Code geht nicht? Schreib DogFather – er macht dir einen neuen.</p>
|
||||
|
||||
<!-- DAS ANGEBOT ZUM INSTALLIEREN GEHOERT HIERHER (22.09.2026).
|
||||
Filipe: "ich will einen installieren button. damit die leute es
|
||||
viel einfacher haben die seite auf dem pc oder auf dem handy zu
|
||||
installieren!!!"
|
||||
|
||||
Diese Seite ist die, auf der jeder zuerst landet -- und die
|
||||
einzige, die keine Kopfleiste hat. Genau deshalb fehlte das
|
||||
Angebot hier bisher ganz.
|
||||
|
||||
UNTER dem Anmelden-Knopf und nicht darueber: Wer hier ist, will
|
||||
sich anmelden. Das Installieren ist das zweite Anliegen, nicht
|
||||
das erste. Der Knopf ist von selbst weg, sobald die App liegt. -->
|
||||
<p class="gate-install" data-install-platz></p>
|
||||
|
||||
<p class="fuss">
|
||||
Verschlüsselte Verbindung · Zugriffe werden protokolliert
|
||||
</p>
|
||||
@@ -381,6 +395,7 @@
|
||||
|
||||
|
||||
|
||||
<script src="assets/js/gate.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/gate.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"share_target": {
|
||||
"action": "/workspace/teilen.html",
|
||||
"method": "GET",
|
||||
"enctype": "application/x-www-form-urlencoded",
|
||||
"params": {
|
||||
"title": "title",
|
||||
"text": "text",
|
||||
@@ -22,25 +23,25 @@
|
||||
},
|
||||
"icons": [
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-192.png?v=202609221359",
|
||||
"src": "/assets/img/app-symbole/crew-192.png?v=202609221415",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-512.png?v=202609221359",
|
||||
"src": "/assets/img/app-symbole/crew-512.png?v=202609221415",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609221359",
|
||||
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609221415",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609221359",
|
||||
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609221415",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
|
||||
+17
-16
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/dateien.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/dateien.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -108,14 +108,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/dateien.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/dateien.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-14
@@ -7,14 +7,14 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -132,13 +132,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/entwicklung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/entwicklung.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-13
@@ -7,13 +7,13 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -146,12 +146,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/hilfe.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/hilfe.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+21
-4
@@ -30,9 +30,9 @@
|
||||
<link rel="preload" as="image" href="assets/img/buehne/gate-hoch-580.webp"
|
||||
type="image/webp" media="(max-width: 899px)" />
|
||||
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="gate">
|
||||
@@ -404,6 +404,20 @@
|
||||
niemanden im Haus kennt. -->
|
||||
<p class="fuss fuss--woher">Noch keinen Code? Den bekommst du von deinem Manager oder von DogFather.</p>
|
||||
|
||||
<!-- DAS ANGEBOT ZUM INSTALLIEREN GEHOERT HIERHER (22.09.2026).
|
||||
Filipe: "ich will einen installieren button. damit die leute es
|
||||
viel einfacher haben die seite auf dem pc oder auf dem handy zu
|
||||
installieren!!!"
|
||||
|
||||
Diese Seite ist die, auf der jeder zuerst landet -- und die
|
||||
einzige, die keine Kopfleiste hat. Genau deshalb fehlte das
|
||||
Angebot hier bisher ganz.
|
||||
|
||||
UNTER dem Anmelden-Knopf und nicht darueber: Wer hier ist, will
|
||||
sich anmelden. Das Installieren ist das zweite Anliegen, nicht
|
||||
das erste. Der Knopf ist von selbst weg, sobald die App liegt. -->
|
||||
<p class="gate-install" data-install-platz></p>
|
||||
|
||||
<p class="fuss">
|
||||
Verschlüsselte Verbindung · Zugriffe werden protokolliert
|
||||
</p>
|
||||
@@ -411,6 +425,9 @@
|
||||
</div>
|
||||
|
||||
|
||||
<script src="assets/js/gate.js?v=202609221359" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/gate.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-16
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/kalender.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/kalender.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -383,14 +383,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kalender.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kalender-abo.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kalender.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kalender-abo.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-15
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/leistung.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/leistung.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -444,12 +444,13 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359"></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359"></script>
|
||||
<script src="assets/js/wahl.js?v=202609221359"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359"></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359"></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359"></script>
|
||||
<script src="assets/js/leistung.js?v=202609221359"></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415"></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415"></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415"></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415"></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415"></script>
|
||||
<script src="assets/js/leistung.js?v=202609221415"></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-15
@@ -12,13 +12,13 @@
|
||||
vergessen wird. -->
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/material.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/material.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
<body class="start" data-ton="42" data-buehne="studio">
|
||||
|
||||
@@ -138,13 +138,14 @@
|
||||
<p class="m-laedt" id="laedt">Einen Moment …</p>
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/material.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/material.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-15
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/personen.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/personen.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -453,13 +453,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/personen.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/personen.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-17
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -214,15 +214,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/profil.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/profil.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-14
@@ -7,14 +7,14 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -134,11 +134,12 @@
|
||||
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
|
||||
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
|
||||
die seit dem 07.09. jede Seite danach absucht. -->
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/rechte.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/rechte.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-16
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/report.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/report.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -106,14 +106,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/ki.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/report.js?v=202609221359" defer></script>
|
||||
|
||||
<script src="assets/js/ki.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/report.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-15
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/scouting.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/scouting.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -173,13 +173,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/scouting.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/scouting.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-15
@@ -12,21 +12,21 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<!-- Nur die Startseite: Begrüßungskachel, Uhr, Glockenmulde. Siehe
|
||||
den Hinweis in start.css -- dort stand es bis zum 07.09.2026. -->
|
||||
<link rel="stylesheet" href="assets/css/heim.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/heim.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -678,15 +678,16 @@
|
||||
</p>
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/live.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/start.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/live.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/start.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-16
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -85,14 +85,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/ki.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/startcheck.js?v=202609221359" defer></script>
|
||||
|
||||
<script src="assets/js/ki.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/startcheck.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-17
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -150,15 +150,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+88
-4
@@ -1,8 +1,10 @@
|
||||
/* =====================================================================
|
||||
Service Worker des Creator Workspace.
|
||||
|
||||
Er hat GENAU EINE Aufgabe: Benachrichtigungen entgegennehmen und
|
||||
anzeigen.
|
||||
Er hat ZWEI Aufgaben:
|
||||
1. Benachrichtigungen entgegennehmen und anzeigen.
|
||||
2. Da sein -- damit der Browser die Seite ueberhaupt als App
|
||||
anbietet (siehe unten, 22.09.2026).
|
||||
|
||||
⚠️ BEWUSST OHNE ZWISCHENSPEICHER. Der naheliegende Zusatz waere,
|
||||
hier auch Seiten und Dateien vorzuhalten ("offline verfuegbar").
|
||||
@@ -16,8 +18,14 @@
|
||||
Falsches zeigt, ist schlimmer als gar keiner -- man glaubt ihm
|
||||
ja. Die Versionsstempel loesen das Problem bereits.
|
||||
|
||||
Wer spaeter Offline-Faehigkeit will, faengt hier NICHT einfach an,
|
||||
sondern klaert vorher, was zwischengespeichert werden darf.
|
||||
Das gilt weiter, und das Versprechen wird unten eingehalten: Der
|
||||
`fetch`-Zuhoerer legt NICHTS ab. Er reicht durch, und nur wenn das
|
||||
Netz weg ist, antwortet er mit einer Seite, die er selbst
|
||||
zusammensetzt -- ohne je eine Antwort des Servers aufgehoben zu
|
||||
haben.
|
||||
|
||||
Wer spaeter echte Offline-Faehigkeit will, faengt hier NICHT einfach
|
||||
an, sondern klaert vorher, was zwischengespeichert werden darf.
|
||||
===================================================================== */
|
||||
|
||||
/* Beim Einbauen sofort uebernehmen, statt auf das Schliessen aller
|
||||
@@ -26,6 +34,82 @@
|
||||
self.addEventListener("install", (e) => { self.skipWaiting(); });
|
||||
self.addEventListener("activate", (e) => { e.waitUntil(self.clients.claim()); });
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
WARUM HIER EIN `fetch`-ZUHOERER STEHT, OBWOHL NICHTS ZWISCHENGESPEICHERT
|
||||
WIRD (22.09.2026)
|
||||
---------------------------------------------------------------------
|
||||
Filipe, mehrfach und zuletzt deutlich: "ich will einen installieren
|
||||
button. damit die leute es viel einfacher haben die seite auf dem pc
|
||||
oder auf dem handy zu installieren!!! ... das hab ich auch schon paar
|
||||
mal gefragt."
|
||||
|
||||
Der Knopf gab es seit dem 10.09. Er war nur nie zu sehen, und daran
|
||||
waren ZWEI Dinge schuld, die beide hier zusammenkommen:
|
||||
|
||||
1. Dieser Service Worker wurde ausschliesslich in `glocke.js`
|
||||
angemeldet -- also erst, wenn jemand Benachrichtigungen
|
||||
ERLAUBT. Auf Filipes Rechner stehen sie auf "Vom Browser
|
||||
blockiert". Damit lief nie einer.
|
||||
|
||||
2. Auch mit Anmeldung haette es nicht gereicht: Chrome verlangt
|
||||
fuer sein Installationsangebot einen Service Worker MIT einem
|
||||
`fetch`-Zuhoerer. Dieser hier hatte keinen.
|
||||
|
||||
Ohne Angebot des Browsers kommt `beforeinstallprompt` nie, und der
|
||||
Knopf bleibt `hidden` -- fuer immer. Die Pruefung dazu war die ganze
|
||||
Zeit gruen: Sie hat das Ereignis SELBST ausgeloest und gemessen, ob
|
||||
der Knopf darauf reagiert. Die eine Frage, auf die es ankam --
|
||||
"bietet der Browser es ueberhaupt an?" -- hat sie nie gestellt.
|
||||
|
||||
DIESER ZUHOERER LEGT NICHTS AB. Er meldet sich nur bei
|
||||
Seitenaufrufen, reicht sie ans Netz weiter, und wenn das Netz weg
|
||||
ist, baut er die Antwort selbst. Keine Antwort des Servers wird
|
||||
aufgehoben, also kann auch nichts Persoenliches auf dem Geraet
|
||||
liegenbleiben.
|
||||
------------------------------------------------------------------ */
|
||||
|
||||
/* Die Seite fuer den Fall ohne Netz. Sie steht HIER im Quelltext und
|
||||
nicht in einer abgelegten Datei -- eine abgelegte Datei waere ein
|
||||
Zwischenspeicher, und genau den soll es nicht geben. */
|
||||
const OHNE_NETZ = `<!doctype html>
|
||||
<html lang="de"><head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Gerade kein Netz</title>
|
||||
<style>
|
||||
html,body{height:100%;margin:0}
|
||||
body{display:grid;place-items:center;padding:24px;
|
||||
background:#0a121e;color:#dbe4ef;
|
||||
font:16px/1.6 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
|
||||
.k{max-width:26rem;text-align:center}
|
||||
h1{font-size:1.25rem;margin:0 0 12px}
|
||||
p{margin:0 0 10px;color:#94a5bb}
|
||||
button{margin-top:18px;padding:12px 20px;font:inherit;color:#fff;cursor:pointer;
|
||||
border:1px solid rgba(63,189,245,.55);border-radius:12px;background:#121926}
|
||||
</style></head>
|
||||
<body><div class="k">
|
||||
<h1>Gerade kein Netz</h1>
|
||||
<p>Dein Gerät ist offline — deshalb konnte die Seite nicht geladen werden.</p>
|
||||
<p>Es liegt nicht an der App. Sobald du wieder Empfang oder WLAN hast, geht es weiter.</p>
|
||||
<button type="button" onclick="location.reload()">Noch einmal versuchen</button>
|
||||
</div></body></html>`;
|
||||
|
||||
self.addEventListener("fetch", (e) => {
|
||||
const a = e.request;
|
||||
/* NUR SEITENAUFRUFE. Bilder, Stilvorlagen und vor allem die
|
||||
Schnittstellen bleiben unangetastet -- ein Service Worker, der
|
||||
sich in eine API einmischt, ist die Sorte Fehler, die man Tage
|
||||
spaeter an unerklaerlichen Antworten sucht. */
|
||||
if (a.method !== "GET" || a.mode !== "navigate") return;
|
||||
e.respondWith(fetch(a).catch(() => new Response(OHNE_NETZ, {
|
||||
status: 503,
|
||||
headers: {
|
||||
"Content-Type": "text/html; charset=utf-8",
|
||||
/* Nicht aufheben -- auch nicht vom Browser selbst. */
|
||||
"Cache-Control": "no-store",
|
||||
},
|
||||
})));
|
||||
});
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
Eine Benachrichtigung kommt an.
|
||||
------------------------------------------------------------------ */
|
||||
|
||||
+16
-15
@@ -7,18 +7,18 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609221415" />
|
||||
<!-- Wegen des Kastens „Anfragen“ ueber der Liste. Eine eigene Kopie
|
||||
der Regel hier waere die zweite Stelle, an der dieselbe Sache
|
||||
anders aussieht. -->
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -111,12 +111,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/talente.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/talente.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-14
@@ -7,20 +7,20 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -110,12 +110,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>␍
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/team.js?v=202609221359" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/team.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-14
@@ -7,20 +7,20 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<!-- `data-buehne` steht hier fest und nicht im Skript: Die Kachel zu
|
||||
@@ -84,11 +84,13 @@
|
||||
Kaputt ist dabei nichts -- er funktioniert. Genau deshalb faellt
|
||||
es niemandem auf, und deshalb prueft pruef-css-klassen die
|
||||
ABHAENGIGKEIT statt der Optik. Hier hat sie angeschlagen. -->
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>␍
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/teamlage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/teamlage.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-13
@@ -7,13 +7,13 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -112,12 +112,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/teilen.js?v=202609221359" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/teilen.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -126,12 +126,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/treff-moderation.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/treff-moderation.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-14
@@ -7,18 +7,18 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein. Auf der Adresse des
|
||||
Treffs biegt der Server genau diesen Dateinamen auf crew-haus.css
|
||||
um, und die Seite kommt schon beim ERSTEN Abruf in Lila und
|
||||
Babyblau an -- ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -221,11 +221,13 @@
|
||||
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
|
||||
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
|
||||
die seit dem 07.09. jede Seite danach absucht. -->
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>␍
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/treff-regeln.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/treff-regeln.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-15
@@ -12,22 +12,22 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
|
||||
Dialog "Creator anlegen". -->
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -149,14 +149,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/uebersicht.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/uebersicht.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -335,12 +335,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/live.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/unsere-seiten.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/live.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/unsere-seiten.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-14
@@ -7,15 +7,15 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -144,11 +144,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>␍
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/werdegang.js?v=202609221359" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/werdegang.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-14
@@ -12,13 +12,13 @@
|
||||
vergessen wird. -->
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/willkommen.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/willkommen.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
<!-- KOERPERKLASSE "start", NICHT "gate" (berichtigt 21.09.2026).
|
||||
`body.gate` ist die Anmeldewand: `display:flex; align-items:center`,
|
||||
@@ -75,12 +75,13 @@
|
||||
<p class="fehler" id="fehler" hidden></p>
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/willkommen.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/willkommen.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-16
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221359" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/wissen.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221359" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609221415" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/wissen.css?v=202609221415" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609221415" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221359" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221415" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -190,14 +190,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609221415" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wissen.js?v=202609221359" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609221415" defer></script>
|
||||
<script src="assets/js/wissen.js?v=202609221415" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user