Der Aufgabenkatalog zieht dorthin, wo verteilt wird
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."
Und das ist richtig: "Aufgaben" zeigt, WAS liegt. Verteilt wird seit
dem 22.09. auf "Eure Aufgaben" -- dort wird die Person gewaehlt, dort
steht das Formular, dort ihre Aufgaben. Der Katalog ist nichts anderes
als ein zweiter Weg zu derselben Handlung: 101 fertige Aufgaben statt
einer selbst getippten.
WAS DER ERSTE ANLAUF ZERSTOERT HAETTE. Der Block enthaelt ZWEI
Kataloge, und sie gehen an zwei verschiedene Personenkreise -- das
entscheidet der Server. Team Dogi bekommt die 101 Aufgaben in 14
Kategorien, die Agentur den Creator-Katalog (vier Bereiche, vier
Stufen). Ihn einfach herauszuschneiden und drueben hinzulegen haette
dem zweiten Katalog die Heimat genommen. Gemerkt hat das keine
Ueberlegung, sondern die Frage, wer die Zeile "ich.rolle === 'creator'"
eigentlich bedient -- pruef-aufgaben-vorlagen misst sie seit Tagen.
Deshalb eine gemeinsame Datei (vorlagenbrett.js) statt zweier
Abschriften: Die gemeinsamen Teile -- Abruf, Klappkopf, Uebernehmen --
gibt es weiter genau einmal, und jede Seite sagt beim Einrichten, ob
sie den Team- oder den Creator-Zweig zeigt. Fehlt ihr dabei eine
Angabe, sagt die Datei das in der Konsole, statt stumm nichts zu
zeichnen.
WAS DER UMZUG NEBENBEI LOESCHT: Drueben brauchte der Katalog eine
EIGENE Personenwahl, 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.
DREI DINGE, DIE ERST DADURCH AUFFIELEN:
"schon uebernommen" galt im Team-Katalog fuer JEDEN. Sobald irgendwer
eine Vorlage hatte, stand es an der Karte -- auch fuer alle anderen.
Auf einer Seite ohne Personenwahl fiel das kaum auf; hier waere es
offen falsch: Man waehlt Frida, und der Katalog behauptet, sie habe die
Aufgabe schon, weil Rieke sie hat. Der Creator-Zweig machte es von
Anfang an richtig. Und wer verteilt, bekommt ohne gewaehlte Person gar
keine Markierung mehr: "irgendwer hat sie" liest man als "brauche ich
nicht mehr zu vergeben" und ueberspringt, was dem Menschen vor einem
fehlt.
Der Katalog blieb fuer einen Modi GANZ weg. window.__ich kommt ueber
das Netz und ist beim ersten Zeichnen noch nicht da; ein stummes
"return" liess den Block dauerhaft verschwinden, weil niemand ein
zweites Mal zeichnet. Gefunden hat das kein Codelesen, sondern ein
Bildschirmfoto -- die Seite sah vollstaendig aus, nur ohne den Block.
Gewartet wird jetzt mit der Wartestelle des Hauses.
Und er markierte bei einem Modi nichts mehr: Die Aufgabenliste wurde
nur beim Personenwechsel geholt, und ein Modi waehlt nie jemanden.
Damit war die Sperre gegen das zweite Uebernehmen derselben Vorlage
weg. Jetzt gibt es einen Abrufweg fuer beide.
Der Knopf nennt den Namen ("An Rieke"), der Satz darueber auch. Statt
einer Wegbeschreibung zur Personenwahl steht ein Knopf, der hinfuehrt
-- "waehle oben" waere falsch, die Kacheln stehen weiter unten. Und
"auf dem Brett darunter" stimmt hier nicht mehr: Der Kopftext sagt
jetzt, WAS entsteht, nicht WO es landet.
Gemessen: pruef-modi-katalog 129 (vorher 125), pruef-modi-kategorien
29 (vorher 25 mit 3 Fehlern), pruef-aufgaben-vorlagen, pruef-struktur
und pruef-css-klassen alles in Ordnung. Dazu eine Abnahme ueber beide
Seiten und drei Rollen: 32 Messungen, 0 Befunde -- darunter die
Gegenprobe, dass Marinas uebernommene Aufgabe bei Frida NICHT als
uebernommen gilt.
Die 403-Zeilen in pruef-modi-kategorien waren ebenfalls eine Altlast:
Seit dem 22.09. legt im Team Dogi nur die Leitung an ("sie sich nicht
selber aufgaben geben"), die Pruefung tat es weiter als Modi. Sie misst
das jetzt -- samt der Gegenprobe, die es vorher nicht gab.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
+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");
|
||||
|
||||
@@ -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