Fett, kursiv, unterstrichen, durchgestrichen -- ueberall
Filipe, 21.09.2026: "dan will ich dass die leute auch immer die art
von text aussuchen können, fettgedrückt, unterstrichen und so alles.
das überall sei es im chat jeder für sich oder sei es wenn die modis
oder rechte hand oder dogfather eine aufgabe oder sachen posten."
VORHER GEMESSEN: Es gab genau EINE Auszeichnung im ganzen Haus --
fett, und nur auf den Brettern (`mitFett` in bereich.js). Im Chat
konnte niemand etwas hervorheben.
EINE QUELLE FUER DAS GANZE HAUS: workspace/assets/js/textform.js.
Chat, Bretter und Aufgaben zeichnen ihren Text jetzt durch denselben
Zerleger. Drei Fassungen derselben Regel waeren drei Fassungen, die
verschieden altern.
**fett** _kursiv_ __unterstrichen__ ~~durchgestrichen~~
Dazu eine Leiste ueber jedem Schreibfeld: F K U S, 44 px am Finger,
Strg+B/I/U, und ein zweiter Druck nimmt die Zeichen wieder weg.
DIE WORTGRENZEN SIND DER EIGENTLICHE BAU. Ein Zerleger, der alles
auszeichnet, ist schlimmer als keiner: `datei_name_hier` hiesse
plotzlich anders, als es heisst, und `@max_muster` ebenso. Deshalb
stehen bei den Unterstrichen Wortgrenzen -- bei Sternchen und Tilden
nicht, die kommen in Text nicht versehentlich paarweise vor.
GEBAUT MIT createTextNode, NIE innerHTML. Wer Text zu Auszeichnung
macht, ist einen Tippfehler von einer Luecke entfernt. Das ist heute
sicher; pruef-textform misst es, damit es das morgen auch ist.
EIN ECHTER FEHLER DABEI GEFUNDEN -- in meinem eigenen Einbau von
vorhin: Auf dem Aufgabenbrett stand `$('f-text')` in einem Block, der
`$` gar nicht kennt (die Datei hat drei getrennte Bloecke).
`ReferenceError: $ is not defined`, die Leiste kam dort nie an, und
die Seite sah dabei vollkommen normal aus. Derselbe Block beginnt
ausserdem mit `if (!feld) return;` auf ein Aufwand-Feld, das mit
Textgestaltung nichts zu tun hat -- die Leiste haette an einer
voellig fremden Bedingung gehangen. Jetzt ein eigener Block, ohne
fremden Helfer und ohne fremde Bedingung.
Gefunden hat es die Pruefung, weil sie die Leiste AM FELD sucht,
statt den Aufruf im Quelltext zu zaehlen. Sie sammelt seitdem auch
Skriptfehler ein -- ein ReferenceError ist immer ein Befund, auch
wenn man noch nicht weiss, was er anrichtet.
pruef-textform.mjs, 50 Aussagen:
- welche Seite das Modul braucht, wird ABGELEITET (beide
Richtungen: keine ohne, keine umsonst) -- 3 brauchen, 32 nicht
- 13 Regelfaelle im echten Browser an der echten Datei, davon
sechs, die NICHT gestaltet werden duerfen
- eine echte Nachricht wird zu <strong>/<em>/<u>/<s>
- Sicherheitsprobe: <b> und <img onerror> bleiben Text, nichts
wird ausgefuehrt -- und die echte Auszeichnung daneben wirkt
trotzdem (sonst waere nur bewiesen, dass gar nichts passiert)
- die Leiste legt Zeichen wirklich um und wieder ab
- Gegenproben fuer beide Richtungen
Nachbarn unveraendert gruen: pruef-chat-optik 45/0 (war 39 -- die
Antwortleiste kam dazu), pruef-aufgabenbrett 49/0, pruef-nachfrage
49/0, pruef-css-klassen 30/0, pruef-tippziele 11/0, pruef-meldungen
8/0.
This commit is contained in:
@@ -0,0 +1,500 @@
|
||||
/* =====================================================================
|
||||
pruef-textform.mjs — FETT, KURSIV, UNTERSTRICHEN, DURCHGESTRICHEN
|
||||
=====================================================================
|
||||
|
||||
Filipes Wunsch vom 21.09.2026: "dan will ich dass die leute auch
|
||||
immer die art von text aussuchen können, fettgedrückt, unterstrichen
|
||||
und so alles. das überall sei es im chat jeder für sich oder sei es
|
||||
wenn die modis oder rechte hand oder dogfather eine aufgabe oder
|
||||
sachen posten."
|
||||
|
||||
WAS HIER GEPRUEFT WIRD -- und warum gerade das:
|
||||
|
||||
(1) DASS ES UEBERALL IST. Nicht ueber eine gepflegte Seitenliste,
|
||||
sondern abgeleitet: Wessen Skript die Gestaltung benutzt, dessen
|
||||
Seite muss sie auch laden. Und umgekehrt -- wer sie laedt und
|
||||
nicht benutzt, schleppt sie umsonst mit. Eine Liste, die niemand
|
||||
pflegt, kann nicht veralten.
|
||||
|
||||
(2) DIE REGELN -- im echten Browser, an der echten ausgelieferten
|
||||
Datei. Ein Nachbau in Node wuerde beweisen, dass mein Nachbau
|
||||
funktioniert, nicht dass der Chat es tut.
|
||||
|
||||
(3) DASS ECHTE ELEMENTE ENTSTEHEN. `<strong>` im Baum, nicht
|
||||
"**fett**" als Text und nicht "<strong>" als Zeichenkette.
|
||||
Alle drei sehen im Quelltext aehnlich aus und sind voellig
|
||||
verschieden.
|
||||
|
||||
(4) DIE SICHERHEITSPROBE. Wer Text zu Auszeichnung macht, ist einen
|
||||
Tippfehler von `innerHTML` entfernt. `textform.js` baut mit
|
||||
`createTextNode`, also kann nichts passieren -- aber das ist eine
|
||||
Eigenschaft des Codes von heute, keine des Codes von morgen.
|
||||
Deshalb wird es GEMESSEN: Eine Nachricht mit `<b>` und
|
||||
`<img onerror=...>` muss als Text dastehen, sichtbar, unwirksam.
|
||||
|
||||
(5) DIE GEGENPROBEN. Ohne sie wuesste niemand, ob diese Pruefung
|
||||
ueberhaupt "nicht in Ordnung" sagen kann.
|
||||
|
||||
===== Was hier ABSICHTLICH NICHT geprueft wird =====
|
||||
|
||||
Das Aussehen der Leiste (Farben, Abstaende) -- das macht
|
||||
pruef-chat-optik an echten Bildpunkten, und zwei Pruefungen fuer
|
||||
dieselbe Frage altern verschieden.
|
||||
===================================================================== */
|
||||
|
||||
import { mkdtempSync, rmSync, readFileSync, readdirSync, appendFileSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
|
||||
const ordner = mkdtempSync(join(tmpdir(), "ws-textform-"));
|
||||
process.env.WORKSPACE_DB = join(ordner, "workspace.db");
|
||||
|
||||
import { notbremse } from "./helfer-notbremse.mjs";
|
||||
const { eigenerPort } = await import("./helfer-port.mjs");
|
||||
const PORT = await eigenerPort(import.meta, "die Textgestaltungspruefung");
|
||||
|
||||
process.env.PORT = `${PORT}`;
|
||||
process.env.SITE_ACCESS_SECRET = "lokaler-test";
|
||||
process.env.SITE_PUBLIC_LAUNCH_AT = "2020-01-01T00:00:00+01:00";
|
||||
|
||||
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(420_000, "pruef-textform");
|
||||
await new Promise((r) => setTimeout(r, 1000));
|
||||
const BASIS = `http://127.0.0.1:${PORT}`;
|
||||
|
||||
const PROTOKOLL = join(process.cwd(), "pruef-textform-lauf.txt");
|
||||
try { rmSync(PROTOKOLL, { force: true }); } catch { /* gab es noch nicht */ }
|
||||
const melde = (z) => {
|
||||
console.log(z);
|
||||
try { appendFileSync(PROTOKOLL, z + "\n"); } catch { /* Zugabe */ }
|
||||
};
|
||||
let fehler = 0;
|
||||
const ok = (b, t) => { melde((b ? " ok " : " FEHL ") + t); if (!b) fehler++; };
|
||||
|
||||
melde("\n===== DIE TEXTGESTALTUNG =====");
|
||||
|
||||
/* =======================================================================
|
||||
1. WER SIE BENUTZT, LAEDT SIE AUCH -- UND UMGEKEHRT
|
||||
|
||||
Abgeleitet, nicht abgeschrieben. Beide Richtungen, weil nur eine
|
||||
davon die halbe Sicherung waere: Eine Seite ohne das Modul stuerzt
|
||||
ab; eine Seite mit unbenutztem Modul kostet jeden Besucher Bytes.
|
||||
======================================================================= */
|
||||
melde("\n=== Jede Seite, die sie braucht, hat sie ===");
|
||||
{
|
||||
const { ohneKommentar } = await import("./helfer-ohne-kommentar.mjs");
|
||||
const wHtml = new URL("../workspace/", import.meta.url);
|
||||
const wJs = new URL("../workspace/assets/js/", import.meta.url);
|
||||
|
||||
/* Welche Skripte benutzen die Gestaltung wirklich? OHNE Kommentare --
|
||||
in calls.js steht das Wort "Textformen" in einem Erklaertext, und
|
||||
eine Pruefung, die daran anschlaegt, treibt einen dazu, die
|
||||
Erklaerung zu loeschen. */
|
||||
const nutzer = new Set();
|
||||
for (const datei of readdirSync(wJs).filter((f) => f.endsWith(".js"))) {
|
||||
const roh = readFileSync(new URL(datei, wJs), "utf8");
|
||||
if (datei === "textform.js") continue; /* sie selbst zaehlt nicht */
|
||||
if (/\bTextform\b/.test(ohneKommentar(roh, ".js"))) nutzer.add(datei);
|
||||
}
|
||||
ok(nutzer.size >= 3,
|
||||
`${nutzer.size} Skripte benutzen die Gestaltung (${[...nutzer].sort().join(", ")})`);
|
||||
|
||||
let mitBedarf = 0, ohneBedarf = 0, fehlend = [], ueberfluessig = [];
|
||||
const seiten = readdirSync(wHtml).filter((f) => f.endsWith(".html"));
|
||||
for (const seite of seiten) {
|
||||
const html = readFileSync(new URL(seite, wHtml), "utf8");
|
||||
const skripte = [...html.matchAll(/<script[^>]+src="[^"]*assets\/js\/([a-z0-9-]+\.js)/g)]
|
||||
.map((m) => m[1]);
|
||||
const braucht = skripte.some((s) => nutzer.has(s));
|
||||
const laedt = /assets\/js\/textform\.js/.test(html);
|
||||
if (braucht) {
|
||||
mitBedarf++;
|
||||
if (!laedt) fehlend.push(seite);
|
||||
} else {
|
||||
ohneBedarf++;
|
||||
if (laedt) ueberfluessig.push(seite);
|
||||
}
|
||||
}
|
||||
|
||||
/* DIE ZAHLEN GEHOEREN IN DIE BEDINGUNG. Faende die Ableitung
|
||||
keine einzige Seite mit Bedarf, waere unten alles gruen und nichts
|
||||
geprueft -- genau der Fehler, der in diesem Haus schon zweimal
|
||||
unbemerkt blieb. */
|
||||
ok(mitBedarf >= 3 && ohneBedarf >= 5,
|
||||
`${mitBedarf} Seiten brauchen sie, ${ohneBedarf} nicht (${seiten.length} insgesamt)`);
|
||||
ok(fehlend.length === 0,
|
||||
fehlend.length === 0
|
||||
? "jede Seite mit Bedarf laedt textform.js"
|
||||
: `diese Seiten brauchen sie und laden sie nicht: ${fehlend.join(", ")}`);
|
||||
ok(ueberfluessig.length === 0,
|
||||
ueberfluessig.length === 0
|
||||
? "und keine schleppt sie umsonst mit"
|
||||
: `laden sie ohne Bedarf: ${ueberfluessig.join(", ")}`);
|
||||
}
|
||||
|
||||
/* =======================================================================
|
||||
2. VORBEREITUNG FUER ALLES WEITERE
|
||||
======================================================================= */
|
||||
const { DatabaseSync } = await import("node:sqlite");
|
||||
const { scryptSync, randomBytes } = await import("node:crypto");
|
||||
await fetch(BASIS + "/workspace/api/anmelden", {
|
||||
method: "POST", headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ rolle: "admin", code: "x" }) }).catch(() => {});
|
||||
for (let i = 0; i < 60; i++) {
|
||||
try {
|
||||
const p = new DatabaseSync(process.env.WORKSPACE_DB);
|
||||
try { p.prepare("SELECT 1 FROM personen LIMIT 1").get(); break; } finally { p.close(); }
|
||||
} catch { await new Promise((r) => setTimeout(r, 250)); }
|
||||
}
|
||||
const d = new DatabaseSync(process.env.WORKSPACE_DB);
|
||||
const jetzt = new Date().toISOString();
|
||||
function anlegen(name, rolle, code) {
|
||||
const salt = randomBytes(16).toString("hex");
|
||||
const hash = scryptSync(code, salt, 64, { N: 32768, r: 8, p: 1, maxmem: 96 * 1024 * 1024 }).toString("hex");
|
||||
d.prepare("INSERT INTO personen (name, rolle, code_hash, code_salt, code_n, aktiv, erstellt) VALUES (?,?,?,?,?,1,?)")
|
||||
.run(name, rolle, hash, salt, 32768, jetzt);
|
||||
return d.prepare("SELECT last_insert_rowid() AS id").get().id;
|
||||
}
|
||||
anlegen("Filipe", "admin", "CODE-DOGI-0001");
|
||||
const idRieke = anlegen("Rieke", "hand", "CODE-HAND-0001");
|
||||
d.close();
|
||||
|
||||
const pw = await import("file:///C:/Users/qciga/Documents/Obelix/Analyse/node_modules/playwright/index.mjs");
|
||||
const browser = await pw.chromium.launch();
|
||||
|
||||
/* JEDER SEITENFEHLER WIRD MITGESCHRIEBEN.
|
||||
|
||||
Beim ersten Lauf meldete diese Pruefung "die Leiste steht nicht am
|
||||
Feld" -- richtig, aber zwei Schritte vom Grund entfernt. Der Grund
|
||||
war ein `ReferenceError: $ is not defined`, den niemand sah: Die
|
||||
Seite laedt, sieht normal aus und kann nur eine Sache nicht mehr.
|
||||
Ein Skriptfehler ist immer ein Befund, auch wenn man nicht sofort
|
||||
weiss, was er anrichtet. */
|
||||
const seitenFehler = [];
|
||||
|
||||
async function alsRolle(rolle, code, wohin, breite = 1280) {
|
||||
const ctx = await browser.newContext({ viewport: { width: breite, height: 900 } });
|
||||
const seite = await ctx.newPage();
|
||||
seite.on("pageerror", (e) => seitenFehler.push(`${wohin}: ${String(e).slice(0, 120)}`));
|
||||
await seite.goto(BASIS + "/workspace/", { waitUntil: "networkidle" });
|
||||
await seite.click(`.rolle[data-rolle="${rolle}"]`);
|
||||
await seite.fill("#code", code);
|
||||
await seite.click("button[type=submit]");
|
||||
await seite.waitForURL("**/start.html", { timeout: 25000 });
|
||||
await seite.goto(`${BASIS}/workspace/${wohin}`, { waitUntil: "networkidle" });
|
||||
await seite.waitForTimeout(900);
|
||||
return { ctx, seite };
|
||||
}
|
||||
|
||||
const chef = await alsRolle("admin", "CODE-DOGI-0001", "chat.html");
|
||||
|
||||
/* =======================================================================
|
||||
3. DIE REGELN -- an der echten Datei, im echten Browser
|
||||
|
||||
Dreizehn Faelle, und die Haelfte davon sind die, die NICHT gestaltet
|
||||
werden duerfen. Ein Zerleger, der alles auszeichnet, ist schlimmer
|
||||
als keiner: Dann heisst jeder Dateiname plotzlich anders, als er
|
||||
heisst.
|
||||
======================================================================= */
|
||||
melde("\n=== Die Regeln ===");
|
||||
{
|
||||
const proben = await chef.seite.evaluate(() => {
|
||||
const f = window.Textform;
|
||||
if (!f) return null;
|
||||
/* Ein Stueck wird zu "text|stile" verdichtet, damit sich der
|
||||
Vergleich unten in einer Zeile lesen laesst. */
|
||||
const kurz = (t) => f.teile(t)
|
||||
.map((s) => s.text + "|" + Object.keys(s.stile).sort().join("+"))
|
||||
.join(" // ");
|
||||
return {
|
||||
fett: kurz("**fett**"),
|
||||
kursiv: kurz("ein _wort_ hier"),
|
||||
unter: kurz("ein __wort__ hier"),
|
||||
durch: kurz("~~weg~~"),
|
||||
dateiname: kurz("datei_name_hier"),
|
||||
erwaehnung: kurz("@max_muster"),
|
||||
verschachtelt: kurz("**fett _und_ kursiv**"),
|
||||
rechnung: kurz("2 * 3 * 4"),
|
||||
nackt: kurz("**"),
|
||||
gewoehnlich: kurz("ganz gewoehnlich"),
|
||||
zweimal: kurz("**a** und **b**"),
|
||||
mittendrin: kurz("a_b_c"),
|
||||
leer: kurz(""),
|
||||
};
|
||||
});
|
||||
|
||||
ok(!!proben, "die Gestaltung ist auf der Chatseite geladen");
|
||||
if (proben) {
|
||||
const soll = {
|
||||
fett: "fett|fett",
|
||||
kursiv: "ein |" + " // " + "wort|kursiv" + " // " + " hier|",
|
||||
unter: "ein |" + " // " + "wort|unter" + " // " + " hier|",
|
||||
durch: "weg|durch",
|
||||
dateiname: "datei_name_hier|",
|
||||
erwaehnung: "@max_muster|",
|
||||
verschachtelt: "fett |fett // und|fett+kursiv // kursiv|fett",
|
||||
rechnung: "2 * 3 * 4|",
|
||||
nackt: "**|",
|
||||
gewoehnlich: "ganz gewoehnlich|",
|
||||
zweimal: "a|fett // und |" + " // " + "b|fett",
|
||||
mittendrin: "a_b_c|",
|
||||
leer: "",
|
||||
};
|
||||
let stimmt = 0;
|
||||
for (const name of Object.keys(soll)) {
|
||||
const gut = proben[name] === soll[name];
|
||||
if (gut) stimmt++;
|
||||
ok(gut, gut
|
||||
? `${name}: ${JSON.stringify(proben[name])}`
|
||||
: `${name}: ${JSON.stringify(proben[name])} statt ${JSON.stringify(soll[name])}`);
|
||||
}
|
||||
ok(stimmt === 13, `${stimmt} von 13 Regelfaellen stimmen`);
|
||||
}
|
||||
}
|
||||
|
||||
/* =======================================================================
|
||||
4. EINE NACHRICHT WIRD ZU ECHTEN ELEMENTEN
|
||||
|
||||
Der Weg, den ein Mensch geht: Nachricht abschicken, Nachricht
|
||||
ansehen. Nicht die Funktion aufrufen -- die habe ich oben schon
|
||||
geprueft.
|
||||
======================================================================= */
|
||||
melde("\n=== Im Chat wird daraus wirklich Auszeichnung ===");
|
||||
let raumId = null;
|
||||
{
|
||||
raumId = await chef.seite.evaluate(async (id) => {
|
||||
const a = await fetch("/workspace/api/chat/direkt", {
|
||||
method: "POST", headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ mit: id }),
|
||||
});
|
||||
const j = await a.json().catch(() => ({}));
|
||||
return j.raum_id ?? null;
|
||||
}, idRieke);
|
||||
ok(Number.isInteger(raumId), `ein Gespraech mit Rieke steht (Raum ${raumId})`);
|
||||
|
||||
const SATZ = "So geht das: **fett**, _kursiv_, __unterstrichen__ und "
|
||||
+ "~~durchgestrichen~~. Und datei_name_hier bleibt normal.";
|
||||
await chef.seite.evaluate(async ([id, text]) => {
|
||||
await fetch(`/workspace/api/chat/raeume/${id}/nachrichten`, {
|
||||
method: "POST", headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ text }),
|
||||
});
|
||||
}, [raumId, SATZ]);
|
||||
|
||||
await chef.seite.goto(`${BASIS}/workspace/chat.html?raum=${raumId}`, { waitUntil: "networkidle" });
|
||||
await chef.seite.waitForTimeout(1400);
|
||||
|
||||
const bild = await chef.seite.evaluate(() => {
|
||||
const p = document.querySelector(".chat-nachricht__text");
|
||||
if (!p) return null;
|
||||
const holen = (tag) => [...p.querySelectorAll(tag)].map((e) => e.textContent);
|
||||
return {
|
||||
sichtbar: p.textContent,
|
||||
fett: holen("strong"),
|
||||
kursiv: holen("em"),
|
||||
unter: holen("u"),
|
||||
durch: holen("s"),
|
||||
};
|
||||
});
|
||||
|
||||
ok(!!bild, "die Nachricht steht auf dem Bildschirm");
|
||||
if (bild) {
|
||||
/* DIE VIER AUSZEICHNUNGEN SIND ECHTE ELEMENTE, keine Sternchen. */
|
||||
ok(bild.fett.join() === "fett", `<strong> traegt "${bild.fett.join()}"`);
|
||||
ok(bild.kursiv.join() === "kursiv", `<em> traegt "${bild.kursiv.join()}"`);
|
||||
ok(bild.unter.join() === "unterstrichen", `<u> traegt "${bild.unter.join()}"`);
|
||||
ok(bild.durch.join() === "durchgestrichen", `<s> traegt "${bild.durch.join()}"`);
|
||||
|
||||
/* UND DIE ZEICHEN SIND WEG. Stuenden sie noch da, waere oben
|
||||
trotzdem alles gruen -- die Elemente gaebe es ja. */
|
||||
ok(!bild.sichtbar.includes("**") && !bild.sichtbar.includes("~~")
|
||||
&& !bild.sichtbar.includes("__"),
|
||||
"und die Sternchen und Striche stehen nicht mehr im Text");
|
||||
|
||||
/* GEGENPROBE IM SATZ SELBST: Der Dateiname bleibt, wie er ist. */
|
||||
ok(bild.sichtbar.includes("datei_name_hier"),
|
||||
"datei_name_hier steht unveraendert da");
|
||||
ok(!bild.kursiv.includes("name"),
|
||||
"und ist NICHT kursiv geworden");
|
||||
}
|
||||
}
|
||||
|
||||
/* =======================================================================
|
||||
5. WAS WIE HTML AUSSIEHT, BLEIBT TEXT
|
||||
|
||||
Die wichtigste Zeile dieser Datei. `textform.js` baut heute mit
|
||||
`createTextNode` -- das ist sicher, aber es ist eine Eigenschaft von
|
||||
heute. Wer morgen aus Bequemlichkeit `innerHTML` schreibt, faellt
|
||||
hier auf, und nicht erst, wenn jemand es ausnutzt.
|
||||
======================================================================= */
|
||||
melde("\n=== Sicherheitsprobe: nichts wird zu HTML ===");
|
||||
{
|
||||
const BOES = "<b>nicht fett</b> <img src=x onerror=\"window.__geknackt=1\"> "
|
||||
+ "**aber das schon**";
|
||||
await chef.seite.evaluate(async ([id, text]) => {
|
||||
await fetch(`/workspace/api/chat/raeume/${id}/nachrichten`, {
|
||||
method: "POST", headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ text }),
|
||||
});
|
||||
}, [raumId, BOES]);
|
||||
await chef.seite.waitForTimeout(1500);
|
||||
|
||||
const lage = await chef.seite.evaluate(() => {
|
||||
const alle = [...document.querySelectorAll(".chat-nachricht__text")];
|
||||
const p = alle[alle.length - 1];
|
||||
return {
|
||||
text: p ? p.textContent : null,
|
||||
bTags: p ? p.querySelectorAll("b").length : -1,
|
||||
bilder: p ? p.querySelectorAll("img").length : -1,
|
||||
fett: p ? [...p.querySelectorAll("strong")].map((e) => e.textContent).join() : null,
|
||||
geknackt: !!window.__geknackt,
|
||||
};
|
||||
});
|
||||
|
||||
ok(lage.text !== null, "die zweite Nachricht ist da");
|
||||
ok(lage.text.includes("<b>nicht fett</b>"),
|
||||
"der HTML-Schnipsel steht als TEXT auf dem Bildschirm");
|
||||
ok(lage.bTags === 0, `kein <b>-Element entstanden (${lage.bTags})`);
|
||||
ok(lage.bilder === 0, `kein <img>-Element entstanden (${lage.bilder})`);
|
||||
ok(lage.geknackt === false, "und nichts davon wurde ausgefuehrt");
|
||||
/* GEGENPROBE: In derselben Nachricht wird das ECHTE Zeichen sehr wohl
|
||||
ausgewertet -- sonst waere oben nur bewiesen, dass gar nichts
|
||||
gestaltet wird. */
|
||||
ok(lage.fett === "aber das schon",
|
||||
"und die echte Auszeichnung in derselben Nachricht wirkt trotzdem");
|
||||
}
|
||||
|
||||
/* =======================================================================
|
||||
6. DIE LEISTE -- da, wo Menschen schreiben
|
||||
======================================================================= */
|
||||
melde("\n=== Die Leiste ueber dem Schreibfeld ===");
|
||||
{
|
||||
const leiste = await chef.seite.evaluate(() => {
|
||||
const k = document.querySelector(".textform");
|
||||
if (!k) return null;
|
||||
return {
|
||||
schilder: [...k.querySelectorAll("button")].map((b) => b.textContent),
|
||||
titel: [...k.querySelectorAll("button")].map((b) => b.title),
|
||||
benannt: k.getAttribute("aria-label"),
|
||||
};
|
||||
});
|
||||
ok(!!leiste, "im Chat steht eine Leiste");
|
||||
if (leiste) {
|
||||
ok(leiste.schilder.join("") === "FKUS",
|
||||
`vier Knoepfe: ${leiste.schilder.join(" ")}`);
|
||||
ok(leiste.titel.every((t) => t && t.length > 3),
|
||||
"jeder sagt im Titel, was er tut");
|
||||
ok(leiste.benannt === "Textgestaltung",
|
||||
"und die Gruppe ist fuer Vorleseprogramme benannt");
|
||||
}
|
||||
|
||||
/* SIE TUT AUCH ETWAS. Ein Knopf, der nur dasteht, ist kein Knopf. */
|
||||
const umgelegt = await chef.seite.evaluate(() => {
|
||||
const feld = document.getElementById("text");
|
||||
if (!feld) return null;
|
||||
feld.value = "hallo welt";
|
||||
feld.setSelectionRange(0, 5);
|
||||
feld.focus();
|
||||
document.querySelector(".textform__knopf--fett").click();
|
||||
const nachher = feld.value;
|
||||
/* Noch einmal derselbe Knopf -- das muss es wieder wegnehmen. */
|
||||
feld.setSelectionRange(2, 7);
|
||||
document.querySelector(".textform__knopf--fett").click();
|
||||
return { einmal: nachher, zweimal: feld.value };
|
||||
});
|
||||
ok(umgelegt && umgelegt.einmal === "**hallo** welt",
|
||||
`der F-Knopf macht daraus ${JSON.stringify(umgelegt && umgelegt.einmal)}`);
|
||||
ok(umgelegt && umgelegt.zweimal === "hallo welt",
|
||||
"und noch einmal gedrueckt nimmt er es wieder weg");
|
||||
}
|
||||
|
||||
/* =======================================================================
|
||||
7. UND AUF DEN ANDEREN SEITEN
|
||||
|
||||
Filipes Wunsch nennt ausdruecklich "wenn die modis oder rechte hand
|
||||
oder dogfather eine aufgabe oder sachen posten" -- das ist das
|
||||
Aufgabenbrett und sind die Bretter, nicht nur der Chat.
|
||||
======================================================================= */
|
||||
melde("\n=== Auch beim Aufgaben- und Brettschreiben ===");
|
||||
{
|
||||
for (const [seite, oeffnen, feld] of [
|
||||
["aufgaben.html", "#neu-auf", "#f-text"],
|
||||
["bereich.html?b=ideen", "#neu-auf", "#f-text"],
|
||||
]) {
|
||||
const p = await alsRolle("admin", "CODE-DOGI-0001", seite);
|
||||
try {
|
||||
/* Das Formular aufklappen -- solange es zu ist, gibt es das Feld
|
||||
noch gar nicht, und die Leiste koennte gar nicht dort sein. */
|
||||
const auf = await p.seite.$(oeffnen);
|
||||
if (auf) { await auf.click(); await p.seite.waitForTimeout(700); }
|
||||
const lage = await p.seite.evaluate((sel) => {
|
||||
const f = document.querySelector(sel);
|
||||
if (!f) return { feld: false };
|
||||
const l = f.parentElement && f.parentElement.querySelector(".textform");
|
||||
return {
|
||||
feld: true,
|
||||
leiste: !!l,
|
||||
knoepfe: l ? [...l.querySelectorAll("button")].map((b) => b.textContent).join("") : "",
|
||||
};
|
||||
}, feld);
|
||||
ok(lage.feld, `${seite}: das Schreibfeld ist da`);
|
||||
ok(lage.leiste === true, `${seite}: und die Leiste steht daran`);
|
||||
ok(lage.knoepfe === "FKUS", `${seite}: mit denselben vier Knoepfen`);
|
||||
} finally {
|
||||
await p.seite.waitForTimeout(150);
|
||||
await p.ctx.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* =======================================================================
|
||||
8. GEGENPROBEN -- kann diese Pruefung ueberhaupt rot werden?
|
||||
======================================================================= */
|
||||
melde("\n=== Gegenproben ===");
|
||||
{
|
||||
/* (a) Ohne die Gestaltung bliebe der Text roh. Statt die Datei zu
|
||||
entfernen (das faende nur heraus, dass dann gar nichts geht),
|
||||
wird der Zerleger fuer einen Augenblick abgeschaltet -- genau
|
||||
wie es der Rueckfall in chat.js vorsieht. */
|
||||
const ohne = await chef.seite.evaluate(() => {
|
||||
const echt = window.Textform;
|
||||
window.Textform = null;
|
||||
try {
|
||||
const p = document.createElement("p");
|
||||
/* der Rueckfallweg aus chat.js, woertlich */
|
||||
const teilchen = window.Textform
|
||||
? window.Textform.teile("**fett**")
|
||||
: [{ text: "**fett**", stile: {} }];
|
||||
for (const t of teilchen) p.append(document.createTextNode(t.text));
|
||||
return { text: p.textContent, fett: p.querySelectorAll("strong").length };
|
||||
} finally { window.Textform = echt; }
|
||||
});
|
||||
ok(ohne.text === "**fett**" && ohne.fett === 0,
|
||||
"ohne die Gestaltung stuenden die Sternchen da -- die Probe kann also anschlagen");
|
||||
|
||||
/* (b) Und die Seitenableitung: ein erfundenes Skript, das die
|
||||
Gestaltung benutzt, muss eine Seite ohne Modul auffliegen
|
||||
lassen. Sonst waere Abschnitt 1 nur zufaellig gruen. */
|
||||
const { ohneKommentar } = await import("./helfer-ohne-kommentar.mjs");
|
||||
const erfunden = "/* Textform steht hier nur im Kommentar */\nvar x = 1;";
|
||||
const echtNutzer = "var y = window.Textform.zeichne('a');";
|
||||
ok(/\bTextform\b/.test(ohneKommentar(erfunden, ".js")) === false,
|
||||
"ein Skript, das die Gestaltung nur im Kommentar nennt, gilt nicht als Nutzer");
|
||||
ok(/\bTextform\b/.test(ohneKommentar(echtNutzer, ".js")) === true,
|
||||
"eines, das sie wirklich aufruft, schon");
|
||||
}
|
||||
|
||||
melde("\n=== Kein Skript ist unterwegs gestolpert ===");
|
||||
ok(seitenFehler.length === 0, seitenFehler.length === 0
|
||||
? "keine der besuchten Seiten meldet einen Skriptfehler"
|
||||
: `Skriptfehler: ${seitenFehler.join(" | ")}`);
|
||||
|
||||
await chef.ctx.close();
|
||||
await browser.close();
|
||||
try { rmSync(ordner, { recursive: true, force: true }); } catch { /* Zugabe */ }
|
||||
|
||||
melde(`\n ${fehler === 0 ? "ALLES IN ORDNUNG" : `${fehler} FEHLER`}`);
|
||||
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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<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,6 @@
|
||||
</main>
|
||||
␍
|
||||
|
||||
<script src="assets/js/anruf-probe.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/anruf-probe.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -22,25 +22,25 @@
|
||||
},
|
||||
"icons": [
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-192.png?v=202609211424",
|
||||
"src": "/assets/img/app-symbole/workspace-192.png?v=202609211642",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-512.png?v=202609211424",
|
||||
"src": "/assets/img/app-symbole/workspace-512.png?v=202609211642",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609211424",
|
||||
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609211642",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609211424",
|
||||
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609211642",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
|
||||
@@ -2465,3 +2465,22 @@
|
||||
Töne ununterscheidbar, und nur der Name trägt. Er steht ohnehin
|
||||
im aria-label und im title. */
|
||||
}
|
||||
|
||||
/* DIE REIHENFOLGE IN DER EINGABEZEILE (21.09.2026).
|
||||
|
||||
Drei Dinge liegen hier in einer umbrechenden Reihe, und die
|
||||
Reihenfolge im HTML ist nicht die, die man sehen will: Die
|
||||
Bueroklammer steht dort VOR dem Schreibfeld, die Gestaltungsleiste
|
||||
kam danach. Beim ersten Versuch stand die Klammer deshalb allein in
|
||||
der ersten Zeile und die Leiste darunter -- richtig gerechnet,
|
||||
falsch gelesen.
|
||||
|
||||
`order` statt Umbauen: Die Reihenfolge im Quelltext bleibt die, die
|
||||
ein Vorleseprogramm braucht (erst der Bezug, dann die Werkzeuge,
|
||||
dann das Feld), und das Auge bekommt seine eigene.
|
||||
|
||||
-2 Antwortleiste worauf beziehe ich mich
|
||||
-1 Gestaltung womit schreibe ich
|
||||
0 Klammer, Feld, Emoji, Senden -- die eigentliche Zeile */
|
||||
.chat__eingabe .antwort-leiste { order: -2; }
|
||||
.chat__eingabe .textform { order: -1; flex: 1 0 100%; margin-bottom: 2px; }
|
||||
|
||||
@@ -1062,3 +1062,67 @@
|
||||
@media (forced-colors: active) {
|
||||
.install-knopf { border: 1px solid CanvasText; }
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
DIE LEISTE FUER DIE TEXTGESTALTUNG (21.09.2026)
|
||||
|
||||
Filipe: "ich will dass die leute auch immer die art von text
|
||||
aussuchen können, fettgedrückt, unterstrichen und so alles ...
|
||||
das überall."
|
||||
|
||||
SIE STEHT UEBER DEM SCHREIBFELD und ist bewusst leise: vier kleine
|
||||
Knoepfe, kein Rahmen, keine Farbe. Was man jeden Tag sieht und
|
||||
selten braucht, darf nicht lauter sein als das, was man schreibt.
|
||||
|
||||
44 PIXEL AM FINGER, auch wenn das Zeichen darin klein ist -- die
|
||||
Hausregel gilt hier wie ueberall. Auf dem Bildschirm wirkt der Knopf
|
||||
dadurch nicht groesser: Die Flaeche waechst, nicht das Aussehen.
|
||||
===================================================================== */
|
||||
.textform {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 2px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.textform__knopf {
|
||||
min-width: 44px;
|
||||
min-height: 44px;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0 10px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 8px;
|
||||
background: none;
|
||||
color: var(--text-leise, #9fb4c8);
|
||||
font-size: .95rem;
|
||||
line-height: 1;
|
||||
cursor: pointer;
|
||||
transition: background .15s ease, color .15s ease, border-color .15s ease;
|
||||
}
|
||||
.textform__knopf:hover {
|
||||
background: rgba(255, 255, 255, .06);
|
||||
color: var(--text, #eaf3fb);
|
||||
}
|
||||
.textform__knopf:focus-visible {
|
||||
outline: 2px solid var(--akzent, #3fbdf5);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
/* Jeder Knopf zeigt, was er tut -- das ist schneller gelesen als
|
||||
jedes Schild daneben. */
|
||||
.textform__knopf--fett { font-weight: 800; }
|
||||
.textform__knopf--kursiv { font-style: italic; }
|
||||
.textform__knopf--unter { text-decoration: underline; }
|
||||
.textform__knopf--durch { text-decoration: line-through; }
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.textform__knopf { transition: none; }
|
||||
}
|
||||
|
||||
/* Die Gestaltung im fertigen Text. `u` und `s` bekommen eine eigene
|
||||
Linienstaerke -- die Vorgabe des Browsers ist auf dunklem Grund
|
||||
kaum zu sehen. */
|
||||
.chat-nachricht__text u,
|
||||
.eintrag-text u { text-decoration-thickness: .08em; text-underline-offset: .18em; }
|
||||
.chat-nachricht__text s,
|
||||
.eintrag-text s { text-decoration-thickness: .1em; opacity: .75; }
|
||||
|
||||
@@ -195,7 +195,19 @@
|
||||
stift.addEventListener('click', () => dialogOeffnen(a));
|
||||
kopf.append(stift);
|
||||
k.append(kopf);
|
||||
if (a.beschreibung) k.append(el('p', 'karte__text', a.beschreibung));
|
||||
/* DIE BESCHREIBUNG DARF GESTALTET SEIN (21.09.2026).
|
||||
|
||||
Filipe: "... sei es wenn die modis oder rechte hand oder
|
||||
dogfather eine aufgabe oder sachen posten."
|
||||
|
||||
Dieselbe Quelle wie im Chat und auf den Brettern. `textContent`
|
||||
bleibt der Weg -- `Textform.zeichne` baut Elemente, kein HTML. */
|
||||
if (a.beschreibung) {
|
||||
const bt = el('p', 'karte__text');
|
||||
if (window.Textform) bt.append(window.Textform.zeichne(a.beschreibung));
|
||||
else bt.textContent = a.beschreibung;
|
||||
k.append(bt);
|
||||
}
|
||||
|
||||
const zeile = el('div', 'karte__zeile');
|
||||
/* WICHTIG STEHT DA, statt nur eine Kante einzufaerben.
|
||||
@@ -1866,4 +1878,32 @@
|
||||
}
|
||||
feld.value = vorher;
|
||||
};
|
||||
|
||||
})();
|
||||
|
||||
/* =====================================================================
|
||||
DIE LEISTE FUER DIE TEXTGESTALTUNG (21.09.2026)
|
||||
=====================================================================
|
||||
|
||||
EIGENER BLOCK, mit Absicht. Erst stand das am Ende des Blocks
|
||||
darueber -- und der beginnt mit `if (!feld) return;` auf ein Feld,
|
||||
das mit der Textgestaltung nichts zu tun hat. Damit haette ein
|
||||
entfernter Aufwand-Waehler die Gestaltung auf der ganzen Seite
|
||||
mitgenommen, ohne dass irgendwo etwas kaputt aussieht.
|
||||
|
||||
Und ohne `$`: Diese Datei hat drei getrennte Bloecke, und der
|
||||
Helfer ist nur in zweien davon erklaert.
|
||||
|
||||
Beide Felder -- das beim Anlegen und das beim Bearbeiten. Sie stehen
|
||||
im HTML von Anfang an da, auch solange das Formular versteckt ist;
|
||||
deshalb reicht ein Aufruf beim Laden. `leiste` merkt sich am Feld
|
||||
selbst, dass sie schon gebaut wurde, ein zweiter Aufruf schadet also
|
||||
nicht.
|
||||
===================================================================== */
|
||||
(() => {
|
||||
if (!window.Textform) return;
|
||||
for (const id of ['f-text', 'b-text']) {
|
||||
const feld = document.getElementById(id);
|
||||
if (feld) window.Textform.leiste(feld);
|
||||
}
|
||||
})();
|
||||
|
||||
@@ -1388,22 +1388,32 @@
|
||||
Ein einzelnes Sternchen bleibt ein Sternchen: `3 * 4` ist keine
|
||||
Hervorhebung, und wer das anders faende, haette eine Regel, die
|
||||
beim Rechnen zuschlaegt. */
|
||||
/* AUS EINER QUELLE FUER DAS GANZE HAUS (21.09.2026).
|
||||
|
||||
Hier stand eine eigene kleine Fassung, die nur `**fett**` kannte
|
||||
-- und sie war die EINZIGE Gestaltung im Haus. Im Chat gab es
|
||||
nichts, bei den Aufgaben nichts.
|
||||
|
||||
Filipe: "ich will dass die leute auch immer die art von text
|
||||
aussuchen können, fettgedrückt, unterstrichen und so alles ...
|
||||
das überall."
|
||||
|
||||
Jetzt kommt sie aus textform.js -- dieselbe, die auch der Chat
|
||||
benutzt. Vier Zeichen statt einem, und wer sie nicht kennt,
|
||||
bekommt eine Leiste ueber dem Schreibfeld.
|
||||
|
||||
ALTES BLEIBT LESBAR: `**fett**` funktioniert unveraendert weiter,
|
||||
es ist dort das erste der vier Zeichen. Nichts, was jemand schon
|
||||
geschrieben hat, sieht ab heute anders aus.
|
||||
|
||||
DER RUECKFALL IST ABSICHT: Faellt textform.js aus (alte Fassung im
|
||||
Zwischenspeicher), steht der Text roh da -- mit Sternchen, aber
|
||||
vollstaendig. Ein leerer Eintrag waere schlimmer als ein
|
||||
ungestalteter. */
|
||||
function mitFett(text) {
|
||||
if (window.Textform) return window.Textform.zeichne(text);
|
||||
const stueck = document.createDocumentFragment();
|
||||
const teile = String(text).split(/\*\*(.+?)\*\*/s);
|
||||
/* split mit einer Gruppe liefert abwechselnd: normal, fett,
|
||||
normal, fett … Der ungerade Platz ist immer der Inhalt der
|
||||
Klammern. */
|
||||
teile.forEach((t, i) => {
|
||||
if (!t) return;
|
||||
if (i % 2 === 1) {
|
||||
const b = document.createElement('strong');
|
||||
b.textContent = t;
|
||||
stueck.append(b);
|
||||
} else {
|
||||
stueck.append(document.createTextNode(t));
|
||||
}
|
||||
});
|
||||
stueck.append(document.createTextNode(String(text == null ? '' : text)));
|
||||
return stueck;
|
||||
}
|
||||
|
||||
@@ -2745,5 +2755,15 @@
|
||||
if (window.zielSchluessel?.() === 'offen') filter = 'offen';
|
||||
|
||||
await laden();
|
||||
|
||||
/* DIE LEISTE FUER DIE TEXTGESTALTUNG (21.09.2026). Nach `laden()`,
|
||||
weil das Formular davor noch nicht zusammengesetzt ist -- die
|
||||
Felder haengen am Bereich, und der steht erst danach fest. */
|
||||
if (window.Textform) {
|
||||
for (const id of ['f-text', 'f-aufgaben', 'f-regeln']) {
|
||||
const feld = document.getElementById(id);
|
||||
if (feld) window.Textform.leiste(feld);
|
||||
}
|
||||
}
|
||||
})();
|
||||
})();
|
||||
|
||||
@@ -737,6 +737,14 @@
|
||||
Runden; siehe die Route dazu im Server. */
|
||||
$('kanal-leute').hidden = !(darfKanal && offen.art === 'kanal');
|
||||
$('schreiben').hidden = false;
|
||||
/* DIE LEISTE FUER DIE TEXTGESTALTUNG (21.09.2026).
|
||||
|
||||
Hier und nicht beim Laden der Seite: Das Formular ist bis zum
|
||||
Oeffnen eines Raumes versteckt, und eine Leiste ueber einem
|
||||
versteckten Feld baut man zweimal, wenn man nicht aufpasst.
|
||||
`Textform.leiste` merkt sich am Feld selbst, dass sie schon
|
||||
da ist -- zweimal aufrufen schadet also nichts. */
|
||||
if (window.Textform) window.Textform.leiste($('text'));
|
||||
/* JEDES MAL BEIM OEFFNEN. Der Stand haengt am RAUM (nur der Treff
|
||||
hat eine Nachtruhe) -- wer aus einem Teamraum in den Treff
|
||||
wechselt, muss das Band sehen, ohne die Seite neu zu laden. */
|
||||
@@ -1237,7 +1245,8 @@
|
||||
z.type = 'button';
|
||||
z.append(el('span', 'chat-zitat__von', n.antwort.von));
|
||||
z.append(el('span', 'chat-zitat__text', n.antwort.zurueckgenommen
|
||||
? 'Nachricht zurückgenommen' : n.antwort.text));
|
||||
? 'Nachricht zurückgenommen'
|
||||
: (window.Textform ? window.Textform.nurText(n.antwort.text) : n.antwort.text)));
|
||||
z.title = 'Zur zitierten Nachricht springen';
|
||||
/* Ein Zitat, das nicht zur Stelle fuehrt, ist ein Bild von
|
||||
einer Nachricht. Der Klick springt hin und hebt sie kurz
|
||||
@@ -1758,9 +1767,45 @@
|
||||
Grund, warum hier Knoten gebaut und nicht Zeichenketten
|
||||
zusammengeklebt werden. Eine Nachricht darf keine Auszeichnung
|
||||
einschleusen, auch keinen eigenen Namen in spitzen Klammern. */
|
||||
/* DIE GESTALTUNG LIEGT AUSSEN, LINKS UND ERWAEHNUNGEN INNEN
|
||||
(21.09.2026).
|
||||
|
||||
Filipe: "ich will dass die leute auch immer die art von text
|
||||
aussuchen können, fettgedrückt, unterstrichen und so alles ...
|
||||
das überall sei es im chat jeder für sich."
|
||||
|
||||
WARUM NICHT EINFACH EINE FUENFTE SORTE STELLE: Links und
|
||||
Erwaehnungen sind PUNKTE im Text -- sie haben Anfang und Ende und
|
||||
liegen nebeneinander. Gestaltung ist etwas anderes: Sie UMSCHLIESST
|
||||
etwas, und sie kann sich verschachteln ("**fett und _auch
|
||||
kursiv_**"). Beides in dieselbe Liste zu werfen haette bei jeder
|
||||
Ueberlappung geraten.
|
||||
|
||||
Deshalb zwei Schichten: Erst wird der Text in Stuecke mit Stilen
|
||||
zerlegt, dann bekommt JEDES Stueck die vorhandene Suche nach
|
||||
Links und Erwaehnungen -- und zum Schluss legt sich die Gestaltung
|
||||
aussen herum. Ein Link in einem fetten Satz bleibt damit ein Link.
|
||||
|
||||
Ohne textform.js (aeltere Fassung im Zwischenspeicher) faellt es
|
||||
auf den alten Zustand zurueck: ein Stueck, keine Stile. Dann sieht
|
||||
man Sternchen statt Fettschrift -- aber nichts ist kaputt. */
|
||||
function textAbsatz(text) {
|
||||
const p = el('p', 'chat-nachricht__text');
|
||||
const roh = String(text);
|
||||
const teilchen = window.Textform
|
||||
? window.Textform.teile(text)
|
||||
: [{ text: String(text), stile: {} }];
|
||||
for (const t of teilchen) {
|
||||
const innen = stellenBauen(t.text);
|
||||
p.append(window.Textform ? window.Textform.huelle(innen, t.stile) : innen);
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
/** Die vorhandene Suche nach Links und Erwaehnungen -- unveraendert,
|
||||
* nur arbeitet sie jetzt auf einem STUECK statt auf dem ganzen Text
|
||||
* und gibt einen Baustein zurueck statt einen Absatz. */
|
||||
function stellenBauen(roh) {
|
||||
const stueck = document.createDocumentFragment();
|
||||
const stellen = [];
|
||||
|
||||
for (const treffer of roh.matchAll(LINKMUSTER)) {
|
||||
@@ -1781,13 +1826,13 @@
|
||||
let letzte = 0;
|
||||
for (const st of stellen) {
|
||||
if (st.von < letzte) continue; // liegt in einer frueheren Stelle
|
||||
if (st.von > letzte) p.append(document.createTextNode(roh.slice(letzte, st.von)));
|
||||
if (st.von > letzte) stueck.append(document.createTextNode(roh.slice(letzte, st.von)));
|
||||
if (st.art === 'link') {
|
||||
const a = el('a', 'chat-nachricht__link', st.wort);
|
||||
a.href = st.wort.startsWith('www.') ? 'https://' + st.wort : st.wort;
|
||||
a.target = '_blank';
|
||||
a.rel = 'noopener noreferrer';
|
||||
p.append(a);
|
||||
stueck.append(a);
|
||||
} else {
|
||||
/* KEIN KNOPF, SONDERN EINE MARKE. Ein Klick darauf muesste
|
||||
irgendwohin fuehren -- zum Steckbrief? in ein Zweiergespraech?
|
||||
@@ -1800,12 +1845,12 @@
|
||||
Zweck: In einem Raum mit acht Leuten soll der eigene Name
|
||||
aus dem Absatz herausspringen. */
|
||||
if (ich && st.id === ich.id) m.dataset.ich = 'ja';
|
||||
p.append(m);
|
||||
stueck.append(m);
|
||||
}
|
||||
letzte = st.bis;
|
||||
}
|
||||
if (letzte < roh.length) p.append(document.createTextNode(roh.slice(letzte)));
|
||||
return p;
|
||||
if (letzte < roh.length) stueck.append(document.createTextNode(roh.slice(letzte)));
|
||||
return stueck;
|
||||
}
|
||||
|
||||
/* ---------- Antworten und Springen (09.09.2026, Punkt 15) ---------------- */
|
||||
@@ -1816,7 +1861,12 @@
|
||||
if (!leiste) return;
|
||||
leiste.hidden = false;
|
||||
$('antwort-von').textContent = n.von;
|
||||
$('antwort-text').textContent = n.text;
|
||||
/* IN DER VORSCHAU STEHEN KEINE ZEICHEN (21.09.2026). Hier ist
|
||||
keine Gestaltung moeglich -- eine Zeile, in der "**super**"
|
||||
steht, sieht nach kaputt aus. `nurText` nimmt die Zeichen weg
|
||||
und laesst den Satz stehen. */
|
||||
$('antwort-text').textContent = window.Textform
|
||||
? window.Textform.nurText(n.text) : n.text;
|
||||
$('text').focus();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,268 @@
|
||||
/* =====================================================================
|
||||
textform.js — Textgestaltung, einmal fuer das ganze Haus (21.09.2026)
|
||||
|
||||
Filipe: "dan will ich dass die leute auch immer die art von text
|
||||
aussuchen können, fettgedrückt, unterstrichen und so alles.
|
||||
perfektionier das bitte, auch sachen die ich gerade vergesse. das
|
||||
überall sei es im chat jeder für sich oder sei es wenn die modis oder
|
||||
rechte hand oder dogfather eine aufgabe oder sachen posten."
|
||||
|
||||
---------------------------------------------------------------------
|
||||
WAS ES VORHER GAB
|
||||
|
||||
Genau eine Sache: `**fett**`, und zwar nur auf den Brettern
|
||||
(`mitFett` in bereich.js). Im Chat gar nichts, bei den Aufgaben
|
||||
nichts. Wer dort Sternchen tippte, sah Sternchen.
|
||||
|
||||
---------------------------------------------------------------------
|
||||
WARUM ZEICHEN IM TEXT UND KEIN ECHTER EDITOR
|
||||
|
||||
Die naheliegende Loesung waere ein Schreibfeld, in dem man direkt
|
||||
fett schreibt (`contenteditable`). Sie ist aus drei Gruenden falsch
|
||||
fuer dieses Haus:
|
||||
|
||||
1. Dann steht HTML in der Datenbank. Alles, was von aussen kommt,
|
||||
muesste vor der Anzeige geputzt werden -- und ein Fehler dabei
|
||||
ist kein Schoenheitsfehler, sondern eine Luecke. Hier bleibt in
|
||||
der Datenbank REINER TEXT; gezeichnet wird er erst beim
|
||||
Anzeigen, aus Bausteinen, die dieses Haus selbst baut.
|
||||
2. Ein solcher Editor verhaelt sich in jedem Browser anders --
|
||||
besonders auf dem Handy, wo die Haelfte der Leute schreibt.
|
||||
3. Alles, was schon geschrieben wurde, bliebe lesbar. `**fett**`
|
||||
gibt es seit Wochen auf den Brettern; es funktioniert weiter.
|
||||
|
||||
---------------------------------------------------------------------
|
||||
DIE VIER ZEICHEN -- UND WARUM GERADE DIESE
|
||||
|
||||
**fett** wie bisher im Haus, und wie fast ueberall
|
||||
_kursiv_ ein Unterstrich, wie in Messengern gewohnt
|
||||
__unterstrichen__ zwei davon
|
||||
~~durchgestrichen~~ wie fast ueberall
|
||||
|
||||
NIEMAND MUSS SIE SICH MERKEN. Ueber jedem Schreibfeld steht eine
|
||||
kleine Leiste mit vier Knoepfen; wer Text markiert und darauf
|
||||
tippt, bekommt die Zeichen gesetzt. Die Zeichen sind der SPEICHER,
|
||||
nicht die Bedienung.
|
||||
|
||||
EIN UNTERSTRICH MITTEN IM WORT GILT NICHT. `datei_name_hier` soll
|
||||
nicht kursiv werden, und `@max_muster` schon gar nicht. Deshalb
|
||||
zaehlt ein Unterstrich nur, wenn links davon kein Buchstabe steht
|
||||
und rechts vom schliessenden auch nicht. Bei `**` und `~~` braucht
|
||||
es das nicht -- die tippt niemand versehentlich doppelt.
|
||||
|
||||
---------------------------------------------------------------------
|
||||
WAS DIESE DATEI NICHT TUT
|
||||
|
||||
Sie kennt keine Ueberschriften, keine Listen, keine Links. Links
|
||||
findet der Chat bereits selbst, und Ueberschriften in einer
|
||||
Chatnachricht waeren eine Einladung, laut zu schreien. Wer mehr
|
||||
braucht, bekommt es -- aber dann als Entscheidung, nicht als
|
||||
Nebenwirkung.
|
||||
===================================================================== */
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
/* Die Reihenfolge ist Bedeutung, nicht Geschmack: `__` muss VOR `_`
|
||||
versucht werden, sonst wuerde aus „__x__“ ein kursives „_x_“. */
|
||||
var REGELN = [
|
||||
{ name: 'fett', zeichen: '**', muster: /\*\*([\s\S]+?)\*\*/ },
|
||||
{ name: 'durch', zeichen: '~~', muster: /~~([\s\S]+?)~~/ },
|
||||
/* Die Wortgrenzen stehen nur bei den Unterstrichen -- siehe Kopf. */
|
||||
{ name: 'unter', zeichen: '__', muster: /(^|[^\w])__([^\n_]+?)__(?![\w])/, gruppe: 2, vorne: 1 },
|
||||
{ name: 'kursiv', zeichen: '_', muster: /(^|[^\w])_([^\n_]+?)_(?![\w])/, gruppe: 2, vorne: 1 },
|
||||
];
|
||||
|
||||
var ELEMENT = { fett: 'strong', kursiv: 'em', unter: 'u', durch: 's' };
|
||||
|
||||
/** Zerlegt einen Text in Stuecke mit ihren Stilen.
|
||||
*
|
||||
* Rueckgabe: [{ text: "…", stile: { fett: true, … } }, …]
|
||||
*
|
||||
* ARBEITET REKURSIV, damit Verschachtelung geht ("**fett und
|
||||
* _auch kursiv_**"). Ein Stil, der schon gilt, wird nicht noch
|
||||
* einmal gesucht -- sonst frisst sich das an "****" fest. */
|
||||
function teile(text, stile) {
|
||||
stile = stile || {};
|
||||
var roh = String(text == null ? '' : text);
|
||||
for (var i = 0; i < REGELN.length; i++) {
|
||||
var r = REGELN[i];
|
||||
if (stile[r.name]) continue;
|
||||
var t = roh.match(r.muster);
|
||||
if (!t) continue;
|
||||
var gruppe = r.gruppe || 1;
|
||||
var vorneLang = r.vorne ? (t[r.vorne] || '').length : 0;
|
||||
var anfang = t.index + vorneLang;
|
||||
var vor = roh.slice(0, anfang);
|
||||
var nach = roh.slice(t.index + t[0].length);
|
||||
var innen = {};
|
||||
for (var k in stile) if (Object.prototype.hasOwnProperty.call(stile, k)) innen[k] = stile[k];
|
||||
innen[r.name] = true;
|
||||
return []
|
||||
.concat(vor ? teile(vor, stile) : [])
|
||||
.concat(teile(t[gruppe], innen))
|
||||
.concat(nach ? teile(nach, stile) : []);
|
||||
}
|
||||
return roh ? [{ text: roh, stile: stile }] : [];
|
||||
}
|
||||
|
||||
/** Legt die Stile eines Stuecks um einen fertigen Knoten.
|
||||
*
|
||||
* So koennen andere Dateien ihren eigenen Inhalt einsetzen -- der
|
||||
* Chat zum Beispiel seine Links und Erwaehnungen. Die Gestaltung
|
||||
* liegt dann AUSSEN herum, und beides geht zusammen. */
|
||||
function huelle(knoten, stile) {
|
||||
var innen = knoten;
|
||||
for (var name in ELEMENT) {
|
||||
if (!Object.prototype.hasOwnProperty.call(ELEMENT, name)) continue;
|
||||
if (!stile || !stile[name]) continue;
|
||||
var e = document.createElement(ELEMENT[name]);
|
||||
e.appendChild(innen);
|
||||
innen = e;
|
||||
}
|
||||
return innen;
|
||||
}
|
||||
|
||||
/** Der einfache Weg: fertiger Textbaustein mit Gestaltung.
|
||||
*
|
||||
* `textContent` und nie `innerHTML` -- was hier hineingeht, ist
|
||||
* Eingabe von Menschen. */
|
||||
function zeichne(text) {
|
||||
var stueck = document.createDocumentFragment();
|
||||
var teilchen = teile(text);
|
||||
for (var i = 0; i < teilchen.length; i++) {
|
||||
var t = teilchen[i];
|
||||
stueck.appendChild(huelle(document.createTextNode(t.text), t.stile));
|
||||
}
|
||||
return stueck;
|
||||
}
|
||||
|
||||
/** Nur der Text, ohne Zeichen.
|
||||
*
|
||||
* Fuer Stellen, an denen keine Gestaltung moeglich ist: die
|
||||
* Antwortleiste, eine Meldung auf dem Sperrbildschirm, die
|
||||
* Vorschau in einer Liste. Dort sollen Sternchen nicht als
|
||||
* Sternchen stehen -- das sieht nach kaputt aus. */
|
||||
function nurText(text) {
|
||||
var teilchen = teile(text);
|
||||
var aus = '';
|
||||
for (var i = 0; i < teilchen.length; i++) aus += teilchen[i].text;
|
||||
return aus;
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
DIE LEISTE UEBER DEM SCHREIBFELD
|
||||
|
||||
VIER KNOEPFE, NICHT ZEHN. Was man nicht findet, benutzt man nicht;
|
||||
was zu viel ist, uebersieht man. Fett, kursiv, unterstrichen,
|
||||
durchgestrichen -- das ist, was Menschen in einem Chat wirklich
|
||||
brauchen.
|
||||
|
||||
SIE ARBEITET MIT DER MARKIERUNG: Wer Text markiert und auf "F"
|
||||
tippt, bekommt ihn fett. Wer nichts markiert, bekommt die Zeichen
|
||||
gesetzt und steht mit dem Schreibzeiger dazwischen -- man tippt
|
||||
einfach weiter.
|
||||
|
||||
UND SIE NIMMT ES AUCH WIEDER WEG. Zweimal "F" auf demselben Text
|
||||
entfernt die Sternchen wieder. Ohne das waere der Knopf eine
|
||||
Einbahnstrasse, und die einzige Rueckfahrt waere Loeschen.
|
||||
===================================================================== */
|
||||
|
||||
var KNOEPFE = [
|
||||
{ name: 'fett', zeichen: '**', schild: 'F', titel: 'Fett (Strg+B)', taste: 'b' },
|
||||
{ name: 'kursiv', zeichen: '_', schild: 'K', titel: 'Kursiv (Strg+I)', taste: 'i' },
|
||||
{ name: 'unter', zeichen: '__', schild: 'U', titel: 'Unterstrichen (Strg+U)', taste: 'u' },
|
||||
{ name: 'durch', zeichen: '~~', schild: 'S', titel: 'Durchgestrichen', taste: null },
|
||||
];
|
||||
|
||||
function umlegen(feld, zeichen) {
|
||||
var wert = feld.value;
|
||||
var a = feld.selectionStart;
|
||||
var b = feld.selectionEnd;
|
||||
var mitte = wert.slice(a, b);
|
||||
var vor = wert.slice(0, a);
|
||||
var nach = wert.slice(b);
|
||||
var n = zeichen.length;
|
||||
|
||||
/* SCHON GESETZT? Dann weg damit -- einmal von innen (der markierte
|
||||
Text traegt die Zeichen selbst) und einmal von aussen (sie
|
||||
stehen links und rechts der Markierung). Beides kommt vor, je
|
||||
nachdem wie jemand markiert hat. */
|
||||
if (mitte.length >= 2 * n && mitte.slice(0, n) === zeichen
|
||||
&& mitte.slice(-n) === zeichen) {
|
||||
var ohne = mitte.slice(n, -n);
|
||||
feld.value = vor + ohne + nach;
|
||||
feld.setSelectionRange(a, a + ohne.length);
|
||||
} else if (vor.slice(-n) === zeichen && nach.slice(0, n) === zeichen) {
|
||||
feld.value = vor.slice(0, -n) + mitte + nach.slice(n);
|
||||
feld.setSelectionRange(a - n, a - n + mitte.length);
|
||||
} else {
|
||||
feld.value = vor + zeichen + mitte + zeichen + nach;
|
||||
/* Ohne Markierung steht der Schreibzeiger ZWISCHEN den Zeichen --
|
||||
man tippt einfach weiter. Mit Markierung bleibt sie stehen. */
|
||||
if (a === b) feld.setSelectionRange(a + n, a + n);
|
||||
else feld.setSelectionRange(a + n, b + n);
|
||||
}
|
||||
feld.focus();
|
||||
/* Damit die Seite mitbekommt, dass sich etwas geaendert hat --
|
||||
daran haengen die Hoehe des Feldes und der Senden-Knopf. */
|
||||
feld.dispatchEvent(new Event('input', { bubbles: true }));
|
||||
}
|
||||
|
||||
/** Haengt die Leiste ueber ein Schreibfeld.
|
||||
*
|
||||
* Zweimal aufrufen schadet nicht -- gebaut wird nur einmal. Das ist
|
||||
* wichtig, weil manche Seiten ihre Formulare neu aufbauen. */
|
||||
function leiste(feld, wohin) {
|
||||
if (!feld || feld.dataset.textform === 'ja') return null;
|
||||
feld.dataset.textform = 'ja';
|
||||
|
||||
var kasten = document.createElement('div');
|
||||
kasten.className = 'textform';
|
||||
kasten.setAttribute('role', 'group');
|
||||
kasten.setAttribute('aria-label', 'Textgestaltung');
|
||||
|
||||
KNOEPFE.forEach(function (k) {
|
||||
var b = document.createElement('button');
|
||||
b.type = 'button';
|
||||
b.className = 'textform__knopf textform__knopf--' + k.name;
|
||||
b.textContent = k.schild;
|
||||
b.title = k.titel;
|
||||
b.setAttribute('aria-label', k.titel);
|
||||
b.addEventListener('mousedown', function (e) {
|
||||
/* NICHT DEN FOKUS STEHLEN. Ohne das verliert das Schreibfeld
|
||||
beim Antippen die Markierung -- und der Knopf wuerde die
|
||||
Zeichen ans falsche Ende setzen. */
|
||||
e.preventDefault();
|
||||
});
|
||||
b.addEventListener('click', function () { umlegen(feld, k.zeichen); });
|
||||
kasten.appendChild(b);
|
||||
});
|
||||
|
||||
/* Die Tastenkuerzel, die jeder aus anderen Programmen kennt. */
|
||||
feld.addEventListener('keydown', function (e) {
|
||||
if (!(e.ctrlKey || e.metaKey) || e.altKey) return;
|
||||
var taste = String(e.key || '').toLowerCase();
|
||||
for (var i = 0; i < KNOEPFE.length; i++) {
|
||||
if (KNOEPFE[i].taste && KNOEPFE[i].taste === taste) {
|
||||
e.preventDefault();
|
||||
umlegen(feld, KNOEPFE[i].zeichen);
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var ziel = wohin || feld.parentNode;
|
||||
if (ziel === feld.parentNode) ziel.insertBefore(kasten, feld);
|
||||
else ziel.appendChild(kasten);
|
||||
return kasten;
|
||||
}
|
||||
|
||||
window.Textform = {
|
||||
teile: teile,
|
||||
huelle: huelle,
|
||||
zeichne: zeichne,
|
||||
nurText: nurText,
|
||||
leiste: leiste,
|
||||
ZEICHEN: KNOEPFE,
|
||||
};
|
||||
})();
|
||||
+19
-15
@@ -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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -313,14 +313,18 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<!-- 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=202609211642"></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/aufgaben.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/aufgaben.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/automation.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/automation.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -168,13 +168,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/automation.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/automation.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -160,13 +160,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/befinden.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/befinden.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+23
-19
@@ -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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -292,16 +292,20 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<!-- 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=202609211642"></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/ampel.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/schulung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereich.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/ampel.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/schulung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereich.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -108,12 +108,12 @@
|
||||
</main>
|
||||
|
||||
<!-- Der Fuß gehört zu jeder Seite - siehe pruef-css-klassen. -->
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>␍
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bewerben.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bewerben.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -80,13 +80,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bewerbungen.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bewerbungen.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/calls.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/calls.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -89,14 +89,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/ki.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/calls.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/calls.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+23
-17
@@ -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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/chat.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/chat.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -414,18 +414,24 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<script src="assets/js/bereiche.js?v=202609211424"></script>
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424"></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642"></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=202609211642"></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642"></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642"></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=202609211424"></script>
|
||||
<script src="assets/js/chat.js?v=202609211424"></script>
|
||||
<script src="assets/js/anruf.js?v=202609211642"></script>
|
||||
<script src="assets/js/chat.js?v=202609211642"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/content.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/content.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -179,14 +179,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/content.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/content.js?v=202609211642" 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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="gate gate--crew">
|
||||
@@ -358,6 +358,6 @@
|
||||
␍
|
||||
|
||||
|
||||
<script src="assets/js/gate.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/gate.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -22,25 +22,25 @@
|
||||
},
|
||||
"icons": [
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-192.png?v=202609211424",
|
||||
"src": "/assets/img/app-symbole/crew-192.png?v=202609211642",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-512.png?v=202609211424",
|
||||
"src": "/assets/img/app-symbole/crew-512.png?v=202609211642",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609211424",
|
||||
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609211642",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609211424",
|
||||
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609211642",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
|
||||
+16
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/dateien.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/dateien.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -108,14 +108,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/dateien.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/dateien.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -106,12 +106,12 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/entwicklung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/entwicklung.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+13
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -146,12 +146,12 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/hilfe.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/hilfe.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="gate">
|
||||
@@ -411,6 +411,6 @@
|
||||
</div>
|
||||
␍␍
|
||||
|
||||
<script src="assets/js/gate.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/gate.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/kalender.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/kalender.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -383,14 +383,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kalender.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kalender-abo.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kalender.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kalender-abo.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/leistung.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/leistung.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -444,12 +444,12 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424"></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424"></script>
|
||||
<script src="assets/js/wahl.js?v=202609211424"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424"></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424"></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424"></script>
|
||||
<script src="assets/js/leistung.js?v=202609211424"></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642"></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642"></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642"></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642"></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642"></script>
|
||||
<script src="assets/js/leistung.js?v=202609211642"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/personen.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/personen.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -453,13 +453,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/personen.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/personen.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -214,15 +214,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/profil.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/profil.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -134,11 +134,11 @@
|
||||
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=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/rechte.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/rechte.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/report.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/report.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -106,14 +106,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
|
||||
<script src="assets/js/ki.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/report.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/report.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/scouting.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/scouting.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -173,13 +173,13 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/scouting.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/scouting.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-14
@@ -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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/heim.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -678,13 +678,13 @@
|
||||
</p>
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/start.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/start.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -85,14 +85,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
|
||||
<script src="assets/js/ki.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/startcheck.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/startcheck.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -150,15 +150,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -111,12 +111,12 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/talente.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/talente.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -110,12 +110,12 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>␍
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/team.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/team.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<!-- `data-buehne` steht hier fest und nicht im Skript: Die Kachel zu
|
||||
@@ -84,11 +84,11 @@
|
||||
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=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>␍
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/teamlage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/teamlage.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+13
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -112,12 +112,12 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/teilen.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/teilen.js?v=202609211642" 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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -126,12 +126,12 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/treff-moderation.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/treff-moderation.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -221,11 +221,11 @@
|
||||
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=202609211424" defer></script>␍
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/treff-regeln.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/treff-regeln.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
|
||||
Dialog "Creator anlegen". -->
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -149,14 +149,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>␍
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/uebersicht.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/uebersicht.js?v=202609211642" 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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -335,11 +335,11 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/unsere-seiten.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/unsere-seiten.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -144,11 +144,11 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>␍
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>␍
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/werdegang.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/werdegang.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-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=202609211424" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/wissen.css?v=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211424" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609211642" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/wissen.css?v=202609211642" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609211642" />
|
||||
<!-- 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=202609211424" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609211642" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -190,14 +190,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609211642" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wissen.js?v=202609211424" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609211642" defer></script>
|
||||
<script src="assets/js/wissen.js?v=202609211642" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user