Compare commits
2
Commits
b1319e3124
...
84e4048ab4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
84e4048ab4 | ||
|
|
290d7c8d88 |
@@ -359,14 +359,35 @@ console.log("\n=== Auf der Aufgabenseite");
|
||||
const nachher = await seite.textContent("#vorlagenbrett .vorlagenbrett__titel");
|
||||
ok(vorher !== nachher, `ein anderer Bereich zeigt andere Aufgaben ("${vorher}" → "${nachher}")`);
|
||||
|
||||
/* Und der Weg bis zum Brett. */
|
||||
const zaehle = () => seite.evaluate(() => document.querySelectorAll("#brett .karte").length);
|
||||
/* Und der Weg bis zum Brett.
|
||||
|
||||
GEZAEHLT WERDEN AUFGABEN, NICHT KARTEN (berichtigt 23.09.2026).
|
||||
|
||||
Seit dem Brett-Umbau vom selben Tag fasst das Brett gleiche
|
||||
Aufgaben zu EINER Karte zusammen. Eine neue Aufgabe erhoeht die
|
||||
Kartenzahl also nur dann, wenn es noch keine gleichnamige gibt --
|
||||
und die Pruefung legt kurz vorher sieben Vorlagen derselben Stufe
|
||||
an. Sie meldete "9 -> 9" und behauptete damit, das Uebernehmen sei
|
||||
kaputt; es war die Zaehlweise. Die Aufgabe war jede Zeit da, drei
|
||||
Zeilen weiter wird sie sogar als "schon übernommen" wiedererkannt.
|
||||
|
||||
Dieselbe Stelle gab es ein zweites Mal in pruef-modi-katalog. Dort
|
||||
ist sie am 23.09. repariert worden -- hier nicht, weil ich nach
|
||||
dem ersten Fund nicht weitergesucht habe. Jede Karte weist ihre
|
||||
Aufgaben aus: data-id (eine) oder data-ids (mehrere). */
|
||||
const zaehle = () => seite.evaluate(() =>
|
||||
[...document.querySelectorAll("#brett .karte")]
|
||||
.reduce((n, k) => n + (k.dataset.ids || k.dataset.id || "")
|
||||
.split(",").filter(Boolean).length, 0));
|
||||
const zaehleKarten = () => seite.evaluate(() =>
|
||||
document.querySelectorAll("#brett .karte").length);
|
||||
const brettVorher = await zaehle();
|
||||
await seite.click("#vorlagenbrett .vorlagenbrett__fuss .knopf");
|
||||
await seite.waitForTimeout(2500);
|
||||
const brettNachher = await zaehle();
|
||||
ok(brettNachher === brettVorher + 1,
|
||||
`Übernehmen legt eine Aufgabe auf dem Brett an (${brettVorher} → ${brettNachher})`);
|
||||
`Übernehmen legt eine Aufgabe auf dem Brett an (${brettVorher} → ${brettNachher}`
|
||||
+ ` Aufgaben in ${await zaehleKarten()} Karten)`);
|
||||
|
||||
/* ---- WAS SCHON GEHOLT WURDE, STEHT DA (09.09.2026) -----------------
|
||||
Vorher konnte man dieselbe Vorlage zweimal uebernehmen und bekam
|
||||
|
||||
+110
-76
@@ -490,8 +490,11 @@ console.log("\n=== 6. Das Brett im echten Browser ===\n");
|
||||
await seite.fill("#code", "CODE-MODI-0001");
|
||||
await seite.click("button[type=submit]");
|
||||
await seite.waitForURL("**/start.html", { timeout: 15000 });
|
||||
await seite.goto(BASIS + "/workspace/aufgaben.html", { waitUntil: "networkidle" });
|
||||
await seite.waitForTimeout(1200);
|
||||
/* DER KATALOG STEHT SEIT DEM 23.09.2026 AUF "EURE AUFGABEN".
|
||||
Filipe: "das soll auch bitte nicht in der kategorie aufgaben
|
||||
sondern eure aufgaben sein bitte." */
|
||||
await seite.goto(BASIS + "/workspace/entwicklung.html", { waitUntil: "networkidle" });
|
||||
await seite.waitForTimeout(1600);
|
||||
|
||||
/* Aufklappen, falls es zugeklappt startet. */
|
||||
const zu = await seite.evaluate(() =>
|
||||
@@ -703,8 +706,9 @@ console.log("");
|
||||
await seite.fill("#code", "CODE-DOGI-0001");
|
||||
await seite.click("button[type=submit]");
|
||||
await seite.waitForURL("**/start.html", { timeout: 15000 });
|
||||
await seite.goto(BASIS + "/workspace/aufgaben.html", { waitUntil: "networkidle" });
|
||||
await seite.waitForTimeout(1400);
|
||||
/* Siehe oben: der Katalog ist umgezogen. */
|
||||
await seite.goto(BASIS + "/workspace/entwicklung.html", { waitUntil: "networkidle" });
|
||||
await seite.waitForTimeout(1800);
|
||||
const zu = await seite.evaluate(() =>
|
||||
document.getElementById("vorlagenbrett")?.dataset.auf !== "ja");
|
||||
if (zu) {
|
||||
@@ -712,85 +716,111 @@ console.log("");
|
||||
await seite.waitForTimeout(800);
|
||||
}
|
||||
|
||||
const wahl = await seite.evaluate(() => {
|
||||
const reihen = [...document.querySelectorAll(".stufenleiter")];
|
||||
const letzte = document.querySelector('[aria-label="Person wählen"]');
|
||||
const zahl = /^[0-9]+$/;
|
||||
/* ==== AN WEN? DIE FRAGE IST JETZT SCHON BEANTWORTET ============
|
||||
|
||||
Bis zum 23.09.2026 brachte der Katalog eine EIGENE Personenreihe
|
||||
mit -- eine dritte Knopfreihe unter zwei anderen. Sie war noetig,
|
||||
weil "Aufgaben" keine Personenwahl hat.
|
||||
|
||||
Auf "Eure Aufgaben" gibt es sie: die Kacheln unter "Wen gehst du
|
||||
durch?". Zwei Auswahlen fuer dieselbe Frage waeren die
|
||||
Gelegenheit, oben den einen und unten den anderen zu waehlen --
|
||||
und dann stuenden zwei Antworten auf einem Bildschirm.
|
||||
|
||||
GEPRUEFT WIRD DESHALB DIE VERBINDUNG: Was die Seite oben sagt,
|
||||
muss der Katalog unten meinen. */
|
||||
const ohne = await seite.evaluate(() => ({
|
||||
knopf: document.querySelector(".vorlagenbrett__karte .knopf")?.textContent.trim(),
|
||||
satz: [...document.querySelectorAll("#vorlagenbrett .stufenleiter__hilfe")]
|
||||
.map((z) => z.textContent.trim()).join(" | "),
|
||||
hin: !!document.querySelector("#vorlagenbrett .knopf-still"),
|
||||
reihen: document.querySelectorAll("#vorlagenbrett .stufenleiter").length,
|
||||
}));
|
||||
ok(ohne.reihen === 2,
|
||||
"zwei Auswahlreihen statt drei -- die Person steht oben (" + ohne.reihen + ")");
|
||||
ok(ohne.knopf === "Übernehmen",
|
||||
'solange niemand gewaehlt ist, heisst der Knopf schlicht "Übernehmen" ('
|
||||
+ ohne.knopf + ")");
|
||||
ok(/niemand gewählt/.test(ohne.satz), "und ein Satz sagt genau das");
|
||||
/* KEINE WEGBESCHREIBUNG, SONDERN EIN WEG. "Waehle oben jemanden"
|
||||
waere falsch -- die Kacheln stehen weiter UNTEN. Der Knopf
|
||||
weiss, wo sie sind, auch nach dem naechsten Umbau. */
|
||||
ok(ohne.hin, "mit einem Knopf, der zur Personenwahl fuehrt");
|
||||
|
||||
/* JETZT WIRKLICH WAEHLEN -- ueber die Kachel, so wie ein Mensch. */
|
||||
await seite.evaluate(() => {
|
||||
[...document.querySelectorAll("#personen .e-person")]
|
||||
.find((k) => (k.dataset.name || k.textContent).includes("Marina"))?.click();
|
||||
});
|
||||
await seite.waitForTimeout(2400);
|
||||
const nachWahl = await seite.evaluate(() => {
|
||||
const karten = [...document.querySelectorAll(".vorlagenbrett__karte")];
|
||||
const frisch = karten.find((k) => k.dataset.schon !== "ja");
|
||||
const schon = karten.find((k) => k.dataset.schon === "ja");
|
||||
return {
|
||||
reihen: reihen.length,
|
||||
namen: [...(letzte?.querySelectorAll(".stufenleiter__name") || [])]
|
||||
.map((z) => z.textContent.trim()),
|
||||
zahlenOk: [...(letzte?.querySelectorAll(".stufenleiter__zahl") || [])]
|
||||
.every((z) => zahl.test(z.textContent.trim())),
|
||||
zahlen: [...(letzte?.querySelectorAll(".stufenleiter__zahl") || [])]
|
||||
.map((z) => z.textContent.trim()),
|
||||
/* Der Satz steht seit dem 16.09.2026 in `stufenleiter__hilfe`
|
||||
-- derselbe Baustein wie beim anderen Brett. Vorher war es
|
||||
`vorlagenbrett__stand`, und das ist die Zeile fuer Zahlen. */
|
||||
satz: [...document.querySelectorAll(".stufenleiter__hilfe")]
|
||||
.map((z) => z.textContent.trim())
|
||||
.find((t) => t.includes("Formular oben") || t.includes("gehen an")) || "",
|
||||
satz: [...document.querySelectorAll("#vorlagenbrett .stufenleiter__hilfe")]
|
||||
.map((z) => z.textContent.trim()).find((t) => t.includes("geht an")) || "",
|
||||
/* ZWEI VERSCHIEDENE KARTEN, ZWEI VERSCHIEDENE KNOEPFE -- und
|
||||
die erste im Feld ist nicht zwangslaeufig eine frische.
|
||||
Die erste Fassung nahm schlicht "die erste Karte" und
|
||||
meldete einen Fehler, weil dort "Nochmal" stand: genau das
|
||||
richtige Wort fuer eine, die schon liegt. */
|
||||
frisch: frisch?.querySelector(".knopf")?.textContent.trim() || null,
|
||||
schon: schon?.querySelector(".knopf")?.textContent.trim() || null,
|
||||
liste: document.getElementById("e-aufgaben-titel")?.textContent || "",
|
||||
};
|
||||
});
|
||||
/* ZWEI FEINE REIHEN: die Stufen und die Personen. Eine einzelne
|
||||
Zahl haette nicht gesagt, welche der beiden fehlt. */
|
||||
/* DREI REIHEN: Kategorie, Stufe, Person. Die ersten beiden sehen
|
||||
jetzt aus wie drueben beim anderen Brett. */
|
||||
ok(wahl.reihen === 3, "drei Auswahlreihen (Kategorie, Stufe, Person): " + wahl.reihen);
|
||||
ok(wahl.namen.includes("Marina"),
|
||||
"der Modi steht zur Auswahl (" + wahl.namen.join(", ") + ")");
|
||||
ok(!wahl.namen.includes("Tili") && !wahl.namen.includes("Schulle"),
|
||||
"ein Creator und eine Managerin nicht — sie arbeiten im anderen Haus");
|
||||
ok(wahl.zahlenOk && wahl.zahlen.length === wahl.namen.length,
|
||||
"neben jedem Namen steht, wie viel offen ist (" + wahl.zahlen.join(", ") + ")");
|
||||
ok(wahl.satz.includes("Formular oben"),
|
||||
"und solange niemand gewählt ist, sagt die Seite es");
|
||||
ok(nachWahl.satz.includes("Marina"), "nach dem Klick steht es da: " + nachWahl.satz);
|
||||
/* DER KNOPF NENNT DEN NAMEN. "Uebernehmen" allein laesst offen,
|
||||
wer sie bekommt -- und die Antwort steht weit oben. */
|
||||
ok(nachWahl.frisch === "An Marina",
|
||||
'eine frische Karte traegt ihren Namen ("' + nachWahl.frisch + '")');
|
||||
/* Und eine, die sie schon hat, sagt das statt des Namens -- sonst
|
||||
saehen beide gleich aus und man holte sie zweimal. */
|
||||
ok(nachWahl.schon === null || nachWahl.schon === "Nochmal",
|
||||
'eine schon uebernommene sagt "Nochmal" ('
|
||||
+ (nachWahl.schon === null ? "keine im Feld" : nachWahl.schon) + ")");
|
||||
ok(/Marina/.test(nachWahl.liste),
|
||||
'die Aufgabenliste darunter gehoert ihr ("' + nachWahl.liste + '")');
|
||||
|
||||
/* JETZT WIRKLICH DRUECKEN -- und nachsehen, ob die Aufgabe bei
|
||||
DIESEM Menschen landet. Ein Knopf, den niemand betaetigt hat,
|
||||
ist kein geprueter Knopf. */
|
||||
await seite.evaluate(() => {
|
||||
const reihen = [...document.querySelectorAll(".stufenleiter")];
|
||||
const letzte = document.querySelector('[aria-label="Person wählen"]');
|
||||
[...letzte.querySelectorAll(".stufenleiter__knopf")]
|
||||
.find((k) => k.textContent.includes("Marina"))?.click();
|
||||
});
|
||||
await seite.waitForTimeout(600);
|
||||
const nachWahl = await seite.evaluate(() =>
|
||||
[...document.querySelectorAll(".stufenleiter__hilfe")]
|
||||
.map((z) => z.textContent.trim()).find((t) => t.includes("gehen an")) || "");
|
||||
ok(nachWahl.includes("Marina"), "nach dem Klick steht es da: " + nachWahl);
|
||||
/* GEZAEHLT WIRD IN IHRER LISTE, NICHT AUF DEM BRETT.
|
||||
|
||||
/* GEZAEHLT WERDEN AUFGABEN, NICHT KARTEN.
|
||||
Seit dem 23.09.2026 fasst das Brett gleiche Aufgaben zu EINER
|
||||
Karte zusammen ("0 von 8"). Eine neue Aufgabe erhoeht die
|
||||
Kartenzahl also nur dann, wenn es noch keine gleichnamige gibt --
|
||||
sonst wandert sie in eine bestehende Karte hinein. Genau das
|
||||
war die Absicht des Umbaus; eine Pruefung, die trotzdem Karten
|
||||
zaehlt, misst ab da die alte Anordnung und nicht die Sache.
|
||||
Jede Karte weist ihre Aufgaben aus: data-id (eine) oder
|
||||
data-ids (mehrere). */
|
||||
const zaehleAufgaben = () => [...document.querySelectorAll(".karte")]
|
||||
.reduce((n, k) => n + (k.dataset.ids || k.dataset.id || "")
|
||||
.split(",").filter(Boolean).length, 0);
|
||||
const vorher = await seite.evaluate(zaehleAufgaben);
|
||||
Auf "Aufgaben" stand unter dem Katalog das Brett, und die
|
||||
Pruefung zaehlte dort die Karten. Hier steht darunter die
|
||||
Aufgabenliste der gewaehlten Person -- und die ist die bessere
|
||||
Antwort auf die Frage, die der Abschnitt stellt: Landet die
|
||||
Aufgabe bei DIESEM Menschen? Auf dem Brett musste man das aus
|
||||
dem Namen auf der Karte herauslesen; hier ist es die Liste
|
||||
selbst, die ihren Namen traegt. */
|
||||
const zaehleListe = () =>
|
||||
document.querySelectorAll("#e-aufgaben-liste .e-aufgabe").length;
|
||||
const vorher = await seite.evaluate(zaehleListe);
|
||||
const welche = await seite.evaluate(() =>
|
||||
document.querySelector(".vorlagenbrett__karte .vorlagenbrett__titel")
|
||||
?.textContent.trim() || "");
|
||||
await seite.evaluate(() => {
|
||||
[...document.querySelectorAll(".vorlagenbrett__karte")][0]
|
||||
?.querySelector("button")?.click();
|
||||
});
|
||||
await seite.waitForTimeout(1800);
|
||||
const danach = await seite.evaluate(() => ({
|
||||
aufgaben: [...document.querySelectorAll(".karte")]
|
||||
.reduce((n, k) => n + (k.dataset.ids || k.dataset.id || "")
|
||||
.split(",").filter(Boolean).length, 0),
|
||||
karten: document.querySelectorAll(".karte").length,
|
||||
fuerMarina: [...document.querySelectorAll(".karte")]
|
||||
.filter((k) => k.textContent.includes("Marina")).length,
|
||||
}));
|
||||
ok(danach.aufgaben === vorher + 1,
|
||||
"die Aufgabe liegt auf dem Brett (" + vorher + " -> " + danach.aufgaben
|
||||
+ " Aufgaben in " + danach.karten + " Karten)");
|
||||
ok(danach.fuerMarina > 0, "und zwar bei Marina (" + danach.fuerMarina + ")");
|
||||
await seite.waitForTimeout(2600);
|
||||
const danach = await seite.evaluate((titel) => ({
|
||||
liste: document.querySelectorAll("#e-aufgaben-liste .e-aufgabe").length,
|
||||
steht: [...document.querySelectorAll("#e-aufgaben-liste .e-aufgabe")]
|
||||
.some((a) => a.textContent.includes(titel)),
|
||||
ueberschrift: document.getElementById("e-aufgaben-titel")?.textContent || "",
|
||||
markiert: [...document.querySelectorAll(".vorlagenbrett__karte")]
|
||||
.filter((k) => k.dataset.schon === "ja").length,
|
||||
}), welche);
|
||||
ok(danach.liste === vorher + 1,
|
||||
"die Aufgabe liegt in ihrer Liste (" + vorher + " -> " + danach.liste + ")");
|
||||
ok(danach.steht, 'und zwar genau die uebernommene ("' + welche + '")');
|
||||
ok(/Marina/.test(danach.ueberschrift),
|
||||
"die Liste ist ihre (" + danach.ueberschrift.trim() + ")");
|
||||
/* UND DER KATALOG WEISS ES. Ohne diese Zeile koennte man dieselbe
|
||||
Vorlage gleich noch einmal holen, ohne Hinweis -- genau das war
|
||||
der Grund fuer die Markierung. */
|
||||
ok(danach.markiert >= 1,
|
||||
"der Katalog markiert sie als uebernommen (" + danach.markiert + ")");
|
||||
|
||||
/* ==== DIE BEWERBUNG AM BILDSCHIRM ENTSCHEIDEN (23.09.2026) ======
|
||||
|
||||
@@ -838,7 +868,11 @@ console.log("");
|
||||
ok(bw?.auffaellig === true, "und die Karte faellt auf");
|
||||
|
||||
/* ---- Jetzt wirklich druecken, samt Notiz ---------------------- */
|
||||
const vorherK = await seite.evaluate(() => document.querySelectorAll(".karte").length);
|
||||
/* Auch hier: die Liste der gewaehlten Person, nicht das Brett.
|
||||
Marina ist oben gewaehlt, und ihre Bewerbung wird gleich
|
||||
angenommen -- die Aufgabe muss also bei ihr auftauchen. */
|
||||
const vorherK = await seite.evaluate(() =>
|
||||
document.querySelectorAll("#e-aufgaben-liste .e-aufgabe").length);
|
||||
await seite.evaluate(() => {
|
||||
[...document.querySelectorAll(".vorlagenbrett__bewerbung button")]
|
||||
.find((b) => b.textContent.trim() === "Annehmen")?.click();
|
||||
@@ -860,7 +894,7 @@ console.log("");
|
||||
await seite.waitForTimeout(2200);
|
||||
|
||||
const nachher = await seite.evaluate(() => ({
|
||||
karten: document.querySelectorAll(".karte").length,
|
||||
karten: document.querySelectorAll("#e-aufgaben-liste .e-aufgabe").length,
|
||||
nochBeworben: document.querySelectorAll(".vorlagenbrett__bewerbung").length,
|
||||
}));
|
||||
ok(nachher.karten === vorherK + 1,
|
||||
|
||||
@@ -142,12 +142,36 @@ console.log("\n=== 2. Der Modi setzt eine Kategorie ===\n");
|
||||
const jsonKopf = { "Content-Type": "application/json" };
|
||||
let aufgabeId = null;
|
||||
{
|
||||
const a = await hole(modiAn.keks, "/workspace/api/aufgaben", {
|
||||
/* IM TEAM DOGI LEGT DIE LEITUNG AN (nachgezogen 23.09.2026).
|
||||
|
||||
Hier stand `modiAn` -- und bis zum 22.09.2026 war das richtig.
|
||||
An dem Tag bekam der Server die Regel "ein Modi gibt sich keine
|
||||
Aufgaben" (Filipe: "sie sich nicht selber aufgaben geben"), und
|
||||
diese Pruefung wurde nicht nachgezogen. Seither meldete sie
|
||||
"angelegt (403)" -- ein Fehler, der keiner war, und der bei jedem
|
||||
Lauf mitlief, bis ihn niemand mehr las.
|
||||
|
||||
Die Kategorie wird dabei MITGESCHICKT: Genau darum geht es in
|
||||
diesem Abschnitt, und ob sie den Weg ueber das Anlegen durch
|
||||
jemand anderen ueberlebt, war vorher nie geprueft. */
|
||||
const a = await hole(dogiAn.keks, "/workspace/api/aufgaben", {
|
||||
method: "POST", headers: jsonKopf,
|
||||
body: JSON.stringify({ titel: "Clip vom Freitags-Live schneiden", kategorie: "clipping" }),
|
||||
body: JSON.stringify({ titel: "Clip vom Freitags-Live schneiden",
|
||||
kategorie: "clipping", verantwortlich_id: idModi }),
|
||||
});
|
||||
aufgabeId = a.daten?.id ?? null;
|
||||
ok(a.status === 201 && Number.isInteger(aufgabeId), `angelegt (${a.status})`);
|
||||
ok(a.status === 201 && Number.isInteger(aufgabeId),
|
||||
`die Leitung legt sie fuer ihn an (${a.status})`);
|
||||
|
||||
/* UND DIE GEGENPROBE, die es vorher gar nicht gab: Er selbst kann
|
||||
es nicht. Ohne sie bewiese die Zeile darueber nur, dass das
|
||||
Anlegen ueberhaupt geht -- nicht, dass die Schranke steht. */
|
||||
const b = await hole(modiAn.keks, "/workspace/api/aufgaben", {
|
||||
method: "POST", headers: jsonKopf,
|
||||
body: JSON.stringify({ titel: "Etwas fuer mich selbst", kategorie: "clipping" }),
|
||||
});
|
||||
ok(b.status === 403 && b.daten?.fehler === "nur_leitung_legt_an",
|
||||
`er selbst darf es nicht (${b.status} ${b.daten?.fehler || ""})`);
|
||||
}
|
||||
if (aufgabeId) {
|
||||
const a = await hole(modiAn.keks, "/workspace/api/aufgaben");
|
||||
@@ -178,12 +202,19 @@ if (aufgabeId) {
|
||||
/* ---------- 3. Ein Tippfehler ist ein Fehler ------------------------- */
|
||||
console.log("\n=== 3. Was bei einem falschen Wert passiert ===\n");
|
||||
{
|
||||
const a = await hole(modiAn.keks, "/workspace/api/aufgaben", {
|
||||
/* AUCH HIER DIE LEITUNG (nachgezogen 23.09.2026, gleicher Grund).
|
||||
|
||||
Ein Modi kaeme gar nicht bis zur Feldpruefung -- die Schranke
|
||||
steht davor, und die Antwort waere 403 statt 400. Gemessen wuerde
|
||||
dann nicht mehr, was dieser Abschnitt wissen will: dass ein
|
||||
falscher Kategoriewert BENANNT wird statt still zu verschwinden. */
|
||||
const a = await hole(dogiAn.keks, "/workspace/api/aufgaben", {
|
||||
method: "POST", headers: jsonKopf,
|
||||
body: JSON.stringify({ titel: "Irgendwas", kategorie: "gibtesnicht" }),
|
||||
body: JSON.stringify({ titel: "Irgendwas", kategorie: "gibtesnicht",
|
||||
verantwortlich_id: idModi }),
|
||||
});
|
||||
ok(a.status === 400 && /Kategorie/i.test(a.daten?.fehler || ""),
|
||||
`dem Modi wird es gesagt (${a.status} ${a.daten?.fehler || ""})`);
|
||||
`der falsche Wert wird benannt (${a.status} ${a.daten?.fehler || ""})`);
|
||||
}
|
||||
|
||||
/* ---------- 4. Und wenn ein Manager sie schickt? --------------------- */
|
||||
@@ -249,21 +280,52 @@ console.log("\n=== 5. Das Feld im echten Formular ===\n");
|
||||
ok(z.sichtbar, "der Modi sieht das Feld");
|
||||
ok(z.auswahl.length >= 7,
|
||||
`mit ${z.auswahl.length} Eintraegen (${z.auswahl.slice(1, 4).join(", ")} …)`);
|
||||
/* DAS VORLAGENBRETT (berichtigt 10.09.2026).
|
||||
/* DAS VORLAGENBRETT (berichtigt 10.09., umgezogen 23.09.2026).
|
||||
|
||||
Hier stand "und kein Creator-Vorlagenbrett" -- richtig, solange
|
||||
es fuer einen Modi ueberhaupt keinen Katalog gab. Seit der
|
||||
Katalog aus Teil 2 da ist, steht das Brett wieder da, nur mit
|
||||
SEINEM Inhalt. Geprueft wird deshalb ab jetzt beides: dass es
|
||||
da ist, und dass der fremde nicht durchschlaegt. Was der
|
||||
Katalog selbst enthaelt, prueft pruef-modi-katalog. */
|
||||
Am 10.09. stand hier "und kein Creator-Vorlagenbrett" --
|
||||
richtig, solange es fuer einen Modi ueberhaupt keinen Katalog
|
||||
gab. Seit dem Katalog aus Teil 2 stand das Brett wieder da,
|
||||
nur mit SEINEM Inhalt.
|
||||
|
||||
Seit dem 23.09.2026 steht es nicht mehr HIER.
|
||||
|
||||
Filipe: "das soll auch bitte nicht in der kategorie aufgaben
|
||||
sondern eure aufgaben sein bitte."
|
||||
|
||||
GEPRUEFT WIRD DER UMZUG IN BEIDE RICHTUNGEN. Nur "hier ist er
|
||||
weg" waere die halbe Auskunft: Weg ist er auch dann, wenn ihn
|
||||
ein Fehler ueberall verschwinden laesst. Erst mit der zweiten
|
||||
Haelfte -- "und drueben ist er da" -- sagt die Pruefung etwas
|
||||
ueber den Umzug statt ueber einen Ausfall. */
|
||||
const vorlagen = await seite.evaluate(() => {
|
||||
const v = document.getElementById("vorlagenbrett");
|
||||
return { da: !!v && !v.hidden, text: document.body.innerText };
|
||||
return {
|
||||
leer: !v || v.hidden,
|
||||
datei: !!window.Vorlagenbrett,
|
||||
text: document.body.innerText,
|
||||
};
|
||||
});
|
||||
ok(vorlagen.da, "das Vorlagenbrett steht da -- mit seinem eigenen Katalog");
|
||||
ok(vorlagen.datei, "die Katalogdatei ist auch hier geladen");
|
||||
ok(vorlagen.leer, "aber der Katalog steht nicht mehr auf dieser Seite");
|
||||
ok(!/vier Bereichen und vier Stufen/.test(vorlagen.text),
|
||||
"und kein Wort vom Creator-Katalog");
|
||||
/* DIE ANDERE HAELFTE: drueben steht er. */
|
||||
{
|
||||
const s2 = await kontext.newPage();
|
||||
await s2.goto(BASIS + "/workspace/entwicklung.html", { waitUntil: "networkidle" });
|
||||
await s2.waitForTimeout(1600);
|
||||
const drueben = await s2.evaluate(() => {
|
||||
const v = document.getElementById("vorlagenbrett");
|
||||
return {
|
||||
da: !!v && !v.hidden,
|
||||
kopf: document.querySelector(".vorlagenbrett__unter")?.textContent || "",
|
||||
};
|
||||
});
|
||||
ok(drueben.da, "dafuer steht er auf „Eure Aufgaben“");
|
||||
ok(/Kategorien/.test(drueben.kopf),
|
||||
`mit seinem eigenen Kopf ("${drueben.kopf.slice(0, 55)}…")`);
|
||||
await s2.close();
|
||||
}
|
||||
ok(konsole.length === 0,
|
||||
konsole.length ? `Fehler in der Konsole: ${konsole[0]}` : "keine Fehler in der Konsole");
|
||||
await seite.screenshot({ path: "pruef-modi-kategorie.png", fullPage: false });
|
||||
@@ -342,9 +404,30 @@ console.log("\n=== 5. Das Feld im echten Formular ===\n");
|
||||
|
||||
/* GEGENPROBE ZUM BROWSERTEIL: Findet die Suche die Namen ueberhaupt,
|
||||
wenn sie dastehen? Ohne diesen Schritt bewiese der Haken oben
|
||||
nichts -- er waere auch gruen, wenn innerText leer waere. */
|
||||
nichts -- er waere auch gruen, wenn innerText leer waere.
|
||||
|
||||
GESUCHT WIRD SEIT DEM 23.09.2026 AUF "EURE AUFGABEN".
|
||||
|
||||
Bis dahin stand hier "aufgaben.html" -- und die Namen standen
|
||||
dort, weil das Vorlagenbrett sie als Knopfreihe zeigte. Mit dem
|
||||
Umzug des Katalogs sind sie mitgewandert. Die Gegenprobe hing
|
||||
also an etwas, das mit ihrer eigentlichen Frage nichts zu tun
|
||||
hatte; sie wurde rot, ohne dass die Verborgenheit beim Manager
|
||||
auch nur beruehrt worden waere.
|
||||
|
||||
Das ist die Sorte Abhaengigkeit, die man erst bemerkt, wenn sie
|
||||
bricht: Die Zeile oben prueft eine Seite, die Gegenprobe dazu
|
||||
eine andere -- und dass beide dieselbe waren, war Zufall. */
|
||||
{
|
||||
const { kontext, seite } = await formular("creator", "CODE-MODI-0001");
|
||||
const kontext = await browser.newContext();
|
||||
const seite = await kontext.newPage();
|
||||
await seite.goto(BASIS + "/workspace/", { waitUntil: "domcontentloaded" });
|
||||
await seite.click('.rolle[data-rolle="creator"]');
|
||||
await seite.fill("#code", "CODE-MODI-0001");
|
||||
await seite.click("button[type=submit]");
|
||||
await seite.waitForURL("**/start.html", { timeout: 15000 });
|
||||
await seite.goto(BASIS + "/workspace/entwicklung.html", { waitUntil: "networkidle" });
|
||||
await seite.waitForTimeout(1600);
|
||||
const text = await seite.evaluate(() => document.body.innerText);
|
||||
ok(kategorien.length > 0 && kategorien.some((k) => text.includes(k.name)),
|
||||
"beim Modi findet dieselbe Suche die Namen sehr wohl");
|
||||
|
||||
@@ -54,8 +54,25 @@ ok(serverDateien.length >= 20, `${serverDateien.length} Server-Module gefunden`)
|
||||
const ROUTEN = [];
|
||||
for (const datei of serverDateien) {
|
||||
const text = readFileSync(join(SERVER, datei), "utf8");
|
||||
/* AUCH ROUTEN IN ANFUEHRUNGSSTRICHEN UND BACKTICKS (23.09.2026).
|
||||
|
||||
Hier stand nur das doppelte Anfuehrungszeichen. Wer eine Route in
|
||||
einer Schleife registriert, schreibt sie aber als Template:
|
||||
|
||||
for (const weg of ["annehmen", "ablehnen"])
|
||||
router.post(`/workspace/api/vorlagen/bewerbung/${weg}`, ...)
|
||||
|
||||
Diese Routen fehlten in der Liste -- und die Aufrufe dorthin
|
||||
wurden als "Schnittstelle gibt es nicht" gemeldet, obwohl sie
|
||||
jeden Tag laufen. Ein Fehlalarm, den man zweimal liest und dann
|
||||
nicht mehr; genau davor warnt der Kommentar weiter unten bei den
|
||||
sechs angeblich verwaisten Seiten.
|
||||
|
||||
Die Erfassung der AUFRUFE kannte alle drei Zeichen schon
|
||||
(["'`]) -- nur die Erfassung der ROUTEN nicht. Zwei Regeln fuer
|
||||
dieselbe Frage, und eine davon war aelter. */
|
||||
const treffer = text.matchAll(
|
||||
/Router\.(get|post|patch|put|delete|use)\(\s*\n?\s*"(\/workspace\/[^"]*)"/g);
|
||||
/Router\.(get|post|patch|put|delete|use)\(\s*\n?\s*["'`](\/workspace\/[^"'`]*)/g);
|
||||
for (const t of treffer) ROUTEN.push({ art: t[1], pfad: t[2], datei });
|
||||
}
|
||||
ok(ROUTEN.length >= 80, `${ROUTEN.length} Server-Routen eingelesen`);
|
||||
@@ -77,7 +94,12 @@ function routeGibtEs(pfad, art) {
|
||||
if (art && r.art !== art) return false;
|
||||
const teileB = r.pfad.split("/").filter(Boolean);
|
||||
if (teileA.length !== teileB.length) return false;
|
||||
return teileB.every((t, i) => t.startsWith(":") || t === "*" || t === teileA[i]);
|
||||
/* ${...} IN EINER ROUTE IST EIN PLATZHALTER wie :id -- was dort
|
||||
eingesetzt wird, entscheidet die Schleife beim Start. Der
|
||||
Aufrufpfad ist oben schon zu "1" normalisiert worden; ohne diese
|
||||
Zeile verglichen wir "1" mit "${weg}" und faenden nie etwas. */
|
||||
return teileB.every((t, i) => t.startsWith(":") || t === "*"
|
||||
|| t.includes("${") || t === teileA[i]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<style>
|
||||
/* Bewusst in der Seite und nicht in einer eigenen Datei: Diese Seite
|
||||
soll auch dann noch etwas anzeigen, wenn genau das schiefgeht,
|
||||
@@ -126,7 +126,7 @@
|
||||
|
||||
|
||||
|
||||
<script src="assets/js/anruf-probe.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/anruf-probe.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -23,25 +23,25 @@
|
||||
},
|
||||
"icons": [
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-192.png?v=202609231624",
|
||||
"src": "/assets/img/app-symbole/workspace-192.png?v=202609231712",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-512.png?v=202609231624",
|
||||
"src": "/assets/img/app-symbole/workspace-512.png?v=202609231712",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609231624",
|
||||
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609231712",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609231624",
|
||||
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609231712",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
|
||||
+46
-860
@@ -617,6 +617,13 @@
|
||||
|
||||
let ausschnitt = ''; /* '', 'meine', 'faellig', 'heute' */
|
||||
let nurCreator = 0; /* 0 = alle */
|
||||
/* DIE LEUTE ALS DATEN, nicht nur als <option>. Bis zum 23.09.2026
|
||||
stand diese Zeile im Vorlagenblock; der ist ausgezogen, die
|
||||
Zuweisung weiter unten blieb. Ohne Deklaration waere daraus eine
|
||||
stille globale Variable geworden -- "node --check" sieht so etwas
|
||||
nicht, und im Browser faellt es erst auf, wenn zwei Seiten sich
|
||||
gegenseitig die Liste ueberschreiben. */
|
||||
let personenListe = [];
|
||||
let alleAufgaben = [];
|
||||
|
||||
/* Abgebrochenes zählt NICHT als offen (05.09.2026). Ohne diese
|
||||
@@ -1729,875 +1736,54 @@
|
||||
}
|
||||
|
||||
await laden();
|
||||
await vorlagenbrettZeigen();
|
||||
/* ERST DIE AUFGABEN, DANN DER KATALOG. Er markiert daran, was
|
||||
schon uebernommen wurde -- in umgekehrter Reihenfolge waere die
|
||||
Markierung beim ersten Zeichnen leer. */
|
||||
vorlagenbrettAnschliessen();
|
||||
await window.Vorlagenbrett?.zeigen();
|
||||
})();
|
||||
|
||||
/* =====================================================================
|
||||
AUFGABEN AUS DER VORLAGE
|
||||
|
||||
Vier Bereiche, vier Stufen, drei Aufgaben je Feld. Der Block ist
|
||||
bewusst KEINE zweite Aufgabenverwaltung: Er legt eine ganz normale
|
||||
Aufgabe an, mit Frist und Verantwortlichem, und verschwindet danach
|
||||
aus dem Weg. Alles Weitere macht das Brett darunter.
|
||||
|
||||
WARUM DIE BEIDEN REIHEN DIESELBEN KNOEPFE SIND WIE IN DER
|
||||
CHECKLISTE: Es sind dieselben vier Bereiche und dieselben vier
|
||||
Stufen. Zwei verschiedene Darstellungen fuer dieselbe Einteilung
|
||||
waeren zwei Sachen zum Lernen statt einer.
|
||||
|
||||
OHNE CREATOR KEINE AUFGABE. Ein Creator legt sie fuer sich an, ein
|
||||
Betreuer fuer den, den er oben gewaehlt hat. Ist keiner gewaehlt,
|
||||
steht das da -- statt eines Knopfes, der beim Druecken einen Fehler
|
||||
zeigt.
|
||||
===================================================================== */
|
||||
const BEREICHE_VORLAGE = [
|
||||
{ schluessel: 'live', name: 'LIVE-Analyse' },
|
||||
{ schluessel: 'content', name: 'Content-Ideen' },
|
||||
{ schluessel: 'technik', name: 'Technik' },
|
||||
{ schluessel: 'community', name: 'Community' },
|
||||
];
|
||||
const STUFEN_VORLAGE = [
|
||||
{ schluessel: 'anfaenger', name: 'Anfänger',
|
||||
hilfe: 'Was von Anfang an sitzen muss. Meist an einem Abend zu schaffen.' },
|
||||
{ schluessel: 'fort', name: 'Fortgeschritten',
|
||||
hilfe: 'Aus Zufall wird Routine. Braucht Wiederholung, also Wochen.' },
|
||||
{ schluessel: 'profi', name: 'Profi',
|
||||
hilfe: 'Gemessen statt geschätzt: ein Wert, ein Versuch, ein Beleg.' },
|
||||
{ schluessel: 'meister', name: 'Meister',
|
||||
hilfe: 'Was auch ohne dich weiterläuft — Vorlage, Vertretung, Ablage.' },
|
||||
];
|
||||
let vorlagen = null;
|
||||
/* Der zweite Katalog -- welcher es ist, sagt der Server. Hier steht
|
||||
bewusst nur "katalog": Im Browser darf nichts stehen, woraus sich
|
||||
schliessen laesst, fuer wen er gedacht ist. */
|
||||
let katalog = null;
|
||||
let kGruppe = null;
|
||||
/* WELCHE STUFE. `null` heisst alle -- und das ist die Vorgabe:
|
||||
Wer eine Kategorie aufmacht, will erst sehen, was es gibt. */
|
||||
let kStufe = null;
|
||||
/* An WEN die Aufgabe geht. `null` heisst: das Feld oben im Formular
|
||||
entscheidet, so wie bisher. */
|
||||
let kZiel = null;
|
||||
let personenListe = [];
|
||||
/* Getrennt vom Inhalt, weil "nichts bekommen" ein gueltiges Ergebnis
|
||||
ist. Ohne dieses Merkmal fragte die Seite bei jedem Neuzeichnen
|
||||
erneut nach -- und bekaeme jedes Mal wieder nichts. */
|
||||
let vorlagenGeladen = false;
|
||||
/* ==== BEWERBUNGEN AUF EINE VORLAGE (23.09.2026) ====================
|
||||
|
||||
Filipe: „die modis sollen bei all diesen voschlägen auch nur
|
||||
bewerben können ... und nur dogfather und die rechte hand sollen
|
||||
annehmen oder ablehnen können, mit einem text als notiz."
|
||||
|
||||
WER WAS DARF, SAGT DER SERVER. Hier steht kein Rollenname -- diese
|
||||
Datei bekommt jeder, der die Seite öffnet, und genau daran ist
|
||||
dieses Brett am 17.09. schon einmal gescheitert. */
|
||||
let bewerbungen = [];
|
||||
let darfEntscheidenV = false;
|
||||
let darfVerteilenV = false;
|
||||
let vBereich = 'live';
|
||||
let vStufe = 'anfaenger';
|
||||
|
||||
/* ---------- DAS VORLAGENBRETT IST ZUGEKLAPPT (09.09.2026) ------------
|
||||
Filipe: "ich will nur dass du dich informierst und schaust was man
|
||||
vielleicht noch besser machen koennte von der benutzung ... ich red
|
||||
von den aufgaben. das system von den aufgaben, die bedienung."
|
||||
|
||||
Gemessen auf dem Handy: Der Vorlagenblock fuellte anderthalb
|
||||
Bildschirme, BEVOR die erste eigene Aufgabe kam. Nach dem Ausbau
|
||||
von Profi und Meister am selben Tag ist er noch laenger geworden.
|
||||
|
||||
Das ist die falsche Reihenfolge: Vorlagen holt man selten, das
|
||||
Brett benutzt man jeden Tag. Der Block bleibt an seiner Stelle --
|
||||
dort gehoert er hin, weil daraus Aufgaben auf das Brett darunter
|
||||
wandern --, aber er ist jetzt zu. Wer ihn aufmacht, findet ihn
|
||||
beim naechsten Mal wieder offen: Wer Vorlagen holt, holt meistens
|
||||
mehrere. */
|
||||
const VORLAGEN_OFFEN = 'dfw_vorlagenbrett_offen';
|
||||
let vOffen = false;
|
||||
try { vOffen = localStorage.getItem(VORLAGEN_OFFEN) === 'ja'; } catch { vOffen = false; }
|
||||
|
||||
/** Den Katalog holen -- und mit ihm die Bewerbungen.
|
||||
*
|
||||
* ALS EIGENE FUNKTION, weil sie zweimal gebraucht wird: beim ersten
|
||||
* Aufbau und nach JEDER Entscheidung. Ohne das zweite bliebe eine
|
||||
* beantwortete Bewerbung stehen, bis jemand die Seite neu lädt --
|
||||
* und zwei Leute würden über dieselbe Bitte zweimal entscheiden.
|
||||
*
|
||||
* DIE BEWERBUNGEN KOMMEN IN DERSELBEN ANTWORT wie der Katalog. Eine
|
||||
* zweite Abfrage daneben wäre ein zweiter Weg, auf dem die beiden
|
||||
* auseinanderlaufen können. */
|
||||
async function vorlagenHolen() {
|
||||
try {
|
||||
const a = await hole('/workspace/api/vorlagen');
|
||||
if (!a.ok) return false;
|
||||
const d = await a.json();
|
||||
vorlagen = d.aufgaben || null;
|
||||
/* Ein Katalog mit null Eintraegen ist keiner. Ohne diese Pruefung
|
||||
haette ein leeres `{gruppen:[],aufgaben:[]}` einen Block mit
|
||||
Ueberschrift und nichts darin ergeben -- das sieht aus wie ein
|
||||
Fehler, und es waere auch einer. */
|
||||
katalog = d.katalog && Array.isArray(d.katalog.aufgaben) && d.katalog.aufgaben.length
|
||||
? d.katalog : null;
|
||||
bewerbungen = Array.isArray(d.bewerbungen) ? d.bewerbungen : [];
|
||||
darfEntscheidenV = !!d.darf_entscheiden;
|
||||
darfVerteilenV = !!d.darf_verteilen;
|
||||
vorlagenGeladen = true;
|
||||
return true;
|
||||
} catch { return false; }
|
||||
}
|
||||
|
||||
async function vorlagenbrettZeigen() {
|
||||
const ziel = $('vorlagenbrett');
|
||||
if (!ziel || !ich) return;
|
||||
/* WER DIESEN KATALOG BEKOMMT, ENTSCHEIDET DER SERVER.
|
||||
|
||||
Hier stand kurzzeitig ein Vergleich auf einen Rollennamen -- in
|
||||
einer Datei, die JEDER bekommt, der die Seite oeffnet. Jetzt
|
||||
liefert /workspace/api/vorlagen fuer die Betroffenen schlicht
|
||||
nichts, und `if (!vorlagen) return` weiter unten laesst das Brett
|
||||
verborgen. Dieselbe Wirkung, ohne eine Zeile, die verraet, fuer
|
||||
wen sie gilt. */
|
||||
if (!vorlagenGeladen) {
|
||||
if (!(await vorlagenHolen())) return;
|
||||
}
|
||||
/* Zwei Kataloge, einer je Person -- nie beide. Wer den einen
|
||||
bekommt, bekommt den anderen nicht; das entscheidet der Server. */
|
||||
if (katalog) { katalogBrett(ziel); return; }
|
||||
if (!vorlagen) return;
|
||||
ziel.hidden = false;
|
||||
ziel.textContent = '';
|
||||
|
||||
/* DER KOPF IST DER KNOPF. Ein eigener kleiner Schalter daneben waere
|
||||
ein zweites Ziel fuer dieselbe Absicht -- und ein kleineres. */
|
||||
const kopf = el('button', 'vorlagenbrett__kopf');
|
||||
kopf.type = 'button';
|
||||
kopf.setAttribute('aria-expanded', String(vOffen));
|
||||
kopf.setAttribute('aria-controls', 'vorlagenbrett-koerper');
|
||||
const kText = el('span', 'vorlagenbrett__kopftext');
|
||||
kText.append(el('span', 'feldschild', 'Aufgaben aus der Vorlage'));
|
||||
/* Zugeklappt zaehlt nicht die Erklaerung, sondern WIE VIEL darin
|
||||
liegt -- sonst sieht der Block aus wie eine Ueberschrift ohne
|
||||
Inhalt und niemand macht ihn je auf. */
|
||||
const gesamt = Object.values(vorlagen)
|
||||
.reduce((n, b) => n + Object.values(b).reduce((m, l) => m + l.length, 0), 0);
|
||||
kText.append(el('span', 'vorlagenbrett__unter', vOffen
|
||||
? 'Vier Bereiche, vier Stufen. Übernommen wird als ganz normale Aufgabe '
|
||||
+ '– mit Frist, veränderbar, auf dem Brett darunter.'
|
||||
: `${gesamt} fertige Aufgaben in vier Bereichen und vier Stufen – zum Übernehmen.`));
|
||||
kopf.append(kText);
|
||||
const pfeil = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
||||
pfeil.setAttribute('viewBox', '0 0 24 24');
|
||||
pfeil.setAttribute('class', 'klapp-pfeil');
|
||||
pfeil.setAttribute('aria-hidden', 'true');
|
||||
const pfad = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
||||
pfad.setAttribute('d', 'm6 9.5 6 6 6-6');
|
||||
pfeil.append(pfad);
|
||||
kopf.append(pfeil);
|
||||
kopf.addEventListener('click', () => {
|
||||
vOffen = !vOffen;
|
||||
try { localStorage.setItem(VORLAGEN_OFFEN, vOffen ? 'ja' : 'nein'); } catch { /* egal */ }
|
||||
vorlagenbrettZeigen();
|
||||
});
|
||||
ziel.append(kopf);
|
||||
ziel.dataset.auf = vOffen ? 'ja' : 'nein';
|
||||
|
||||
/* Zugeklappt wird der Rest gar nicht erst gebaut. Ihn nur zu
|
||||
verstecken hiesse, bei jedem Neuzeichnen achtzig Karten
|
||||
anzulegen, die niemand sieht. */
|
||||
if (!vOffen) return;
|
||||
|
||||
const koerper = el('div', 'vorlagenbrett__koerper');
|
||||
koerper.id = 'vorlagenbrett-koerper';
|
||||
ziel.append(koerper);
|
||||
|
||||
/* Reihe 1: der Bereich. */
|
||||
const r1 = el('div', 'stufenleiter');
|
||||
r1.setAttribute('role', 'group');
|
||||
r1.setAttribute('aria-label', 'Bereich wählen');
|
||||
for (const b of BEREICHE_VORLAGE) {
|
||||
const k = el('button', 'stufenleiter__knopf');
|
||||
k.type = 'button';
|
||||
k.dataset.stufe = b.schluessel;
|
||||
k.setAttribute('aria-pressed', String(vBereich === b.schluessel));
|
||||
k.append(el('span', 'stufenleiter__name', b.name));
|
||||
k.addEventListener('click', () => { vBereich = b.schluessel; vorlagenbrettZeigen(); });
|
||||
r1.append(k);
|
||||
}
|
||||
koerper.append(r1);
|
||||
|
||||
/* Reihe 2: die Stufe, mit der Zahl der Aufgaben darin. */
|
||||
const r2 = el('div', 'stufenleiter');
|
||||
r2.setAttribute('role', 'group');
|
||||
r2.setAttribute('aria-label', 'Könnensstufe wählen');
|
||||
for (const st of STUFEN_VORLAGE) {
|
||||
const n = ((vorlagen[vBereich] || {})[st.schluessel] || []).length;
|
||||
if (!n) continue;
|
||||
const k = el('button', 'stufenleiter__knopf');
|
||||
k.type = 'button';
|
||||
k.dataset.stufe = st.schluessel;
|
||||
k.setAttribute('aria-pressed', String(vStufe === st.schluessel));
|
||||
k.title = st.hilfe;
|
||||
k.append(el('span', 'stufenleiter__name', st.name));
|
||||
k.append(el('span', 'stufenleiter__zahl', String(n)));
|
||||
k.addEventListener('click', () => { vStufe = st.schluessel; vorlagenbrettZeigen(); });
|
||||
r2.append(k);
|
||||
}
|
||||
koerper.append(r2);
|
||||
const hilfe = STUFEN_VORLAGE.find((x) => x.schluessel === vStufe)?.hilfe;
|
||||
if (hilfe) koerper.append(el('p', 'stufenleiter__hilfe', hilfe));
|
||||
|
||||
/* Für wen? */
|
||||
const fuer = ich.rolle === 'creator' ? ich.id : nurCreator;
|
||||
if (!fuer) {
|
||||
koerper.append(el('p', 'vorlagenbrett__hinweis',
|
||||
'Wähle oben einen Creator, dann lassen sich diese Aufgaben übernehmen.'));
|
||||
}
|
||||
|
||||
/* WAS SCHON GEHOLT WURDE, STEHT DA (09.09.2026).
|
||||
|
||||
Vorher konnte man dieselbe Vorlage zweimal uebernehmen und
|
||||
bekam die Aufgabe zweimal auf das Brett -- ohne jeden Hinweis.
|
||||
Bei achtzig Vorlagen ueber vier Stufen weiss niemand auswendig,
|
||||
was er letzten Monat schon geholt hat.
|
||||
|
||||
Verglichen wird ueber die KENNUNG der Vorlage, nicht ueber den
|
||||
Titel: Ein Titel darf geaendert werden, und dann waere der
|
||||
Vergleich still falsch. Die Kennung liegt seit heute an der
|
||||
Aufgabe (Spalte `vorlage`).
|
||||
|
||||
Es braucht dafuer keine zusaetzliche Abfrage -- die Aufgaben
|
||||
liegen ohnehin schon im Browser. */
|
||||
const schonDa = new Map();
|
||||
for (const a of alleAufgaben) {
|
||||
if (!a.vorlage) continue;
|
||||
if (fuer && a.creator_id !== fuer) continue;
|
||||
schonDa.set(a.vorlage, a);
|
||||
}
|
||||
|
||||
const liste = (vorlagen[vBereich] || {})[vStufe] || [];
|
||||
const box = el('div', 'vorlagenbrett__liste');
|
||||
for (const [nr, v] of liste.entries()) {
|
||||
const karte = el('div', 'vorlagenbrett__karte');
|
||||
const schon = schonDa.get(v.schluessel);
|
||||
if (schon) karte.dataset.schon = 'ja';
|
||||
karte.append(el('h3', 'vorlagenbrett__titel', v.titel));
|
||||
karte.append(el('p', 'vorlagenbrett__text', v.text));
|
||||
const fuss = el('div', 'vorlagenbrett__fuss');
|
||||
fuss.append(el('span', 'vorlagenbrett__frist',
|
||||
v.tage === 1 ? 'Frist: morgen' : `Frist: in ${v.tage} Tagen`));
|
||||
if (schon) {
|
||||
/* Der Zustand steht dabei, nicht nur die Tatsache. "Schon
|
||||
uebernommen" allein liesse offen, ob sie noch offen ist oder
|
||||
laengst abgehakt -- und danach entscheidet man, ob man sie
|
||||
ein zweites Mal holt. */
|
||||
fuss.append(el('span', 'vorlagenbrett__schon',
|
||||
`schon übernommen · ${STATUS_NAME[schon.status] || schon.status}`));
|
||||
}
|
||||
if (fuer) {
|
||||
const k = el('button', 'knopf knopf--klein', schon ? 'Nochmal' : 'Übernehmen');
|
||||
k.type = 'button';
|
||||
if (schon) k.title = 'Diese Vorlage liegt schon auf dem Brett – noch einmal übernehmen?';
|
||||
k.addEventListener('click', () => uebernehmen(k, { art: 'aufgabe', nr }, fuer));
|
||||
fuss.append(k);
|
||||
}
|
||||
karte.append(fuss);
|
||||
box.append(karte);
|
||||
}
|
||||
/* Und wie viele der Stufe noch offen sind -- die Zahl, nach der man
|
||||
eigentlich sucht, wenn man den Block aufmacht. */
|
||||
if (liste.length) {
|
||||
const offen = liste.filter((v) => !schonDa.has(v.schluessel)).length;
|
||||
koerper.append(el('p', 'vorlagenbrett__stand', offen
|
||||
? `${offen} von ${liste.length} noch nicht übernommen.`
|
||||
: `Alle ${liste.length} dieser Stufe sind übernommen.`));
|
||||
}
|
||||
koerper.append(box);
|
||||
|
||||
if (fuer && liste.length > 1) {
|
||||
const alle = el('button', 'abmelden', `Alle ${liste.length} übernehmen`);
|
||||
alle.title = 'Legt alle Aufgaben dieser Stufe an – auch die, die schon auf dem Brett liegen.';
|
||||
alle.type = 'button';
|
||||
alle.style.marginTop = '12px';
|
||||
alle.addEventListener('click', () => uebernehmen(alle, { art: 'aufgaben_alle' }, fuer));
|
||||
koerper.append(alle);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* =====================================================================
|
||||
DAS ZWEITE VORLAGENBRETT (10.09.2026)
|
||||
|
||||
Derselbe Block, derselbe Kopf, dieselben Karten -- nur eine andere
|
||||
Einteilung: neun Etappen statt vier Bereichen mal vier Stufen. Die
|
||||
Bausteine sind bewusst dieselben (vorlagenbrett__karte,
|
||||
stufenleiter, ...): Ein zweites Aussehen fuer dieselbe Sache waere
|
||||
zwei Dinge zum Lernen statt einem -- und eine zweite Stelle, an der
|
||||
jemand eine neue CSS-Klasse in sieben Kopien pflegen muesste.
|
||||
|
||||
WAS DRINSTEHT, KOMMT VOM SERVER, samt Gruppennamen und Texten. In
|
||||
dieser Datei steht kein Wort darueber, fuer wen dieser Katalog ist.
|
||||
===================================================================== */
|
||||
function katalogBrett(ziel) {
|
||||
ziel.hidden = false;
|
||||
ziel.textContent = '';
|
||||
if (!kGruppe) kGruppe = (katalog.gruppen[0] || {}).schluessel || null;
|
||||
|
||||
const kopf = el('button', 'vorlagenbrett__kopf');
|
||||
kopf.type = 'button';
|
||||
kopf.setAttribute('aria-expanded', String(vOffen));
|
||||
kopf.setAttribute('aria-controls', 'vorlagenbrett-koerper');
|
||||
const kText = el('span', 'vorlagenbrett__kopftext');
|
||||
kText.append(el('span', 'feldschild', 'Aufgaben aus der Vorlage'));
|
||||
/* DER SATZ MUSS SAGEN, WONACH SORTIERT IST. Bis zum 16.09.2026 stand
|
||||
hier "Nach Etappen sortiert" -- und seit dem Umbau auf Kategorie
|
||||
mal Stufe war das schlicht falsch. Ein Satz, der etwas anderes
|
||||
beschreibt als das, was darunter steht, kostet mehr Zeit als er
|
||||
spart. */
|
||||
kText.append(el('span', 'vorlagenbrett__unter', vOffen
|
||||
? 'Nach Kategorie und Stufe sortiert. Übernommen wird als ganz normale '
|
||||
+ 'Aufgabe – mit Frist und Kategorie, veränderbar, auf dem Brett darunter.'
|
||||
: `${katalog.aufgaben.length} fertige Aufgaben in `
|
||||
+ `${katalog.gruppen.length} Kategorien – zum Übernehmen.`));
|
||||
kopf.append(kText);
|
||||
const pfeil = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
||||
pfeil.setAttribute('viewBox', '0 0 24 24');
|
||||
pfeil.setAttribute('class', 'klapp-pfeil');
|
||||
pfeil.setAttribute('aria-hidden', 'true');
|
||||
const pfad = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
||||
pfad.setAttribute('d', 'm6 9.5 6 6 6-6');
|
||||
pfeil.append(pfad);
|
||||
kopf.append(pfeil);
|
||||
kopf.addEventListener('click', () => {
|
||||
vOffen = !vOffen;
|
||||
try { localStorage.setItem(VORLAGEN_OFFEN, vOffen ? 'ja' : 'nein'); } catch { /* egal */ }
|
||||
vorlagenbrettZeigen();
|
||||
});
|
||||
ziel.append(kopf);
|
||||
ziel.dataset.auf = vOffen ? 'ja' : 'nein';
|
||||
/* Zugeklappt wird der Rest gar nicht erst gebaut -- sonst lägen bei
|
||||
jedem Neuzeichnen sechzig Karten da, die niemand sieht. */
|
||||
if (!vOffen) return;
|
||||
|
||||
const koerper = el('div', 'vorlagenbrett__koerper');
|
||||
koerper.id = 'vorlagenbrett-koerper';
|
||||
ziel.append(koerper);
|
||||
|
||||
/* =====================================================================
|
||||
WAS WARTET -- QUER ÜBER ALLE KATEGORIEN (23.09.2026)
|
||||
=====================================================================
|
||||
|
||||
DAS HIER SCHLIESST EIN LOCH, das ich selbst gebaut habe. Die
|
||||
Bewerbungen stehen an ihrer Karte, und das ist richtig: Man
|
||||
entscheidet über eine bestimmte Aufgabe, und ihr Text ist die
|
||||
halbe Auskunft.
|
||||
|
||||
Nur steht die Karte in EINER von vierzehn Kategorien. Bewirbt
|
||||
sich Frida unter „Wachstum" und DogFather öffnet wie immer
|
||||
„Chat-Moderation", sieht er nichts — die Bewerbung ist da, das
|
||||
Brett ist offen, und trotzdem findet er sie nie.
|
||||
|
||||
Die Benachrichtigung hilft, aber sie ist ein Moment: Wer sie
|
||||
wegwischt, hat keinen zweiten Weg mehr. Ein Brett, auf dem
|
||||
etwas wartet, muss das selbst sagen können.
|
||||
|
||||
ES DIENT BEIDEN SEITEN, und deshalb steht es nur einmal hier:
|
||||
Wer entscheidet, liest „wartet auf deine Antwort"; wer sich
|
||||
beworben hat, liest „du hast dich beworben". Der Server schickt
|
||||
ohnehin jedem nur, was ihn angeht (vorlagenBewerbungenFuer).
|
||||
|
||||
DER SPRUNG STELLT AUCH DIE STUFE ZURÜCK. Ohne das landet man in
|
||||
der richtigen Kategorie und sieht trotzdem nichts, weil der
|
||||
Stufenfilter die Karte gerade ausblendet — eine Reise ins
|
||||
Nichts ist schlimmer als kein Knopf. */
|
||||
if (bewerbungen.length) {
|
||||
const band = el('div', 'vorlagenbrett__warten');
|
||||
const fuerMich = darfEntscheidenV;
|
||||
band.append(el('p', 'vorlagenbrett__warten-schild',
|
||||
fuerMich
|
||||
? (bewerbungen.length === 1
|
||||
? 'Eine Bewerbung wartet auf deine Antwort:'
|
||||
: `${bewerbungen.length} Bewerbungen warten auf deine Antwort:`)
|
||||
: (bewerbungen.length === 1
|
||||
? 'Du hast dich beworben — hier steht sie:'
|
||||
: `Du hast dich ${bewerbungen.length}-mal beworben:`)));
|
||||
const reihe = el('div', 'vorlagenbrett__warten-reihe');
|
||||
for (const b2 of bewerbungen) {
|
||||
const v2 = katalog.aufgaben.find((x) => x.schluessel === b2.vorlage);
|
||||
const k2 = el('button', 'vorlagenbrett__warten-knopf');
|
||||
k2.type = 'button';
|
||||
/* WER UND WAS -- in dieser Reihenfolge. Bei drei Bitten
|
||||
untereinander will man zuerst wissen, von wem. Steht man
|
||||
selbst davor, ist der Name überflüssig: Man weiß, dass man
|
||||
es war. */
|
||||
if (fuerMich) k2.append(el('span', 'vorlagenbrett__warten-wer', b2.person_name));
|
||||
k2.append(el('span', 'vorlagenbrett__warten-was', v2?.titel || b2.vorlage));
|
||||
k2.addEventListener('click', () => {
|
||||
if (v2) { kGruppe = v2.gruppe; kStufe = null; }
|
||||
vorlagenbrettZeigen().then(() => {
|
||||
const ziel = document.querySelector(
|
||||
`.vorlagenbrett__karte[data-vorlage="${b2.vorlage}"]`);
|
||||
if (!ziel) return;
|
||||
ziel.scrollIntoView({ block: 'center', behavior: window.sanft?.() || 'auto' });
|
||||
/* KURZ HERVORHEBEN. Wer auf einem Brett mit zwölf Karten
|
||||
landet, sucht sonst die, wegen der er hergekommen ist. */
|
||||
ziel.dataset.hervor = 'ja';
|
||||
setTimeout(() => { delete ziel.dataset.hervor; }, 2400);
|
||||
});
|
||||
});
|
||||
reihe.append(k2);
|
||||
}
|
||||
band.append(reihe);
|
||||
koerper.append(band);
|
||||
}
|
||||
|
||||
|
||||
/* Die Etappen als Reihe -- mit der Zahl darin, damit man sieht, wo
|
||||
etwas liegt, bevor man klickt. */
|
||||
const reihe = el('div', 'stufenleiter');
|
||||
reihe.setAttribute('role', 'group');
|
||||
reihe.setAttribute('aria-label', 'Kategorie wählen');
|
||||
for (const g of katalog.gruppen) {
|
||||
const n = katalog.aufgaben.filter((v) => v.gruppe === g.schluessel).length;
|
||||
if (!n) continue;
|
||||
const k = el('button', 'stufenleiter__knopf');
|
||||
k.type = 'button';
|
||||
k.dataset.stufe = g.schluessel;
|
||||
k.setAttribute('aria-pressed', String(kGruppe === g.schluessel));
|
||||
k.append(el('span', 'stufenleiter__name', g.name));
|
||||
k.append(el('span', 'stufenleiter__zahl', String(n)));
|
||||
k.addEventListener('click', () => { kGruppe = g.schluessel; vorlagenbrettZeigen(); });
|
||||
reihe.append(k);
|
||||
}
|
||||
koerper.append(reihe);
|
||||
|
||||
/* DERSELBE BAUSTEIN WIE BEIM ANDEREN BRETT (16.09.2026).
|
||||
|
||||
Filipe: "ich will dass es vom aussehen auch genau gleich
|
||||
aussieht und so geil wie bei den anderen kategorien."
|
||||
|
||||
Hier stand `vorlagenbrett__stand` -- das ist die Zeile fuer
|
||||
ZAHLEN ("3 von 11 noch nicht uebernommen"), kleiner und mit
|
||||
Ziffern in Tabellenbreite. Die Erklaerung unter der Auswahl
|
||||
heisst drueben `stufenleiter__hilfe` und sieht anders aus.
|
||||
Zwei Bretter, die dasselbe tun und verschieden aussehen, wirken
|
||||
wie zwei verschiedene Sachen. */
|
||||
const gruppe = katalog.gruppen.find((g) => g.schluessel === kGruppe);
|
||||
if (gruppe?.text) koerper.append(el('p', 'stufenleiter__hilfe', gruppe.text));
|
||||
|
||||
/* ---- Die Stufe (16.09.2026) ---------------------------------------
|
||||
|
||||
Filipe: "wie bei den aufgaben wo sie für mich haben auch mit
|
||||
kategorien und vielen aufgaben."
|
||||
|
||||
Dieselbe Kategorie bedeutet für jemanden in der ersten Woche
|
||||
etwas anderes als für jemanden, der einarbeitet. Eine Aufgabe
|
||||
der Stufe "erfahren" an einen Neuen zu geben ist kein
|
||||
Kompliment, sondern ein Überfallen.
|
||||
|
||||
DIE STUFEN KOMMEN VOM SERVER, nicht aus einer Liste hier: Eine
|
||||
zweite Liste im Browser wäre die, die beim nächsten Zusatz
|
||||
veraltet -- und ausgeliefert wird sie an jeden. */
|
||||
const inGruppe = katalog.aufgaben.filter((v) => v.gruppe === kGruppe);
|
||||
if (Array.isArray(katalog.stufen) && katalog.stufen.length) {
|
||||
/* VOLLE GROESSE, nicht `--fein`: Drueben ist die zweite Reihe
|
||||
(die Stufen) genauso gross wie die erste. */
|
||||
const sr = el('div', 'stufenleiter');
|
||||
sr.setAttribute('role', 'group');
|
||||
sr.setAttribute('aria-label', 'Stufe wählen');
|
||||
const alle = el('button', 'stufenleiter__knopf');
|
||||
alle.type = 'button';
|
||||
alle.setAttribute('aria-pressed', String(kStufe === null));
|
||||
alle.append(el('span', 'stufenleiter__name', 'Alle'));
|
||||
alle.append(el('span', 'stufenleiter__zahl', String(inGruppe.length)));
|
||||
alle.addEventListener('click', () => { kStufe = null; vorlagenbrettZeigen(); });
|
||||
sr.append(alle);
|
||||
for (const st of katalog.stufen) {
|
||||
const n = inGruppe.filter((v) => v.stufe === st.schluessel).length;
|
||||
if (!n) continue;
|
||||
const k = el('button', 'stufenleiter__knopf');
|
||||
k.type = 'button';
|
||||
k.dataset.stufe = st.schluessel;
|
||||
k.setAttribute('aria-pressed', String(kStufe === st.schluessel));
|
||||
k.title = st.text || '';
|
||||
k.append(el('span', 'stufenleiter__name', st.name));
|
||||
k.append(el('span', 'stufenleiter__zahl', String(n)));
|
||||
k.addEventListener('click', () => { kStufe = st.schluessel; vorlagenbrettZeigen(); });
|
||||
sr.append(k);
|
||||
}
|
||||
koerper.append(sr);
|
||||
const gewaehlt = katalog.stufen.find((x) => x.schluessel === kStufe);
|
||||
if (gewaehlt?.text) koerper.append(el('p', 'stufenleiter__hilfe', gewaehlt.text));
|
||||
}
|
||||
|
||||
/* Was schon auf dem Brett liegt -- aus den Aufgaben, die ohnehin
|
||||
geladen sind. Verglichen wird die Kennung der Vorlage und nicht
|
||||
der Titel: Der darf geändert werden. */
|
||||
const schonDa = new Map();
|
||||
for (const a of alleAufgaben) if (a.vorlage) schonDa.set(a.vorlage, a);
|
||||
|
||||
/* ---- AN WEN? Mit der Last daneben (16.09.2026) -------------------
|
||||
|
||||
Bis heute kam die Person aus dem Formular GANZ OBEN auf der
|
||||
Seite: Man wählt sie dort, scrollt herunter und drückt hier
|
||||
„Übernehmen". Wer das nicht weiß, bekommt „Bitte zuerst eine
|
||||
Person wählen" und sucht.
|
||||
|
||||
UND DAS WICHTIGERE: Man sah beim Vergeben nicht, wer schon wie
|
||||
viel hat. Zu wenig Zeit ist in den Untersuchungen zu
|
||||
Moderatoren der meistgenannte Grund fürs Aufhören — und die
|
||||
Person, die Aufgaben verteilt, ist die einzige, die das
|
||||
verhindern kann. Dafür muss die Zahl dort stehen, wo entschieden
|
||||
wird, nicht auf einer Auswertung, die man hinterher aufruft.
|
||||
|
||||
KEINE SCHWELLE, KEINE WARNFARBE. Was „zu viel" ist, hängt vom
|
||||
Menschen ab; eine feste Grenze wäre geraten. Was NICHT geraten
|
||||
ist: dass etwas überfällig liegt. Nur das wird markiert. */
|
||||
/* WER IN FRAGE KOMMT, SAGT DER SERVER (17.09.2026).
|
||||
|
||||
Hier standen zwei Rollennamen. Diese Datei ist ohne Anmeldung
|
||||
aus dem offenen Netz lesbar -- damit war der verborgene Zugang
|
||||
darin nachzulesen. Gefunden von der Wortleck-Pruefung, nicht vom
|
||||
Auge. */
|
||||
const zielbar = personenListe.filter((p) => p.fuer_katalog);
|
||||
if (zielbar.length && $('feld-verant') && !$('feld-verant').hidden) {
|
||||
/* DIE DRITTE REIHE IST ETWAS ANDERES als die zwei darueber: Sie
|
||||
waehlt keinen Ausschnitt des Katalogs, sondern einen MENSCHEN.
|
||||
Deshalb bleibt sie etwas kleiner -- gleich aussehende Reihen,
|
||||
die Verschiedenes tun, sind schlechter als zwei, die man
|
||||
unterscheiden kann. */
|
||||
koerper.append(el('p', 'feldschild', 'An wen'));
|
||||
const wer = el('div', 'stufenleiter stufenleiter--wer');
|
||||
wer.setAttribute('role', 'group');
|
||||
wer.setAttribute('aria-label', 'Person wählen');
|
||||
for (const p of zielbar) {
|
||||
const seine = alleAufgaben.filter((a) => a.verantwortlich_id === p.id);
|
||||
const offenN = seine.filter(istOffen).length;
|
||||
const spaet = seine.filter(istFaellig).length;
|
||||
const k = el('button', 'stufenleiter__knopf');
|
||||
k.type = 'button';
|
||||
if (spaet) k.dataset.spaet = 'ja';
|
||||
k.setAttribute('aria-pressed', String(String(kZiel) === String(p.id)));
|
||||
k.title = spaet
|
||||
? `${p.name}: ${offenN} offen, davon ${spaet} überfällig`
|
||||
: `${p.name}: ${offenN} offen`;
|
||||
k.append(el('span', 'stufenleiter__name', p.name));
|
||||
k.append(el('span', 'stufenleiter__zahl', String(offenN)));
|
||||
if (spaet) k.append(el('span', 'stufenleiter__spaet', `${spaet} spät`));
|
||||
k.addEventListener('click', () => {
|
||||
kZiel = String(kZiel) === String(p.id) ? null : String(p.id);
|
||||
vorlagenbrettZeigen();
|
||||
});
|
||||
wer.append(k);
|
||||
}
|
||||
koerper.append(wer);
|
||||
const gewaehlt = zielbar.find((p) => String(p.id) === String(kZiel));
|
||||
koerper.append(el('p', 'stufenleiter__hilfe', gewaehlt
|
||||
? `Übernommene Aufgaben gehen an ${gewaehlt.name}.`
|
||||
: 'Niemand gewählt – es gilt die Person aus dem Formular oben.'));
|
||||
}
|
||||
|
||||
const liste = katalog.aufgaben
|
||||
.map((v, nr) => ({ ...v, nr }))
|
||||
.filter((v) => v.gruppe === kGruppe)
|
||||
.filter((v) => !kStufe || v.stufe === kStufe);
|
||||
const box = el('div', 'vorlagenbrett__liste');
|
||||
for (const v of liste) {
|
||||
const karte = el('div', 'vorlagenbrett__karte');
|
||||
/* DIE KENNUNG AN DER KARTE, damit das Band oben sie
|
||||
wiederfinden kann. Über den Titel zu suchen wäre die
|
||||
naheliegende Abkürzung — und sie fällt um, sobald zwei
|
||||
Vorlagen ähnlich heißen. */
|
||||
karte.dataset.vorlage = v.schluessel;
|
||||
const schon = schonDa.get(v.schluessel);
|
||||
if (schon) karte.dataset.schon = 'ja';
|
||||
karte.append(el('h3', 'vorlagenbrett__titel', v.titel));
|
||||
karte.append(el('p', 'vorlagenbrett__text', v.text));
|
||||
const fuss = el('div', 'vorlagenbrett__fuss');
|
||||
fuss.append(el('span', 'vorlagenbrett__frist',
|
||||
v.tage === 1 ? 'Frist: morgen' : `Frist: in ${v.tage} Tagen`));
|
||||
/* Die empfohlene Rolle steht im Dokument neben jeder Aufgabe und
|
||||
ist die halbe Auskunft: "Technik-Check" heisst etwas anderes,
|
||||
je nachdem, wer ihn macht. */
|
||||
if (v.rolle) fuss.append(el('span', 'vorlagenbrett__frist', `für: ${v.rolle}`));
|
||||
if (schon) {
|
||||
fuss.append(el('span', 'vorlagenbrett__schon',
|
||||
`schon übernommen · ${STATUS_NAME[schon.status] || schon.status}`));
|
||||
}
|
||||
|
||||
/* ==== ÜBERNEHMEN ODER BEWERBEN? (23.09.2026) ==================
|
||||
|
||||
Filipe: „die modis sollen bei all diesen voschlägen auch nur
|
||||
bewerben können."
|
||||
|
||||
DER SERVER SAGT, WAS ICH DARF (`darf_verteilen`). Hier steht
|
||||
kein Rollenname — diese Datei bekommt jeder, der die Seite
|
||||
öffnet. Und die Schranke selbst liegt ohnehin in der Route:
|
||||
Ein ausgeblendeter Knopf ist eine Bitte, abgelehnt wird am
|
||||
Server. */
|
||||
const meine = bewerbungen.find((b2) => b2.selbst && b2.vorlage === v.schluessel);
|
||||
if (darfVerteilenV) {
|
||||
const k = el('button', 'knopf knopf--klein', schon ? 'Nochmal' : 'Übernehmen');
|
||||
k.type = 'button';
|
||||
if (schon) k.title = 'Diese Vorlage liegt schon auf dem Brett – noch einmal übernehmen?';
|
||||
k.addEventListener('click', () => uebernehmen(k,
|
||||
{ art: 'katalog', nr: v.nr, gruppe: kGruppe, person_id: katalogZiel() }));
|
||||
fuss.append(k);
|
||||
} else if (meine) {
|
||||
/* SCHON BEWORBEN. Der Satz sagt, WER antwortet -- sonst wartet
|
||||
man auf niemanden und fragt am nächsten Tag im Chat. */
|
||||
fuss.append(el('span', 'vorlagenbrett__warte',
|
||||
'beworben – DogFather oder die rechte Hand antworten'));
|
||||
const zurueck = el('button', 'knopf knopf--klein', 'Zurückziehen');
|
||||
zurueck.type = 'button';
|
||||
zurueck.addEventListener('click', () => bewerbungZurueck(zurueck, meine));
|
||||
fuss.append(zurueck);
|
||||
} else if (!schon) {
|
||||
const k = el('button', 'knopf knopf--klein', 'Bewerben');
|
||||
k.type = 'button';
|
||||
k.title = 'DogFather oder die rechte Hand entscheiden, ob du sie bekommst.';
|
||||
k.addEventListener('click', () => bewerben(k, v));
|
||||
fuss.append(k);
|
||||
}
|
||||
/* WER SIE SCHON HAT, BEKOMMT KEINEN BEWERBEN-KNOPF. Der Server
|
||||
lehnt das ohnehin ab (liegt_schon_bei_dir) -- ein Knopf, der
|
||||
eine Absage holt, ist schlimmer als keiner. Der Vermerk „schon
|
||||
übernommen" steht weiter daneben; er ist die Antwort auf die
|
||||
Frage, warum hier nichts zu tun ist. */
|
||||
karte.append(fuss);
|
||||
|
||||
/* ==== DIE BEWERBUNGEN ANDERER -- nur für die, die entscheiden ==
|
||||
|
||||
Sie stehen AN DER KARTE und nicht in einer eigenen Liste
|
||||
irgendwo: Entschieden wird über eine bestimmte Aufgabe, und
|
||||
die Frage „will ich, dass Frida das macht?" beantwortet man
|
||||
besser mit dem Text der Aufgabe davor.
|
||||
|
||||
JE MENSCH EINE ZEILE, nicht ein Knopf für alle. Man entscheidet
|
||||
über einen Menschen, nicht über einen Listeneintrag — dieselbe
|
||||
Überlegung wie am Aufgabenbrett. */
|
||||
if (darfEntscheidenV) {
|
||||
const offeneB = bewerbungen.filter((b2) => b2.vorlage === v.schluessel);
|
||||
if (offeneB.length) {
|
||||
karte.dataset.beworben = 'ja';
|
||||
const block = el('div', 'vorlagenbrett__bewerbungen');
|
||||
block.append(el('p', 'vorlagenbrett__bschild', offeneB.length === 1
|
||||
? 'Eine Bewerbung wartet auf deine Antwort:'
|
||||
: `${offeneB.length} Bewerbungen warten auf deine Antwort:`));
|
||||
offeneB.forEach((b2, i) => {
|
||||
const reihe = el('div', 'vorlagenbrett__bewerbung');
|
||||
reihe.append(el('span', 'vorlagenbrett__bname', b2.person_name));
|
||||
/* DER ERSTE WIRD BENANNT, nicht nur oben hingestellt. Eine
|
||||
Reihenfolge allein hält man für Zufall oder Alphabet.
|
||||
Nur bei mehr als einer -- sonst ist es Füllwerk. */
|
||||
if (i === 0 && offeneB.length > 1) {
|
||||
reihe.append(el('span', 'vorlagenbrett__bzuerst', 'zuerst da'));
|
||||
}
|
||||
if (b2.text) reihe.append(el('span', 'vorlagenbrett__bwort', `„${b2.text}"`));
|
||||
for (const [weg, schild, klasse] of [
|
||||
['annehmen', 'Annehmen', 'knopf--klar'],
|
||||
['ablehnen', 'Ablehnen', ''],
|
||||
]) {
|
||||
const b3 = el('button', `knopf knopf--klein ${klasse}`, schild);
|
||||
b3.type = 'button';
|
||||
b3.addEventListener('click', () => entscheiden(b3, weg, schild, b2, v));
|
||||
reihe.append(b3);
|
||||
}
|
||||
block.append(reihe);
|
||||
});
|
||||
karte.append(block);
|
||||
}
|
||||
}
|
||||
|
||||
box.append(karte);
|
||||
}
|
||||
|
||||
if (liste.length) {
|
||||
const offen = liste.filter((v) => !schonDa.has(v.schluessel)).length;
|
||||
koerper.append(el('p', 'vorlagenbrett__stand', offen
|
||||
? `${offen} von ${liste.length} noch nicht übernommen.`
|
||||
: `Alle ${liste.length} davon sind übernommen.`));
|
||||
}
|
||||
koerper.append(box);
|
||||
|
||||
/* „ALLE ÜBERNEHMEN" GIBT ES NUR FÜR DIE, DIE VERTEILEN (23.09.2026).
|
||||
|
||||
Ein „Alle bewerben" waere der schnellste Weg, zwölf Bitten auf
|
||||
einmal loszuschicken -- und damit zwölf Entscheidungen fuer
|
||||
jemand anderen. Wer sich bewirbt, waehlt aus; das ist der
|
||||
Unterschied zwischen einer Bewerbung und einem Griff ins Regal. */
|
||||
if (liste.length > 1 && darfVerteilenV) {
|
||||
const alle = el('button', 'abmelden', `Alle ${liste.length} übernehmen`);
|
||||
alle.title = 'Legt alle Aufgaben an, die gerade in der Liste stehen – '
|
||||
+ 'auch die, die schon auf dem Brett liegen.';
|
||||
alle.type = 'button';
|
||||
alle.style.marginTop = '12px';
|
||||
/* DIE STUFE WANDERT MIT (16.09.2026). Ohne sie legte dieser Knopf
|
||||
alle Aufgaben der Kategorie an -- auch die, die gerade
|
||||
ausgeblendet sind. Der Knopf sagt "Alle 4 übernehmen" und
|
||||
legte elf an; das merkt man erst auf dem Brett. */
|
||||
alle.addEventListener('click', () => uebernehmen(alle,
|
||||
{ art: 'katalog_alle', gruppe: kGruppe, stufe: kStufe || '',
|
||||
person_id: katalogZiel() }));
|
||||
koerper.append(alle);
|
||||
}
|
||||
}
|
||||
|
||||
/* FUER WEN wird uebernommen? Wer nur eigene Aufgaben hat, meint sich
|
||||
selbst -- der Server setzt das dann ein und braucht hier nichts.
|
||||
Wer fuer andere eintragen darf, muss die Person oben ausgewaehlt
|
||||
haben; sonst sagt der Server es. */
|
||||
function katalogZiel() {
|
||||
/* Die Auswahl im Vorlagenbrett geht vor -- sie steht dort, wo man
|
||||
gerade hinsieht. Das Formular oben bleibt als Rueckfall, damit
|
||||
der bisherige Weg weiter funktioniert. */
|
||||
return kZiel || $('f-verant')?.value || $('f-creator')?.value || null;
|
||||
}
|
||||
|
||||
/* Ein Weg fuer beide Knoepfe -- einzeln und alle. Zwei fast gleiche
|
||||
Funktionen waeren der sichere Weg dazu, dass die eine irgendwann
|
||||
anders reagiert als die andere. */
|
||||
/* =====================================================================
|
||||
BEWERBEN, ZURÜCKZIEHEN, ENTSCHEIDEN (23.09.2026)
|
||||
AUFGABEN AUS DER VORLAGE -- steht jetzt in einer eigenen Datei
|
||||
=====================================================================
|
||||
|
||||
DREI HANDGRIFFE, EIN MUSTER: fragen, schicken, frisch holen,
|
||||
neu zeichnen. Das „frisch holen" ist der Teil, den man vergisst --
|
||||
ohne ihn bliebe eine beantwortete Bewerbung stehen, bis jemand die
|
||||
Seite neu lädt, und zwei Leute entschieden über dieselbe Bitte.
|
||||
Der Katalog selbst liegt seit dem 23.09.2026 in
|
||||
assets/js/vorlagenbrett.js, weil ihn ZWEI Seiten brauchen: hier
|
||||
der Creator-Katalog (vier Bereiche, vier Stufen) und auf "Eure
|
||||
Aufgaben" der Team-Katalog.
|
||||
|
||||
GEFRAGT WIRD MIT `frageNach`, dem Kasten des Hauses. Er bringt das
|
||||
Textfeld für die Notiz gleich mit -- ein eigener wäre ein zweiter
|
||||
Dialog mit eigener Tastaturbedienung. */
|
||||
Filipe: "das soll auch bitte nicht in der kategorie aufgaben
|
||||
sondern eure aufgaben sein bitte."
|
||||
|
||||
/** Nach einer Entscheidung: Katalog UND Brett neu -- in dieser
|
||||
* Reihenfolge. Die Aufgabe, die gerade entstanden ist, soll man
|
||||
* dort sehen, wo sie ab jetzt lebt. */
|
||||
async function nachBewerbung() {
|
||||
await vorlagenHolen();
|
||||
await laden();
|
||||
await vorlagenbrettZeigen();
|
||||
}
|
||||
WAS HIER STEHEN BLEIBT, ist die Verbindung zu DIESER Seite: woher
|
||||
die Aufgaben kommen, wer gerade gewaehlt ist, wie ein Fehler
|
||||
gemeldet wird. Das ist an jeder Seite anders, und genau deshalb
|
||||
nimmt die Katalogdatei es entgegen, statt es zu erraten.
|
||||
|
||||
async function bewerben(knopf, v) {
|
||||
const antwort = await window.frageNach({
|
||||
titel: 'Für diese Aufgabe bewerben?',
|
||||
was: `„${v.titel}" – DogFather oder die rechte Hand entscheiden, ob du sie bekommst.`,
|
||||
bleibt: 'Du kannst deine Bewerbung jederzeit wieder zurückziehen.',
|
||||
grund: 'Willst du etwas dazuschreiben? (freiwillig)',
|
||||
grundPflicht: false,
|
||||
platzhalter: 'z. B. ich habe Freitag Zeit dafür',
|
||||
ja: 'Bewerben', nein: 'Doch nicht',
|
||||
ZWEIG 'creator': Der Team-Katalog wird hier NICHT gezeigt, auch
|
||||
wenn der Server ihn mitschickt. Er hat seine Seite. */
|
||||
function vorlagenbrettAnschliessen() {
|
||||
if (!window.Vorlagenbrett) return;
|
||||
window.Vorlagenbrett.einrichten({
|
||||
zweig: 'creator',
|
||||
hole,
|
||||
melde,
|
||||
statusName: STATUS_NAME,
|
||||
ich: () => ich,
|
||||
aufgaben: () => alleAufgaben,
|
||||
/* FUER WEN wird uebernommen? Ein Creator meint sich selbst; ein
|
||||
Betreuer den, den er oben in der Reihe gewaehlt hat. Diese
|
||||
Entscheidung steht hier und nicht in der Katalogdatei: Sie
|
||||
haengt an "nurCreator", und das lebt auf dieser Seite. */
|
||||
ziel: () => (ich?.rolle === 'creator' ? ich.id : nurCreator) || null,
|
||||
zielName: () => {
|
||||
const id = ich?.rolle === 'creator' ? ich.id : nurCreator;
|
||||
if (!id) return null;
|
||||
if (ich?.rolle === 'creator') return null;
|
||||
return personenListe.find((p) => String(p.id) === String(id))?.name || null;
|
||||
},
|
||||
nachAenderung: () => laden(),
|
||||
});
|
||||
if (!antwort) return;
|
||||
knopf.disabled = true;
|
||||
try {
|
||||
const a = await hole('/workspace/api/vorlagen/bewerben', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ vorlage: v.schluessel, text: (antwort && antwort.grund) || '' }),
|
||||
});
|
||||
if (!a.ok) {
|
||||
const f = await a.json().catch(() => ({}));
|
||||
melde(sagWas(f.fehler, 'Das hat nicht geklappt.'));
|
||||
knopf.disabled = false;
|
||||
return;
|
||||
}
|
||||
melde('');
|
||||
await nachBewerbung();
|
||||
} catch {
|
||||
melde('Keine Verbindung – die Bewerbung ist nicht angekommen.');
|
||||
knopf.disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
async function bewerbungZurueck(knopf, b) {
|
||||
knopf.disabled = true;
|
||||
try {
|
||||
const a = await hole('/workspace/api/vorlagen/bewerbung-zurueck', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ id: b.id }),
|
||||
});
|
||||
if (!a.ok) {
|
||||
const f = await a.json().catch(() => ({}));
|
||||
melde(sagWas(f.fehler, 'Das hat nicht geklappt.'));
|
||||
knopf.disabled = false;
|
||||
return;
|
||||
}
|
||||
melde('');
|
||||
await nachBewerbung();
|
||||
} catch {
|
||||
melde('Keine Verbindung.');
|
||||
knopf.disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
async function entscheiden(knopf, weg, schild, b, v) {
|
||||
const wem = b.person_name;
|
||||
const antwort = await window.frageNach({
|
||||
titel: `${schild} — ${wem}`,
|
||||
was: weg === 'annehmen'
|
||||
? `${wem} bekommt „${v.titel}" als Aufgabe auf das Brett.`
|
||||
: `${wem} bekommt sie nicht. Die Vorlage bleibt für alle offen.`,
|
||||
/* DER TEXT IST DER GRUND, WARUM FILIPE DAS SO WOLLTE: „mit einem
|
||||
text als notiz". Eine Absage ohne Satz ist die, nach der
|
||||
niemand weiß, woran es lag. */
|
||||
bleibt: `Dein Text bleibt an der Entscheidung stehen.`,
|
||||
grund: 'Willst du etwas dazuschreiben? (freiwillig)',
|
||||
grundPflicht: false,
|
||||
platzhalter: weg === 'annehmen'
|
||||
? 'z. B. danke dir, mach das gern'
|
||||
: 'z. B. das macht diesmal jemand anders',
|
||||
ja: schild, nein: 'Abbrechen',
|
||||
});
|
||||
if (!antwort) return;
|
||||
knopf.disabled = true;
|
||||
try {
|
||||
const a = await hole(`/workspace/api/vorlagen/bewerbung/${weg}`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ id: b.id, kommentar: (antwort && antwort.grund) || '' }),
|
||||
});
|
||||
if (!a.ok) {
|
||||
const f = await a.json().catch(() => ({}));
|
||||
melde(sagWas(f.fehler, 'Das hat nicht geklappt.'));
|
||||
knopf.disabled = false;
|
||||
return;
|
||||
}
|
||||
melde('');
|
||||
await nachBewerbung();
|
||||
} catch {
|
||||
melde('Keine Verbindung – die Entscheidung ist nicht angekommen.');
|
||||
knopf.disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
async function uebernehmen(knopf, was, fuer) {
|
||||
knopf.disabled = true;
|
||||
const vorher = knopf.textContent;
|
||||
knopf.textContent = 'Wird übernommen …';
|
||||
try {
|
||||
const a = await hole('/workspace/api/vorlagen/uebernehmen', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ ...was, bereich: vBereich, stufe: vStufe, creator_id: fuer }),
|
||||
});
|
||||
if (!a.ok) {
|
||||
const f = await a.json().catch(() => ({}));
|
||||
melde(sagWas(f.fehler, 'Das hat nicht geklappt.'));
|
||||
knopf.disabled = false; knopf.textContent = vorher;
|
||||
return;
|
||||
}
|
||||
melde('');
|
||||
/* Erst das Brett neu laden, dann den Block -- so sieht man die
|
||||
neue Aufgabe sofort dort, wo sie ab jetzt lebt. */
|
||||
await laden();
|
||||
await vorlagenbrettZeigen();
|
||||
} catch {
|
||||
melde('Das hat nicht geklappt.');
|
||||
knopf.disabled = false; knopf.textContent = vorher;
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
||||
|
||||
@@ -98,6 +98,15 @@
|
||||
return s;
|
||||
};
|
||||
let offen = null; // die gerade geöffnete Person
|
||||
/* ALLE Aufgaben des Hauses -- fuer den Vorlagenkatalog weiter unten.
|
||||
Er markiert daran, was schon uebernommen wurde.
|
||||
|
||||
Sie stehen hier und werden nicht ein zweites Mal geholt:
|
||||
"aufgabenZeigen" ruft dieselbe Liste ohnehin ab, um die einer
|
||||
Person herauszufiltern. Ein zweiter Abruf waere Arbeit fuer den
|
||||
Server und ein zweiter Stand im Browser -- und zwei Staende
|
||||
derselben Sache laufen auseinander. */
|
||||
let alleAufgabenV = [];
|
||||
|
||||
/* DIE ZAHL AUF DER PERSONENKACHEL LEBT WOANDERS ALS DIE IN DER KARTE
|
||||
(15.09.2026).
|
||||
@@ -471,6 +480,18 @@
|
||||
: name ? `Sie landet direkt bei ${name} — mit einer Meldung.`
|
||||
: 'Aufgabe anlegen und an eine oder mehrere Personen geben.';
|
||||
}
|
||||
/* UND DER KATALOG DARUNTER ZIEHT MIT (23.09.2026).
|
||||
|
||||
Er zeigt den Namen auf jedem Uebernehmen-Knopf und markiert, was
|
||||
DIESE Person schon hat. Beides haengt an "fuerPerson" -- und das
|
||||
aendert sich genau hier. Ohne diese Zeile stuende auf dem Knopf
|
||||
noch der Name von vorhin, waehrend das Formular darueber laengst
|
||||
jemand anderen meint: zwei Antworten auf dieselbe Frage, auf
|
||||
einem Bildschirm.
|
||||
|
||||
Zugeklappt kostet das nichts -- dann zeichnet der Katalog
|
||||
ohnehin nur seine Kopfzeile. */
|
||||
window.Vorlagenbrett?.zeigen();
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
@@ -735,15 +756,38 @@
|
||||
Frage -- und die Sichtbarkeitsregel muesste dort noch einmal
|
||||
stehen.
|
||||
--------------------------------------------------------------------- */
|
||||
/** Die Aufgaben holen und festhalten -- EIN Weg fuer beide, die sie
|
||||
* brauchen: die Liste unter dem Katalog und der Katalog selbst.
|
||||
*
|
||||
* WARUM DAS EINE EIGENE FUNKTION IST (23.09.2026): Der Abruf stand
|
||||
* in "aufgabenZeigen", und das kehrt ohne gewaehlte Person sofort
|
||||
* um. Ein Modi waehlt aber nie jemanden -- er sieht die Kacheln gar
|
||||
* nicht. Also blieb die Liste bei ihm leer, und der Katalog konnte
|
||||
* nicht mehr markieren, was er schon uebernommen hat. Genau diese
|
||||
* Markierung ist die Sperre dagegen, dieselbe Vorlage ein zweites
|
||||
* Mal zu holen; auf der alten Seite kam sie vom Brett, das immer
|
||||
* geladen wurde.
|
||||
*
|
||||
* Gefunden von pruef-modi-katalog ("0 Karten tragen den dritten
|
||||
* Fusseintrag") -- eine Zeile, die seit dem 16.09. dasteht und
|
||||
* eigentlich die Optik einer engen Karte prueft. */
|
||||
async function aufgabenHolen() {
|
||||
try {
|
||||
const a = await fetch('/workspace/api/aufgaben', { credentials: 'same-origin' });
|
||||
if (!a.ok) return null;
|
||||
const roh = await a.json();
|
||||
alleAufgabenV = Array.isArray(roh) ? roh : (roh?.aufgaben || []);
|
||||
return alleAufgabenV;
|
||||
} catch { return null; }
|
||||
}
|
||||
|
||||
async function aufgabenZeigen(personId, name) {
|
||||
const block = $('e-aufgaben-block');
|
||||
if (!block) return;
|
||||
if (!personId) { block.hidden = true; return; }
|
||||
try {
|
||||
const a = await fetch('/workspace/api/aufgaben', { credentials: 'same-origin' });
|
||||
if (!a.ok) { block.hidden = true; return; }
|
||||
const roh = await a.json();
|
||||
const alle = Array.isArray(roh) ? roh : (roh?.aufgaben || []);
|
||||
const alle = await aufgabenHolen();
|
||||
if (!alle) { block.hidden = true; return; }
|
||||
const nr = Number(personId);
|
||||
const meine = alle.filter((x) => Number(x.verantwortlich_id) === nr
|
||||
|| (x.zuteilung || []).some((z) => Number(z.person_id) === nr
|
||||
@@ -805,6 +849,70 @@
|
||||
erledigt: 'Erledigt', abgebrochen: 'Abgebrochen',
|
||||
};
|
||||
|
||||
/* =====================================================================
|
||||
DER VORLAGENKATALOG (umgezogen am 23.09.2026)
|
||||
=====================================================================
|
||||
|
||||
Filipe: "das soll auch bitte nicht in der kategorie aufgaben
|
||||
sondern eure aufgaben sein bitte. setzt das perfekt da rein und
|
||||
pass es uebeertrieben krass rein."
|
||||
|
||||
DER KATALOG SELBST STEHT IN assets/js/vorlagenbrett.js -- dieselbe
|
||||
Datei bedient auch "Aufgaben", dort aber mit dem anderen der beiden
|
||||
Kataloge. Was hier steht, ist nur die Verbindung zu DIESER Seite.
|
||||
|
||||
UND DAS IST DER GANZE GEWINN DES UMZUGS: Drueben musste der Block
|
||||
eine eigene Personenwahl mitbringen, weil es dort keine gab -- eine
|
||||
dritte Knopfreihe unter zwei anderen, und die Moeglichkeit, oben
|
||||
den einen und unten den anderen zu waehlen. Hier ist die Person
|
||||
laengst gewaehlt, mitsamt ihren Zahlen. Eine Auswahl statt zwei.
|
||||
|
||||
"fuerPerson" IST DIE EINE WAHRHEIT. Sie wird an genau zwei Stellen
|
||||
gesetzt: beim Anklicken einer Kachel (ueber verteilBandZeigen) und
|
||||
beim Anhaken im Formular (auswahlLesen). Der Katalog fragt
|
||||
dieselbe Variable ab wie der Verteil-Knopf darueber -- damit KANN
|
||||
nicht auseinanderlaufen, was beide behaupten. */
|
||||
function katalogAnschliessen() {
|
||||
if (!window.Vorlagenbrett) return;
|
||||
window.Vorlagenbrett.einrichten({
|
||||
zweig: 'team',
|
||||
hole: (pfad, optionen) => window.holen(pfad, optionen),
|
||||
/* "melde" nimmt hier zwei Angaben (Text, gut/schlecht). Der
|
||||
Katalog kennt nur die erste -- was er meldet, ist immer ein
|
||||
Fehler. Der zweite Wert bleibt also offen und faellt damit auf
|
||||
"nicht gut" zurueck, und das ist richtig so. */
|
||||
melde: (text) => melde(text),
|
||||
statusName: STATUS_WORT,
|
||||
ich: () => window.__ich || null,
|
||||
aufgaben: () => alleAufgabenV,
|
||||
ziel: () => fuerPerson || null,
|
||||
/* DER NAME WIRD ABGELEITET, NICHT GEHALTEN. Es gibt "fuerName"
|
||||
daneben -- aber das wird beim Anhaken im Formular nicht
|
||||
nachgezogen, und ein Name, der zur falschen Nummer gehoert,
|
||||
ist schlimmer als gar keiner: Der Knopf verspraeche dann
|
||||
etwas, das nicht passiert. Aus der Nummer laesst sich der
|
||||
Name jederzeit richtig herleiten. */
|
||||
zielName: () => {
|
||||
if (!fuerPerson) return null;
|
||||
const p = (leute || []).find((x) => String(x.id) === String(fuerPerson));
|
||||
return p?.name || fuerName || null;
|
||||
},
|
||||
/* Nach dem Uebernehmen: die Aufgaben der Person neu holen. Auf
|
||||
der alten Seite hiess das "laden()" und zeichnete das ganze
|
||||
Brett; hier ist es die Liste unter dem Katalog. */
|
||||
nachAenderung: async () => {
|
||||
if (fuerPerson == null) return;
|
||||
await aufgabenZeigen(fuerPerson, katalogName(fuerPerson));
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
/** Der Name zu einer Nummer -- aus "leute", der Liste, die die Seite
|
||||
* ohnehin vom Server hat. */
|
||||
function katalogName(id) {
|
||||
return (leute || []).find((x) => String(x.id) === String(id))?.name || null;
|
||||
}
|
||||
|
||||
async function karte(id, springen = false) {
|
||||
offen = id;
|
||||
/* WER IST GERADE OFFEN? Die Antwort gehoert auf die Kacheln, nicht
|
||||
@@ -822,7 +930,13 @@
|
||||
hier in dieser seite auch sehen." Sie kommen beim Auswaehlen,
|
||||
nicht auf Knopfdruck: Wer jemanden durchgeht, will wissen,
|
||||
was bei ihm liegt -- das ist keine Zusatzfrage. */
|
||||
aufgabenZeigen(id, wieHeisst);
|
||||
/* ERST DIE AUFGABEN, DANN DER KATALOG -- und zwar NACHEINANDER.
|
||||
Der Katalog markiert "schon uebernommen" aus der Aufgabenliste,
|
||||
und die holt "aufgabenZeigen" ueber das Netz. Beide nebeneinander
|
||||
loszuschicken hiesse: Wer schneller ist, entscheidet, ob die
|
||||
Markierung stimmt -- meistens zeichnete der Katalog zuerst und
|
||||
zeigte die Aufgaben der VORHERIGEN Person. */
|
||||
aufgabenZeigen(id, wieHeisst).then(() => window.Vorlagenbrett?.zeigen());
|
||||
}
|
||||
const ziel = $('karte');
|
||||
const vorherY = window.scrollY;
|
||||
@@ -1381,6 +1495,25 @@
|
||||
+ 'Keine Noten, keine Punktzahl.';
|
||||
}
|
||||
|
||||
/* DER VORLAGENKATALOG STEHT FUER BEIDE DA -- Leitung und Modi.
|
||||
|
||||
Er gehoert ausdruecklich NICHT in den Leitungszweig darueber.
|
||||
Filipe: "die modis sollen bei all diesen voschlaegen auch nur
|
||||
bewerben koennen." Genau dafuer muessen sie ihn sehen. Was
|
||||
jemand damit tun darf -- uebernehmen oder sich bewerben --,
|
||||
entscheidet der Server und nicht diese Zeile.
|
||||
|
||||
Vor der Personenwahl: Der Katalog steht trotzdem schon da und
|
||||
sagt, dass noch niemand gewaehlt ist. Ein Block, der erst nach
|
||||
einem Klick erscheint, wird uebersehen. */
|
||||
katalogAnschliessen();
|
||||
/* ERST DIE AUFGABEN, DANN DER KATALOG. Er markiert daran, was
|
||||
schon uebernommen wurde -- ohne diesen Abruf stuende die
|
||||
Markierung beim ersten Zeichnen nicht da, und fuer einen Modi
|
||||
nie, weil bei ihm nie eine Person gewaehlt wird. */
|
||||
await aufgabenHolen();
|
||||
await window.Vorlagenbrett?.zeigen();
|
||||
|
||||
await meineKarte();
|
||||
/* Die sechs Fragen stehen seit dem 15.09.2026 auf einer eigenen
|
||||
Seite. Hier bleibt nur der Verweis -- er wird fuer alle
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+23
-18
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -391,17 +391,22 @@
|
||||
<!-- 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=202609231624"></script>
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/textform.js?v=202609231712"></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/zuteilung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/aufgaben.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/zuteilung.js?v=202609231712" defer></script>
|
||||
<!-- Der Vorlagenkatalog stand bis zum 23.09.2026 mitten in
|
||||
aufgaben.js. Er bedient jetzt zwei Seiten und hat deshalb eine
|
||||
eigene Datei; hier zeigt er den Creator-Katalog.
|
||||
Vor aufgaben.js, weil die Seite ihn beim Start einrichtet. -->
|
||||
<script src="assets/js/vorlagenbrett.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/aufgaben.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/automation.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/automation.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -168,15 +168,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/automation.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/automation.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -197,15 +197,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/befinden.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/befinden.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+22
-22
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -304,19 +304,19 @@
|
||||
<!-- 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=202609231624"></script>
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/textform.js?v=202609231712"></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/ampel.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/schulung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereich.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/ampel.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/schulung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereich.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -108,14 +108,14 @@
|
||||
</main>
|
||||
|
||||
<!-- Der Fuß gehört zu jeder Seite - siehe pruef-css-klassen. -->
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bewerben.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bewerben.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -80,15 +80,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bewerbungen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bewerbungen.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/calls.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/calls.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -89,15 +89,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/ki.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/calls.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/calls.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+19
-19
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/chat.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/chat.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -592,25 +592,25 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<script src="assets/js/bereiche.js?v=202609231624"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712"></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=202609231624"></script>
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624"></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624"></script>
|
||||
<script src="assets/js/textform.js?v=202609231712"></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712"></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712"></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=202609231624"></script>
|
||||
<script src="assets/js/chat.js?v=202609231624"></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/anruf.js?v=202609231712"></script>
|
||||
<script src="assets/js/chat.js?v=202609231712"></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/content.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/content.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -179,15 +179,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/content.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/content.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="gate gate--crew">
|
||||
@@ -459,7 +459,7 @@
|
||||
|
||||
|
||||
|
||||
<script src="assets/js/gate.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/gate.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -23,25 +23,25 @@
|
||||
},
|
||||
"icons": [
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-192.png?v=202609231624",
|
||||
"src": "/assets/img/app-symbole/crew-192.png?v=202609231712",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-512.png?v=202609231624",
|
||||
"src": "/assets/img/app-symbole/crew-512.png?v=202609231712",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609231624",
|
||||
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609231712",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609231624",
|
||||
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609231712",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
|
||||
+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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/dateien.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/dateien.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -108,15 +108,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/dateien.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/dateien.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+35
-16
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -201,6 +201,21 @@
|
||||
„plus man soll die aufgaben hier in dieser seite auch sehen."
|
||||
Ohne sie legt man hier Aufgaben an und weiss nicht, was schon
|
||||
da ist -- und traegt zum dritten Mal dieselbe ein. -->
|
||||
<!-- AUFGABEN AUS DER VORLAGE (umgezogen am 23.09.2026)
|
||||
|
||||
Filipe: "das soll auch bitte nicht in der kategorie aufgaben
|
||||
sondern eure aufgaben sein bitte."
|
||||
|
||||
ER STEHT ZWISCHEN DEM FORMULAR UND DER AUFGABENLISTE, und das
|
||||
ist die Reihenfolge, in der man denkt: erst die Person, dann was
|
||||
sie bekommt -- entweder selbst getippt (das Formular darueber)
|
||||
oder eines der fertigen (hier) --, und darunter sofort, was
|
||||
daraufhin bei ihr liegt.
|
||||
|
||||
Zwei Wege zur selben Handlung stehen damit nebeneinander, statt
|
||||
auf zwei Seiten verteilt. -->
|
||||
<section class="vorlagenbrett" id="vorlagenbrett" hidden></section>
|
||||
|
||||
<section class="e-aufgaben" id="e-aufgaben-block" hidden>
|
||||
<h2 class="e-abschnitt" id="e-aufgaben-titel">Ihre Aufgaben</h2>
|
||||
<p class="e-aufgaben__satz" id="e-aufgaben-satz"></p>
|
||||
@@ -262,15 +277,19 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/entwicklung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231712" defer></script>
|
||||
<!-- VOR entwicklung.js: Die Seite richtet den Katalog beim Start ein,
|
||||
also muss es ihn zu dem Zeitpunkt geben. Mit "defer" laufen beide
|
||||
in Dokumentreihenfolge. -->
|
||||
<script src="assets/js/vorlagenbrett.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/entwicklung.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-14
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -146,13 +146,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/hilfe.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/hilfe.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="gate">
|
||||
@@ -427,7 +427,7 @@
|
||||
|
||||
|
||||
|
||||
<script src="assets/js/gate.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/gate.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/kalender.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/kalender.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -383,15 +383,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kalender.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kalender-abo.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kalender.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kalender-abo.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/leistung.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/leistung.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -444,13 +444,13 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624"></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624"></script>
|
||||
<script src="assets/js/wahl.js?v=202609231624"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624"></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624"></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624"></script>
|
||||
<script src="assets/js/leistung.js?v=202609231624"></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712"></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712"></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712"></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712"></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712"></script>
|
||||
<script src="assets/js/leistung.js?v=202609231712"></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -12,13 +12,13 @@
|
||||
vergessen wird. -->
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/material.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/material.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
<body class="start" data-ton="42" data-buehne="studio">
|
||||
|
||||
@@ -138,14 +138,14 @@
|
||||
<p class="m-laedt" id="laedt">Einen Moment …</p>
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/material.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/material.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/personen.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/personen.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -453,14 +453,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/personen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/personen.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -214,16 +214,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/profil.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/profil.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -134,13 +134,13 @@
|
||||
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
|
||||
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
|
||||
die seit dem 07.09. jede Seite danach absucht. -->
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/rechte.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/rechte.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/report.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/report.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -106,17 +106,17 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/ki.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/report.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/report.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/scouting.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/scouting.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -173,14 +173,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/scouting.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/scouting.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/heim.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -684,16 +684,16 @@
|
||||
</p>
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/live.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/start.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/live.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/start.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -85,16 +85,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/ki.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/startcheck.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/startcheck.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -150,16 +150,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -111,14 +111,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/talente.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/talente.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -110,15 +110,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/team.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/team.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<!-- `data-buehne` steht hier fest und nicht im Skript: Die Kachel zu
|
||||
@@ -84,14 +84,14 @@
|
||||
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=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/teamlage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/teamlage.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-14
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -112,14 +112,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/teilen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/teilen.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -126,13 +126,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/treff-moderation.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/treff-moderation.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein. Auf der Adresse des
|
||||
Rudels 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -248,13 +248,13 @@
|
||||
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
|
||||
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
|
||||
die seit dem 07.09. jede Seite danach absucht. -->
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/treff-regeln.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/treff-regeln.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
|
||||
Dialog "Creator anlegen". -->
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -149,16 +149,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/uebersicht.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/uebersicht.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -335,13 +335,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/live.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/unsere-seiten.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/live.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/unsere-seiten.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-15
@@ -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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -144,13 +144,13 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/werdegang.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/werdegang.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-15
@@ -12,13 +12,13 @@
|
||||
vergessen wird. -->
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/willkommen.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/willkommen.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
<!-- KOERPERKLASSE "start", NICHT "gate" (berichtigt 21.09.2026).
|
||||
`body.gate` ist die Anmeldewand: `display:flex; align-items:center`,
|
||||
@@ -75,13 +75,13 @@
|
||||
<p class="fehler" id="fehler" hidden></p>
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/willkommen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/willkommen.js?v=202609231712" 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=202609231624" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/wissen.css?v=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231624" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231712" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/wissen.css?v=202609231712" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609231712" />
|
||||
<!-- 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=202609231624" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609231712" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -190,15 +190,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609231712" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wissen.js?v=202609231624" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609231712" defer></script>
|
||||
<script src="assets/js/wissen.js?v=202609231712" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user