Nichts verschwindet mehr ohne eine Nachfrage, die sagt was passiert
Filipe: "Es darf vor allem keine Stellen geben, an denen ein Benutzer
etwas falsch machen kann, nur weil die Seite es nicht verstaendlich
genug erklaert."
Gemessen: 30 Stellen in 16 Dateien benutzten confirm() oder prompt().
Das Haus hatte die richtige Bauweise laengst -- einen <dialog>, in
aufgaben.html sogar ausfuehrlich begruendet -- aber sie stand IN EINER
SEITE. Wer anderswo etwas loeschen liess, hatte sie nicht.
confirm('Wirklich loeschen?') stellt die falsche Frage: Es fragt, ob
man sicher ist, und nennt nicht, WAS passiert, was BLEIBT und ob es
ZURUECK geht. Jetzt beantwortet jeder der 41 Dialoge alle drei.
Neu: workspace/assets/js/nachfrage.js -- window.frageNach() mit
Pflichtgrund, Zahlenfeld, einzeiliger Eingabe und Abtippsicherung.
Drei Ausgaenge: <dialog> / confirm()-Notnagel fuer Safari vor 15.4 /
Abbruch (Esc, Klick daneben, "Doch nicht" -- immer false).
DREIMAL DERSELBE FALLSTRICK, dreimal nachgemessen statt vermutet:
.dialog stand in aufgaben.css und leistung.css -> auf dateien.html
waere der Dialog ein weisser Systemkasten gewesen. 14 Regeln
klammergenau nach module.css verschoben (Klammern gezaehlt, nicht
per Muster geschnitten -- heute frueh hat ein nicht-gieriges
Muster schon einmal CSS zerrissen).
Das Formular trug .neu neu--blank -- und .neu gibt seine Abstaende
nur in aufgaben.css. Gemessen: padding 0px, und die Felder
verloren ihre height:44px. Jetzt steht alles unter
.nachfrage__form in module.css; der Dialog borgt nichts mehr.
Die erste Fassung der Pruefung zaehlte nachfrage.js SELBST als
Nutzer -- damit war jede Seite trivialerweise "Nutzer" und die
Pruefung gruen ohne Inhalt. Jetzt ausdruecklich ausgenommen.
ZWEI FUNDE NEBENBEI:
hilfeAufraeumen() wird im Betrieb NIE aufgerufen. Der Kommentar
behauptete "wird beim Start aufgerufen (siehe index.js)" -- das
war nie wahr; einziger Aufrufer ist die eigene Pruefung. Folge:
geschlossene vertrauliche Faelle bleiben unbegrenzt stehen. NICHT
eingeschaltet (das loescht echte Daten und ist Filipes
Entscheidung), sondern der Kommentar richtiggestellt.
Einen Hilfe-Fall zu schliessen ist endgueltig -- es gibt keine
Route, die ihn wieder oeffnet. Vorher stand darueber nur die
Frage nach einem Schlusswort. Jetzt sagt der Dialog es.
pruef-struktur hat meine eigene Pruefung von heute Nachmittag
erwischt: Sie bildete ihr Datum aus UTC. Beim Beheben erst
heuteLokal(datum) genommen -- die Funktion nimmt gar kein Argument
und haette still "heute" statt "+3 Tage" geliefert. Jetzt tagLokal(3),
nachgerechnet: Abstand 3 Tage.
Am Bildschirm angesehen (Rechner 1280, Handy 390): passt rein, Esc
ergibt false, Fokus liegt auf dem harmlosen Knopf, Knoepfe 44px auf
Touch. Der Platzhalter im Abtippfeld zeigte den erwarteten Namen --
das sah aus wie ein schon ausgefuelltes Feld, entfernt.
Neu: server/pruef-nachfrage.mjs -- 17/0, mit sechs Gegenproben und
beiden Richtungen (wer fragt, laedt die Datei; wer nie fragt, laedt
sie nicht -- sonst truege die Anmeldewand 4,8 KB fuer nichts).
pruef-meldungen 8/0, pruef-css-klassen gruen, pruef-struktur gruen,
pruef-leistung gruen.
This commit is contained in:
@@ -97,6 +97,7 @@
|
|||||||
Dauer: rund drei Minuten (4 Rollen × 2 Breiten × ~20 Seiten).
|
Dauer: rund drei Minuten (4 Rollen × 2 Breiten × ~20 Seiten).
|
||||||
===================================================================== */
|
===================================================================== */
|
||||||
|
|
||||||
|
import { tagLokal } from "./helfer-zeit.mjs";
|
||||||
import { mkdtempSync, rmSync } from "node:fs";
|
import { mkdtempSync, rmSync } from "node:fs";
|
||||||
import { tmpdir } from "node:os";
|
import { tmpdir } from "node:os";
|
||||||
import { join, dirname } from "node:path";
|
import { join, dirname } from "node:path";
|
||||||
@@ -182,7 +183,11 @@ for (const [titel, wer] of [
|
|||||||
+ " erstellt, frist) VALUES (?,?,?,?,?,?,?)",
|
+ " erstellt, frist) VALUES (?,?,?,?,?,?,?)",
|
||||||
titel, "Beschreibung mit genug Text, dass die Karte wirklich Höhe bekommt "
|
titel, "Beschreibung mit genug Text, dass die Karte wirklich Höhe bekommt "
|
||||||
+ "und ein Umbruch entstehen kann.", "offen", wer, idDogi, jetzt,
|
+ "und ein Umbruch entstehen kann.", "offen", wer, idDogi, jetzt,
|
||||||
new Date(Date.now() + 3 * 86400000).toISOString().slice(0, 10));
|
/* Ortszeit, nicht UTC: Zwischen 00:00 und 02:00 deutscher Zeit
|
||||||
|
liegt UTC noch im Vortag -- die Frist waere dann um einen Tag
|
||||||
|
verschoben, und die Pruefung schluege nachts falsch an.
|
||||||
|
Gefunden hat das `pruef-struktur`, nicht ich. */
|
||||||
|
tagLokal(3));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const [bereich, titel] of [
|
for (const [bereich, titel] of [
|
||||||
|
|||||||
@@ -0,0 +1,274 @@
|
|||||||
|
/* =====================================================================
|
||||||
|
pruef-nachfrage.mjs — Nichts verschwindet ohne Nachfrage.
|
||||||
|
|
||||||
|
Filipe, 19.09.2026: „Es darf vor allem keine Stellen geben, an denen
|
||||||
|
ein Benutzer etwas falsch machen kann, nur weil die Seite es nicht
|
||||||
|
verständlich genug erklärt." Und: „Fehler möglichst verhindern,
|
||||||
|
bevor sie entstehen."
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
WAS DAS PROBLEM WAR
|
||||||
|
|
||||||
|
Das Haus hatte die richtige Bauweise — einen <dialog> statt
|
||||||
|
`confirm()` — und begründete sie in `aufgaben.html` sogar ausführlich.
|
||||||
|
Nur stand sie IN EINER SEITE. Gemessen am 19.09.2026: **30 Stellen**
|
||||||
|
in 16 Dateien griffen weiterhin zu `confirm()` oder `prompt()`.
|
||||||
|
|
||||||
|
Der Unterschied ist nicht Geschmack. `confirm('Wirklich löschen?')`
|
||||||
|
stellt die falsche Frage: Es fragt, ob man sicher ist, und nennt
|
||||||
|
nicht, WAS passiert, was BLEIBT und ob es ZURÜCK geht. Genau das
|
||||||
|
sind die drei Dinge, die man vor einem Löschen wissen will.
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
VIER DINGE WERDEN GEPRÜFT
|
||||||
|
|
||||||
|
1. KEIN NATIVER DIALOG mehr in einer Seiten-Datei. Ausgenommen ist
|
||||||
|
allein der Notnagel in `nachfrage.js` selbst — für Browser ohne
|
||||||
|
<dialog>. (Ein Verbot ohne diese Ausnahme wäre falsch: Ein
|
||||||
|
iPhone vor Safari 15.4 bekäme sonst gar nichts angezeigt.)
|
||||||
|
|
||||||
|
2. ANGESCHLOSSEN — jede Seite, deren Skripte `frageNach` benutzen,
|
||||||
|
lädt auch `nachfrage.js`. Ohne die Datei wäre `frageNach` nicht
|
||||||
|
definiert, und aus einer Rückfrage würde ein Absturz: Der Knopf
|
||||||
|
täte stillschweigend nichts.
|
||||||
|
|
||||||
|
ACHTUNG, hier steckte beim Bauen schon eine Falle: Die erste
|
||||||
|
Fassung dieser Prüfung zählte `nachfrage.js` SELBST als Nutzer
|
||||||
|
(die Datei enthält das Wort natürlich) — damit war jede Seite
|
||||||
|
„Nutzer", die Prüfung immer grün und sie bewies nichts. Deshalb
|
||||||
|
ist die Datei unten ausdrücklich ausgenommen.
|
||||||
|
|
||||||
|
3. GESTALTET — `.dialog` wird in einer Datei gestaltet, die JEDE
|
||||||
|
Seite lädt. Vorher stand sie in `aufgaben.css`; auf `dateien.html`
|
||||||
|
wäre der Dialog ein weißer Systemkasten auf dunkler Seite
|
||||||
|
gewesen. Das ist keine Schönheitsfrage: Ein Kasten, der aussieht
|
||||||
|
wie eine Browser-Warnung, wird weggeklickt statt gelesen.
|
||||||
|
|
||||||
|
4. VOLLSTÄNDIG — jeder Aufruf hat einen `titel` und sagt, was
|
||||||
|
passiert (`was`). Ein Dialog ohne diese Angabe ist ein
|
||||||
|
`confirm()` mit mehr Zeilen Code.
|
||||||
|
|
||||||
|
Dazu GEGENPROBEN: Jede Prüfung muss beweisen, dass sie auch
|
||||||
|
„nicht in Ordnung" sagen kann.
|
||||||
|
|
||||||
|
AUFRUF: node server/pruef-nachfrage.mjs
|
||||||
|
Läuft in unter zwei Sekunden, ohne Server.
|
||||||
|
===================================================================== */
|
||||||
|
|
||||||
|
import { readFileSync, readdirSync } from "node:fs";
|
||||||
|
import { join, dirname } from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
|
|
||||||
|
const HIER = dirname(fileURLToPath(import.meta.url));
|
||||||
|
const WURZEL = join(HIER, "..");
|
||||||
|
const SEITEN_ORDNER = join(WURZEL, "workspace");
|
||||||
|
const JS_ORDNER = join(SEITEN_ORDNER, "assets", "js");
|
||||||
|
const CSS_ORDNER = join(SEITEN_ORDNER, "assets", "css");
|
||||||
|
|
||||||
|
/* Die eine Datei, die `confirm`/`prompt` benutzen DARF -- sie ist der
|
||||||
|
Notnagel fuer Browser ohne <dialog>. */
|
||||||
|
const DER_NOTNAGEL = "nachfrage.js";
|
||||||
|
|
||||||
|
let ok = 0, fehl = 0;
|
||||||
|
const pruef = (name, bedingung, zusatz = "") => {
|
||||||
|
if (bedingung) { ok++; console.log(` OK ${name}`); }
|
||||||
|
else { fehl++; console.log(` FEHL ${name}${zusatz ? "\n " + zusatz : ""}`); }
|
||||||
|
};
|
||||||
|
|
||||||
|
const lies = (p) => readFileSync(p, "utf8");
|
||||||
|
const seiten = readdirSync(SEITEN_ORDNER).filter((f) => f.endsWith(".html"));
|
||||||
|
const skripte = readdirSync(JS_ORDNER).filter((f) => f.endsWith(".js"));
|
||||||
|
|
||||||
|
console.log("\n=== Nachfragen: kein nativer Dialog, und keiner ohne Erklärung ===\n");
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------
|
||||||
|
1. KEIN NATIVER DIALOG
|
||||||
|
------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
/** Entfernt Kommentare, bevor gesucht wird. Ohne das zaehlt jeder
|
||||||
|
* Kommentar, der `confirm()` ERWAEHNT, als Fund -- und davon gibt es
|
||||||
|
* in diesem Haus absichtlich mehrere (die Begruendungen). */
|
||||||
|
function ohneKommentare(js) {
|
||||||
|
return js.replace(/\/\*[\s\S]*?\*\//g, "").replace(/(^|[^:])\/\/.*$/gm, "$1");
|
||||||
|
}
|
||||||
|
|
||||||
|
const nativ = [];
|
||||||
|
for (const f of skripte) {
|
||||||
|
if (f === DER_NOTNAGEL) continue;
|
||||||
|
const code = ohneKommentare(lies(join(JS_ORDNER, f)));
|
||||||
|
for (const m of code.matchAll(/(?:^|[^.\w])(confirm|prompt)\s*\(/g)) {
|
||||||
|
const zeile = code.slice(0, m.index).split("\n").length;
|
||||||
|
nativ.push(`${f}:${zeile} → ${m[1]}()`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pruef("keine Seite benutzt noch confirm() oder prompt()", nativ.length === 0,
|
||||||
|
nativ.slice(0, 8).join("\n "));
|
||||||
|
|
||||||
|
/* Und der Notnagel ist da -- sonst haetten Browser ohne <dialog> gar
|
||||||
|
nichts. Die ZAHL gehoert in die Bedingung, nicht nur in den Text. */
|
||||||
|
const notnagel = lies(join(JS_ORDNER, DER_NOTNAGEL));
|
||||||
|
pruef("der Notnagel für alte Browser ist vorhanden",
|
||||||
|
/HTMLDialogElement/.test(notnagel) && /window\.confirm\(/.test(notnagel));
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------
|
||||||
|
2. ANGESCHLOSSEN
|
||||||
|
------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
/** Welche Skripte rufen frageNach auf? OHNE die Datei, die es
|
||||||
|
* DEFINIERT -- sonst ist die Antwort immer „alle". */
|
||||||
|
const nutzer = new Set();
|
||||||
|
for (const f of skripte) {
|
||||||
|
if (f === DER_NOTNAGEL) continue;
|
||||||
|
if (/\bfrageNach\s*\(/.test(ohneKommentare(lies(join(JS_ORDNER, f))))) nutzer.add(f);
|
||||||
|
}
|
||||||
|
pruef("es gibt überhaupt Seiten, die nachfragen", nutzer.size > 0,
|
||||||
|
`gefunden: ${nutzer.size}`);
|
||||||
|
|
||||||
|
const ohneDatei = [], totesGewicht = [], fragendeSeiten = [];
|
||||||
|
let mitNutzung = 0;
|
||||||
|
for (const s of seiten) {
|
||||||
|
const html = lies(join(SEITEN_ORDNER, s));
|
||||||
|
const geladen = [...html.matchAll(/<script src="assets\/js\/([a-z0-9-]+\.js)/g)]
|
||||||
|
.map((m) => m[1]);
|
||||||
|
const kannFragen = geladen.some((g) => nutzer.has(g));
|
||||||
|
const hatDatei = html.includes("assets/js/nachfrage.js");
|
||||||
|
if (kannFragen) { mitNutzung++; fragendeSeiten.push(s); if (!hatDatei) ohneDatei.push(s); }
|
||||||
|
else if (hatDatei) totesGewicht.push(s);
|
||||||
|
}
|
||||||
|
pruef("jede Seite, die nachfragt, lädt auch nachfrage.js",
|
||||||
|
mitNutzung > 0 && ohneDatei.length === 0,
|
||||||
|
`${mitNutzung} Seiten nutzen es, ohne Datei: ${ohneDatei.join(", ") || "keine"}`);
|
||||||
|
|
||||||
|
/* UND DIE GEGENRICHTUNG. Ohne sie waere „ueberall einbinden" die
|
||||||
|
bequeme Antwort -- und die Anmeldewand, die jeder Besucher als
|
||||||
|
erste laedt, truege 4,8 KB fuer einen Dialog, den sie nie zeigt.
|
||||||
|
Zwei Richtungen, eine Regel: Die Datei liegt genau dort, wo sie
|
||||||
|
gebraucht wird. */
|
||||||
|
pruef("und keine Seite lädt sie, ohne je nachzufragen",
|
||||||
|
totesGewicht.length === 0,
|
||||||
|
`unnötig geladen auf: ${totesGewicht.join(", ")}`);
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------
|
||||||
|
3. GESTALTET, UND ZWAR ÜBERALL
|
||||||
|
------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
/** In welchen CSS-Dateien wird `.dialog` gestaltet? */
|
||||||
|
const dialogCss = readdirSync(CSS_ORDNER).filter((f) => f.endsWith(".css"))
|
||||||
|
.filter((f) => /^\.dialog[\s,{:]/m.test(lies(join(CSS_ORDNER, f))));
|
||||||
|
|
||||||
|
/** Und welche davon laedt jede Seite, DIE NACHFRAGEN KANN? Abgeleitet,
|
||||||
|
* nicht behauptet -- eine Liste „module.css laedt ueberall" waere genau
|
||||||
|
* die abgeschriebene Liste, vor der die Hausregeln warnen.
|
||||||
|
*
|
||||||
|
* Gemessen wird gegen die fragenden Seiten, nicht gegen alle: Die zwei
|
||||||
|
* Anmeldewaende zeigen nie einen Dialog. Von ihnen die Dialog-
|
||||||
|
* Gestaltung zu verlangen hiesse, 12 KB auf die Seite zu legen, die
|
||||||
|
* jeder Besucher als erste laedt -- fuer nichts. */
|
||||||
|
const ueberall = new Set(dialogCss);
|
||||||
|
for (const s of fragendeSeiten) {
|
||||||
|
const html = lies(join(SEITEN_ORDNER, s));
|
||||||
|
const css = new Set([...html.matchAll(/href="assets\/css\/([a-z0-9-]+\.css)/g)]
|
||||||
|
.map((m) => m[1]));
|
||||||
|
for (const d of [...ueberall]) if (!css.has(d)) ueberall.delete(d);
|
||||||
|
}
|
||||||
|
pruef(".dialog wird dort gestaltet, wo jede fragende Seite es lädt",
|
||||||
|
ueberall.size > 0 && fragendeSeiten.length > 0,
|
||||||
|
`.dialog steht in: ${dialogCss.join(", ")} — von allen `
|
||||||
|
+ `${fragendeSeiten.length} fragenden Seiten geladen: `
|
||||||
|
+ `${[...ueberall].join(", ") || "KEINE"}`);
|
||||||
|
|
||||||
|
/* Die zwei eigenen Bauteile des Nachfrage-Dialogs gehoeren in dieselbe
|
||||||
|
Datei -- sonst waere der wichtigste Satz ("nicht rueckgaengig")
|
||||||
|
ungestaltet. */
|
||||||
|
const gemeinsam = [...ueberall][0];
|
||||||
|
const gCss = gemeinsam ? lies(join(CSS_ORDNER, gemeinsam)) : "";
|
||||||
|
pruef("auch die Warnzeile und die Fehlerzeile sind dort gestaltet",
|
||||||
|
/\.nachfrage__endgueltig/.test(gCss) && /\.nachfrage__fehler/.test(gCss));
|
||||||
|
|
||||||
|
/* Und sie traegt ihre Aussage nicht nur ueber Farbe. */
|
||||||
|
pruef("die Warnzeile hat ein Zeichen, nicht nur eine Farbe",
|
||||||
|
/\.nachfrage__endgueltig::before\s*{[^}]*content/.test(gCss),
|
||||||
|
"Farbe allein trägt keine Aussage — Rot-Grün-Schwäche, Kontrastmodus");
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------
|
||||||
|
4. VOLLSTÄNDIG: jeder Aufruf sagt, was passiert
|
||||||
|
------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
/** Schneidet den Objektliteral-Teil eines frageNach-Aufrufs heraus,
|
||||||
|
* klammergenau. Ein Muster „bis zur naechsten }" wuerde bei jedem
|
||||||
|
* verschachtelten Ausdruck danebengreifen. */
|
||||||
|
function aufrufe(js) {
|
||||||
|
const out = [];
|
||||||
|
for (const m of js.matchAll(/frageNach\s*\(\s*{/g)) {
|
||||||
|
let i = m.index + m[0].length - 1, tiefe = 0, j = i;
|
||||||
|
for (; j < js.length; j++) {
|
||||||
|
if (js[j] === "{") tiefe++;
|
||||||
|
else if (js[j] === "}") { tiefe--; if (tiefe === 0) { j++; break; } }
|
||||||
|
}
|
||||||
|
out.push(js.slice(i, j));
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
let gezaehlt = 0;
|
||||||
|
const ohneTitel = [], ohneWas = [];
|
||||||
|
for (const f of skripte) {
|
||||||
|
if (f === DER_NOTNAGEL) continue;
|
||||||
|
const code = ohneKommentare(lies(join(JS_ORDNER, f)));
|
||||||
|
for (const a of aufrufe(code)) {
|
||||||
|
gezaehlt++;
|
||||||
|
if (!/\btitel\s*:/.test(a)) ohneTitel.push(f);
|
||||||
|
if (!/\bwas\s*:/.test(a)) ohneWas.push(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* DIE ZAHL GEHOERT IN DIE BEDINGUNG: Bei null Aufrufen waere
|
||||||
|
„alle haben einen Titel" trivialerweise wahr. */
|
||||||
|
pruef("jeder Aufruf hat einen Titel", gezaehlt > 0 && ohneTitel.length === 0,
|
||||||
|
`${gezaehlt} Aufrufe geprüft, ohne Titel: ${ohneTitel.join(", ") || "keiner"}`);
|
||||||
|
pruef("jeder Aufruf sagt, WAS passiert", gezaehlt > 0 && ohneWas.length === 0,
|
||||||
|
`ohne „was": ${ohneWas.join(", ") || "keiner"}`);
|
||||||
|
|
||||||
|
/* Und die gefaehrlichste Handlung im Haus -- eine Person loeschen --
|
||||||
|
verlangt das Abtippen des Namens. Das ist keine Schikane: Der
|
||||||
|
Loeschknopf sitzt neben dem Sperrknopf. */
|
||||||
|
pruef("eine Person löschen verlangt den Namen abgetippt",
|
||||||
|
/tippen:\s*v\.person\.name/.test(lies(join(JS_ORDNER, "personen.js"))));
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------
|
||||||
|
DIE GEGENPROBEN — jede muss anschlagen
|
||||||
|
------------------------------------------------------------------ */
|
||||||
|
console.log("\n --- Gegenproben (jede MUSS anschlagen) ---");
|
||||||
|
|
||||||
|
pruef("Gegenprobe: ein erfundenes confirm() würde gefunden",
|
||||||
|
/(?:^|[^.\w])(confirm|prompt)\s*\(/.test(
|
||||||
|
ohneKommentare("function x(){ if (!confirm('weg?')) return; }")));
|
||||||
|
|
||||||
|
pruef("Gegenprobe: ein confirm() im KOMMENTAR wird NICHT gemeldet",
|
||||||
|
!/(?:^|[^.\w])(confirm|prompt)\s*\(/.test(
|
||||||
|
ohneKommentare("/* frueher stand hier confirm('weg?') */")));
|
||||||
|
|
||||||
|
pruef("Gegenprobe: nachfrage.js selbst zählt nicht als Nutzer",
|
||||||
|
!nutzer.has(DER_NOTNAGEL),
|
||||||
|
'sonst wäre jede Seite trivialerweise Nutzer und die Prüfung grün ohne Inhalt');
|
||||||
|
|
||||||
|
pruef("Gegenprobe: die Gestaltung-Prüfung kann auch NEIN sagen",
|
||||||
|
(() => {
|
||||||
|
/* Eine erfundene Seite, die nachfragt, aber die Datei nicht laedt:
|
||||||
|
Die Schnittmenge muss dadurch leer werden. */
|
||||||
|
const probe = new Set(dialogCss);
|
||||||
|
for (const d of [...probe]) if (!new Set(["gibt-es-nicht.css"]).has(d)) probe.delete(d);
|
||||||
|
return probe.size === 0;
|
||||||
|
})());
|
||||||
|
|
||||||
|
pruef("Gegenprobe: ein Aufruf ohne Titel würde auffallen",
|
||||||
|
aufrufe("frageNach({ was: 'x' })").length === 1
|
||||||
|
&& !/\btitel\s*:/.test(aufrufe("frageNach({ was: 'x' })")[0]));
|
||||||
|
|
||||||
|
pruef("Gegenprobe: der Klammerzähler findet das Ende auch bei Verschachtelung",
|
||||||
|
aufrufe("frageNach({ titel: f({a:1}), was: 'x' }) ; danach")[0]
|
||||||
|
=== "{ titel: f({a:1}), was: 'x' }");
|
||||||
|
|
||||||
|
console.log(`\n ${ok} bestanden, ${fehl} fehlgeschlagen`);
|
||||||
|
console.log(` (${gezaehlt} Rückfragen in ${nutzer.size} Dateien, `
|
||||||
|
+ `${mitNutzung} Seiten)\n`);
|
||||||
|
process.exit(fehl ? 1 : 0);
|
||||||
@@ -322,9 +322,28 @@ async function schlussBenachrichtigen(fall) {
|
|||||||
|
|
||||||
/** Löscht geschlossene Fälle, die älter sind als die Aufbewahrung.
|
/** Löscht geschlossene Fälle, die älter sind als die Aufbewahrung.
|
||||||
*
|
*
|
||||||
* Wird beim Start aufgerufen (siehe index.js). Läuft still: Wenn es
|
* ACHTUNG, NACHGEMESSEN AM 19.09.2026: Diese Funktion wird im Betrieb
|
||||||
* nichts zu tun gibt, sagt es auch nichts -- eine Meldung, die jeden
|
* NICHT aufgerufen. Hier stand vorher "Wird beim Start aufgerufen
|
||||||
* Start begleitet, wird nach einer Woche nicht mehr gelesen. */
|
* (siehe index.js)" -- das war nie wahr. Gesucht im ganzen Verzeichnis:
|
||||||
|
* der einzige Aufrufer ist `pruef-hilfe.mjs`, also ihre eigene Prüfung.
|
||||||
|
*
|
||||||
|
* Die Prüfung ist deshalb grün und beweist nichts über den Betrieb:
|
||||||
|
* Sie zeigt, dass die Funktion richtig löscht -- nicht, dass jemand
|
||||||
|
* sie aufruft. Genau das Muster, vor dem die Hausregeln warnen.
|
||||||
|
*
|
||||||
|
* FOLGE: Geschlossene Fälle bleiben derzeit unbegrenzt stehen. Das ist
|
||||||
|
* die sichere Richtung (nichts geht verloren), aber nicht die
|
||||||
|
* gewollte -- ein vertraulicher Fall über einen Menschen soll nicht
|
||||||
|
* ewig gespeichert bleiben.
|
||||||
|
*
|
||||||
|
* Das EINZUSCHALTEN löscht echte Daten und ist deshalb keine
|
||||||
|
* Reparatur, die nebenbei passiert, sondern Filipes Entscheidung:
|
||||||
|
* Wie lange sollen abgeschlossene Fälle stehen bleiben? Die Prüfung
|
||||||
|
* rechnet mit 90 Tagen, das ist aber nur ihre Annahme.
|
||||||
|
*
|
||||||
|
* Läuft still: Wenn es nichts zu tun gibt, sagt es auch nichts --
|
||||||
|
* eine Meldung, die jeden Start begleitet, wird nach einer Woche
|
||||||
|
* nicht mehr gelesen. */
|
||||||
export function hilfeAufraeumen(tage) {
|
export function hilfeAufraeumen(tage) {
|
||||||
try {
|
try {
|
||||||
const grenze = new Date(Date.now() - tage * 86400000).toISOString();
|
const grenze = new Date(Date.now() - tage * 86400000).toISOString();
|
||||||
|
|||||||
+131
-131
@@ -1,131 +1,131 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="de" data-haus="crew">
|
<html lang="de" data-haus="crew">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Anruf-Probe · Team Dogi</title>
|
<title>Anruf-Probe · Team Dogi</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<!-- KORRIGIERT AM 19.09.2026. Hier standen `basis.css` und `kopf.css` --
|
<!-- KORRIGIERT AM 19.09.2026. Hier standen `basis.css` und `kopf.css` --
|
||||||
zwei Dateien, die es im Haus gar nicht gibt. Die Seite lud sie bei
|
zwei Dateien, die es im Haus gar nicht gibt. Die Seite lud sie bei
|
||||||
jedem Aufruf ins Leere und stand damit OHNE die Hausfarben da; die
|
jedem Aufruf ins Leere und stand damit OHNE die Hausfarben da; die
|
||||||
Angaben darunter (var(--text-leise) usw.) liefen ins Nichts.
|
Angaben darunter (var(--text-leise) usw.) liefen ins Nichts.
|
||||||
|
|
||||||
Ausgerechnet auf dieser Seite faellt das nicht auf: Sie hat ihre
|
Ausgerechnet auf dieser Seite faellt das nicht auf: Sie hat ihre
|
||||||
eigene Stilangabe im Kopf, damit sie auch dann noch etwas anzeigt,
|
eigene Stilangabe im Kopf, damit sie auch dann noch etwas anzeigt,
|
||||||
wenn die Stilvorlagen klemmen -- und genau die hat den Mangel
|
wenn die Stilvorlagen klemmen -- und genau die hat den Mangel
|
||||||
verdeckt. Gefunden hat es pruef-struktur.
|
verdeckt. Gefunden hat es pruef-struktur.
|
||||||
|
|
||||||
Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. -->
|
Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. -->
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
<!-- Ohne diese drei nimmt ein iPhone einen Bildschirmausschnitt als
|
<!-- Ohne diese drei nimmt ein iPhone einen Bildschirmausschnitt als
|
||||||
Symbol, Android zeichnet die Leiste weiss, und die Seite oeffnet
|
Symbol, Android zeichnet die Leiste weiss, und die Seite oeffnet
|
||||||
ausserhalb der App -- auf einer Seite, die genau erklaeren soll,
|
ausserhalb der App -- auf einer Seite, die genau erklaeren soll,
|
||||||
WARUM das Telefon nicht klingelt, ist das besonders unpassend. -->
|
WARUM das Telefon nicht klingelt, ist das besonders unpassend. -->
|
||||||
<link rel="manifest" href="/workspace/crew.webmanifest?v=202609191018" />
|
<link rel="manifest" href="/workspace/crew.webmanifest?v=202609191018" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<style>
|
<style>
|
||||||
/* Bewusst in der Seite und nicht in einer eigenen Datei: Diese Seite
|
/* Bewusst in der Seite und nicht in einer eigenen Datei: Diese Seite
|
||||||
soll auch dann noch etwas anzeigen, wenn genau das schiefgeht,
|
soll auch dann noch etwas anzeigen, wenn genau das schiefgeht,
|
||||||
was sie untersucht -- eine Stilvorlage, die aus dem
|
was sie untersucht -- eine Stilvorlage, die aus dem
|
||||||
Zwischenspeicher kommt. */
|
Zwischenspeicher kommt. */
|
||||||
/* DIE KOPFLEISTE WAR NIE GESTALTET (nachgetragen 19.09.2026).
|
/* DIE KOPFLEISTE WAR NIE GESTALTET (nachgetragen 19.09.2026).
|
||||||
|
|
||||||
Gefunden von pruef-css-klassen: `.kopfleiste`, `.kopfleiste__zurueck`,
|
Gefunden von pruef-css-klassen: `.kopfleiste`, `.kopfleiste__zurueck`,
|
||||||
`.kopfleiste__mitte` und `.kopfleiste__titel` stehen in KEINER
|
`.kopfleiste__mitte` und `.kopfleiste__titel` stehen in KEINER
|
||||||
Stilvorlage des Hauses -- sie leben in start.css bzw. crew-haus.css,
|
Stilvorlage des Hauses -- sie leben in start.css bzw. crew-haus.css,
|
||||||
und genau die lädt diese Seite absichtlich nicht.
|
und genau die lädt diese Seite absichtlich nicht.
|
||||||
|
|
||||||
Ergebnis war eine Leiste aus nacktem Text: der Zurück-Weg ein
|
Ergebnis war eine Leiste aus nacktem Text: der Zurück-Weg ein
|
||||||
blasser Link irgendwo links oben, der Titel daneben in Fließtext.
|
blasser Link irgendwo links oben, der Titel daneben in Fließtext.
|
||||||
Ausgerechnet auf der Seite, die man aufruft, WEIL schon etwas nicht
|
Ausgerechnet auf der Seite, die man aufruft, WEIL schon etwas nicht
|
||||||
funktioniert -- da sieht unfertig aus wie kaputt.
|
funktioniert -- da sieht unfertig aus wie kaputt.
|
||||||
|
|
||||||
Sie stehen hier und nicht in einer Datei, aus demselben Grund wie
|
Sie stehen hier und nicht in einer Datei, aus demselben Grund wie
|
||||||
alles andere auf dieser Seite: Sie soll auch dann noch etwas
|
alles andere auf dieser Seite: Sie soll auch dann noch etwas
|
||||||
anzeigen, wenn genau das schiefgeht, was sie untersucht. */
|
anzeigen, wenn genau das schiefgeht, was sie untersucht. */
|
||||||
.kopfleiste {
|
.kopfleiste {
|
||||||
display: flex; align-items: center; gap: .6rem;
|
display: flex; align-items: center; gap: .6rem;
|
||||||
padding: .55rem .9rem;
|
padding: .55rem .9rem;
|
||||||
border-bottom: 1px solid var(--rand);
|
border-bottom: 1px solid var(--rand);
|
||||||
background: color-mix(in srgb, var(--tinte) 92%, #ffffff 8%);
|
background: color-mix(in srgb, var(--tinte) 92%, #ffffff 8%);
|
||||||
}
|
}
|
||||||
.kopfleiste__zurueck {
|
.kopfleiste__zurueck {
|
||||||
/* 44 px hoch: Das ist die Größe, die ein Daumen sicher trifft.
|
/* 44 px hoch: Das ist die Größe, die ein Daumen sicher trifft.
|
||||||
Auf einem Handy ist dieser Knopf der einzige Weg zurück. */
|
Auf einem Handy ist dieser Knopf der einzige Weg zurück. */
|
||||||
display: inline-flex; align-items: center;
|
display: inline-flex; align-items: center;
|
||||||
min-height: 44px; padding: 0 .7rem 0 .2rem;
|
min-height: 44px; padding: 0 .7rem 0 .2rem;
|
||||||
color: var(--text-leise); text-decoration: none;
|
color: var(--text-leise); text-decoration: none;
|
||||||
font-size: .92rem; border-radius: .5rem;
|
font-size: .92rem; border-radius: .5rem;
|
||||||
}
|
}
|
||||||
.kopfleiste__zurueck:hover,
|
.kopfleiste__zurueck:hover,
|
||||||
.kopfleiste__zurueck:focus-visible { color: var(--text); }
|
.kopfleiste__zurueck:focus-visible { color: var(--text); }
|
||||||
.kopfleiste__mitte { flex: 1; min-width: 0; text-align: center; }
|
.kopfleiste__mitte { flex: 1; min-width: 0; text-align: center; }
|
||||||
.kopfleiste__titel {
|
.kopfleiste__titel {
|
||||||
font-size: .92rem; font-weight: 600; color: var(--text);
|
font-size: .92rem; font-weight: 600; color: var(--text);
|
||||||
letter-spacing: .01em;
|
letter-spacing: .01em;
|
||||||
}
|
}
|
||||||
/* Gleich breit wie der Zurück-Weg, damit der Titel wirklich mittig
|
/* Gleich breit wie der Zurück-Weg, damit der Titel wirklich mittig
|
||||||
steht statt nur ungefähr. */
|
steht statt nur ungefähr. */
|
||||||
.kopfleiste__rechts { flex: 0 0 4.5rem; }
|
.kopfleiste__rechts { flex: 0 0 4.5rem; }
|
||||||
@media (max-width: 420px) {
|
@media (max-width: 420px) {
|
||||||
.kopfleiste__rechts { flex-basis: 0; }
|
.kopfleiste__rechts { flex-basis: 0; }
|
||||||
.kopfleiste__mitte { text-align: right; }
|
.kopfleiste__mitte { text-align: right; }
|
||||||
}
|
}
|
||||||
|
|
||||||
.probe { max-width: 46rem; margin: 0 auto; padding: 1.4rem 1rem 3rem; }
|
.probe { max-width: 46rem; margin: 0 auto; padding: 1.4rem 1rem 3rem; }
|
||||||
.probe h1 { margin: .2rem 0 .3rem; }
|
.probe h1 { margin: .2rem 0 .3rem; }
|
||||||
.probe__unter { color: var(--text-leise); margin: 0 0 1.4rem; }
|
.probe__unter { color: var(--text-leise); margin: 0 0 1.4rem; }
|
||||||
.punkt {
|
.punkt {
|
||||||
display: flex; gap: .8rem; align-items: flex-start;
|
display: flex; gap: .8rem; align-items: flex-start;
|
||||||
padding: .85rem 1rem; margin-bottom: .6rem;
|
padding: .85rem 1rem; margin-bottom: .6rem;
|
||||||
border: 1px solid var(--rand); border-radius: .7rem;
|
border: 1px solid var(--rand); border-radius: .7rem;
|
||||||
background: rgba(255,255,255,.02);
|
background: rgba(255,255,255,.02);
|
||||||
}
|
}
|
||||||
.punkt__zeichen { font-size: 1.1rem; line-height: 1.4; flex: 0 0 1.4rem; }
|
.punkt__zeichen { font-size: 1.1rem; line-height: 1.4; flex: 0 0 1.4rem; }
|
||||||
.punkt__text { flex: 1; min-width: 0; }
|
.punkt__text { flex: 1; min-width: 0; }
|
||||||
.punkt__titel { font-weight: 600; margin: 0 0 .15rem; }
|
.punkt__titel { font-weight: 600; margin: 0 0 .15rem; }
|
||||||
.punkt__satz { margin: 0; color: var(--text-leise); font-size: .9rem; }
|
.punkt__satz { margin: 0; color: var(--text-leise); font-size: .9rem; }
|
||||||
.punkt[data-stand="gut"] { border-color: rgba(120, 200, 150, .4); }
|
.punkt[data-stand="gut"] { border-color: rgba(120, 200, 150, .4); }
|
||||||
.punkt[data-stand="warn"] { border-color: rgba(220, 180, 110, .45); }
|
.punkt[data-stand="warn"] { border-color: rgba(220, 180, 110, .45); }
|
||||||
.punkt[data-stand="schlecht"] { border-color: rgba(230, 140, 140, .5); }
|
.punkt[data-stand="schlecht"] { border-color: rgba(230, 140, 140, .5); }
|
||||||
/* 44 px auf Geraeten, die mit dem Finger bedient werden
|
/* 44 px auf Geraeten, die mit dem Finger bedient werden
|
||||||
(19.09.2026). Diese Seite laedt module.css bewusst nicht --
|
(19.09.2026). Diese Seite laedt module.css bewusst nicht --
|
||||||
sie soll auch dann noch stehen, wenn Stilvorlagen klemmen.
|
sie soll auch dann noch stehen, wenn Stilvorlagen klemmen.
|
||||||
Also gilt die Regel hier eigens. */
|
Also gilt die Regel hier eigens. */
|
||||||
.probe__knopf { margin: 1.2rem 0 .4rem; }
|
.probe__knopf { margin: 1.2rem 0 .4rem; }
|
||||||
@media (pointer: coarse) { .probe__knopf { min-height: 44px; } }
|
@media (pointer: coarse) { .probe__knopf { min-height: 44px; } }
|
||||||
.probe__ende {
|
.probe__ende {
|
||||||
margin-top: 1.6rem; padding: 1rem;
|
margin-top: 1.6rem; padding: 1rem;
|
||||||
border-radius: .7rem; border: 1px dashed var(--rand-hell);
|
border-radius: .7rem; border: 1px dashed var(--rand-hell);
|
||||||
color: var(--text-leise); font-size: .92rem;
|
color: var(--text-leise); font-size: .92rem;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body class="haus">
|
<body class="haus">
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<a class="kopfleiste__zurueck" id="zurueck-weg" href="start.html">‹ Zurück</a>
|
<a class="kopfleiste__zurueck" id="zurueck-weg" href="start.html">‹ Zurück</a>
|
||||||
<div class="kopfleiste__mitte"><span class="kopfleiste__titel">Anruf-Probe</span></div>
|
<div class="kopfleiste__mitte"><span class="kopfleiste__titel">Anruf-Probe</span></div>
|
||||||
<div class="kopfleiste__rechts"></div>
|
<div class="kopfleiste__rechts"></div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="probe">
|
<main class="probe">
|
||||||
<h1>Warum klingelt es nicht?</h1>
|
<h1>Warum klingelt es nicht?</h1>
|
||||||
<p class="probe__unter">
|
<p class="probe__unter">
|
||||||
Diese Seite geht der Reihe nach durch, was ein Anruf braucht – und sagt,
|
Diese Seite geht der Reihe nach durch, was ein Anruf braucht – und sagt,
|
||||||
an welcher Stelle es hakt. Sie ruft niemanden an.
|
an welcher Stelle es hakt. Sie ruft niemanden an.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="ergebnis"></div>
|
<div id="ergebnis"></div>
|
||||||
|
|
||||||
<button type="button" class="knopf probe__knopf" id="ton-probe">Klingelton anhören</button>
|
<button type="button" class="knopf probe__knopf" id="ton-probe">Klingelton anhören</button>
|
||||||
|
|
||||||
<p class="probe__ende" id="rat"></p>
|
<p class="probe__ende" id="rat"></p>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>␍
|
||||||
|
|
||||||
<script src="assets/js/anruf-probe.js?v=202609191915" defer></script>
|
<script src="assets/js/anruf-probe.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -22,25 +22,25 @@
|
|||||||
},
|
},
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "/assets/img/app-symbole/workspace-192.png?v=202609191915",
|
"src": "/assets/img/app-symbole/workspace-192.png?v=202609191956",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"purpose": "any"
|
"purpose": "any"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "/assets/img/app-symbole/workspace-512.png?v=202609191915",
|
"src": "/assets/img/app-symbole/workspace-512.png?v=202609191956",
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"purpose": "any"
|
"purpose": "any"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609191915",
|
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609191956",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"purpose": "maskable"
|
"purpose": "maskable"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609191915",
|
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609191956",
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"purpose": "maskable"
|
"purpose": "maskable"
|
||||||
|
|||||||
@@ -269,132 +269,10 @@
|
|||||||
|
|
||||||
/* ---------- Bearbeiten-Dialog ------------------------------------------ */
|
/* ---------- Bearbeiten-Dialog ------------------------------------------ */
|
||||||
|
|
||||||
/* =====================================================================
|
|
||||||
DIALOGE (07.09.2026 überarbeitet)
|
|
||||||
|
|
||||||
Filipe zu zwei davon: "lass alles in dieser kachel viel spezieller und
|
|
||||||
geiler aussehen" und "dass soll auch viel besser aussehen".
|
|
||||||
|
|
||||||
Er hatte recht, und der Grund war nicht Geschmack: Ein Dialog war
|
|
||||||
bisher ein grauer Kasten (`background: #0b1018`, ein Rand, fertig) --
|
|
||||||
während die Seite dahinter aus beleuchteten Platten mit Schienen,
|
|
||||||
Körnung und Glanz besteht. Beim Öffnen fiel man aus dem einen
|
|
||||||
Material ins andere.
|
|
||||||
|
|
||||||
Jetzt trägt er dieselbe Sprache wie alles übrige:
|
|
||||||
- Leuchtschiene links, im Hausakzent
|
|
||||||
- Kopfzeile abgesetzt mit einer feinen Fuge
|
|
||||||
- Körnung und ein fester Glanz von links oben
|
|
||||||
- Materialstärke: Licht oben, Schatten unten
|
|
||||||
Und er ist deutlich TIEFER als vorher (#0b1018 war ein helles Grau
|
|
||||||
gegen das, was jetzt hinter ihm liegt) -- ein Dialog muss sich vom
|
|
||||||
Untergrund abheben, sonst schwimmt er darin.
|
|
||||||
|
|
||||||
Der Hintergrund dahinter wird STÄRKER abgedunkelt und weicher
|
|
||||||
gezeichnet: Ein Dialog ist der einzige Ort, an dem ein Weichzeichner
|
|
||||||
richtig ist -- er soll das Dahinter ausdrücklich zurücktreten
|
|
||||||
lassen. Genau dafür ist er gemacht, und genau deshalb war er unter
|
|
||||||
den Kacheln falsch.
|
|
||||||
===================================================================== */
|
|
||||||
.dialog {
|
|
||||||
position: relative;
|
|
||||||
width: min(580px, calc(100vw - 32px));
|
|
||||||
padding: 0;
|
|
||||||
border: 1px solid rgba(150, 186, 220, .16);
|
|
||||||
/* DIE FASE STATT RUNDER ECKEN (08.09.2026).
|
|
||||||
|
|
||||||
Filipe: "alles was sie sehen soll dan auch nach der neuen struktur
|
|
||||||
aufgebaut sein" -- und ein Dialog ist das, was man am genauesten
|
|
||||||
ansieht, weil er alles andere verdeckt.
|
|
||||||
|
|
||||||
Er kann NICHT in die Modulliste von module.css: Die belegt
|
|
||||||
`::before` und `::after` fuer die Eckwinkel, und beide sind hier
|
|
||||||
schon vergeben -- an die Leuchtschiene links und den Lichtsaum.
|
|
||||||
Beides gegen zwei Winkel zu tauschen waere ein Rueckschritt.
|
|
||||||
Deshalb hier nur der Zuschnitt, von Hand, mit derselben Groesse
|
|
||||||
`--fase` wie ueberall. Wer die Fase spaeter aendert, aendert sie
|
|
||||||
hier mit. */
|
|
||||||
clip-path: polygon(var(--fase, 18px) 0, 100% 0, 100% 100%, 0 100%, 0 var(--fase, 18px));
|
|
||||||
border-radius: 0;
|
|
||||||
background:
|
|
||||||
linear-gradient(90deg,
|
|
||||||
color-mix(in srgb, var(--akzent) 16%, transparent) 0%,
|
|
||||||
color-mix(in srgb, var(--akzent) 5%, transparent) 14%,
|
|
||||||
transparent 40%),
|
|
||||||
linear-gradient(163deg, #141c29 0%, #0a0e17 58%, #070a11 100%);
|
|
||||||
color: var(--text);
|
|
||||||
box-shadow:
|
|
||||||
inset 0 1px 0 rgba(255, 255, 255, .10),
|
|
||||||
inset 0 -1px 0 rgba(0, 0, 0, .55),
|
|
||||||
inset 2px 0 0 -1px color-mix(in srgb, var(--akzent) 34%, transparent),
|
|
||||||
0 30px 70px -24px rgba(0, 0, 0, .92),
|
|
||||||
0 4px 12px -6px rgba(0, 0, 0, .7);
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
/* Die Leuchtschiene -- dieselbe wie an jeder Kachel. */
|
|
||||||
.dialog::before {
|
|
||||||
content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
|
|
||||||
border-radius: 4px 0 0 4px;
|
|
||||||
background: linear-gradient(180deg,
|
|
||||||
color-mix(in srgb, var(--akzent) 55%, #fff) 0%,
|
|
||||||
var(--akzent) 26%,
|
|
||||||
color-mix(in srgb, var(--akzent) 48%, transparent) 100%);
|
|
||||||
box-shadow:
|
|
||||||
0 0 9px 0 color-mix(in srgb, var(--akzent) 55%, transparent),
|
|
||||||
3px 0 20px -3px color-mix(in srgb, var(--akzent) 42%, transparent);
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
/* Glanz und Körnung. `pointer-events: none` ist Pflicht: Ohne das läge
|
|
||||||
eine unsichtbare Fläche über dem ganzen Formular, und kein einziges
|
|
||||||
Feld wäre anklickbar. */
|
|
||||||
.dialog::after {
|
|
||||||
content: ""; position: absolute; inset: 0; pointer-events: none;
|
|
||||||
border-radius: inherit;
|
|
||||||
background:
|
|
||||||
linear-gradient(122deg,
|
|
||||||
rgba(255, 255, 255, .075) 0%,
|
|
||||||
rgba(255, 255, 255, .020) 15%,
|
|
||||||
transparent 34%);
|
|
||||||
/* Ohne Körnung -- siehe die Begründung in automation.css: Auf einer
|
|
||||||
Ebene mit der Spiegelung erbt sie deren Deckkraft und wird zum
|
|
||||||
grauen Schleier. */
|
|
||||||
opacity: .55;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
.dialog > * { position: relative; z-index: 2; }
|
|
||||||
|
|
||||||
.dialog::backdrop {
|
|
||||||
background: rgba(2, 4, 8, .78);
|
|
||||||
backdrop-filter: blur(6px) saturate(80%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.neu--blank { margin: 0; border: 0; background: none; padding: 22px 24px 20px; }
|
.neu--blank { margin: 0; border: 0; background: none; padding: 22px 24px 20px; }
|
||||||
|
|
||||||
/* Der Kopf steht auf einer eigenen Stufe: Überschrift, darunter der
|
|
||||||
erklärende Satz, darunter eine feine Fuge. Ohne diese Trennung
|
|
||||||
verschwimmt die Ansage mit dem ersten Feld -- und genau die Ansage
|
|
||||||
ist das, was den Dialog erklärt. */
|
|
||||||
.dialog__titel {
|
|
||||||
margin: 0 0 4px;
|
|
||||||
font-size: 1.24rem; font-weight: 700; letter-spacing: -.015em;
|
|
||||||
color: #f2f7fd;
|
|
||||||
}
|
|
||||||
.dialog__unter {
|
|
||||||
margin: 0 0 16px; padding-bottom: 16px;
|
|
||||||
border-bottom: 1px solid rgba(150, 186, 220, .12);
|
|
||||||
font-size: .87rem; line-height: 1.55;
|
|
||||||
color: var(--text-leise);
|
|
||||||
}
|
|
||||||
/* Hat ein Dialog keine Erklärung, muss die Fuge trotzdem da sein --
|
|
||||||
sonst hängt die Überschrift am ersten Feld. */
|
|
||||||
.dialog__titel:last-of-type,
|
|
||||||
.dialog__unter:empty { border-bottom: 0; }
|
|
||||||
.dialog__unter:empty {
|
|
||||||
margin: 0 0 16px; padding-bottom: 16px;
|
|
||||||
border-bottom: 1px solid rgba(150, 186, 220, .12);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dialog__knoepfe { display: flex; gap: 10px; align-items: center; margin-top: 16px; flex-wrap: wrap; }
|
|
||||||
.dialog__knoepfe #b-loeschen { margin-left: auto; }
|
.dialog__knoepfe #b-loeschen { margin-left: auto; }
|
||||||
|
|
||||||
.abmelden--warnung { color: var(--warn); border-color: rgba(255, 154, 162, .35); }
|
.abmelden--warnung { color: var(--warn); border-color: rgba(255, 154, 162, .35); }
|
||||||
@@ -858,13 +736,6 @@
|
|||||||
}
|
}
|
||||||
.abbruch-karte .schritt { font-size: .8rem; padding: 7px 13px; }
|
.abbruch-karte .schritt { font-size: .8rem; padding: 7px 13px; }
|
||||||
|
|
||||||
/* ---------- Der Dialog --------------------------------------------------- */
|
|
||||||
|
|
||||||
.dialog__unter {
|
|
||||||
margin: -4px 0 14px;
|
|
||||||
font-size: .85rem; color: var(--text-still);
|
|
||||||
max-width: 60ch; line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
#abbruch-grund {
|
#abbruch-grund {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@@ -225,9 +225,6 @@
|
|||||||
color: var(--text); border-color: var(--rand-hell);
|
color: var(--text); border-color: var(--rand-hell);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------- Der Import --------------------------------------------------- */
|
|
||||||
|
|
||||||
.dialog--breit { max-width: 720px; }
|
|
||||||
|
|
||||||
.import-vorschau {
|
.import-vorschau {
|
||||||
margin: 4px 0 14px; padding: 16px;
|
margin: 4px 0 14px; padding: 16px;
|
||||||
@@ -355,7 +352,6 @@
|
|||||||
.anleitung li::marker { color: var(--akzent); font-weight: 700; }
|
.anleitung li::marker { color: var(--akzent); font-weight: 700; }
|
||||||
.anleitung strong { color: var(--text-leise); }
|
.anleitung strong { color: var(--text-leise); }
|
||||||
|
|
||||||
.dialog__unter--still { font-size: .8rem; color: var(--text-still); }
|
|
||||||
|
|
||||||
/* ---- EINGEKLAPPTE HILFE (11.09.2026) ------------------------------
|
/* ---- EINGEKLAPPTE HILFE (11.09.2026) ------------------------------
|
||||||
Filipe zum Backstage-Fenster: "die sieht so scheisse aus."
|
Filipe zum Backstage-Fenster: "die sieht so scheisse aus."
|
||||||
@@ -426,10 +422,6 @@
|
|||||||
}
|
}
|
||||||
.feld-datei { flex: 1 1 220px; min-width: 0; font-size: .76rem; }
|
.feld-datei { flex: 1 1 220px; min-width: 0; font-size: .76rem; }
|
||||||
|
|
||||||
/* Ein Fenster, das laenger ist als der Bildschirm, versteckt seine
|
|
||||||
eigenen Knoepfe. Gerollt wird INNEN, damit "Uebernehmen" immer
|
|
||||||
erreichbar bleibt. */
|
|
||||||
.dialog--breit .neu { max-height: min(86vh, 900px); overflow-y: auto; }
|
|
||||||
|
|
||||||
/* =====================================================================
|
/* =====================================================================
|
||||||
ZEITRÄUME AUS BACKSTAGE — dritte Fassung (16.09.2026)
|
ZEITRÄUME AUS BACKSTAGE — dritte Fassung (16.09.2026)
|
||||||
|
|||||||
@@ -559,3 +559,259 @@
|
|||||||
der Rundgang sechsmal gemeldet hat. */
|
der Rundgang sechsmal gemeldet hat. */
|
||||||
.filterreihe__knopf, .k-chip { min-width: 44px; }
|
.filterreihe__knopf, .k-chip { min-width: 44px; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* =====================================================================
|
||||||
|
DER DIALOG — hierher verschoben am 19.09.2026
|
||||||
|
|
||||||
|
Er stand in `aufgaben.css` und `leistung.css`. Das war richtig,
|
||||||
|
solange nur diese zwei Seiten einen Dialog hatten. Seit es
|
||||||
|
`nachfrage.js` gibt, kann JEDE Seite nachfragen, bevor etwas weg
|
||||||
|
ist -- und auf einer Seite, die `aufgaben.css` nicht laedt, waere
|
||||||
|
der Dialog ungestaltet gewesen: weisser Kasten, Systemschrift,
|
||||||
|
mitten auf einer dunklen Seite.
|
||||||
|
|
||||||
|
`module.css` laedt auf jeder Seite (vorletzte Datei, direkt vor
|
||||||
|
`haus.css`). Was mehr als eine Seite benutzt, gehoert hierher.
|
||||||
|
|
||||||
|
In `aufgaben.css` bleibt genau eine Regel: `.dialog__knoepfe
|
||||||
|
#b-loeschen` -- die haengt an einer ID, die es nur dort gibt.
|
||||||
|
===================================================================== */
|
||||||
|
/* =====================================================================
|
||||||
|
DIALOGE (07.09.2026 überarbeitet)
|
||||||
|
|
||||||
|
Filipe zu zwei davon: "lass alles in dieser kachel viel spezieller und
|
||||||
|
geiler aussehen" und "dass soll auch viel besser aussehen".
|
||||||
|
|
||||||
|
Er hatte recht, und der Grund war nicht Geschmack: Ein Dialog war
|
||||||
|
bisher ein grauer Kasten (`background: #0b1018`, ein Rand, fertig) --
|
||||||
|
während die Seite dahinter aus beleuchteten Platten mit Schienen,
|
||||||
|
Körnung und Glanz besteht. Beim Öffnen fiel man aus dem einen
|
||||||
|
Material ins andere.
|
||||||
|
|
||||||
|
Jetzt trägt er dieselbe Sprache wie alles übrige:
|
||||||
|
- Leuchtschiene links, im Hausakzent
|
||||||
|
- Kopfzeile abgesetzt mit einer feinen Fuge
|
||||||
|
- Körnung und ein fester Glanz von links oben
|
||||||
|
- Materialstärke: Licht oben, Schatten unten
|
||||||
|
Und er ist deutlich TIEFER als vorher (#0b1018 war ein helles Grau
|
||||||
|
gegen das, was jetzt hinter ihm liegt) -- ein Dialog muss sich vom
|
||||||
|
Untergrund abheben, sonst schwimmt er darin.
|
||||||
|
|
||||||
|
Der Hintergrund dahinter wird STÄRKER abgedunkelt und weicher
|
||||||
|
gezeichnet: Ein Dialog ist der einzige Ort, an dem ein Weichzeichner
|
||||||
|
richtig ist -- er soll das Dahinter ausdrücklich zurücktreten
|
||||||
|
lassen. Genau dafür ist er gemacht, und genau deshalb war er unter
|
||||||
|
den Kacheln falsch.
|
||||||
|
===================================================================== */
|
||||||
|
.dialog {
|
||||||
|
position: relative;
|
||||||
|
width: min(580px, calc(100vw - 32px));
|
||||||
|
padding: 0;
|
||||||
|
border: 1px solid rgba(150, 186, 220, .16);
|
||||||
|
/* DIE FASE STATT RUNDER ECKEN (08.09.2026).
|
||||||
|
|
||||||
|
Filipe: "alles was sie sehen soll dan auch nach der neuen struktur
|
||||||
|
aufgebaut sein" -- und ein Dialog ist das, was man am genauesten
|
||||||
|
ansieht, weil er alles andere verdeckt.
|
||||||
|
|
||||||
|
Er kann NICHT in die Modulliste von module.css: Die belegt
|
||||||
|
`::before` und `::after` fuer die Eckwinkel, und beide sind hier
|
||||||
|
schon vergeben -- an die Leuchtschiene links und den Lichtsaum.
|
||||||
|
Beides gegen zwei Winkel zu tauschen waere ein Rueckschritt.
|
||||||
|
Deshalb hier nur der Zuschnitt, von Hand, mit derselben Groesse
|
||||||
|
`--fase` wie ueberall. Wer die Fase spaeter aendert, aendert sie
|
||||||
|
hier mit. */
|
||||||
|
clip-path: polygon(var(--fase, 18px) 0, 100% 0, 100% 100%, 0 100%, 0 var(--fase, 18px));
|
||||||
|
border-radius: 0;
|
||||||
|
background:
|
||||||
|
linear-gradient(90deg,
|
||||||
|
color-mix(in srgb, var(--akzent) 16%, transparent) 0%,
|
||||||
|
color-mix(in srgb, var(--akzent) 5%, transparent) 14%,
|
||||||
|
transparent 40%),
|
||||||
|
linear-gradient(163deg, #141c29 0%, #0a0e17 58%, #070a11 100%);
|
||||||
|
color: var(--text);
|
||||||
|
box-shadow:
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, .10),
|
||||||
|
inset 0 -1px 0 rgba(0, 0, 0, .55),
|
||||||
|
inset 2px 0 0 -1px color-mix(in srgb, var(--akzent) 34%, transparent),
|
||||||
|
0 30px 70px -24px rgba(0, 0, 0, .92),
|
||||||
|
0 4px 12px -6px rgba(0, 0, 0, .7);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Die Leuchtschiene -- dieselbe wie an jeder Kachel. */
|
||||||
|
.dialog::before {
|
||||||
|
content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
|
||||||
|
border-radius: 4px 0 0 4px;
|
||||||
|
background: linear-gradient(180deg,
|
||||||
|
color-mix(in srgb, var(--akzent) 55%, #fff) 0%,
|
||||||
|
var(--akzent) 26%,
|
||||||
|
color-mix(in srgb, var(--akzent) 48%, transparent) 100%);
|
||||||
|
box-shadow:
|
||||||
|
0 0 9px 0 color-mix(in srgb, var(--akzent) 55%, transparent),
|
||||||
|
3px 0 20px -3px color-mix(in srgb, var(--akzent) 42%, transparent);
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Glanz und Körnung. `pointer-events: none` ist Pflicht: Ohne das läge
|
||||||
|
eine unsichtbare Fläche über dem ganzen Formular, und kein einziges
|
||||||
|
Feld wäre anklickbar. */
|
||||||
|
.dialog::after {
|
||||||
|
content: ""; position: absolute; inset: 0; pointer-events: none;
|
||||||
|
border-radius: inherit;
|
||||||
|
background:
|
||||||
|
linear-gradient(122deg,
|
||||||
|
rgba(255, 255, 255, .075) 0%,
|
||||||
|
rgba(255, 255, 255, .020) 15%,
|
||||||
|
transparent 34%);
|
||||||
|
/* Ohne Körnung -- siehe die Begründung in automation.css: Auf einer
|
||||||
|
Ebene mit der Spiegelung erbt sie deren Deckkraft und wird zum
|
||||||
|
grauen Schleier. */
|
||||||
|
opacity: .55;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog > * { position: relative; z-index: 2; }
|
||||||
|
|
||||||
|
.dialog::backdrop {
|
||||||
|
background: rgba(2, 4, 8, .78);
|
||||||
|
backdrop-filter: blur(6px) saturate(80%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Der Kopf steht auf einer eigenen Stufe: Überschrift, darunter der
|
||||||
|
erklärende Satz, darunter eine feine Fuge. Ohne diese Trennung
|
||||||
|
verschwimmt die Ansage mit dem ersten Feld -- und genau die Ansage
|
||||||
|
ist das, was den Dialog erklärt. */
|
||||||
|
.dialog__titel {
|
||||||
|
margin: 0 0 4px;
|
||||||
|
font-size: 1.24rem; font-weight: 700; letter-spacing: -.015em;
|
||||||
|
color: #f2f7fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog__unter {
|
||||||
|
margin: 0 0 16px; padding-bottom: 16px;
|
||||||
|
border-bottom: 1px solid rgba(150, 186, 220, .12);
|
||||||
|
font-size: .87rem; line-height: 1.55;
|
||||||
|
color: var(--text-leise);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hat ein Dialog keine Erklärung, muss die Fuge trotzdem da sein --
|
||||||
|
sonst hängt die Überschrift am ersten Feld. */
|
||||||
|
.dialog__titel:last-of-type,
|
||||||
|
.dialog__unter:empty { border-bottom: 0; }
|
||||||
|
|
||||||
|
.dialog__unter:empty {
|
||||||
|
margin: 0 0 16px; padding-bottom: 16px;
|
||||||
|
border-bottom: 1px solid rgba(150, 186, 220, .12);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog__knoepfe { display: flex; gap: 10px; align-items: center; margin-top: 16px; flex-wrap: wrap; }
|
||||||
|
|
||||||
|
/* ---------- Der Dialog --------------------------------------------------- */
|
||||||
|
|
||||||
|
.dialog__unter {
|
||||||
|
margin: -4px 0 14px;
|
||||||
|
font-size: .85rem; color: var(--text-still);
|
||||||
|
max-width: 60ch; line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- Der Import --------------------------------------------------- */
|
||||||
|
|
||||||
|
.dialog--breit { max-width: 720px; }
|
||||||
|
|
||||||
|
.dialog__unter--still { font-size: .8rem; color: var(--text-still); }
|
||||||
|
|
||||||
|
/* Ein Fenster, das laenger ist als der Bildschirm, versteckt seine
|
||||||
|
eigenen Knoepfe. Gerollt wird INNEN, damit "Uebernehmen" immer
|
||||||
|
erreichbar bleibt. */
|
||||||
|
.dialog--breit .neu { max-height: min(86vh, 900px); overflow-y: auto; }
|
||||||
|
|
||||||
|
/* ---- Die zwei Zeilen, die confirm() nicht kann ---------------------
|
||||||
|
`nachfrage.js` baut den Dialog; diese beiden Teile gibt es nur dort.
|
||||||
|
|
||||||
|
Die Endgueltig-Zeile ist der wichtigste Satz im ganzen Dialog --
|
||||||
|
sie beantwortet die einzige Frage, die vor einem Loeschen zaehlt.
|
||||||
|
Deshalb bekommt sie eine eigene Farbe UND ein Zeichen davor: Farbe
|
||||||
|
allein traegt keine Aussage (Rot-Gruen-Schwaeche, Kontrastmodus),
|
||||||
|
und im Kontrastmodus wird `color` ohnehin ersetzt. Das Zeichen
|
||||||
|
bleibt in jedem Fall. */
|
||||||
|
.nachfrage__endgueltig {
|
||||||
|
margin: 0 0 4px;
|
||||||
|
padding: 8px 10px;
|
||||||
|
font-size: .86rem;
|
||||||
|
line-height: 1.45;
|
||||||
|
color: #ffd9d2;
|
||||||
|
background: rgba(190, 74, 60, .13);
|
||||||
|
border-left: 3px solid rgba(214, 96, 80, .62);
|
||||||
|
}
|
||||||
|
.nachfrage__endgueltig::before { content: "! "; font-weight: 800; }
|
||||||
|
|
||||||
|
/* Der Fehler IM Dialog (z. B. fehlender Grund). Er darf nicht
|
||||||
|
aussehen wie der Fehlerstreifen der Seite dahinter -- der ist
|
||||||
|
verdeckt, dieser hier gehoert zum Formular. Leer nimmt er keinen
|
||||||
|
Platz weg, sonst rutschten die Knoepfe beim ersten Fehler. */
|
||||||
|
.nachfrage__fehler { margin: 0; font-size: .86rem; color: #ffb4a8; }
|
||||||
|
.nachfrage__fehler:empty { display: none; }
|
||||||
|
|
||||||
|
/* Am Handy klebt der Dialog sonst am oberen Rand und die Knoepfe
|
||||||
|
liegen unter der Tastatur. Er waechst von unten, wie ein Blatt,
|
||||||
|
das hochgezogen wird -- das ist dort die gewohnte Richtung. */
|
||||||
|
@media (max-width: 560px) {
|
||||||
|
.nachfrage { margin: auto auto 0; width: 100vw; max-width: 100vw; }
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (forced-colors: active) {
|
||||||
|
.nachfrage__endgueltig { border-left: 3px solid CanvasText; background: Canvas; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Der kleine Hinweis unter einem Feld im Nachfrage-Dialog ("Du kannst
|
||||||
|
bis zu 14 Tage geben"). Er steht UNTER dem Feld, nicht daneben:
|
||||||
|
daneben rutscht er am Handy weg, und dort liest ihn niemand. */
|
||||||
|
.nachfrage__hinweis { margin: 4px 0 0; font-size: .8rem; color: var(--text-still); }
|
||||||
|
.nachfrage__hinweis:empty { display: none; }
|
||||||
|
|
||||||
|
/* ---- Der Dialog steht auf eigenen Füßen ---------------------------
|
||||||
|
NACHGEMESSEN AM 19.09.2026, und es war genau derselbe Fehler wie
|
||||||
|
bei `.dialog` selbst: Das Formular trug erst die Klassen
|
||||||
|
`neu neu--blank` — und `.neu` gibt seine Abstände NUR in
|
||||||
|
`aufgaben.css`. Gemessen auf einer Seite ohne diese Datei:
|
||||||
|
`padding: 0px`. Der Text klebte am Rand, und die Eingabefelder
|
||||||
|
verloren ihre `height: 44px` — also ausgerechnet die Größe, die
|
||||||
|
ein Daumen trifft.
|
||||||
|
|
||||||
|
Am Bildschirm sah es trotzdem "irgendwie richtig" aus, weil die
|
||||||
|
Schrift und die Farben aus `gate.css` kamen. Solche Abhängigkeiten
|
||||||
|
sieht man nicht, man misst sie.
|
||||||
|
|
||||||
|
Deshalb steht hier alles, was der Dialog braucht — er borgt nichts
|
||||||
|
mehr aus einer Seitendatei. `.knopf`, `.abmelden` und `.feld-schild`
|
||||||
|
bleiben: die stehen in `gate.css` bzw. `start.css`, und die lädt
|
||||||
|
jede Seite. */
|
||||||
|
.nachfrage__form { margin: 0; padding: 20px; display: grid; gap: 10px; }
|
||||||
|
.nachfrage__zeile { display: grid; gap: 5px; }
|
||||||
|
.nachfrage__form input,
|
||||||
|
.nachfrage__form textarea {
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font: inherit;
|
||||||
|
color: var(--text);
|
||||||
|
background: var(--tinte);
|
||||||
|
border: 1px solid var(--rand);
|
||||||
|
border-radius: var(--radius, 10px);
|
||||||
|
padding: 8px 10px;
|
||||||
|
}
|
||||||
|
/* 44 Pixel, weil ein Daumen weniger nicht sicher trifft. Dieselbe Zahl
|
||||||
|
wie überall im Haus -- sie steht hier, damit sie nicht davon abhängt,
|
||||||
|
welche Seitendatei zufällig geladen ist. */
|
||||||
|
.nachfrage__form input { height: 44px; }
|
||||||
|
.nachfrage__form textarea { min-height: 62px; resize: vertical; }
|
||||||
|
.nachfrage__form input:focus,
|
||||||
|
.nachfrage__form textarea:focus {
|
||||||
|
outline: none;
|
||||||
|
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, .75),
|
||||||
|
0 0 0 3px rgba(63, 189, 245, .16);
|
||||||
|
}
|
||||||
|
/* Die Knöpfe unten bekommen Luft nach oben -- sonst sitzt "Löschen"
|
||||||
|
direkt unter dem Satz, der davor warnt. */
|
||||||
|
.nachfrage .dialog__knoepfe { margin-top: 6px; }
|
||||||
|
|||||||
@@ -110,9 +110,17 @@
|
|||||||
es sonst ab, und das ist richtig so. Hier wird deshalb
|
es sonst ab, und das ist richtig so. Hier wird deshalb
|
||||||
gleich danach gefragt statt eine Fehlermeldung zu zeigen. */
|
gleich danach gefragt statt eine Fehlermeldung zu zeigen. */
|
||||||
if (wert === 'verbessern') {
|
if (wert === 'verbessern') {
|
||||||
grund = prompt('Was genau soll verbessert werden?\n\n'
|
const ag = await frageNach({
|
||||||
+ 'Ohne diesen Satz kann der Creator nichts damit anfangen.', grund) || '';
|
titel: 'Noch verbessern',
|
||||||
if (grund.trim().length < 5) return;
|
was: 'Der Creator sieht diesen Satz an seinem Eintrag.',
|
||||||
|
bleibt: 'Der Eintrag bleibt stehen – er wird nur als „noch '
|
||||||
|
+ 'verbessern" markiert und kann überarbeitet werden.',
|
||||||
|
ja: 'Zurückgeben',
|
||||||
|
grund: 'Was genau soll verbessert werden?', grundPflicht: true,
|
||||||
|
platzhalter: 'z. B. Das Licht ist zu dunkel – bitte heller nachdrehen.',
|
||||||
|
});
|
||||||
|
if (!ag) return;
|
||||||
|
grund = ag.grund;
|
||||||
}
|
}
|
||||||
k.disabled = true;
|
k.disabled = true;
|
||||||
try {
|
try {
|
||||||
@@ -204,7 +212,12 @@
|
|||||||
weg.type = 'button';
|
weg.type = 'button';
|
||||||
weg.title = 'Eigene Nachricht zurücknehmen';
|
weg.title = 'Eigene Nachricht zurücknehmen';
|
||||||
weg.addEventListener('click', async () => {
|
weg.addEventListener('click', async () => {
|
||||||
if (!confirm('Diese Nachricht zurücknehmen?')) return;
|
if (!await frageNach({
|
||||||
|
titel: 'Nachricht zurücknehmen?',
|
||||||
|
was: 'Der Text verschwindet für alle, die ihn noch nicht gelesen haben.',
|
||||||
|
bleibt: 'Wer ihn schon gelesen hat, erinnert sich trotzdem daran.',
|
||||||
|
endgueltig: true, ja: 'Zurücknehmen',
|
||||||
|
})) return;
|
||||||
try {
|
try {
|
||||||
const a = await hole(`/workspace/api/eintrag/${eintragId}/nachricht/${n.id}`,
|
const a = await hole(`/workspace/api/eintrag/${eintragId}/nachricht/${n.id}`,
|
||||||
{ method: 'DELETE' });
|
{ method: 'DELETE' });
|
||||||
|
|||||||
@@ -129,7 +129,12 @@
|
|||||||
weg.title = 'Rückmeldung entfernen';
|
weg.title = 'Rückmeldung entfernen';
|
||||||
weg.setAttribute('aria-label', 'Rückmeldung entfernen');
|
weg.setAttribute('aria-label', 'Rückmeldung entfernen');
|
||||||
weg.addEventListener('click', async () => {
|
weg.addEventListener('click', async () => {
|
||||||
if (!confirm('Diese Rückmeldung entfernen?')) return;
|
if (!await frageNach({
|
||||||
|
titel: 'Rückmeldung entfernen?',
|
||||||
|
was: 'Sie verschwindet aus der Aufgabe.',
|
||||||
|
bleibt: 'Die Aufgabe selbst bleibt unverändert stehen.',
|
||||||
|
endgueltig: true, ja: 'Entfernen',
|
||||||
|
})) return;
|
||||||
const r = await hole('/workspace/api/notizen/' + n.id, { method: 'DELETE' });
|
const r = await hole('/workspace/api/notizen/' + n.id, { method: 'DELETE' });
|
||||||
if (!r.ok) { melde('Entfernen hat nicht geklappt.'); return; }
|
if (!r.ok) { melde('Entfernen hat nicht geklappt.'); return; }
|
||||||
await laden();
|
await laden();
|
||||||
@@ -997,11 +1002,15 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
$('b-loeschen').addEventListener('click', async () => {
|
$('b-loeschen').addEventListener('click', async () => {
|
||||||
if (!confirm(`Aufgabe wirklich loeschen?
|
/* Loeschen ist hier fast nie das Richtige -- deshalb nennt der
|
||||||
|
Dialog den sanfteren Weg beim Namen, statt nur zu warnen. */
|
||||||
"${bearbeitet.titel}"
|
if (!await frageNach({
|
||||||
|
titel: `„${bearbeitet.titel}" löschen?`,
|
||||||
Das laesst sich nicht rueckgaengig machen. Erledigte Aufgaben sollten normalerweise stehen bleiben.`)) return;
|
was: 'Die Aufgabe wird samt Rückmeldungen und Verlauf entfernt.',
|
||||||
|
bleibt: 'Wenn sie nur nicht mehr stören soll: „Abbrechen" legt sie '
|
||||||
|
+ 'beiseite, ohne etwas wegzuwerfen – dort ist sie später noch da.',
|
||||||
|
endgueltig: true, ja: 'Endgültig löschen',
|
||||||
|
})) return;
|
||||||
try {
|
try {
|
||||||
const a = await hole(`/workspace/api/aufgaben/${bearbeitet.id}`, { method: 'DELETE' });
|
const a = await hole(`/workspace/api/aufgaben/${bearbeitet.id}`, { method: 'DELETE' });
|
||||||
if (!a.ok) { $('b-fehler').textContent = 'Loeschen ging nicht.'; return; }
|
if (!a.ok) { $('b-fehler').textContent = 'Loeschen ging nicht.'; return; }
|
||||||
|
|||||||
@@ -518,8 +518,13 @@
|
|||||||
b.type = 'button';
|
b.type = 'button';
|
||||||
b.title = 'Schickt Art, Titel und Text als Nachricht in den Chat.';
|
b.title = 'Schickt Art, Titel und Text als Nachricht in den Chat.';
|
||||||
b.addEventListener('click', async () => {
|
b.addEventListener('click', async () => {
|
||||||
if (!confirm(`„${e.titel}“ als Nachricht schicken?\n\n`
|
if (!await frageNach({
|
||||||
+ 'Die Person bekommt Art, Titel und Text im Chat – einmalig.')) return;
|
titel: `„${e.titel}" als Nachricht schicken?`,
|
||||||
|
was: 'Die Person bekommt Art, Titel und Text im Chat – einmalig.',
|
||||||
|
bleibt: 'Der Eintrag bleibt hier stehen. Zurückholen lässt sich '
|
||||||
|
+ 'die Nachricht nicht, sobald sie unterwegs ist.',
|
||||||
|
ja: 'Schicken',
|
||||||
|
})) return;
|
||||||
b.disabled = true;
|
b.disabled = true;
|
||||||
const a = await hole(`/workspace/api/bereich/entwicklung/${e.id}/senden`,
|
const a = await hole(`/workspace/api/bereich/entwicklung/${e.id}/senden`,
|
||||||
{ method: 'POST', headers: { 'Content-Type': 'application/json' } });
|
{ method: 'POST', headers: { 'Content-Type': 'application/json' } });
|
||||||
@@ -897,9 +902,17 @@
|
|||||||
const vomTeam = !!e.erstellt_rolle && e.erstellt_rolle !== 'gast';
|
const vomTeam = !!e.erstellt_rolle && e.erstellt_rolle !== 'gast';
|
||||||
if (!lage.team && e.erstellt_von !== ich.id && !vomTeam) {
|
if (!lage.team && e.erstellt_von !== ich.id && !vomTeam) {
|
||||||
zeile.append(tuKnopf('melden', async () => {
|
zeile.append(tuKnopf('melden', async () => {
|
||||||
const grund = prompt('Was ist daran nicht in Ordnung?\n\n'
|
const a0 = await frageNach({
|
||||||
+ 'Bitte schreib es in einem Satz – sonst können wir es nicht prüfen.');
|
titel: 'Diesen Beitrag melden?',
|
||||||
if (grund === null) return;
|
was: 'Das Team sieht sich den Beitrag an. Du bleibst dabei ungenannt.',
|
||||||
|
bleibt: 'Der Beitrag bleibt vorerst stehen – gemeldet heißt noch '
|
||||||
|
+ 'nicht entfernt.',
|
||||||
|
ja: 'Melden',
|
||||||
|
grund: 'Was ist daran nicht in Ordnung?', grundPflicht: true,
|
||||||
|
platzhalter: 'Bitte in einem Satz – sonst können wir es nicht prüfen.',
|
||||||
|
});
|
||||||
|
if (!a0) return;
|
||||||
|
const grund = a0.grund;
|
||||||
const a = await hole('/workspace/api/treff/eintrag/' + e.id + '/melden', {
|
const a = await hole('/workspace/api/treff/eintrag/' + e.id + '/melden', {
|
||||||
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify({ grund }),
|
body: JSON.stringify({ grund }),
|
||||||
@@ -956,7 +969,13 @@
|
|||||||
dass er einer wird, entscheidet ein Mensch. */
|
dass er einer wird, entscheidet ein Mensch. */
|
||||||
if (bereich === 'mitmachen' && e.erstellt_rolle === 'gast') {
|
if (bereich === 'mitmachen' && e.erstellt_rolle === 'gast') {
|
||||||
zeile.append(tuKnopf('zu den Talenten', async () => {
|
zeile.append(tuKnopf('zu den Talenten', async () => {
|
||||||
if (!confirm('„' + e.titel + '“ zu den Talenten übernehmen?')) return;
|
if (!await frageNach({
|
||||||
|
titel: '„' + e.titel + '" zu den Talenten übernehmen?',
|
||||||
|
was: 'Die Person erscheint danach in der Talente-Liste.',
|
||||||
|
bleibt: 'Der Beitrag hier bleibt stehen. Übernehmen heißt noch '
|
||||||
|
+ 'keine Zusage – es entscheidet weiterhin ein Mensch.',
|
||||||
|
ja: 'Übernehmen',
|
||||||
|
})) return;
|
||||||
const a = await hole('/workspace/api/treff/mitmachen/' + e.id + '/uebernehmen',
|
const a = await hole('/workspace/api/treff/mitmachen/' + e.id + '/uebernehmen',
|
||||||
{ method: 'POST', headers: { 'Content-Type': 'application/json' }, body: '{}' });
|
{ method: 'POST', headers: { 'Content-Type': 'application/json' }, body: '{}' });
|
||||||
const j = await a.json().catch(() => ({}));
|
const j = await a.json().catch(() => ({}));
|
||||||
@@ -971,9 +990,17 @@
|
|||||||
fuer den eigenen Beitrag, und der braucht keine Begruendung. */
|
fuer den eigenen Beitrag, und der braucht keine Begruendung. */
|
||||||
if (e.erstellt_von !== ich.id) {
|
if (e.erstellt_von !== ich.id) {
|
||||||
zeile.append(tuKnopf('entfernen', async () => {
|
zeile.append(tuKnopf('entfernen', async () => {
|
||||||
const grund = prompt('Warum wird „' + e.titel + '“ entfernt?\n\n'
|
const a1 = await frageNach({
|
||||||
+ 'Der Grund wird festgehalten – die Person hat ein Recht darauf.');
|
titel: '„' + e.titel + '" entfernen?',
|
||||||
if (grund === null) return;
|
was: 'Der Beitrag verschwindet vom Brett.',
|
||||||
|
bleibt: 'Der Grund wird festgehalten und der Person mitgeteilt – '
|
||||||
|
+ 'sie hat ein Recht darauf (DSA Art. 17).',
|
||||||
|
endgueltig: true, ja: 'Entfernen',
|
||||||
|
grund: 'Warum wird er entfernt?', grundPflicht: true,
|
||||||
|
platzhalter: 'z. B. Beleidigende Sprache gegenüber einem anderen Mitglied.',
|
||||||
|
});
|
||||||
|
if (!a1) return;
|
||||||
|
const grund = a1.grund;
|
||||||
/* DER GRUND REIST IN DER ADRESSE, nicht im Koerper -- aus
|
/* DER GRUND REIST IN DER ADRESSE, nicht im Koerper -- aus
|
||||||
demselben gemessenen Grund wie oben. Er ist kein
|
demselben gemessenen Grund wie oben. Er ist kein
|
||||||
Geheimnis: Er wird der Person, die den Beitrag
|
Geheimnis: Er wird der Person, die den Beitrag
|
||||||
@@ -1208,7 +1235,12 @@
|
|||||||
|
|
||||||
if (LEITUNG.has(ich.rolle) || e.erstellt_von === ich.id) {
|
if (LEITUNG.has(ich.rolle) || e.erstellt_von === ich.id) {
|
||||||
knoepfe.append(tuKnopf('löschen', async () => {
|
knoepfe.append(tuKnopf('löschen', async () => {
|
||||||
if (!confirm(`„${e.titel}" wirklich löschen?`)) return;
|
if (!await frageNach({
|
||||||
|
titel: `„${e.titel}" löschen?`,
|
||||||
|
was: 'Der Eintrag verschwindet vom Brett – für alle.',
|
||||||
|
bleibt: 'Nachrichten, die dazu geschrieben wurden, gehen mit.',
|
||||||
|
endgueltig: true, ja: 'Löschen',
|
||||||
|
})) return;
|
||||||
const a = await hole(`/workspace/api/bereich/${bereich}/${e.id}`, { method: 'DELETE' });
|
const a = await hole(`/workspace/api/bereich/${bereich}/${e.id}`, { method: 'DELETE' });
|
||||||
if (!a.ok) { melde('Löschen hat nicht geklappt.'); return; }
|
if (!a.ok) { melde('Löschen hat nicht geklappt.'); return; }
|
||||||
await laden();
|
await laden();
|
||||||
|
|||||||
@@ -368,11 +368,13 @@
|
|||||||
if (ich?.rolle === 'admin') {
|
if (ich?.rolle === 'admin') {
|
||||||
const weg = el('div', 'kk__knoepfe');
|
const weg = el('div', 'kk__knoepfe');
|
||||||
weg.append(tuKnopf('Protokoll löschen', async () => {
|
weg.append(tuKnopf('Protokoll löschen', async () => {
|
||||||
if (!confirm('Protokoll zu „' + c.titel + '" löschen?\n\n'
|
if (!await frageNach({
|
||||||
+ 'Der Text ist danach weg und lässt sich nicht wiederholen.\n\n'
|
titel: 'Protokoll zu „' + c.titel + '" löschen?',
|
||||||
+ 'Das Gespräch selbst bleibt im Kalender und steht danach '
|
was: 'Der Text ist danach weg und lässt sich nicht wiederholen.',
|
||||||
+ 'wieder unter „Protokoll fehlt".\n\n'
|
bleibt: 'Das Gespräch bleibt im Kalender und steht danach wieder '
|
||||||
+ 'Bereits daraus entstandene Aufgaben bleiben ebenfalls stehen.')) return;
|
+ 'unter „Protokoll fehlt". Daraus entstandene Aufgaben bleiben auch.',
|
||||||
|
endgueltig: true, ja: 'Protokoll löschen',
|
||||||
|
})) return;
|
||||||
const a = await hole('/workspace/api/calls/' + c.id + '/protokoll', { method: 'DELETE' });
|
const a = await hole('/workspace/api/calls/' + c.id + '/protokoll', { method: 'DELETE' });
|
||||||
if (!a.ok) {
|
if (!a.ok) {
|
||||||
melde(sagWas((await a.json().catch(() => ({}))).fehler, 'Löschen ging nicht.'));
|
melde(sagWas((await a.json().catch(() => ({}))).fehler, 'Löschen ging nicht.'));
|
||||||
|
|||||||
+21
-14
@@ -1418,8 +1418,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function zuruecknehmen(id) {
|
async function zuruecknehmen(id) {
|
||||||
if (!window.confirm('Diese Nachricht zurücknehmen? Der Text ist dann weg, '
|
if (!await frageNach({
|
||||||
+ 'im Verlauf bleibt ein Hinweis stehen.')) return;
|
titel: 'Nachricht zurücknehmen?',
|
||||||
|
was: 'Der Text ist danach weg – auch bei allen anderen.',
|
||||||
|
bleibt: 'Im Verlauf bleibt ein Hinweis stehen, dass hier etwas stand.',
|
||||||
|
endgueltig: true, ja: 'Zurücknehmen',
|
||||||
|
})) return;
|
||||||
try {
|
try {
|
||||||
const a = await hole(`/workspace/api/chat/nachrichten/${id}`, { method: 'DELETE' });
|
const a = await hole(`/workspace/api/chat/nachrichten/${id}`, { method: 'DELETE' });
|
||||||
if (!a.ok) { melde('Ging nicht.'); return; }
|
if (!a.ok) { melde('Ging nicht.'); return; }
|
||||||
@@ -2220,11 +2224,13 @@
|
|||||||
$('gespraech-weg').addEventListener('click', async () => {
|
$('gespraech-weg').addEventListener('click', async () => {
|
||||||
if (!offen) return;
|
if (!offen) return;
|
||||||
const wer = offen.name;
|
const wer = offen.name;
|
||||||
if (!window.confirm(
|
if (!await frageNach({
|
||||||
`Gespräch mit ${wer} wegräumen?\n\n`
|
titel: `Gespräch mit ${wer} wegräumen?`,
|
||||||
+ 'Es verschwindet nur bei dir. Der Verlauf beim Gegenüber bleibt '
|
was: 'Es verschwindet nur bei dir aus der Liste.',
|
||||||
+ 'vollständig.\n\nSchreibt euch jemand wieder, kommt das Gespräch '
|
bleibt: `Der Verlauf bei ${wer} bleibt vollständig. Schreibt ihr euch `
|
||||||
+ 'mit dem Neuen zurück – das Alte bleibt weg.')) return;
|
+ 'wieder, kommt das Gespräch mit dem Neuen zurück – das Alte bleibt weg.',
|
||||||
|
ja: 'Wegräumen',
|
||||||
|
})) return;
|
||||||
try {
|
try {
|
||||||
const a = await hole(`/workspace/api/chat/raeume/${offen.id}`, { method: 'DELETE' });
|
const a = await hole(`/workspace/api/chat/raeume/${offen.id}`, { method: 'DELETE' });
|
||||||
if (!a.ok) { melde('Ging nicht.'); return; }
|
if (!a.ok) { melde('Ging nicht.'); return; }
|
||||||
@@ -2252,13 +2258,14 @@
|
|||||||
if (!offen || !offen.darf_aufloesen) return;
|
if (!offen || !offen.darf_aufloesen) return;
|
||||||
const wasIstEs = offen.art === 'kanal' ? 'Kanal' : 'Gruppe';
|
const wasIstEs = offen.art === 'kanal' ? 'Kanal' : 'Gruppe';
|
||||||
const andere = Math.max(0, (offen.teilnehmer?.length || 1) - 1);
|
const andere = Math.max(0, (offen.teilnehmer?.length || 1) - 1);
|
||||||
if (!window.confirm(
|
if (!await frageNach({
|
||||||
`${wasIstEs} „${offen.name}" für alle auflösen?\n\n`
|
titel: `${wasIstEs} „${offen.name}" für alle auflösen?`,
|
||||||
+ `Der ganze Verlauf wird gelöscht – auch bei ${andere === 1
|
was: `Der ganze Verlauf wird gelöscht – auch bei ${andere === 1
|
||||||
? 'der anderen Person' : `den ${andere} anderen`}, samt aller `
|
? 'der anderen Person' : `den ${andere} anderen`}, samt aller Anhänge.`,
|
||||||
+ 'Anhänge. Das lässt sich nicht rückgängig machen.\n\n'
|
bleibt: 'Wenn du sie nur bei dir loswerden willst, nimm den Knopf '
|
||||||
+ 'Wenn du sie nur bei dir loswerden willst, nimm den Knopf '
|
+ 'daneben – dann behalten die anderen alles.',
|
||||||
+ 'daneben – dann behalten die anderen alles.')) return;
|
endgueltig: true, ja: 'Für alle auflösen',
|
||||||
|
})) return;
|
||||||
const knopf = $('raum-aufloesen');
|
const knopf = $('raum-aufloesen');
|
||||||
knopf.disabled = true;
|
knopf.disabled = true;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -440,9 +440,17 @@
|
|||||||
const neu = stufe === wert ? 'offen' : wert;
|
const neu = stufe === wert ? 'offen' : wert;
|
||||||
let grund = stand?.begruendung || '';
|
let grund = stand?.begruendung || '';
|
||||||
if (neu === 'verbessern') {
|
if (neu === 'verbessern') {
|
||||||
grund = prompt(`„${p.titel}“\n\nWas genau soll verbessert werden?\n\n`
|
const ag = await frageNach({
|
||||||
+ 'Ohne diesen Satz kann er nichts damit anfangen.', grund) || '';
|
titel: `„${p.titel}" – noch verbessern`,
|
||||||
if (grund.trim().length < 5) return;
|
was: 'Dein Satz steht danach an diesem Punkt.',
|
||||||
|
bleibt: 'Der Punkt bleibt offen und kann jederzeit wieder '
|
||||||
|
+ 'auf „in Ordnung" gesetzt werden.',
|
||||||
|
ja: 'Zurückgeben',
|
||||||
|
grund: 'Was genau soll verbessert werden?', grundPflicht: true,
|
||||||
|
platzhalter: 'z. B. Fehlt noch das Impressum unten auf der Seite.',
|
||||||
|
});
|
||||||
|
if (!ag) return;
|
||||||
|
grund = ag.grund;
|
||||||
}
|
}
|
||||||
b.disabled = true;
|
b.disabled = true;
|
||||||
try {
|
try {
|
||||||
@@ -549,7 +557,12 @@
|
|||||||
weg.type = 'button';
|
weg.type = 'button';
|
||||||
weg.title = 'Eigene Nachricht zurücknehmen';
|
weg.title = 'Eigene Nachricht zurücknehmen';
|
||||||
weg.addEventListener('click', async () => {
|
weg.addEventListener('click', async () => {
|
||||||
if (!confirm('Diese Nachricht zurücknehmen?')) return;
|
if (!await frageNach({
|
||||||
|
titel: 'Nachricht zurücknehmen?',
|
||||||
|
was: 'Der Text verschwindet aus diesem Punkt.',
|
||||||
|
bleibt: 'Der Punkt selbst und sein Stand bleiben unverändert.',
|
||||||
|
endgueltig: true, ja: 'Zurücknehmen',
|
||||||
|
})) return;
|
||||||
try {
|
try {
|
||||||
const a = await hole(`/workspace/api/checkliste/nachricht/${n.id}`,
|
const a = await hole(`/workspace/api/checkliste/nachricht/${n.id}`,
|
||||||
{ method: 'DELETE' });
|
{ method: 'DELETE' });
|
||||||
|
|||||||
@@ -213,7 +213,12 @@
|
|||||||
knoepfe.append(tuKnopf('→ LIVE', 'Als LIVE-Thema vormerken', () => uebernehmen(e, 'live')));
|
knoepfe.append(tuKnopf('→ LIVE', 'Als LIVE-Thema vormerken', () => uebernehmen(e, 'live')));
|
||||||
}
|
}
|
||||||
knoepfe.append(tuKnopf('löschen', 'Dieses Video entfernen', async () => {
|
knoepfe.append(tuKnopf('löschen', 'Dieses Video entfernen', async () => {
|
||||||
if (!confirm(`„${e.titel}" wirklich löschen?`)) return;
|
if (!await frageNach({
|
||||||
|
titel: `„${e.titel}" löschen?`,
|
||||||
|
was: 'Die Idee verschwindet aus der Planung.',
|
||||||
|
bleibt: 'Ein schon eingetragener Drehtermin im Kalender bleibt stehen.',
|
||||||
|
endgueltig: true, ja: 'Löschen',
|
||||||
|
})) return;
|
||||||
const a = await hole(`/workspace/api/bereich/content/${e.id}`, { method: 'DELETE' });
|
const a = await hole(`/workspace/api/bereich/content/${e.id}`, { method: 'DELETE' });
|
||||||
if (!a.ok) { melde('Löschen hat nicht geklappt.'); return; }
|
if (!a.ok) { melde('Löschen hat nicht geklappt.'); return; }
|
||||||
await laden();
|
await laden();
|
||||||
@@ -383,7 +388,13 @@
|
|||||||
Ausgeblendet ist nicht dasselbe wie nicht vorhanden. */
|
Ausgeblendet ist nicht dasselbe wie nicht vorhanden. */
|
||||||
if (!darfEintragen()) { ziel.append(z); continue; }
|
if (!darfEintragen()) { ziel.append(z); continue; }
|
||||||
z.append(tuKnopf('löschen', 'Säule entfernen, Videos bleiben', async () => {
|
z.append(tuKnopf('löschen', 'Säule entfernen, Videos bleiben', async () => {
|
||||||
if (!confirm(`Säule „${s.name}" entfernen? Die Videos bleiben, sie verlieren nur die Zuordnung.`)) return;
|
if (!await frageNach({
|
||||||
|
titel: `Säule „${s.name}" entfernen?`,
|
||||||
|
was: 'Die Säule verschwindet aus der Auswahl.',
|
||||||
|
bleibt: 'Alle Videos bleiben – sie stehen danach nur ohne Säule da '
|
||||||
|
+ 'und lassen sich jederzeit einer anderen zuordnen.',
|
||||||
|
ja: 'Säule entfernen',
|
||||||
|
})) return;
|
||||||
const a = await hole(`/workspace/api/content/saeulen/${s.id}`, { method: 'DELETE' });
|
const a = await hole(`/workspace/api/content/saeulen/${s.id}`, { method: 'DELETE' });
|
||||||
if (!a.ok) { melde('Ging nicht.'); return; }
|
if (!a.ok) { melde('Ging nicht.'); return; }
|
||||||
await laden();
|
await laden();
|
||||||
|
|||||||
@@ -220,7 +220,12 @@
|
|||||||
}
|
}
|
||||||
if (LEITUNG.has(ich.rolle) || (d.hochgeladen_von === ich.id && d.status !== 'freigegeben')) {
|
if (LEITUNG.has(ich.rolle) || (d.hochgeladen_von === ich.id && d.status !== 'freigegeben')) {
|
||||||
knoepfe.append(tuKnopf('löschen', async () => {
|
knoepfe.append(tuKnopf('löschen', async () => {
|
||||||
if (!confirm(`„${d.name_original}" wirklich löschen?`)) return;
|
if (!await frageNach({
|
||||||
|
titel: `„${d.name_original}" löschen?`,
|
||||||
|
was: 'Die Datei wird vom Server entfernt.',
|
||||||
|
bleibt: 'Wer sie schon heruntergeladen hat, behält seine Kopie.',
|
||||||
|
endgueltig: true, ja: 'Löschen',
|
||||||
|
})) return;
|
||||||
const a = await hole(`/workspace/api/dateien/${d.id}`, { method: 'DELETE' });
|
const a = await hole(`/workspace/api/dateien/${d.id}`, { method: 'DELETE' });
|
||||||
if (!a.ok) { melde('Löschen hat nicht geklappt.'); return; }
|
if (!a.ok) { melde('Löschen hat nicht geklappt.'); return; }
|
||||||
await laden();
|
await laden();
|
||||||
|
|||||||
@@ -287,8 +287,25 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function fallSchliessen(id) {
|
async function fallSchliessen(id) {
|
||||||
const wort = prompt('Ein Schlusswort? (Kann auch leer bleiben)');
|
/* DER EINZIGE WEG IST VORWAERTS. Gemessen am 19.09.2026: Es gibt
|
||||||
if (wort === null) return;
|
keine Route, die einen geschlossenen Fall wieder oeffnet -- weder
|
||||||
|
fuer die Leitung noch fuer die meldende Person. Ein Klick hier
|
||||||
|
ist also endgueltig, und vorher stand darueber nur die Frage
|
||||||
|
nach einem Schlusswort. Wer sie las, konnte nicht ahnen, dass
|
||||||
|
damit der Fall zugeht. */
|
||||||
|
const antwort = await frageNach({
|
||||||
|
titel: 'Diesen Fall abschließen?',
|
||||||
|
was: 'Der Fall gilt danach als erledigt. Es kann niemand mehr '
|
||||||
|
+ 'antworten – auch die Person nicht, die ihn gemeldet hat.',
|
||||||
|
bleibt: 'Der ganze Verlauf bleibt lesbar. Wieder aufmachen lässt '
|
||||||
|
+ 'sich der Fall aber nicht – dafür müsste er neu gemeldet werden.',
|
||||||
|
endgueltig: true,
|
||||||
|
ja: 'Abschließen',
|
||||||
|
grund: 'Ein Schlusswort für die Person? (darf leer bleiben)',
|
||||||
|
platzhalter: 'z. B. Wir haben mit beiden gesprochen, es ist geklärt.',
|
||||||
|
});
|
||||||
|
if (!antwort) return;
|
||||||
|
const wort = antwort.grund;
|
||||||
try {
|
try {
|
||||||
const a = await hole('/workspace/api/hilfe/' + id + '/schliessen', {
|
const a = await hole('/workspace/api/hilfe/' + id + '/schliessen', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
|||||||
@@ -64,10 +64,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function erzeugen(erneuern) {
|
async function erzeugen(erneuern) {
|
||||||
if (erneuern && !window.confirm(
|
if (erneuern && !await frageNach({
|
||||||
'Neuen Link erzeugen?\n\nDer alte hört im selben Moment auf zu funktionieren. '
|
titel: 'Neuen Link erzeugen?',
|
||||||
+ 'Ein Kalender, der ihn abonniert hat, bekommt danach keine Termine mehr, '
|
was: 'Der alte hört im selben Moment auf zu funktionieren.',
|
||||||
+ 'bis du ihm den neuen gibst.')) return;
|
bleibt: 'Deine Termine selbst bleiben. Ein Kalender, der den alten Link '
|
||||||
|
+ 'abonniert hat, bekommt aber keine mehr – bis du ihm den neuen gibst.',
|
||||||
|
endgueltig: true, ja: 'Neuen Link erzeugen',
|
||||||
|
})) return;
|
||||||
melde('');
|
melde('');
|
||||||
try {
|
try {
|
||||||
const a = await hole('/workspace/api/ics', {
|
const a = await hole('/workspace/api/ics', {
|
||||||
@@ -83,9 +86,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function abschalten() {
|
async function abschalten() {
|
||||||
if (!window.confirm(
|
if (!await frageNach({
|
||||||
'Abschalten?\n\nDeine Termine verschwinden dann aus jedem Kalender, '
|
titel: 'Kalender-Link abschalten?',
|
||||||
+ 'der sie abonniert hat.')) return;
|
was: 'Deine Termine verschwinden aus jedem Kalender, der sie abonniert hat.',
|
||||||
|
bleibt: 'Die Termine selbst bleiben hier im Workspace vollständig stehen. '
|
||||||
|
+ 'Du kannst jederzeit einen neuen Link erzeugen.',
|
||||||
|
ja: 'Abschalten',
|
||||||
|
})) return;
|
||||||
melde('');
|
melde('');
|
||||||
try {
|
try {
|
||||||
const a = await hole('/workspace/api/ics', { method: 'DELETE' });
|
const a = await hole('/workspace/api/ics', { method: 'DELETE' });
|
||||||
|
|||||||
@@ -949,11 +949,14 @@
|
|||||||
if (s.darf_aendern) {
|
if (s.darf_aendern) {
|
||||||
const knoepfe = el('div', 'k-serie__knoepfe');
|
const knoepfe = el('div', 'k-serie__knoepfe');
|
||||||
knoepfe.append(tuKnopf(s.aktiv ? 'abstellen' : 'wieder starten', async () => {
|
knoepfe.append(tuKnopf(s.aktiv ? 'abstellen' : 'wieder starten', async () => {
|
||||||
if (s.aktiv && !confirm(
|
if (s.aktiv && !await frageNach({
|
||||||
'Wiederholung „' + s.titel + '" abstellen?\n\n'
|
titel: 'Wiederholung „' + s.titel + '" abstellen?',
|
||||||
+ 'Kommende Termine, die noch niemand angefasst hat, werden aus dem '
|
was: 'Kommende Termine, die noch niemand angefasst hat, werden aus '
|
||||||
+ 'Kalender genommen. Vergangene und bearbeitete Termine bleiben stehen.\n\n'
|
+ 'dem Kalender genommen.',
|
||||||
+ 'Du kannst sie jederzeit wieder starten.')) return;
|
bleibt: 'Vergangene und bearbeitete Termine bleiben stehen. Du kannst '
|
||||||
|
+ 'die Wiederholung jederzeit wieder starten.',
|
||||||
|
ja: 'Abstellen',
|
||||||
|
})) return;
|
||||||
const a = await hole('/workspace/api/serien/' + s.id, {
|
const a = await hole('/workspace/api/serien/' + s.id, {
|
||||||
method: 'PATCH',
|
method: 'PATCH',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
@@ -963,10 +966,14 @@
|
|||||||
await laden();
|
await laden();
|
||||||
}));
|
}));
|
||||||
knoepfe.append(tuKnopf('löschen', async () => {
|
knoepfe.append(tuKnopf('löschen', async () => {
|
||||||
if (!confirm('Wiederholung „' + s.titel + '" ganz löschen?\n\n'
|
if (!await frageNach({
|
||||||
+ 'Die Regel ist damit weg. Kommende, unangetastete Termine werden '
|
titel: 'Wiederholung „' + s.titel + '" ganz löschen?',
|
||||||
+ 'entfernt; vergangene und bearbeitete bleiben als normale Termine '
|
was: 'Die Regel ist damit weg. Kommende, noch unangetastete Termine '
|
||||||
+ 'stehen.')) return;
|
+ 'werden entfernt.',
|
||||||
|
bleibt: 'Vergangene und schon bearbeitete Termine bleiben als '
|
||||||
|
+ 'normale Termine stehen.',
|
||||||
|
endgueltig: true, ja: 'Wiederholung löschen',
|
||||||
|
})) return;
|
||||||
const a = await hole('/workspace/api/serien/' + s.id, { method: 'DELETE' });
|
const a = await hole('/workspace/api/serien/' + s.id, { method: 'DELETE' });
|
||||||
if (!a.ok) { melde('Löschen ging nicht.'); return; }
|
if (!a.ok) { melde('Löschen ging nicht.'); return; }
|
||||||
await laden();
|
await laden();
|
||||||
@@ -1221,12 +1228,20 @@
|
|||||||
dass NUR dieser eine Tag entfällt. Sonst löscht jemand ihn
|
dass NUR dieser eine Tag entfällt. Sonst löscht jemand ihn
|
||||||
in der Annahme, die Wiederholung sei damit abgestellt --
|
in der Annahme, die Wiederholung sei damit abgestellt --
|
||||||
und wundert sich nächste Woche. */
|
und wundert sich nächste Woche. */
|
||||||
const frage = e.serie_id
|
|
||||||
? 'Nur diesen einen Termin am ' + tagLang(e.tag) + ' streichen?\n\n'
|
if (!await frageNach({
|
||||||
+ 'Die Wiederholung „' + e.titel + '" läuft weiter. Zum Abstellen '
|
titel: e.serie_id
|
||||||
+ 'den Schalter unter „Läuft von allein" benutzen.'
|
? 'Nur diesen einen Termin am ' + tagLang(e.tag) + ' streichen?'
|
||||||
: 'Termin „' + e.titel + '" löschen?';
|
: 'Termin „' + e.titel + '" löschen?',
|
||||||
if (!confirm(frage)) return;
|
was: e.serie_id
|
||||||
|
? 'Nur dieser eine Tag entfällt.'
|
||||||
|
: 'Der Termin verschwindet aus dem Kalender.',
|
||||||
|
bleibt: e.serie_id
|
||||||
|
? 'Die Wiederholung „' + e.titel + '" läuft weiter. Zum Abstellen '
|
||||||
|
+ 'den Schalter unter „Läuft von allein" benutzen.'
|
||||||
|
: 'Alle anderen Termine bleiben stehen.',
|
||||||
|
endgueltig: true, ja: e.serie_id ? 'Diesen Tag streichen' : 'Löschen',
|
||||||
|
})) return;
|
||||||
const a = await hole('/workspace/api/termine/' + e.id, { method: 'DELETE' });
|
const a = await hole('/workspace/api/termine/' + e.id, { method: 'DELETE' });
|
||||||
if (!a.ok) { melde('Löschen ging nicht.'); return; }
|
if (!a.ok) { melde('Löschen ging nicht.'); return; }
|
||||||
await laden();
|
await laden();
|
||||||
|
|||||||
@@ -404,7 +404,13 @@
|
|||||||
|
|
||||||
async function tagLoeschen() {
|
async function tagLoeschen() {
|
||||||
const d = $('tag-dialog');
|
const d = $('tag-dialog');
|
||||||
if (!window.confirm('Diese Zeile wirklich löschen? Die Zahlen des Tages sind dann weg.')) return;
|
if (!await frageNach({
|
||||||
|
titel: 'Zahlen dieses Tages löschen?',
|
||||||
|
was: 'Die eingetragenen Zahlen für diesen Tag werden entfernt.',
|
||||||
|
bleibt: 'Alle anderen Tage bleiben unverändert. Du kannst den Tag '
|
||||||
|
+ 'jederzeit neu eintragen.',
|
||||||
|
endgueltig: true, ja: 'Zeile löschen',
|
||||||
|
})) return;
|
||||||
try {
|
try {
|
||||||
const a = await hole(`/workspace/api/leistung/${offenerCreator}/${d.dataset.tag}`,
|
const a = await hole(`/workspace/api/leistung/${offenerCreator}/${d.dataset.tag}`,
|
||||||
{ method: 'DELETE' });
|
{ method: 'DELETE' });
|
||||||
|
|||||||
@@ -0,0 +1,326 @@
|
|||||||
|
/* =====================================================================
|
||||||
|
NACHFRAGEN, BEVOR ETWAS WEG IST — window.frageNach()
|
||||||
|
|
||||||
|
Filipe, 19.09.2026: „Es darf vor allem keine Stellen geben, an denen
|
||||||
|
ein Benutzer etwas falsch machen kann, nur weil die Seite es nicht
|
||||||
|
verstaendlich genug erklaert." Und: „Fehler moeglichst verhindern,
|
||||||
|
bevor sie entstehen."
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
WARUM ES DIESE DATEI GIBT
|
||||||
|
|
||||||
|
Das Haus hatte die richtige Bauweise laengst -- in `aufgaben.html`
|
||||||
|
steht sie sogar begruendet: ein <dialog>, kein confirm(), weil
|
||||||
|
confirm die ganze Seite anhaelt, kein Textfeld aufnimmt und auf
|
||||||
|
jedem Rechner anders aussieht.
|
||||||
|
|
||||||
|
Nur stand diese Bauweise IN EINER SEITE. Wer auf einer anderen Seite
|
||||||
|
etwas loeschen liess, hatte sie nicht -- und griff zu confirm().
|
||||||
|
Gemessen am 19.09.2026: 30 Stellen im Workspace, in 16 Dateien.
|
||||||
|
Also wandert sie hierher, wo jede Seite sie hat.
|
||||||
|
|
||||||
|
Das ist dieselbe Lehre wie bei den Fehlermeldungen (`meldung.js`)
|
||||||
|
und bei den Kachelfarben: Was an 30 Stellen gepflegt werden muss,
|
||||||
|
wird an 30 Stellen unterschiedlich. Eine Stelle, die alle benutzen,
|
||||||
|
kann nicht auseinanderlaufen.
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
WAS EIN GUTER NACHFRAGE-DIALOG SAGT
|
||||||
|
|
||||||
|
confirm('Wirklich loeschen?') stellt die falsche Frage. Es fragt, ob
|
||||||
|
man sicher ist -- und wer soll das wissen, wenn nicht dasteht, was
|
||||||
|
danach passiert? Der Dialog hier beantwortet drei Dinge:
|
||||||
|
|
||||||
|
1. WAS passiert -- "Die Datei wird geloescht."
|
||||||
|
2. Was NICHT passiert -- "Der Chat-Verlauf bleibt."
|
||||||
|
3. Ob es ZURUECK geht -- "Das laesst sich nicht rueckgaengig machen."
|
||||||
|
|
||||||
|
Punkt 3 ist der wichtigste und in confirm() gar nicht ausdrueckbar.
|
||||||
|
Deshalb traegt der Bestaetigungsknopf bei `endgueltig: true` eine
|
||||||
|
sichtbare Warnfarbe UND der Text sagt es noch einmal in Worten --
|
||||||
|
Farbe allein traegt keine Aussage (Rot-Gruen-Schwaeche, Kontrastmodus).
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
DREI AUSGAENGE, wie ueberall im Haus
|
||||||
|
|
||||||
|
<dialog> vorhanden -> der richtige Dialog
|
||||||
|
<dialog> fehlt (alt) -> confirm() als Notnagel, mit DEMSELBEN
|
||||||
|
Text, damit der Nutzer dieselbe
|
||||||
|
Auskunft bekommt -- nur haesslicher
|
||||||
|
Nutzer bricht ab -> false, und zwar immer: bei Esc, beim
|
||||||
|
Klick daneben und beim "Doch nicht"
|
||||||
|
|
||||||
|
Der mittlere Ausgang ist nicht theoretisch: showModal gibt es erst ab
|
||||||
|
Safari 15.4. Ein iPhone, das nicht aktualisiert wurde, wuerde ohne
|
||||||
|
Notnagel gar nichts anzeigen -- und der Knopf taete stillschweigend
|
||||||
|
nichts. Das waere schlimmer als ein haesslicher Dialog.
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
AUFRUF
|
||||||
|
|
||||||
|
if (!await frageNach({
|
||||||
|
titel: 'Datei loeschen?',
|
||||||
|
was: 'Die Datei wird vom Server entfernt.',
|
||||||
|
bleibt:'Die Nachricht im Chat bleibt stehen.',
|
||||||
|
endgueltig: true,
|
||||||
|
ja: 'Loeschen',
|
||||||
|
})) return;
|
||||||
|
|
||||||
|
Mit Grund (gibt dann { grund } statt true zurueck):
|
||||||
|
|
||||||
|
const a = await frageNach({ titel: '...', grund: 'Warum?',
|
||||||
|
grundPflicht: true });
|
||||||
|
if (!a) return; // abgebrochen
|
||||||
|
... a.grund ...
|
||||||
|
===================================================================== */
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/* Ein einziger Dialog fuer die ganze Seite. Er wird beim ersten
|
||||||
|
Gebrauch gebaut und danach wiederverwendet -- zwei offene Dialoge
|
||||||
|
gleichzeitig kann der Browser ohnehin nicht, und ein neuer je
|
||||||
|
Aufruf wuerde den Fokus verlieren. */
|
||||||
|
var dlg = null, feld = null, tippfeld = null, zahlfeld = null, fehlerZeile = null;
|
||||||
|
|
||||||
|
function bauen() {
|
||||||
|
if (dlg) return dlg;
|
||||||
|
dlg = document.createElement('dialog');
|
||||||
|
dlg.className = 'dialog nachfrage';
|
||||||
|
dlg.innerHTML =
|
||||||
|
'<form method="dialog" class="nachfrage__form">'
|
||||||
|
+ '<h2 class="dialog__titel" data-teil="titel"></h2>'
|
||||||
|
+ '<p class="dialog__unter" data-teil="was"></p>'
|
||||||
|
+ '<p class="dialog__unter dialog__unter--still" data-teil="bleibt"></p>'
|
||||||
|
+ '<p class="nachfrage__endgueltig" data-teil="endgueltig" hidden>'
|
||||||
|
+ 'Das lässt sich danach nicht mehr rückgängig machen.</p>'
|
||||||
|
+ '<div class="nachfrage__zeile" data-teil="tippzeile" hidden>'
|
||||||
|
+ '<label class="feld-schild" data-teil="tippschild" for="nachfrage-tipp"></label>'
|
||||||
|
+ '<input id="nachfrage-tipp" type="text" autocomplete="off"'
|
||||||
|
+ ' autocapitalize="off" spellcheck="false" />'
|
||||||
|
+ '</div>'
|
||||||
|
+ '<div class="nachfrage__zeile" data-teil="grundzeile" hidden>'
|
||||||
|
+ '<label class="feld-schild" data-teil="grundschild" for="nachfrage-grund"></label>'
|
||||||
|
+ '<textarea id="nachfrage-grund" rows="3" maxlength="500"></textarea>'
|
||||||
|
+ '</div>'
|
||||||
|
+ '<div class="nachfrage__zeile" data-teil="zahlzeile" hidden>'
|
||||||
|
+ '<label class="feld-schild" data-teil="zahlschild" for="nachfrage-zahl"></label>'
|
||||||
|
+ '<input id="nachfrage-zahl" type="number" min="1" inputmode="numeric" />'
|
||||||
|
+ '<p class="nachfrage__hinweis" data-teil="zahlhinweis"></p>'
|
||||||
|
+ '</div>'
|
||||||
|
+ '<p class="nachfrage__fehler" data-teil="fehler" role="alert"></p>'
|
||||||
|
+ '<div class="dialog__knoepfe">'
|
||||||
|
+ '<button type="submit" class="knopf knopf--klein" data-teil="ja"></button>'
|
||||||
|
+ '<button type="button" class="abmelden" data-teil="nein">Doch nicht</button>'
|
||||||
|
+ '</div></form>';
|
||||||
|
document.body.appendChild(dlg);
|
||||||
|
feld = dlg.querySelector('#nachfrage-grund');
|
||||||
|
tippfeld = dlg.querySelector('#nachfrage-tipp');
|
||||||
|
zahlfeld = dlg.querySelector('#nachfrage-zahl');
|
||||||
|
fehlerZeile = dlg.querySelector('[data-teil="fehler"]');
|
||||||
|
return dlg;
|
||||||
|
}
|
||||||
|
|
||||||
|
function teil(name) { return dlg.querySelector('[data-teil="' + name + '"]'); }
|
||||||
|
|
||||||
|
/** Setzt Text und blendet die Zeile aus, wenn es keinen gibt.
|
||||||
|
* Eine leere Zeile, die Platz einnimmt, sieht aus wie ein Fehler. */
|
||||||
|
function zeile(name, text) {
|
||||||
|
var e = teil(name);
|
||||||
|
e.textContent = text || '';
|
||||||
|
e.hidden = !text;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.frageNach = function frageNach(o) {
|
||||||
|
o = o || {};
|
||||||
|
var titel = o.titel || 'Sicher?';
|
||||||
|
var was = o.was || '';
|
||||||
|
var bleibt = o.bleibt || '';
|
||||||
|
var ja = o.ja || 'Ja, machen';
|
||||||
|
var nein = o.nein || 'Doch nicht';
|
||||||
|
var endgueltig = !!o.endgueltig;
|
||||||
|
var grund = o.grund || '';
|
||||||
|
var grundPflicht = !!o.grundPflicht;
|
||||||
|
var platzhalter = o.platzhalter || '';
|
||||||
|
/* ABTIPPEN STATT ANKLICKEN. Fuer die Handgriffe, bei denen ein
|
||||||
|
Fehlklick nicht zu reparieren ist (eine Person loeschen). Wer den
|
||||||
|
Namen abtippt, hat ihn gelesen -- das ist der eigentliche Zweck,
|
||||||
|
nicht die Huerde. */
|
||||||
|
var tippen = o.tippen || '';
|
||||||
|
/* EIN EINZEILIGES FELD, wenn nach einem Namen gefragt wird und
|
||||||
|
nicht nach einem Grund. Ein Textfeld ueber drei Zeilen fuer einen
|
||||||
|
Vornamen sieht aus, als erwarte jemand einen Aufsatz. Benutzt
|
||||||
|
dasselbe Feld wie `tippen` -- beides gleichzeitig kommt nicht vor
|
||||||
|
und waere auch nicht sinnvoll. */
|
||||||
|
var eingabe = o.eingabe || '';
|
||||||
|
var eingabeWert = o.eingabeWert || '';
|
||||||
|
var eingabeMin = o.eingabeMin === undefined ? 2 : o.eingabeMin;
|
||||||
|
/* EINE ZAHL IM SELBEN DIALOG. Vorher fragte die Moderation zweimal
|
||||||
|
hintereinander (Grund, dann Dauer) -- zwei Kaesten nacheinander,
|
||||||
|
und wer beim zweiten abbrach, hatte den ersten umsonst getippt.
|
||||||
|
Reihenfolge bleibt: erst WARUM, dann WIE LANGE. Wer zuerst nach
|
||||||
|
der Dauer gefragt wird, hat die Strafe festgelegt, bevor er sie
|
||||||
|
begruendet hat. */
|
||||||
|
var zahl = o.zahl || '';
|
||||||
|
var zahlWert = o.zahlWert === undefined ? '' : String(o.zahlWert);
|
||||||
|
var zahlMax = o.zahlMax || 0;
|
||||||
|
var zahlLeer = !!o.zahlLeer;
|
||||||
|
var zahlHinweis = o.zahlHinweis || '';
|
||||||
|
var NIE_ZURUECK = 'Das lässt sich danach nicht mehr rückgängig machen.';
|
||||||
|
|
||||||
|
/* ---- Ausgang 2: kein <dialog> -> confirm() mit DEMSELBEN Text ----
|
||||||
|
Nicht "Sicher?" -- wer den Notnagel bekommt, soll dieselbe
|
||||||
|
Auskunft haben wie alle anderen. */
|
||||||
|
if (typeof HTMLDialogElement === 'undefined'
|
||||||
|
|| !HTMLDialogElement.prototype.showModal) {
|
||||||
|
var text = [titel, was, bleibt, endgueltig ? NIE_ZURUECK : '']
|
||||||
|
.filter(Boolean).join('\n\n');
|
||||||
|
if (!window.confirm(text)) return Promise.resolve(false);
|
||||||
|
if (tippen) {
|
||||||
|
var t0 = window.prompt('Zum Bestätigen genau eingeben: ' + tippen, '');
|
||||||
|
if (t0 === null || t0.trim() !== tippen) return Promise.resolve(false);
|
||||||
|
}
|
||||||
|
var erg = {};
|
||||||
|
if (eingabe) {
|
||||||
|
var e0 = window.prompt(eingabe, eingabeWert);
|
||||||
|
if (e0 === null || e0.trim().length < eingabeMin) return Promise.resolve(false);
|
||||||
|
erg.eingabe = e0.trim();
|
||||||
|
}
|
||||||
|
if (grund) {
|
||||||
|
var g0 = window.prompt(grund, '');
|
||||||
|
if (g0 === null) return Promise.resolve(false);
|
||||||
|
if (grundPflicht && g0.trim().length < 3) return Promise.resolve(false);
|
||||||
|
erg.grund = g0.trim();
|
||||||
|
}
|
||||||
|
if (zahl) {
|
||||||
|
var z0 = window.prompt(zahl + (zahlHinweis ? ' (' + zahlHinweis + ')' : ''),
|
||||||
|
zahlWert);
|
||||||
|
if (z0 === null) return Promise.resolve(false);
|
||||||
|
erg.zahl = z0.trim() === '' ? null : Number(z0);
|
||||||
|
}
|
||||||
|
return Promise.resolve((grund || zahl || eingabe) ? erg : true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bauen();
|
||||||
|
teil('titel').textContent = titel;
|
||||||
|
zeile('was', was);
|
||||||
|
zeile('bleibt', bleibt);
|
||||||
|
teil('endgueltig').hidden = !endgueltig;
|
||||||
|
teil('ja').textContent = ja;
|
||||||
|
teil('nein').textContent = nein;
|
||||||
|
/* Warnfarbe NUR zusaetzlich zum Satz oben, nie statt seiner. */
|
||||||
|
teil('ja').classList.toggle('knopf--warn', endgueltig);
|
||||||
|
teil('tippzeile').hidden = !(tippen || eingabe);
|
||||||
|
if (eingabe) {
|
||||||
|
teil('tippschild').textContent = eingabe;
|
||||||
|
tippfeld.value = eingabeWert;
|
||||||
|
tippfeld.placeholder = '';
|
||||||
|
} else if (tippen) {
|
||||||
|
teil('tippschild').textContent = 'Zum Bestätigen genau eingeben: ' + tippen;
|
||||||
|
tippfeld.value = '';
|
||||||
|
/* KEIN Platzhalter mit dem erwarteten Wort. Er sieht in einem
|
||||||
|
leeren Feld aus wie ein bereits eingetragener Text -- und wer
|
||||||
|
glaubt, es stehe schon da, drueckt auf "Loeschen" und wundert
|
||||||
|
sich ueber die Fehlermeldung. Der Name steht ohnehin in der
|
||||||
|
Beschriftung direkt darueber. */
|
||||||
|
tippfeld.placeholder = '';
|
||||||
|
}
|
||||||
|
teil('grundzeile').hidden = !grund;
|
||||||
|
if (grund) {
|
||||||
|
teil('grundschild').textContent = grund;
|
||||||
|
feld.value = '';
|
||||||
|
feld.placeholder = platzhalter;
|
||||||
|
}
|
||||||
|
teil('zahlzeile').hidden = !zahl;
|
||||||
|
if (zahl) {
|
||||||
|
teil('zahlschild').textContent = zahl;
|
||||||
|
teil('zahlhinweis').textContent = zahlHinweis;
|
||||||
|
zahlfeld.value = zahlWert;
|
||||||
|
if (zahlMax) zahlfeld.max = String(zahlMax); else zahlfeld.removeAttribute('max');
|
||||||
|
zahlfeld.required = !zahlLeer;
|
||||||
|
}
|
||||||
|
fehlerZeile.textContent = '';
|
||||||
|
|
||||||
|
return new Promise(function (fertig) {
|
||||||
|
var antwort = false;
|
||||||
|
var form = dlg.querySelector('form');
|
||||||
|
|
||||||
|
function aufraeumen() {
|
||||||
|
dlg.removeEventListener('close', beiSchliessen);
|
||||||
|
form.removeEventListener('submit', beiJa);
|
||||||
|
teil('nein').removeEventListener('click', beiNein);
|
||||||
|
dlg.removeEventListener('click', beiDaneben);
|
||||||
|
}
|
||||||
|
function beiSchliessen() { aufraeumen(); fertig(antwort); }
|
||||||
|
function beiNein() { antwort = false; dlg.close(); }
|
||||||
|
function beiDaneben(e) {
|
||||||
|
/* Klick auf den abgedunkelten Rand = abbrechen. Das erwartet
|
||||||
|
jeder, und ohne es bleibt der Dialog am Handy gefuehlt
|
||||||
|
haengen, weil dort kein Esc zur Verfuegung steht. */
|
||||||
|
if (e.target === dlg) { antwort = false; dlg.close(); }
|
||||||
|
}
|
||||||
|
function beiJa(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
if (eingabe && tippfeld.value.trim().length < eingabeMin) {
|
||||||
|
fehlerZeile.textContent = eingabeMin > 1
|
||||||
|
? 'Bitte mindestens ' + eingabeMin + ' Zeichen eintragen.'
|
||||||
|
: 'Bitte etwas eintragen.';
|
||||||
|
tippfeld.focus(); return;
|
||||||
|
}
|
||||||
|
if (tippen && tippfeld.value.trim() !== tippen) {
|
||||||
|
/* Sagt, WAS nicht stimmt -- "falsch" allein hilft niemandem,
|
||||||
|
der sich vertippt hat. */
|
||||||
|
fehlerZeile.textContent = 'Das stimmt noch nicht. Erwartet wird genau: '
|
||||||
|
+ tippen;
|
||||||
|
tippfeld.focus();
|
||||||
|
tippfeld.select();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var erg2 = {};
|
||||||
|
if (eingabe) erg2.eingabe = tippfeld.value.trim();
|
||||||
|
if (grund) {
|
||||||
|
var g = feld.value.trim();
|
||||||
|
if (grundPflicht && g.length < 3) {
|
||||||
|
fehlerZeile.textContent = 'Bitte kurz sagen, warum.';
|
||||||
|
feld.focus();
|
||||||
|
return; /* NICHT schliessen -- sonst waere die Eingabe weg */
|
||||||
|
}
|
||||||
|
erg2.grund = g;
|
||||||
|
}
|
||||||
|
if (zahl) {
|
||||||
|
var roh = zahlfeld.value.trim();
|
||||||
|
if (roh === '' && !zahlLeer) {
|
||||||
|
fehlerZeile.textContent = 'Bitte eine Anzahl eintragen.';
|
||||||
|
zahlfeld.focus(); return;
|
||||||
|
}
|
||||||
|
var n = roh === '' ? null : Number(roh);
|
||||||
|
if (n !== null && !(n > 0)) {
|
||||||
|
fehlerZeile.textContent = 'Das ist keine gültige Anzahl.';
|
||||||
|
zahlfeld.focus(); return;
|
||||||
|
}
|
||||||
|
if (n !== null && zahlMax && n > zahlMax) {
|
||||||
|
fehlerZeile.textContent = 'Mehr als ' + zahlMax + ' geht hier nicht.';
|
||||||
|
zahlfeld.focus(); return;
|
||||||
|
}
|
||||||
|
erg2.zahl = n;
|
||||||
|
}
|
||||||
|
antwort = (grund || zahl || eingabe) ? erg2 : true;
|
||||||
|
dlg.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
dlg.addEventListener('close', beiSchliessen);
|
||||||
|
form.addEventListener('submit', beiJa);
|
||||||
|
teil('nein').addEventListener('click', beiNein);
|
||||||
|
dlg.addEventListener('click', beiDaneben);
|
||||||
|
|
||||||
|
dlg.showModal();
|
||||||
|
/* Der Fokus liegt auf dem harmlosen Knopf, nicht auf "Loeschen".
|
||||||
|
Wer aus Gewohnheit Enter drueckt, bricht damit ab -- das ist
|
||||||
|
die richtige Richtung fuer einen Fehlgriff. Ausser es gibt ein
|
||||||
|
Textfeld, dann gehoert der Fokus dorthin. */
|
||||||
|
if (tippen || eingabe) tippfeld.focus();
|
||||||
|
else if (grund) feld.focus();
|
||||||
|
else teil('nein').focus();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
})();
|
||||||
@@ -311,8 +311,14 @@
|
|||||||
allein sagt nicht, WAS sich ändert -- und es ist der Handgriff,
|
allein sagt nicht, WAS sich ändert -- und es ist der Handgriff,
|
||||||
der jemandem den Zugang zu einer ganzen Seite nimmt oder gibt. */
|
der jemandem den Zugang zu einer ganzen Seite nimmt oder gibt. */
|
||||||
const name = $('rolle-wahl').querySelector('.rollenwahl__knopf[data-an="ja"] .rollenwahl__name')?.textContent || gewaehlt;
|
const name = $('rolle-wahl').querySelector('.rollenwahl__knopf[data-an="ja"] .rollenwahl__name')?.textContent || gewaehlt;
|
||||||
if (!confirm(`${rolleFuer.name} wird von "${ROLLENNAME[rolleFuer.rolle] || rolleFuer.rolle}" zu "${name}".\n\n`
|
if (!await frageNach({
|
||||||
+ 'Der Zugangscode bleibt derselbe. Offene Sitzungen werden beendet.')) return;
|
titel: `${rolleFuer.name}: Rolle ändern?`,
|
||||||
|
was: `Von „${ROLLENNAME[rolleFuer.rolle] || rolleFuer.rolle}" zu „${name}".`
|
||||||
|
+ ' Damit ändert sich, welche Seiten die Person öffnen darf.',
|
||||||
|
bleibt: 'Der Zugangscode bleibt derselbe. Offene Sitzungen werden beendet, '
|
||||||
|
+ 'danach kann sie sich mit dem alten Code wieder anmelden.',
|
||||||
|
ja: `Zu „${name}" machen`,
|
||||||
|
})) return;
|
||||||
|
|
||||||
const a = await hole(`/workspace/api/verwaltung/personen/${rolleFuer.id}/rolle`, {
|
const a = await hole(`/workspace/api/verwaltung/personen/${rolleFuer.id}/rolle`, {
|
||||||
method: 'PUT',
|
method: 'PUT',
|
||||||
@@ -577,18 +583,17 @@ Der Code gilt einmal fuer die `
|
|||||||
|
|
||||||
knoepfe.append(tuKnopf('Neuer Code', async () => {
|
knoepfe.append(tuKnopf('Neuer Code', async () => {
|
||||||
const eigen = p.id === ich.id;
|
const eigen = p.id === ich.id;
|
||||||
const frage = eigen
|
if (!await frageNach({
|
||||||
/* Der Satz stimmte bis zum 02.09.2026 -- und beschrieb genau die
|
titel: eigen ? 'Neuer Code für dich selbst?' : `Neuer Code für ${p.name}?`,
|
||||||
Falle: Man bestätigte, der Code erschien, und im selben Moment
|
was: 'Der alte Code gilt danach nicht mehr.',
|
||||||
war die Sitzung weg. Jetzt bleibt sie bestehen, und der Text
|
bleibt: eigen
|
||||||
sagt, was wirklich passiert. */
|
? 'Alle ANDEREN Geräte werden abgemeldet – hier bleibst du '
|
||||||
? 'Neuer Code für dich selbst?\n\n'
|
+ 'angemeldet. Der neue Code steht danach auf dem Bildschirm, '
|
||||||
+ 'Der alte Code gilt danach nicht mehr, und alle ANDEREN Geräte '
|
+ 'bis du ihn selbst wegklickst.'
|
||||||
+ 'werden abgemeldet.\n\n'
|
: `Offene Sitzungen von ${p.name} werden beendet. Alles andere `
|
||||||
+ 'Hier bleibst du angemeldet – der neue Code steht danach auf dem '
|
+ 'bleibt unverändert – nur der Code ist neu.',
|
||||||
+ 'Bildschirm, bis du ihn selbst wegklickst.'
|
endgueltig: true, ja: 'Neuen Code erzeugen',
|
||||||
: `Neuer Code für ${p.name}?\n\nDer alte Code gilt dann nicht mehr, offene Sitzungen werden beendet.`;
|
})) return;
|
||||||
if (!confirm(frage)) return;
|
|
||||||
const a = await hole(`/workspace/api/verwaltung/personen/${p.id}/code`, {
|
const a = await hole(`/workspace/api/verwaltung/personen/${p.id}/code`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
@@ -601,7 +606,13 @@ Der Code gilt einmal fuer die `
|
|||||||
|
|
||||||
if (p.id !== ich.id) {
|
if (p.id !== ich.id) {
|
||||||
knoepfe.append(tuKnopf(p.aktiv ? 'Sperren' : 'Entsperren', async () => {
|
knoepfe.append(tuKnopf(p.aktiv ? 'Sperren' : 'Entsperren', async () => {
|
||||||
if (p.aktiv && !confirm(`${p.name} sperren?\n\nOffene Sitzungen werden sofort beendet.`)) return;
|
if (p.aktiv && !await frageNach({
|
||||||
|
titel: `${p.name} sperren?`,
|
||||||
|
was: 'Offene Sitzungen werden sofort beendet. Anmelden geht danach nicht mehr.',
|
||||||
|
bleibt: 'Alle Daten bleiben stehen – Aufgaben, Nachrichten, Steckbrief. '
|
||||||
|
+ 'Entsperren geht jederzeit mit demselben Knopf.',
|
||||||
|
ja: 'Sperren',
|
||||||
|
})) return;
|
||||||
const a = await hole(`/workspace/api/verwaltung/personen/${p.id}`, {
|
const a = await hole(`/workspace/api/verwaltung/personen/${p.id}`, {
|
||||||
method: 'PATCH',
|
method: 'PATCH',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
@@ -704,43 +715,42 @@ Der Code gilt einmal fuer die `
|
|||||||
|
|
||||||
if (v.hindernis) { melde(v.hindernis); return; }
|
if (v.hindernis) { melde(v.hindernis); return; }
|
||||||
|
|
||||||
const zeilen = [];
|
|
||||||
const mit = Object.entries(v.mit).filter(([, n]) => n > 0);
|
const mit = Object.entries(v.mit).filter(([, n]) => n > 0);
|
||||||
const bleibt = Object.entries(v.bleibt).filter(([, n]) => n > 0);
|
const bleibt = Object.entries(v.bleibt).filter(([, n]) => n > 0);
|
||||||
|
|
||||||
zeilen.push(`„${v.person.name}" wirklich löschen?`, '');
|
/* Was mitgeht und was bleibt, sind ZWEI Aussagen -- deshalb stehen
|
||||||
if (mit.length) {
|
sie im Dialog auch in zwei Zeilen und nicht in einer Liste, die
|
||||||
zeilen.push('Wird MITGELÖSCHT:');
|
man von oben nach unten durchliest und in der Mitte aufgibt. */
|
||||||
for (const [was, n] of mit) zeilen.push(` · ${was}: ${n}`);
|
const wasWeg = mit.length
|
||||||
zeilen.push('');
|
? 'Mitgelöscht wird: ' + mit.map(([w, n]) => `${w} (${n})`).join(', ') + '.'
|
||||||
}
|
: 'An dieser Person hängt nichts, was mitgelöscht würde.';
|
||||||
if (bleibt.length) {
|
const wasBleibt = [
|
||||||
zeilen.push('BLEIBT erhalten, verliert nur die Zuordnung:');
|
bleibt.length
|
||||||
for (const [was, n] of bleibt) zeilen.push(` · ${was}: ${n}`);
|
? 'Erhalten bleibt, verliert aber die Zuordnung: '
|
||||||
zeilen.push('');
|
+ bleibt.map(([w, n]) => `${w} (${n})`).join(', ') + '.'
|
||||||
}
|
: '',
|
||||||
if (v.verliertBetreuung.length) {
|
v.verliertBetreuung.length
|
||||||
zeilen.push(`ACHTUNG: ${v.verliertBetreuung.join(', ')} `
|
? `${v.verliertBetreuung.join(', ')} `
|
||||||
+ `${v.verliertBetreuung.length === 1 ? 'steht' : 'stehen'} danach ohne zuständige Person da.`, '');
|
+ `${v.verliertBetreuung.length === 1 ? 'steht' : 'stehen'} danach `
|
||||||
}
|
+ 'ohne zuständige Person da.'
|
||||||
if (!mit.length && !bleibt.length && !v.verliertBetreuung.length) {
|
: '',
|
||||||
zeilen.push('An dieser Person hängt nichts.', '');
|
'Vorher wird automatisch eine Sicherung geschrieben.',
|
||||||
}
|
].filter(Boolean).join(' ');
|
||||||
zeilen.push('Vorher wird automatisch eine Sicherung geschrieben.', '',
|
|
||||||
`Zum Bestätigen den Namen genau eingeben: ${v.person.name}`);
|
|
||||||
|
|
||||||
const eingabe = prompt(zeilen.join('\n'), '');
|
if (!await frageNach({
|
||||||
if (eingabe === null) return;
|
titel: `„${v.person.name}" löschen?`,
|
||||||
if (eingabe.trim() !== v.person.name) {
|
was: wasWeg,
|
||||||
melde('Der Name stimmt nicht – es wurde nichts gelöscht.');
|
bleibt: wasBleibt,
|
||||||
return;
|
endgueltig: true,
|
||||||
}
|
ja: 'Endgültig löschen',
|
||||||
|
tippen: v.person.name,
|
||||||
|
})) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const a = await hole(`/workspace/api/verwaltung/personen/${person.id}`, {
|
const a = await hole(`/workspace/api/verwaltung/personen/${person.id}`, {
|
||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify({ name: eingabe.trim() }),
|
body: JSON.stringify({ name: v.person.name }),
|
||||||
});
|
});
|
||||||
const d = await a.json().catch(() => ({}));
|
const d = await a.json().catch(() => ({}));
|
||||||
if (!a.ok) { melde(sagWas(d.fehler, 'Löschen hat nicht geklappt.')); return; }
|
if (!a.ok) { melde(sagWas(d.fehler, 'Löschen hat nicht geklappt.')); return; }
|
||||||
|
|||||||
@@ -109,9 +109,13 @@
|
|||||||
sieht sofort jemand. Etwas aufzumachen merkt unter Umständen
|
sieht sofort jemand. Etwas aufzumachen merkt unter Umständen
|
||||||
lange niemand — und genau das ist der Klick, bei dem eine
|
lange niemand — und genau das ist der Klick, bei dem eine
|
||||||
Sekunde Nachdenken etwas wert ist. */
|
Sekunde Nachdenken etwas wert ist. */
|
||||||
if (erlaubt && !confirm(
|
if (erlaubt && !await frageNach({
|
||||||
`„${rolle.name}" darf danach ${seite.datei} öffnen.\n\n`
|
titel: `„${rolle.name}" darf danach ${seite.datei} öffnen`,
|
||||||
+ 'Das gilt sofort, für alle mit dieser Rolle. Sicher?')) return;
|
was: 'Das gilt sofort, für alle mit dieser Rolle.',
|
||||||
|
bleibt: 'Zurücknehmen geht jederzeit mit demselben Schalter – aber bis '
|
||||||
|
+ 'dahin hat jeder mit dieser Rolle Zugang.',
|
||||||
|
ja: 'Freigeben',
|
||||||
|
})) return;
|
||||||
|
|
||||||
knopf.disabled = true;
|
knopf.disabled = true;
|
||||||
try {
|
try {
|
||||||
@@ -167,8 +171,13 @@
|
|||||||
const b = el('button', 'schritt', 'Alles zurück auf Grundstand');
|
const b = el('button', 'schritt', 'Alles zurück auf Grundstand');
|
||||||
b.type = 'button';
|
b.type = 'button';
|
||||||
b.addEventListener('click', async () => {
|
b.addEventListener('click', async () => {
|
||||||
if (!confirm(`${daten.abweichungen} Änderungen zurücknehmen?\n\n`
|
if (!await frageNach({
|
||||||
+ 'Danach gilt wieder genau das, was im Code steht.')) return;
|
titel: `${daten.abweichungen} Änderungen zurücknehmen?`,
|
||||||
|
was: 'Danach gilt wieder genau das, was im Code steht.',
|
||||||
|
bleibt: 'Die Rechte selbst gehen nicht verloren – nur die von Hand '
|
||||||
|
+ 'gesetzten Abweichungen. Du kannst sie jederzeit neu setzen.',
|
||||||
|
ja: 'Auf Grundstand zurück',
|
||||||
|
})) return;
|
||||||
b.disabled = true;
|
b.disabled = true;
|
||||||
const a = await hole('/workspace/api/rechte/abweichungen', { method: 'DELETE' });
|
const a = await hole('/workspace/api/rechte/abweichungen', { method: 'DELETE' });
|
||||||
b.disabled = false;
|
b.disabled = false;
|
||||||
|
|||||||
@@ -166,9 +166,14 @@
|
|||||||
const b = el('button', 'knopf knopf--klein', 'Durchgegangen und bestätigt');
|
const b = el('button', 'knopf knopf--klein', 'Durchgegangen und bestätigt');
|
||||||
b.type = 'button';
|
b.type = 'button';
|
||||||
b.addEventListener('click', async () => {
|
b.addEventListener('click', async () => {
|
||||||
if (!confirm('Bestätigen, dass ihr das Dokument gemeinsam durchgegangen seid?\n\n'
|
if (!await frageNach({
|
||||||
+ 'Sobald BEIDE bestätigt haben, ist der Nachweis endgültig und lässt sich '
|
titel: 'Gemeinsam durchgegangen?',
|
||||||
+ 'nicht mehr ändern.')) return;
|
was: 'Deine Bestätigung wird mit Datum festgehalten.',
|
||||||
|
bleibt: 'Sobald BEIDE bestätigt haben, ist der Nachweis endgültig '
|
||||||
|
+ 'und lässt sich nicht mehr ändern. Solange nur du bestätigt '
|
||||||
|
+ 'hast, ist noch nichts festgeschrieben.',
|
||||||
|
ja: 'Ja, bestätigen',
|
||||||
|
})) return;
|
||||||
b.disabled = true;
|
b.disabled = true;
|
||||||
b.textContent = 'wird gespeichert …';
|
b.textContent = 'wird gespeichert …';
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -329,7 +329,12 @@
|
|||||||
const wg = el('button', 'knopf-still knopf-still--warn', 'Löschen');
|
const wg = el('button', 'knopf-still knopf-still--warn', 'Löschen');
|
||||||
wg.type = 'button';
|
wg.type = 'button';
|
||||||
wg.addEventListener('click', async () => {
|
wg.addEventListener('click', async () => {
|
||||||
if (!confirm(`„${l.name}" wirklich aus der Pipeline entfernen?`)) return;
|
if (!await frageNach({
|
||||||
|
titel: `„${l.name}" aus der Pipeline entfernen?`,
|
||||||
|
was: 'Der Lead verschwindet aus der Liste, samt Notizen und Verlauf.',
|
||||||
|
bleibt: 'Andere Leads bleiben unberührt.',
|
||||||
|
endgueltig: true, ja: 'Entfernen',
|
||||||
|
})) return;
|
||||||
if (await schicke('/workspace/api/leads/' + l.id, 'DELETE')) { offen.delete(l.id); await laden(); }
|
if (await schicke('/workspace/api/leads/' + l.id, 'DELETE')) { offen.delete(l.id); await laden(); }
|
||||||
});
|
});
|
||||||
unten.append(wg);
|
unten.append(wg);
|
||||||
@@ -344,7 +349,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function onboarding(l, knopf) {
|
async function onboarding(l, knopf) {
|
||||||
if (!confirm(`Aus „${l.name}" jetzt einen Creator mit eigenem Zugang anlegen?`)) return;
|
if (!await frageNach({
|
||||||
|
titel: `Aus „${l.name}" einen Creator mit eigenem Zugang anlegen?`,
|
||||||
|
was: 'Es entsteht ein Konto mit eigenem Zugangscode.',
|
||||||
|
bleibt: 'Der Lead bleibt in der Pipeline stehen und wird als '
|
||||||
|
+ 'übernommen markiert.',
|
||||||
|
ja: 'Creator anlegen',
|
||||||
|
})) return;
|
||||||
knopf.disabled = true;
|
knopf.disabled = true;
|
||||||
const r = await schicke('/workspace/api/leads/' + l.id + '/onboarding', 'POST', { name: l.name });
|
const r = await schicke('/workspace/api/leads/' + l.id + '/onboarding', 'POST', { name: l.name });
|
||||||
knopf.disabled = false;
|
knopf.disabled = false;
|
||||||
|
|||||||
@@ -160,7 +160,14 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
$('sb-bild-weg').addEventListener('click', async () => {
|
$('sb-bild-weg').addEventListener('click', async () => {
|
||||||
if (!confirm('Profilbild entfernen?')) return;
|
if (!await frageNach({
|
||||||
|
titel: 'Profilbild entfernen?',
|
||||||
|
was: 'Dein Bild verschwindet überall – aus der Liste, aus dem Chat, '
|
||||||
|
+ 'aus deinem Steckbrief.',
|
||||||
|
bleibt: 'Alles andere an deinem Steckbrief bleibt stehen. Du kannst '
|
||||||
|
+ 'jederzeit ein neues Bild hochladen.',
|
||||||
|
ja: 'Bild entfernen',
|
||||||
|
})) return;
|
||||||
try {
|
try {
|
||||||
const a = await hole('/workspace/api/steckbrief/bild', { method: 'DELETE' });
|
const a = await hole('/workspace/api/steckbrief/bild', { method: 'DELETE' });
|
||||||
if (!a.ok) { melde('Entfernen ging nicht.'); return; }
|
if (!a.ok) { melde('Entfernen ging nicht.'); return; }
|
||||||
|
|||||||
@@ -650,12 +650,18 @@
|
|||||||
if (!darfAnlegen()) { melde('Zugänge legt DogFather an.'); return null; }
|
if (!darfAnlegen()) { melde('Zugänge legt DogFather an.'); return null; }
|
||||||
|
|
||||||
const vorschlag = String(k.titel || '').split(/[\s,(–-]+/)[0] || '';
|
const vorschlag = String(k.titel || '').split(/[\s,(–-]+/)[0] || '';
|
||||||
const name = prompt(
|
const an = await frageNach({
|
||||||
'Wie soll die Person im Workspace heißen?\n\n'
|
titel: 'Zugang anlegen',
|
||||||
+ 'Das ist der Name, den euer Team sieht. Gleich danach bekommst du '
|
was: 'Die Person bekommt ein eigenes Konto im Workspace.',
|
||||||
+ 'einmalig ihren Zugangscode – danach nie wieder.',
|
bleibt: 'Gleich danach siehst du einmalig ihren Zugangscode – danach '
|
||||||
vorschlag);
|
+ 'nie wieder. Schreib ihn dir vorher auf oder hab den Chat offen.',
|
||||||
if (name === null) return null; // abgebrochen
|
ja: 'Zugang anlegen',
|
||||||
|
eingabe: 'Wie soll die Person im Workspace heißen?',
|
||||||
|
eingabeWert: vorschlag,
|
||||||
|
eingabeMin: 2,
|
||||||
|
});
|
||||||
|
if (!an) return null; // abgebrochen
|
||||||
|
const name = an.eingabe;
|
||||||
if (String(name).trim().length < 2) { melde('Der Name ist zu kurz.'); return null; }
|
if (String(name).trim().length < 2) { melde('Der Name ist zu kurz.'); return null; }
|
||||||
|
|
||||||
let a;
|
let a;
|
||||||
|
|||||||
@@ -181,10 +181,24 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function entscheiden(id, status) {
|
async function entscheiden(id, status) {
|
||||||
const entscheid = prompt(status === 'erledigt'
|
const ae = await frageNach({
|
||||||
? 'Was hast du getan?\n\nEin Satz genügt – er wird zur Meldung festgehalten.'
|
titel: status === 'erledigt' ? 'Meldung als erledigt schließen'
|
||||||
: 'Warum ist daran nichts dran?\n\nEin Satz genügt – er wird festgehalten.');
|
: 'Meldung als unbegründet schließen',
|
||||||
if (entscheid === null) return;
|
was: status === 'erledigt'
|
||||||
|
? 'Die Meldung gilt danach als bearbeitet.'
|
||||||
|
: 'Die Meldung gilt danach als geprüft, ohne Folgen für die Person.',
|
||||||
|
bleibt: 'Dein Satz wird zur Meldung festgehalten und bleibt im Verlauf '
|
||||||
|
+ 'lesbar. Der Beitrag selbst ändert sich dadurch nicht.',
|
||||||
|
ja: 'Schließen',
|
||||||
|
grund: status === 'erledigt' ? 'Was hast du getan?'
|
||||||
|
: 'Warum ist daran nichts dran?',
|
||||||
|
grundPflicht: true,
|
||||||
|
platzhalter: status === 'erledigt'
|
||||||
|
? 'z. B. Beitrag entfernt und die Person angeschrieben.'
|
||||||
|
: 'z. B. Der Beitrag verstößt gegen keine Regel.',
|
||||||
|
});
|
||||||
|
if (!ae) return;
|
||||||
|
const entscheid = ae.grund;
|
||||||
const a = await hole('/workspace/api/treff/meldung/' + id, {
|
const a = await hole('/workspace/api/treff/meldung/' + id, {
|
||||||
method: 'PATCH',
|
method: 'PATCH',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
@@ -270,24 +284,36 @@
|
|||||||
wird, hat die Strafe schon festgelegt, bevor er sie begründet hat.
|
wird, hat die Strafe schon festgelegt, bevor er sie begründet hat.
|
||||||
So steht am Anfang die Frage, was eigentlich passiert ist. */
|
So steht am Anfang die Frage, was eigentlich passiert ist. */
|
||||||
async function massnahme(m, art, darf) {
|
async function massnahme(m, art, darf) {
|
||||||
const grund = prompt(art === 'hinweis'
|
const istHinweis = art === 'hinweis';
|
||||||
? `Hinweis an ${m.name} – worum geht es?`
|
const wieLang = istHinweis ? null : (darf?.frist_tage || 0);
|
||||||
: `${art === 'pause' ? 'Pause' : 'Ausschluss'} für ${m.name} – warum?\n\n`
|
const a0 = await frageNach({
|
||||||
+ 'Der Grund wird festgehalten, und die Person hat ein Recht darauf.');
|
titel: istHinweis
|
||||||
if (grund === null) return;
|
? `Hinweis an ${m.name}`
|
||||||
|
: `${art === 'pause' ? 'Pause' : 'Ausschluss'} für ${m.name}`,
|
||||||
let tage;
|
was: istHinweis
|
||||||
if (art !== 'hinweis') {
|
? 'Die Person bekommt deinen Text zu lesen. Sie darf weiter mitmachen.'
|
||||||
const hinweis = darf?.frist_tage
|
: (art === 'pause'
|
||||||
? `Du kannst bis zu ${darf.frist_tage} Tage geben.`
|
? 'Die Person kann für die eingetragene Zeit nichts schreiben.'
|
||||||
: 'Leer lassen = dauerhaft (nur bei Ausschluss).';
|
: 'Die Person kann nichts mehr schreiben.'),
|
||||||
const ein = prompt(`Für wie viele Tage?\n\n${hinweis}`,
|
bleibt: 'Der Grund wird festgehalten und der Person mitgeteilt – sie hat '
|
||||||
darf?.frist_tage ? String(darf.frist_tage) : '7');
|
+ 'ein Recht darauf. Aufheben geht jederzeit.',
|
||||||
if (ein === null) return;
|
ja: istHinweis ? 'Hinweis schicken' : 'Eintragen',
|
||||||
tage = ein.trim() === '' ? null : Number(ein);
|
grund: istHinweis ? 'Worum geht es?' : 'Warum?', grundPflicht: true,
|
||||||
if (tage !== null && !(tage > 0)) { melde('Das ist keine Anzahl Tage.'); return; }
|
platzhalter: istHinweis
|
||||||
if (tage === null && art === 'pause') { melde('Eine Pause braucht eine Dauer.'); return; }
|
? 'z. B. Bitte nicht mehrfach dasselbe posten.'
|
||||||
}
|
: 'z. B. Wiederholte Beleidigungen trotz Hinweis.',
|
||||||
|
zahl: istHinweis ? '' : 'Für wie viele Tage?',
|
||||||
|
zahlWert: wieLang ? String(wieLang) : '7',
|
||||||
|
zahlMax: wieLang || 0,
|
||||||
|
/* Leer = dauerhaft, aber NUR beim Ausschluss -- eine Pause ohne
|
||||||
|
Ende waere ein Ausschluss unter falschem Namen. */
|
||||||
|
zahlLeer: art === 'ausschluss' && !wieLang,
|
||||||
|
zahlHinweis: wieLang ? `Höchstens ${wieLang} Tage.`
|
||||||
|
: (art === 'ausschluss' ? 'Leer lassen = dauerhaft.' : ''),
|
||||||
|
});
|
||||||
|
if (!a0) return;
|
||||||
|
const grund = a0.grund;
|
||||||
|
const tage = istHinweis ? undefined : a0.zahl;
|
||||||
|
|
||||||
const a = await hole('/workspace/api/treff/massnahme', {
|
const a = await hole('/workspace/api/treff/massnahme', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -324,7 +350,13 @@
|
|||||||
+ ' am ' + datum(m.zeitpunkt)],
|
+ ' am ' + datum(m.zeitpunkt)],
|
||||||
], laeuft && m.art !== 'hinweis' ? [
|
], laeuft && m.art !== 'hinweis' ? [
|
||||||
knopf('aufheben', async () => {
|
knopf('aufheben', async () => {
|
||||||
if (!confirm(`Maßnahme gegen ${m.person_name} aufheben?`)) return;
|
if (!await frageNach({
|
||||||
|
titel: `Maßnahme gegen ${m.person_name} aufheben?`,
|
||||||
|
was: 'Die Person darf danach sofort wieder mitmachen.',
|
||||||
|
bleibt: 'Die Maßnahme bleibt im Verlauf sichtbar – sie wird nur '
|
||||||
|
+ 'beendet, nicht gelöscht.',
|
||||||
|
ja: 'Aufheben',
|
||||||
|
})) return;
|
||||||
const r = await hole('/workspace/api/treff/massnahme/' + m.id, { method: 'DELETE' });
|
const r = await hole('/workspace/api/treff/massnahme/' + m.id, { method: 'DELETE' });
|
||||||
if (!r.ok) {
|
if (!r.ok) {
|
||||||
melde(sagWas((await r.json().catch(() => ({}))).fehler, 'Ging nicht.'));
|
melde(sagWas((await r.json().catch(() => ({}))).fehler, 'Ging nicht.'));
|
||||||
|
|||||||
@@ -146,8 +146,13 @@
|
|||||||
: `Alle ${liste.length} Punkte übernehmen`);
|
: `Alle ${liste.length} Punkte übernehmen`);
|
||||||
allesNehmen.type = 'button';
|
allesNehmen.type = 'button';
|
||||||
allesNehmen.addEventListener('click', async () => {
|
allesNehmen.addEventListener('click', async () => {
|
||||||
if (!confirm(`Wirklich alle ${liste.length} übernehmen? `
|
if (!await frageNach({
|
||||||
+ 'Sie landen als eigene Einträge in der Liste und lassen sich einzeln löschen.')) return;
|
titel: `Alle ${liste.length} übernehmen?`,
|
||||||
|
was: 'Sie landen als eigene Einträge in deiner Liste.',
|
||||||
|
bleibt: 'Die Vorlage bleibt unverändert. Jeder übernommene Eintrag '
|
||||||
|
+ 'lässt sich einzeln wieder löschen.',
|
||||||
|
ja: `Alle ${liste.length} übernehmen`,
|
||||||
|
})) return;
|
||||||
allesNehmen.disabled = true;
|
allesNehmen.disabled = true;
|
||||||
allesNehmen.textContent = 'wird übernommen …';
|
allesNehmen.textContent = 'wird übernommen …';
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -251,7 +251,13 @@
|
|||||||
const weg = el('button', 'knopf-still knopf-still--warn', 'Löschen');
|
const weg = el('button', 'knopf-still knopf-still--warn', 'Löschen');
|
||||||
weg.type = 'button';
|
weg.type = 'button';
|
||||||
weg.addEventListener('click', async () => {
|
weg.addEventListener('click', async () => {
|
||||||
if (!confirm(`„${e.titel}" wirklich löschen?\n\nDie PDF wird dabei auch vom Server entfernt.`)) return;
|
if (!await frageNach({
|
||||||
|
titel: `„${e.titel}" löschen?`,
|
||||||
|
was: 'Der Eintrag verschwindet aus dem Wissen. Die PDF wird dabei '
|
||||||
|
+ 'auch vom Server entfernt.',
|
||||||
|
bleibt: 'Wer sie schon heruntergeladen hat, behält seine Kopie.',
|
||||||
|
endgueltig: true, ja: 'Löschen',
|
||||||
|
})) return;
|
||||||
const a = await hole('/workspace/api/wissen/' + e.id, { method: 'DELETE' });
|
const a = await hole('/workspace/api/wissen/' + e.id, { method: 'DELETE' });
|
||||||
if (!a.ok) { melde('Löschen hat nicht geklappt.'); return; }
|
if (!a.ok) { melde('Löschen hat nicht geklappt.'); return; }
|
||||||
await laden_();
|
await laden_();
|
||||||
|
|||||||
+14
-13
@@ -12,19 +12,19 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -291,12 +291,13 @@
|
|||||||
</form>
|
</form>
|
||||||
</dialog>
|
</dialog>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/aufgaben.js?v=202609191915" defer></script>
|
<script src="assets/js/aufgaben.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+179
-179
@@ -1,179 +1,179 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Automationen · Spicy & Dogi</title>
|
<title>Automationen · Spicy & Dogi</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
||||||
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
||||||
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/automation.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/automation.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
|
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
|
||||||
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
|
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
|
||||||
Pseudo-Elements -- body hat nur ::before und ::after. -->
|
Pseudo-Elements -- body hat nur ::before und ::after. -->
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Automationen</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Automationen</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt inhalt--breit">
|
<main class="inhalt inhalt--breit">
|
||||||
|
|
||||||
<section class="kopf-zeile">
|
<section class="kopf-zeile">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Was von allein passiert</p>
|
<p class="marke">Was von allein passiert</p>
|
||||||
<h1 class="titel">Automationen</h1>
|
<h1 class="titel">Automationen</h1>
|
||||||
<p class="unterzeile">
|
<p class="unterzeile">
|
||||||
Alles hier läuft ohne Zutun. Diese Seite zeigt, was gerade greift –
|
Alles hier läuft ohne Zutun. Diese Seite zeigt, was gerade greift –
|
||||||
und wo du es abschalten kannst.
|
und wo du es abschalten kannst.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<!-- Die KI ist die einzige Automation mit Schalter: Sie kostet
|
<!-- Die KI ist die einzige Automation mit Schalter: Sie kostet
|
||||||
Rechenzeit, die der Website gehört. -->
|
Rechenzeit, die der Website gehört. -->
|
||||||
<section class="ki-kasten" id="ki-kasten">
|
<section class="ki-kasten" id="ki-kasten">
|
||||||
<div class="ki-kasten__kopf">
|
<div class="ki-kasten__kopf">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Lokale KI</p>
|
<p class="marke">Lokale KI</p>
|
||||||
<h2 class="ki-kasten__titel">Vorschläge in Calls, Start-Check und Report</h2>
|
<h2 class="ki-kasten__titel">Vorschläge in Calls, Start-Check und Report</h2>
|
||||||
<p class="ki-kasten__text" id="ki-text">Zustand wird geprüft …</p>
|
<p class="ki-kasten__text" id="ki-text">Zustand wird geprüft …</p>
|
||||||
</div>
|
</div>
|
||||||
<label class="schalter" id="ki-schalter-block" hidden>
|
<label class="schalter" id="ki-schalter-block" hidden>
|
||||||
<input type="checkbox" id="ki-schalter" />
|
<input type="checkbox" id="ki-schalter" />
|
||||||
<span class="schalter__gleis"><span class="schalter__punkt"></span></span>
|
<span class="schalter__gleis"><span class="schalter__punkt"></span></span>
|
||||||
<span class="schalter__text"><strong id="ki-schalter-text">Angeschaltet</strong></span>
|
<span class="schalter__text"><strong id="ki-schalter-text">Angeschaltet</strong></span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<ul class="ki-kasten__daten" id="ki-daten"></ul>
|
<ul class="ki-kasten__daten" id="ki-daten"></ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Was gerade tatsächlich anliegt: dieselbe Quelle wie auf dem
|
<!-- Was gerade tatsächlich anliegt: dieselbe Quelle wie auf dem
|
||||||
Dashboard, hier aber vollständig statt gekürzt. -->
|
Dashboard, hier aber vollständig statt gekürzt. -->
|
||||||
<section class="block">
|
<section class="block">
|
||||||
<div class="block__kopf">
|
<div class="block__kopf">
|
||||||
<h2 class="block__titel">Was gerade anliegt</h2>
|
<h2 class="block__titel">Was gerade anliegt</h2>
|
||||||
<span class="block__zahl" id="hinweis-zahl">–</span>
|
<span class="block__zahl" id="hinweis-zahl">–</span>
|
||||||
</div>
|
</div>
|
||||||
<p class="block__frage">
|
<p class="block__frage">
|
||||||
Dieselben Hinweise wie auf der Übersicht, hier vollständig. Sie führen keine
|
Dieselben Hinweise wie auf der Übersicht, hier vollständig. Sie führen keine
|
||||||
eigene Liste – jeder verschwindet, sobald die Sache erledigt ist.
|
eigene Liste – jeder verschwindet, sobald die Sache erledigt ist.
|
||||||
</p>
|
</p>
|
||||||
<div id="hinweise"><p class="leise">Wird geprüft …</p></div>
|
<div id="hinweise"><p class="leise">Wird geprüft …</p></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Sicherung und Zustand. Steht bewusst weit oben: Es ist die einzige
|
<!-- Sicherung und Zustand. Steht bewusst weit oben: Es ist die einzige
|
||||||
Automation, deren Ausfall alles auf einmal kosten würde. -->
|
Automation, deren Ausfall alles auf einmal kosten würde. -->
|
||||||
<section class="zustand" id="zustand-kasten">
|
<section class="zustand" id="zustand-kasten">
|
||||||
<div class="zustand__kopf">
|
<div class="zustand__kopf">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Sicherung & Zustand</p>
|
<p class="marke">Sicherung & Zustand</p>
|
||||||
<h2 class="zustand__titel" id="zustand-titel">Wird geprüft …</h2>
|
<h2 class="zustand__titel" id="zustand-titel">Wird geprüft …</h2>
|
||||||
<p class="zustand__text" id="zustand-text"></p>
|
<p class="zustand__text" id="zustand-text"></p>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" class="knopf knopf--klein" id="jetzt-sichern">Jetzt sichern</button>
|
<button type="button" class="knopf knopf--klein" id="jetzt-sichern">Jetzt sichern</button>
|
||||||
</div>
|
</div>
|
||||||
<ul class="zustand__daten" id="zustand-daten"></ul>
|
<ul class="zustand__daten" id="zustand-daten"></ul>
|
||||||
<div class="klapp-kopf zustand__listenkopf">
|
<div class="klapp-kopf zustand__listenkopf">
|
||||||
<p class="feldschild">Vorhandene Sicherungen</p>
|
<p class="feldschild">Vorhandene Sicherungen</p>
|
||||||
<button type="button" class="knopf-still" id="sicherungen-schalter"
|
<button type="button" class="knopf-still" id="sicherungen-schalter"
|
||||||
aria-expanded="false" aria-controls="sicherungen" hidden>
|
aria-expanded="false" aria-controls="sicherungen" hidden>
|
||||||
<span id="sicherungen-schalter-text">Alle zeigen</span>
|
<span id="sicherungen-schalter-text">Alle zeigen</span>
|
||||||
<svg class="klapp-pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="klapp-pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="m6 9.5 6 6 6-6" />
|
<path d="m6 9.5 6 6 6-6" />
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="sicherungen" data-klapp="zu"></div>
|
<div id="sicherungen" data-klapp="zu"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="block">
|
<section class="block">
|
||||||
<div class="block__kopf">
|
<div class="block__kopf">
|
||||||
<h2 class="block__titel">Läuft dauerhaft im Hintergrund</h2>
|
<h2 class="block__titel">Läuft dauerhaft im Hintergrund</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="regeln" id="regeln"></div>
|
<div class="regeln" id="regeln"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- ==== DAS LÖSCHKONZEPT (15.09.2026) =========================
|
<!-- ==== DAS LÖSCHKONZEPT (15.09.2026) =========================
|
||||||
Stufe 8 aus dem Plan. Es steht auf DIESER Seite, weil hier
|
Stufe 8 aus dem Plan. Es steht auf DIESER Seite, weil hier
|
||||||
alles steht, was ohne Zutun läuft – und weil es genau das ist:
|
alles steht, was ohne Zutun läuft – und weil es genau das ist:
|
||||||
eine Automatik, die täglich Daten entfernt.
|
eine Automatik, die täglich Daten entfernt.
|
||||||
|
|
||||||
Sichtbar zu sein ist die halbe Sache. Ein Löschkonzept, von dem
|
Sichtbar zu sein ist die halbe Sache. Ein Löschkonzept, von dem
|
||||||
niemand weiß, ob es greift, ist ein Dokument; eines mit Zahlen
|
niemand weiß, ob es greift, ist ein Dokument; eines mit Zahlen
|
||||||
daneben ist eine Zusicherung. Deshalb steht bei jeder Zeile,
|
daneben ist eine Zusicherung. Deshalb steht bei jeder Zeile,
|
||||||
wie viele Datensätze sie gerade betrifft. -->
|
wie viele Datensätze sie gerade betrifft. -->
|
||||||
<section class="block">
|
<section class="block">
|
||||||
<div class="block__kopf">
|
<div class="block__kopf">
|
||||||
<h2 class="block__titel">Was gelöscht wird – und was bleibt</h2>
|
<h2 class="block__titel">Was gelöscht wird – und was bleibt</h2>
|
||||||
<button type="button" class="knopf-still" id="aufb-jetzt">Jetzt aufräumen</button>
|
<button type="button" class="knopf-still" id="aufb-jetzt">Jetzt aufräumen</button>
|
||||||
</div>
|
</div>
|
||||||
<p class="block__frage">
|
<p class="block__frage">
|
||||||
Personenbezogene Daten werden nicht aufgehoben, weil Platz da ist, sondern
|
Personenbezogene Daten werden nicht aufgehoben, weil Platz da ist, sondern
|
||||||
solange es einen Grund gibt. Läuft täglich von selbst.
|
solange es einen Grund gibt. Läuft täglich von selbst.
|
||||||
</p>
|
</p>
|
||||||
<div id="aufbewahrung"><p class="leise">Wird geladen …</p></div>
|
<div id="aufbewahrung"><p class="leise">Wird geladen …</p></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="block">
|
<section class="block">
|
||||||
<!-- Wie im Personen-Bereich: zugeklappt stehen nur die vier
|
<!-- Wie im Personen-Bereich: zugeklappt stehen nur die vier
|
||||||
neuesten Zeilen da, alles Weitere auf Knopfdruck. -->
|
neuesten Zeilen da, alles Weitere auf Knopfdruck. -->
|
||||||
<div class="block__kopf klapp-kopf">
|
<div class="block__kopf klapp-kopf">
|
||||||
<h2 class="block__titel">Zuletzt automatisch passiert</h2>
|
<h2 class="block__titel">Zuletzt automatisch passiert</h2>
|
||||||
<button type="button" class="knopf-still" id="verlauf-schalter"
|
<button type="button" class="knopf-still" id="verlauf-schalter"
|
||||||
aria-expanded="false" aria-controls="verlauf" hidden>
|
aria-expanded="false" aria-controls="verlauf" hidden>
|
||||||
<span id="verlauf-schalter-text">Alle zeigen</span>
|
<span id="verlauf-schalter-text">Alle zeigen</span>
|
||||||
<svg class="klapp-pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="klapp-pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="m6 9.5 6 6 6-6" />
|
<path d="m6 9.5 6 6 6-6" />
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<p class="block__frage">Aus dem Protokoll – damit nachvollziehbar bleibt, was ohne Zutun geschah.</p>
|
<p class="block__frage">Aus dem Protokoll – damit nachvollziehbar bleibt, was ohne Zutun geschah.</p>
|
||||||
<div id="verlauf"><p class="leise">Wird geladen …</p></div>
|
<div id="verlauf"><p class="leise">Wird geladen …</p></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>␍
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/automation.js?v=202609191915" defer></script>
|
<script src="assets/js/automation.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+140
-140
@@ -1,140 +1,140 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Wie geht's dir? · Spicy & Dogi</title>
|
<title>Wie geht's dir? · Spicy & Dogi</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Team Dogi</a> · Wie geht's dir?</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Team Dogi</a> · Wie geht's dir?</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt">
|
<main class="inhalt">
|
||||||
|
|
||||||
<!-- ==================================================================
|
<!-- ==================================================================
|
||||||
DIESE SEITE GEHÖRT DEM MENSCHEN, DER SIE ÖFFNET.
|
DIESE SEITE GEHÖRT DEM MENSCHEN, DER SIE ÖFFNET.
|
||||||
|
|
||||||
Hier steht kein anderer Name, keine Beobachtung über jemanden und
|
Hier steht kein anderer Name, keine Beobachtung über jemanden und
|
||||||
keine Zahl, die jemand anders sieht. Genau das war der Grund für
|
keine Zahl, die jemand anders sieht. Genau das war der Grund für
|
||||||
die eigene Seite: Die Kachel verspricht „die Antworten sieht nur
|
die eigene Seite: Die Kachel verspricht „die Antworten sieht nur
|
||||||
du" – und führte vorher auf eine Seite voller anderer Leute.
|
du" – und führte vorher auf eine Seite voller anderer Leute.
|
||||||
|
|
||||||
Was DogFather sieht, ist eine einzige Zahl ohne Namen: wie viele
|
Was DogFather sieht, ist eine einzige Zahl ohne Namen: wie viele
|
||||||
im Team es gerade schwer haben. Nicht wer, nicht womit.
|
im Team es gerade schwer haben. Nicht wer, nicht womit.
|
||||||
============================================================== -->
|
============================================================== -->
|
||||||
|
|
||||||
<section class="kopf-zeile">
|
<section class="kopf-zeile">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Für dich</p>
|
<p class="marke">Für dich</p>
|
||||||
<h1 class="titel">Wie geht's dir?</h1>
|
<h1 class="titel">Wie geht's dir?</h1>
|
||||||
<!-- ================================================================
|
<!-- ================================================================
|
||||||
DIE EINE AUSNAHME GEHÖRT DAZU (ergänzt 19.09.2026).
|
DIE EINE AUSNAHME GEHÖRT DAZU (ergänzt 19.09.2026).
|
||||||
|
|
||||||
Hier stand: „Niemand aus dem Team sieht deine Antworten – auch
|
Hier stand: „Niemand aus dem Team sieht deine Antworten – auch
|
||||||
DogFather nicht." Punkt. Das ist fast wahr und deshalb
|
DogFather nicht." Punkt. Das ist fast wahr und deshalb
|
||||||
gefährlich: Aus denselben Antworten entsteht eine Ampel für die
|
gefährlich: Aus denselben Antworten entsteht eine Ampel für die
|
||||||
Leitung (workspace-entwicklung.js). Sie ist sauber gebaut – sie
|
Leitung (workspace-entwicklung.js). Sie ist sauber gebaut – sie
|
||||||
nennt keine Namen, keinen Punkt, kein Datum, und unter drei
|
nennt keine Namen, keinen Punkt, kein Datum, und unter drei
|
||||||
Personen schweigt sie ganz. Aber sie existiert.
|
Personen schweigt sie ganz. Aber sie existiert.
|
||||||
|
|
||||||
Der ehrliche Satz war längst geschrieben und wurde vom Server
|
Der ehrliche Satz war längst geschrieben und wurde vom Server
|
||||||
sogar mitgeliefert (`block.text`) – nur hat ihn nie jemand
|
sogar mitgeliefert (`block.text`) – nur hat ihn nie jemand
|
||||||
angezeigt. Er steht jetzt hier im HTML und nicht im Skript:
|
angezeigt. Er steht jetzt hier im HTML und nicht im Skript:
|
||||||
Wer diese Seite öffnet, soll ihn lesen, BEVOR er tippt, nicht
|
Wer diese Seite öffnet, soll ihn lesen, BEVOR er tippt, nicht
|
||||||
nachdem ein Abruf zurückgekommen ist.
|
nachdem ein Abruf zurückgekommen ist.
|
||||||
|
|
||||||
Wenn jemand später davon erfährt und die Seite hatte „niemand"
|
Wenn jemand später davon erfährt und die Seite hatte „niemand"
|
||||||
gesagt, ist das Vertrauen weg – und mit ihm die ganze Funktion.
|
gesagt, ist das Vertrauen weg – und mit ihm die ganze Funktion.
|
||||||
============================================================= -->
|
============================================================= -->
|
||||||
<p class="unterzeile">
|
<p class="unterzeile">
|
||||||
Ein paar Fragen über dich. Deine Antworten liest niemand – auch
|
Ein paar Fragen über dich. Deine Antworten liest niemand – auch
|
||||||
DogFather nicht.
|
DogFather nicht.
|
||||||
</p>
|
</p>
|
||||||
<p class="unterzeile unterzeile--zusatz">
|
<p class="unterzeile unterzeile--zusatz">
|
||||||
Das Einzige, was nach außen dringt: ob es im Team gerade
|
Das Einzige, was nach außen dringt: ob es im Team gerade
|
||||||
<em>jemandem</em> zu viel ist. Ohne Namen, ohne Frage, ohne Datum –
|
<em>jemandem</em> zu viel ist. Ohne Namen, ohne Frage, ohne Datum –
|
||||||
und erst ab drei Personen im Team, weil es darunter dasselbe wäre
|
und erst ab drei Personen im Team, weil es darunter dasselbe wäre
|
||||||
wie ein Name.
|
wie ein Name.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<!-- Der Rhythmus. Steht VOR den Fragen: Wer hereinkommt, soll zuerst
|
<!-- Der Rhythmus. Steht VOR den Fragen: Wer hereinkommt, soll zuerst
|
||||||
wissen, ob gerade etwas von ihm erwartet wird. -->
|
wissen, ob gerade etwas von ihm erwartet wird. -->
|
||||||
<section class="b-takt" id="takt" hidden>
|
<section class="b-takt" id="takt" hidden>
|
||||||
<p class="b-takt__satz" id="takt-satz">…</p>
|
<p class="b-takt__satz" id="takt-satz">…</p>
|
||||||
<button type="button" class="knopf knopf--klein" id="takt-knopf" hidden>Runde abschließen</button>
|
<button type="button" class="knopf knopf--klein" id="takt-knopf" hidden>Runde abschließen</button>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="fragen-block">
|
<section id="fragen-block">
|
||||||
<div id="fragen" aria-busy="true"><p class="leise">wird geladen …</p></div>
|
<div id="fragen" aria-busy="true"><p class="leise">wird geladen …</p></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Der Verlauf. Nur für die Person selbst – er wird nirgends sonst
|
<!-- Der Verlauf. Nur für die Person selbst – er wird nirgends sonst
|
||||||
im Haus gelesen. Er steht unter den Fragen, weil er sie erklärt
|
im Haus gelesen. Er steht unter den Fragen, weil er sie erklärt
|
||||||
und nicht ersetzt. -->
|
und nicht ersetzt. -->
|
||||||
<section class="b-verlauf" id="verlauf-block" hidden>
|
<section class="b-verlauf" id="verlauf-block" hidden>
|
||||||
<h2 class="e-abschnitt">Wie es sich entwickelt</h2>
|
<h2 class="e-abschnitt">Wie es sich entwickelt</h2>
|
||||||
<p class="b-verlauf__satz" id="verlauf-satz">…</p>
|
<p class="b-verlauf__satz" id="verlauf-satz">…</p>
|
||||||
<div id="verlauf" class="b-verlauf__gitter"></div>
|
<div id="verlauf" class="b-verlauf__gitter"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- ==================================================================
|
<!-- ==================================================================
|
||||||
WAS DEIN VERLAUF SAGT (15.09.2026)
|
WAS DEIN VERLAUF SAGT (15.09.2026)
|
||||||
|
|
||||||
Filipe: „mach mir auch eine analyse […] eine professionelle auch
|
Filipe: „mach mir auch eine analyse […] eine professionelle auch
|
||||||
mit infos und so aus aller welt was tiktok angeht."
|
mit infos und so aus aller welt was tiktok angeht."
|
||||||
|
|
||||||
Sie steht UNTER dem Verlauf: erst die Antworten, dann das Muster
|
Sie steht UNTER dem Verlauf: erst die Antworten, dann das Muster
|
||||||
darin. Andersherum läse man die Deutung, bevor man weiß, worauf
|
darin. Andersherum läse man die Deutung, bevor man weiß, worauf
|
||||||
sie sich bezieht.
|
sie sich bezieht.
|
||||||
|
|
||||||
Sie wird gerechnet, nicht gespeichert – und sie bewertet nicht.
|
Sie wird gerechnet, nicht gespeichert – und sie bewertet nicht.
|
||||||
Keine Punktzahl über das eigene Befinden: Eine Zahl lädt dazu
|
Keine Punktzahl über das eigene Befinden: Eine Zahl lädt dazu
|
||||||
ein, sie zu verbessern statt ehrlich zu antworten.
|
ein, sie zu verbessern statt ehrlich zu antworten.
|
||||||
============================================================== -->
|
============================================================== -->
|
||||||
<section class="b-analyse" id="analyse-block" hidden>
|
<section class="b-analyse" id="analyse-block" hidden>
|
||||||
<h2 class="e-abschnitt">Was dein Verlauf sagt</h2>
|
<h2 class="e-abschnitt">Was dein Verlauf sagt</h2>
|
||||||
<p class="b-analyse__satz" id="analyse-satz">…</p>
|
<p class="b-analyse__satz" id="analyse-satz">…</p>
|
||||||
<div id="analyse" class="b-analyse__liste"></div>
|
<div id="analyse" class="b-analyse__liste"></div>
|
||||||
<p class="b-analyse__quelle" id="analyse-quelle"></p>
|
<p class="b-analyse__quelle" id="analyse-quelle"></p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>␍
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/befinden.js?v=202609191915" defer></script>
|
<script src="assets/js/befinden.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+20
-19
@@ -12,24 +12,24 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/bereich.css?v=202609191956" />
|
||||||
<!-- Wegen des Blocks „Willst du dazugehoeren?" auf dem Brett
|
<!-- Wegen des Blocks „Willst du dazugehoeren?" auf dem Brett
|
||||||
„Mitmachen". Eine eigene Kopie der Regel hier waere die zweite
|
„Mitmachen". Eine eigene Kopie der Regel hier waere die zweite
|
||||||
Stelle, an der dieselbe Sache anders aussieht. -->
|
Stelle, an der dieselbe Sache anders aussieht. -->
|
||||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -251,16 +251,17 @@
|
|||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/checkliste.js?v=202609191915" defer></script>
|
<script src="assets/js/checkliste.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/ampel.js?v=202609191915" defer></script>
|
<script src="assets/js/ampel.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/schulung.js?v=202609191915" defer></script>
|
<script src="assets/js/schulung.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/vorlagen.js?v=202609191915" defer></script>
|
<script src="assets/js/vorlagen.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereich.js?v=202609191915" defer></script>
|
<script src="assets/js/bereich.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+118
-118
@@ -1,118 +1,118 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Anfrage · Der Treff</title>
|
<title>Anfrage · Der Treff</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/bereich.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/treff.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Der Treff</a> · <span id="marke-was">Anfrage</span></span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Der Treff</a> · <span id="marke-was">Anfrage</span></span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt">
|
<main class="inhalt">
|
||||||
|
|
||||||
<!-- ==================================================================
|
<!-- ==================================================================
|
||||||
DIE ANFRAGE AUS DER COMMUNITY (17.09.2026)
|
DIE ANFRAGE AUS DER COMMUNITY (17.09.2026)
|
||||||
|
|
||||||
Filipe: „ich will dass die leute sich da anonym bei mir melden
|
Filipe: „ich will dass die leute sich da anonym bei mir melden
|
||||||
können und eine anfrage machen können. ich will dass es
|
können und eine anfrage machen können. ich will dass es
|
||||||
aber profissionel gemacht ist bitte wie ein fragebogen."
|
aber profissionel gemacht ist bitte wie ein fragebogen."
|
||||||
|
|
||||||
VERTRAULICH, NICHT NAMENLOS - seine Entscheidung. Es gibt keine
|
VERTRAULICH, NICHT NAMENLOS - seine Entscheidung. Es gibt keine
|
||||||
Selbstanmeldung im Treff; jeder Zugang kommt von DogFather selbst.
|
Selbstanmeldung im Treff; jeder Zugang kommt von DogFather selbst.
|
||||||
Eine wirklich namenlose Anfrage wäre also nicht anonymer, sondern
|
Eine wirklich namenlose Anfrage wäre also nicht anonymer, sondern
|
||||||
nur schlechter: Man könnte niemandem antworten, und aus einer
|
nur schlechter: Man könnte niemandem antworten, und aus einer
|
||||||
Anfrage würde nie ein Gespräch.
|
Anfrage würde nie ein Gespräch.
|
||||||
|
|
||||||
„Anonym" heißt hier deshalb: NIEMAND AUS DER COMMUNITY SIEHT SIE.
|
„Anonym" heißt hier deshalb: NIEMAND AUS DER COMMUNITY SIEHT SIE.
|
||||||
Nicht die anderen Mitglieder, nicht die Modis - nur DogFather und
|
Nicht die anderen Mitglieder, nicht die Modis - nur DogFather und
|
||||||
die rechte Hand. Und das steht auf dieser Seite, bevor jemand
|
die rechte Hand. Und das steht auf dieser Seite, bevor jemand
|
||||||
anfängt zu tippen, statt im Kleingedruckten darunter.
|
anfängt zu tippen, statt im Kleingedruckten darunter.
|
||||||
============================================================== -->
|
============================================================== -->
|
||||||
|
|
||||||
<section class="kopf-zeile">
|
<section class="kopf-zeile">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Mitmachen</p>
|
<p class="marke">Mitmachen</p>
|
||||||
<!-- DER NAME DER ROLLE STEHT NICHT IN DIESER DATEI.
|
<!-- DER NAME DER ROLLE STEHT NICHT IN DIESER DATEI.
|
||||||
|
|
||||||
Sie ist ohne Anmeldung aus dem offenen Netz lesbar (gemessen
|
Sie ist ohne Anmeldung aus dem offenen Netz lesbar (gemessen
|
||||||
am 17.09.2026: jede Datei unter /workspace/ antwortet mit
|
am 17.09.2026: jede Datei unter /workspace/ antwortet mit
|
||||||
200). Der Server schickt das Wort in seiner Antwort mit --
|
200). Der Server schickt das Wort in seiner Antwort mit --
|
||||||
dieselbe Regel wie bei den Treff-Regeln und im Chat.
|
dieselbe Regel wie bei den Treff-Regeln und im Chat.
|
||||||
|
|
||||||
Was hier steht, ist die ehrliche Ueberschrift, falls die
|
Was hier steht, ist die ehrliche Ueberschrift, falls die
|
||||||
Antwort ausbleibt: eine Anfrage ist es so oder so. -->
|
Antwort ausbleibt: eine Anfrage ist es so oder so. -->
|
||||||
<h1 class="titel" id="titel">Anfrage stellen</h1>
|
<h1 class="titel" id="titel">Anfrage stellen</h1>
|
||||||
<p class="unterzeile">
|
<p class="unterzeile">
|
||||||
Ein paar Fragen - ehrlich beantwortet ist mehr wert als
|
Ein paar Fragen - ehrlich beantwortet ist mehr wert als
|
||||||
vollständig. Du kannst zwischendurch aufhören und später
|
vollständig. Du kannst zwischendurch aufhören und später
|
||||||
weitermachen: Deine Antworten bleiben so lange in diesem
|
weitermachen: Deine Antworten bleiben so lange in diesem
|
||||||
Browser. Zu uns kommen sie erst, wenn du abschickst.
|
Browser. Zu uns kommen sie erst, wenn du abschickst.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<p class="leise" id="ladezeile">einen Moment …</p>
|
<p class="leise" id="ladezeile">einen Moment …</p>
|
||||||
|
|
||||||
<!-- Der Stand, wenn schon eine Anfrage vorliegt (oder eine Sperrfrist
|
<!-- Der Stand, wenn schon eine Anfrage vorliegt (oder eine Sperrfrist
|
||||||
läuft). Steht ganz oben: Wer hier landet und schon geschickt hat,
|
läuft). Steht ganz oben: Wer hier landet und schon geschickt hat,
|
||||||
will als Erstes wissen, was daraus wurde - nicht das Formular
|
will als Erstes wissen, was daraus wurde - nicht das Formular
|
||||||
noch einmal sehen. -->
|
noch einmal sehen. -->
|
||||||
<section class="bw-stand" id="stand" hidden></section>
|
<section class="bw-stand" id="stand" hidden></section>
|
||||||
|
|
||||||
<form class="bw-bogen" id="bogen" hidden novalidate>
|
<form class="bw-bogen" id="bogen" hidden novalidate>
|
||||||
<div id="gruppen"></div>
|
<div id="gruppen"></div>
|
||||||
|
|
||||||
<!-- WER DAS LIEST, steht direkt über dem Absenden-Knopf und nicht
|
<!-- WER DAS LIEST, steht direkt über dem Absenden-Knopf und nicht
|
||||||
nur oben auf der Seite. Wer hier unten ankommt, hat oben zehn
|
nur oben auf der Seite. Wer hier unten ankommt, hat oben zehn
|
||||||
Minuten hinter sich. -->
|
Minuten hinter sich. -->
|
||||||
<p class="bw-wer-liest" id="wer-liest"></p>
|
<p class="bw-wer-liest" id="wer-liest"></p>
|
||||||
|
|
||||||
<div class="bw-abschluss">
|
<div class="bw-abschluss">
|
||||||
<button type="submit" class="knopf" id="abschicken">Anfrage abschicken</button>
|
<button type="submit" class="knopf" id="abschicken">Anfrage abschicken</button>
|
||||||
<a class="schritt" href="bereich.html?b=mitmachen">Doch nicht</a>
|
<a class="schritt" href="bereich.html?b=mitmachen">Doch nicht</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<!-- Der Fuß gehört zu jeder Seite - siehe pruef-css-klassen. -->
|
<!-- Der Fuß gehört zu jeder Seite - siehe pruef-css-klassen. -->
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>␍
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/auskunft.js?v=202609191915" defer></script>
|
<script src="assets/js/auskunft.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bewerben.js?v=202609191915" defer></script>
|
<script src="assets/js/bewerben.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+91
-91
@@ -1,91 +1,91 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Anfragen · Nachwuchs</title>
|
<title>Anfragen · Nachwuchs</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="talente.html">Talente</a> · Anfragen</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="talente.html">Talente</a> · Anfragen</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt inhalt--breit">
|
<main class="inhalt inhalt--breit">
|
||||||
|
|
||||||
<!-- ==================================================================
|
<!-- ==================================================================
|
||||||
DER EINGANG FÜR DIE ANFRAGEN AUS DER COMMUNITY (17.09.2026)
|
DER EINGANG FÜR DIE ANFRAGEN AUS DER COMMUNITY (17.09.2026)
|
||||||
|
|
||||||
Filipe: „und dan soll ich annehmen ablehnen, in warteschlange
|
Filipe: „und dan soll ich annehmen ablehnen, in warteschlange
|
||||||
stellen oder sofort kommunizieren können. und wenn ich annehme dan
|
stellen oder sofort kommunizieren können. und wenn ich annehme dan
|
||||||
soll diese person automatisch zu talente kategorie weiter geleitet
|
soll diese person automatisch zu talente kategorie weiter geleitet
|
||||||
werden."
|
werden."
|
||||||
|
|
||||||
HIER STEHEN SÄTZE, DIE JEMAND ÜBER SICH SELBST GESCHRIEBEN HAT,
|
HIER STEHEN SÄTZE, DIE JEMAND ÜBER SICH SELBST GESCHRIEBEN HAT,
|
||||||
im Vertrauen darauf, dass nur zwei Menschen sie lesen. Diese Seite
|
im Vertrauen darauf, dass nur zwei Menschen sie lesen. Diese Seite
|
||||||
gehört DogFather und der rechten Hand -- durchgesetzt in der
|
gehört DogFather und der rechten Hand -- durchgesetzt in der
|
||||||
Rechtetafel UND in workspace-bewerbung.js.
|
Rechtetafel UND in workspace-bewerbung.js.
|
||||||
|
|
||||||
Deshalb steht im Protokoll auch kein Inhalt, sondern nur die
|
Deshalb steht im Protokoll auch kein Inhalt, sondern nur die
|
||||||
Nummer: Das Protokoll lesen mehr Leute als die Anfrage.
|
Nummer: Das Protokoll lesen mehr Leute als die Anfrage.
|
||||||
============================================================== -->
|
============================================================== -->
|
||||||
|
|
||||||
<section class="kopf-zeile">
|
<section class="kopf-zeile">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Entwicklung & Nachwuchs</p>
|
<p class="marke">Entwicklung & Nachwuchs</p>
|
||||||
<h1 class="titel">Anfragen</h1>
|
<h1 class="titel">Anfragen</h1>
|
||||||
<p class="unterzeile">
|
<p class="unterzeile">
|
||||||
Wer sich selbst gemeldet hat. Nimmst du an, entsteht daraus ein
|
Wer sich selbst gemeldet hat. Nimmst du an, entsteht daraus ein
|
||||||
Eintrag bei den Talenten – auf der Stufe „Angesprochen“, denn wer
|
Eintrag bei den Talenten – auf der Stufe „Angesprochen“, denn wer
|
||||||
sich meldet, hat die erste Frage schon beantwortet.
|
sich meldet, hat die erste Frage schon beantwortet.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<!-- Die Zahlen. Nicht Schmuck, sondern die Arbeitsanweisung dieser
|
<!-- Die Zahlen. Nicht Schmuck, sondern die Arbeitsanweisung dieser
|
||||||
Seite: Was neu ist, steht links und wird zuerst gelesen. -->
|
Seite: Was neu ist, steht links und wird zuerst gelesen. -->
|
||||||
<section class="bw-zahlen" id="zahlen" hidden></section>
|
<section class="bw-zahlen" id="zahlen" hidden></section>
|
||||||
|
|
||||||
<p class="leise" id="ladezeile">einen Moment …</p>
|
<p class="leise" id="ladezeile">einen Moment …</p>
|
||||||
|
|
||||||
<div id="liste"></div>
|
<div id="liste"></div>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>␍
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/auskunft.js?v=202609191915" defer></script>
|
<script src="assets/js/auskunft.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bewerbungen.js?v=202609191915" defer></script>
|
<script src="assets/js/bewerbungen.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+16
-15
@@ -12,20 +12,20 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/calls.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/calls.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -89,13 +89,14 @@
|
|||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/ki.js?v=202609191915" defer></script>
|
<script src="assets/js/ki.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/calls.js?v=202609191915" defer></script>
|
<script src="assets/js/calls.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+16
-15
@@ -12,26 +12,26 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<!-- aufgaben.css bringt die Dialog- und Formularstile mit (.dialog,
|
<!-- aufgaben.css bringt die Dialog- und Formularstile mit (.dialog,
|
||||||
.neu__zeile, .dialog__knoepfe). Sie stehen dort seit dem
|
.neu__zeile, .dialog__knoepfe). Sie stehen dort seit dem
|
||||||
Aufgabenbrett; sie hierher zu kopieren hiesse, sie an zwei Stellen
|
Aufgabenbrett; sie hierher zu kopieren hiesse, sie an zwei Stellen
|
||||||
zu pflegen. Dieselbe Lösung nutzen kalender.html und content.html.
|
zu pflegen. Dieselbe Lösung nutzen kalender.html und content.html.
|
||||||
Gemeldet von pruef-css-klassen.mjs, bevor jemand einen ungestylten
|
Gemeldet von pruef-css-klassen.mjs, bevor jemand einen ungestylten
|
||||||
Dialog zu sehen bekam. -->
|
Dialog zu sehen bekam. -->
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/chat.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/chat.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -367,16 +367,17 @@
|
|||||||
</form>
|
</form>
|
||||||
</dialog>
|
</dialog>
|
||||||
|
|
||||||
<script src="assets/js/bereiche.js?v=202609191915"></script>
|
<script src="assets/js/bereiche.js?v=202609191956"></script>
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915"></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915"></script>
|
<script src="assets/js/kopf.js?v=202609191956"></script>
|
||||||
|
<script src="assets/js/glocke.js?v=202609191956"></script>
|
||||||
<!-- ANRUF VOR CHAT (18.09.2026): anruf.js stellt `window.anrufStarten`
|
<!-- ANRUF VOR CHAT (18.09.2026): anruf.js stellt `window.anrufStarten`
|
||||||
bereit, und chat.js baut die Knoepfe nur, wenn es das gibt.
|
bereit, und chat.js baut die Knoepfe nur, wenn es das gibt.
|
||||||
Andersherum waere die Reihenfolge eine stille Abhaengigkeit --
|
Andersherum waere die Reihenfolge eine stille Abhaengigkeit --
|
||||||
die Knoepfe fehlten, und niemand wuesste warum. -->
|
die Knoepfe fehlten, und niemand wuesste warum. -->
|
||||||
<script src="assets/js/anruf.js?v=202609191915"></script>
|
<script src="assets/js/anruf.js?v=202609191956"></script>
|
||||||
<script src="assets/js/chat.js?v=202609191915"></script>
|
<script src="assets/js/chat.js?v=202609191956"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+17
-16
@@ -12,20 +12,20 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/content.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/content.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -179,14 +179,15 @@
|
|||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/checkliste.js?v=202609191915" defer></script>
|
<script src="assets/js/checkliste.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/vorlagen.js?v=202609191915" defer></script>
|
<script src="assets/js/vorlagen.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/content.js?v=202609191915" defer></script>
|
<script src="assets/js/content.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+355
-355
@@ -1,355 +1,355 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Anmeldung · DogFather Universe</title>
|
<title>Anmeldung · DogFather Universe</title>
|
||||||
<!-- WEDER "Arbeitsbereich" NOCH "die Modis" (11.09.2026).
|
<!-- WEDER "Arbeitsbereich" NOCH "die Modis" (11.09.2026).
|
||||||
|
|
||||||
Seit die Community durch diese Wand kommt, liest sie auch diesen
|
Seit die Community durch diese Wand kommt, liest sie auch diesen
|
||||||
Satz. "Privater Arbeitsbereich fuer DogFather und die Modis" waere
|
Satz. "Privater Arbeitsbereich fuer DogFather und die Modis" waere
|
||||||
fuer sie schlicht falsch -- und das Erste, was sie ueber das Haus
|
fuer sie schlicht falsch -- und das Erste, was sie ueber das Haus
|
||||||
erfaehrt. -->
|
erfaehrt. -->
|
||||||
<meta name="description" content="Privater Bereich rund um DogFather. Zugang nur mit persönlichem Code." />
|
<meta name="description" content="Privater Bereich rund um DogFather. Zugang nur mit persönlichem Code." />
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
||||||
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
||||||
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
|
|
||||||
<!-- Die Bühne ist der erste Eindruck. Ohne diesen Hinweis lädt der Browser sie erst,
|
<!-- Die Bühne ist der erste Eindruck. Ohne diesen Hinweis lädt der Browser sie erst,
|
||||||
nachdem er das CSS gelesen hat - das kostet spürbar Zeit. Quer- und Hochformat
|
nachdem er das CSS gelesen hat - das kostet spürbar Zeit. Quer- und Hochformat
|
||||||
sind getrennt, damit das Handy nicht die große Fassung zieht.
|
sind getrennt, damit das Handy nicht die große Fassung zieht.
|
||||||
|
|
||||||
Hier steht bewusst WebP und nicht AVIF, obwohl die AVIF-Fassungen erzeugt
|
Hier steht bewusst WebP und nicht AVIF, obwohl die AVIF-Fassungen erzeugt
|
||||||
werden und rund ein Drittel kleiner wären: Der ausliefernde Server läuft auf
|
werden und rund ein Drittel kleiner wären: Der ausliefernde Server läuft auf
|
||||||
Express 4, dessen `send` eine alte MIME-Tabelle ohne AVIF mitbringt. Die
|
Express 4, dessen `send` eine alte MIME-Tabelle ohne AVIF mitbringt. Die
|
||||||
Dateien kämen als application/octet-stream an und würden wegen des
|
Dateien kämen als application/octet-stream an und würden wegen des
|
||||||
nosniff-Headers vom Browser verweigert - die Bühne bliebe leer. Sobald der
|
nosniff-Headers vom Browser verweigert - die Bühne bliebe leer. Sobald der
|
||||||
Workspace einen eigenen Server bekommt, kann AVIF wieder eingeschaltet
|
Workspace einen eigenen Server bekommt, kann AVIF wieder eingeschaltet
|
||||||
werden (die Dateien liegen bereit). -->
|
werden (die Dateien liegen bereit). -->
|
||||||
<link rel="preload" as="image" href="assets/img/buehne/crew-gate-1920.webp"
|
<link rel="preload" as="image" href="assets/img/buehne/crew-gate-1920.webp"
|
||||||
type="image/webp" media="(min-width: 900px)" />
|
type="image/webp" media="(min-width: 900px)" />
|
||||||
<link rel="preload" as="image" href="assets/img/buehne/crew-gate-hoch-580.webp"
|
<link rel="preload" as="image" href="assets/img/buehne/crew-gate-hoch-580.webp"
|
||||||
type="image/webp" media="(max-width: 899px)" />
|
type="image/webp" media="(max-width: 899px)" />
|
||||||
|
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<!-- Diese Wand steht NUR auf der Adresse von Team Dogi (ueberall sonst
|
<!-- Diese Wand steht NUR auf der Adresse von Team Dogi (ueberall sonst
|
||||||
404, siehe crewWeiche). Sie darf das Haus deshalb direkt nennen
|
404, siehe crewWeiche). Sie darf das Haus deshalb direkt nennen
|
||||||
statt ueber den Platzhalter haus.css zu gehen -- und sie MUSS es:
|
statt ueber den Platzhalter haus.css zu gehen -- und sie MUSS es:
|
||||||
Eine Zugangswand, die sich erst nach dem Umbiegen faerbt, waere
|
Eine Zugangswand, die sich erst nach dem Umbiegen faerbt, waere
|
||||||
die eine Seite, auf der man das Umfaerben sieht. -->
|
die eine Seite, auf der man das Umfaerben sieht. -->
|
||||||
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="gate gate--crew">
|
<body class="gate gate--crew">
|
||||||
|
|
||||||
<!-- ====================================================================
|
<!-- ====================================================================
|
||||||
DIE DREI ZEICHEN DIESER WAND (10.09.2026)
|
DIE DREI ZEICHEN DIESER WAND (10.09.2026)
|
||||||
|
|
||||||
Filipe: "3 rollen. dogfather. rechte hand und modis."
|
Filipe: "3 rollen. dogfather. rechte hand und modis."
|
||||||
|
|
||||||
Von den fuenf Zeichen der anderen Wand bleibt nur der Husky -- die
|
Von den fuenf Zeichen der anderen Wand bleibt nur der Husky -- die
|
||||||
uebrigen gehoeren zu Rollen, die es hier nicht gibt, und ihre
|
uebrigen gehoeren zu Rollen, die es hier nicht gibt, und ihre
|
||||||
Namen haetten im Quelltext nichts verloren.
|
Namen haetten im Quelltext nichts verloren.
|
||||||
|
|
||||||
DER HUSKY BEI DOGFATHER UND BEI DER RECHTEN HAND, die Pfote bei
|
DER HUSKY BEI DOGFATHER UND BEI DER RECHTEN HAND, die Pfote bei
|
||||||
den Modis (Filipe, 10.09.2026, mit Bildschirmfoto: "bei rechte
|
den Modis (Filipe, 10.09.2026, mit Bildschirmfoto: "bei rechte
|
||||||
hand soll der husky sein und bei modis soll die pfote sein").
|
hand soll der husky sein und bei modis soll die pfote sein").
|
||||||
|
|
||||||
DAS DREHT EINE FRUEHERE VORGABE UM, und der Grund gehoert dazu: Am
|
DAS DREHT EINE FRUEHERE VORGABE UM, und der Grund gehoert dazu: Am
|
||||||
09.09. hiess es "das modi symbol soll das gleiche sein wie bei
|
09.09. hiess es "das modi symbol soll das gleiche sein wie bei
|
||||||
dogfather" -- damals gab es hier zwei Rollen, und der Satz
|
dogfather" -- damals gab es hier zwei Rollen, und der Satz
|
||||||
bedeutete "die Modis gehoeren zu Dogi, nicht zur Agentur". Mit
|
bedeutete "die Modis gehoeren zu Dogi, nicht zur Agentur". Mit
|
||||||
drei Rollen sagt dieselbe Absicht etwas anderes: Der Husky steht
|
drei Rollen sagt dieselbe Absicht etwas anderes: Der Husky steht
|
||||||
bei den beiden, die den Ueberblick haben, die Pfote bei denen, die
|
bei den beiden, die den Ueberblick haben, die Pfote bei denen, die
|
||||||
taeglich unterwegs sind. Zwei gleiche Zeichen und ein anderes --
|
taeglich unterwegs sind. Zwei gleiche Zeichen und ein anderes --
|
||||||
das liest sich als Gruppe, nicht als Reihe.
|
das liest sich als Gruppe, nicht als Reihe.
|
||||||
|
|
||||||
Die Pfote traegt bei 22 px, weil es fuenf klar getrennte Flaechen
|
Die Pfote traegt bei 22 px, weil es fuenf klar getrennte Flaechen
|
||||||
sind und keine Innenzeichnung -- dasselbe Argument, mit dem auf der
|
sind und keine Innenzeichnung -- dasselbe Argument, mit dem auf der
|
||||||
anderen Wand eine Silhouette einem geschliffenen Koerper gewichen
|
anderen Wand eine Silhouette einem geschliffenen Koerper gewichen
|
||||||
ist.
|
ist.
|
||||||
================================================================= -->
|
================================================================= -->
|
||||||
<svg width="0" height="0" style="position:absolute;overflow:hidden" aria-hidden="true"><defs>
|
<svg width="0" height="0" style="position:absolute;overflow:hidden" aria-hidden="true"><defs>
|
||||||
|
|
||||||
<!-- Der Husky ist ein FOTO, kein Pfad. Der Filter zieht ihn auf zwei
|
<!-- Der Husky ist ein FOTO, kein Pfad. Der Filter zieht ihn auf zwei
|
||||||
Toene zusammen (dunkles Blaugrau -> Silber), damit er neben
|
Toene zusammen (dunkles Blaugrau -> Silber), damit er neben
|
||||||
gezeichneten Zeichen nicht wie ein Fremdkoerper wirkt. -->
|
gezeichneten Zeichen nicht wie ein Fremdkoerper wirkt. -->
|
||||||
<filter id="rs-husky-duo" color-interpolation-filters="sRGB">
|
<filter id="rs-husky-duo" color-interpolation-filters="sRGB">
|
||||||
<feComponentTransfer>
|
<feComponentTransfer>
|
||||||
<feFuncR type="table" tableValues="0.165 0.910"/>
|
<feFuncR type="table" tableValues="0.165 0.910"/>
|
||||||
<feFuncG type="table" tableValues="0.212 0.933"/>
|
<feFuncG type="table" tableValues="0.212 0.933"/>
|
||||||
<feFuncB type="table" tableValues="0.267 0.965"/>
|
<feFuncB type="table" tableValues="0.267 0.965"/>
|
||||||
</feComponentTransfer>
|
</feComponentTransfer>
|
||||||
</filter>
|
</filter>
|
||||||
<g id="r-husky">
|
<g id="r-husky">
|
||||||
<image href="assets/img/marke-husky.webp" x="0" y="0" width="24" height="24"
|
<image href="assets/img/marke-husky.webp" x="0" y="0" width="24" height="24"
|
||||||
preserveAspectRatio="xMidYMid meet" filter="url(#rs-husky-duo)"/>
|
preserveAspectRatio="xMidYMid meet" filter="url(#rs-husky-duo)"/>
|
||||||
<circle fill="#7ec8f2" cx="7.73" cy="12.1" r="1.05"/>
|
<circle fill="#7ec8f2" cx="7.73" cy="12.1" r="1.05"/>
|
||||||
<circle fill="#16232f" cx="7.73" cy="12.1" r="0.52"/>
|
<circle fill="#16232f" cx="7.73" cy="12.1" r="0.52"/>
|
||||||
<circle fill="#ffffff" opacity=".85" cx="7.5" cy="11.85" r="0.2"/>
|
<circle fill="#ffffff" opacity=".85" cx="7.5" cy="11.85" r="0.2"/>
|
||||||
</g>
|
</g>
|
||||||
|
|
||||||
<!-- Der Ton der Pfote ist der Modi-Ton (#5f8a9f) nach oben
|
<!-- Der Ton der Pfote ist der Modi-Ton (#5f8a9f) nach oben
|
||||||
aufgehellt: dasselbe Blau wie das App-Symbol, nur heller, damit
|
aufgehellt: dasselbe Blau wie das App-Symbol, nur heller, damit
|
||||||
es bei 22 px gegen den dunklen Grund steht. -->
|
es bei 22 px gegen den dunklen Grund steht. -->
|
||||||
<linearGradient id="rs-pfote" x1="0" y1="0" x2=".35" y2="1">
|
<linearGradient id="rs-pfote" x1="0" y1="0" x2=".35" y2="1">
|
||||||
<stop offset="0" stop-color="#cfe4ef"/>
|
<stop offset="0" stop-color="#cfe4ef"/>
|
||||||
<stop offset=".55" stop-color="#8fb6c8"/>
|
<stop offset=".55" stop-color="#8fb6c8"/>
|
||||||
<stop offset="1" stop-color="#5f8a9f"/>
|
<stop offset="1" stop-color="#5f8a9f"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<g id="r-pfote">
|
<g id="r-pfote">
|
||||||
<ellipse fill="url(#rs-pfote)" cx="12" cy="15.9" rx="5.3" ry="4.4"/>
|
<ellipse fill="url(#rs-pfote)" cx="12" cy="15.9" rx="5.3" ry="4.4"/>
|
||||||
<ellipse fill="url(#rs-pfote)" cx="6.5" cy="10.1" rx="2" ry="2.6"
|
<ellipse fill="url(#rs-pfote)" cx="6.5" cy="10.1" rx="2" ry="2.6"
|
||||||
transform="rotate(-20 6.5 10.1)"/>
|
transform="rotate(-20 6.5 10.1)"/>
|
||||||
<ellipse fill="url(#rs-pfote)" cx="10.1" cy="7.4" rx="2.05" ry="2.7"/>
|
<ellipse fill="url(#rs-pfote)" cx="10.1" cy="7.4" rx="2.05" ry="2.7"/>
|
||||||
<ellipse fill="url(#rs-pfote)" cx="13.9" cy="7.4" rx="2.05" ry="2.7"/>
|
<ellipse fill="url(#rs-pfote)" cx="13.9" cy="7.4" rx="2.05" ry="2.7"/>
|
||||||
<ellipse fill="url(#rs-pfote)" cx="17.5" cy="10.1" rx="2" ry="2.6"
|
<ellipse fill="url(#rs-pfote)" cx="17.5" cy="10.1" rx="2" ry="2.6"
|
||||||
transform="rotate(20 17.5 10.1)"/>
|
transform="rotate(20 17.5 10.1)"/>
|
||||||
<!-- Ein Lichtstreifen oben links auf dem Ballen -- ohne ihn ist er
|
<!-- Ein Lichtstreifen oben links auf dem Ballen -- ohne ihn ist er
|
||||||
eine flache Flaeche. -->
|
eine flache Flaeche. -->
|
||||||
<path fill="rgba(255,255,255,.32)"
|
<path fill="rgba(255,255,255,.32)"
|
||||||
d="M8.4 13.6c1-1.3 2.6-2 4.2-1.9-1.7.5-3 1.6-3.6 2.9z"/>
|
d="M8.4 13.6c1-1.3 2.6-2 4.2-1.9-1.7.5-3 1.6-3.6 2.9z"/>
|
||||||
</g>
|
</g>
|
||||||
|
|
||||||
<!-- DIE COMMUNITY (11.09.2026).
|
<!-- DIE COMMUNITY (11.09.2026).
|
||||||
|
|
||||||
Zwei Figuren, keine einzelne. Das Zeichen EINER Person ist im
|
Zwei Figuren, keine einzelne. Das Zeichen EINER Person ist im
|
||||||
Haus schon vergeben; zwei Rollen mit demselben Zeichen heisst,
|
Haus schon vergeben; zwei Rollen mit demselben Zeichen heisst,
|
||||||
dass das Zeichen nichts mehr sagt.
|
dass das Zeichen nichts mehr sagt.
|
||||||
|
|
||||||
(Und ja: Hier stand zuerst der Name jener anderen Rolle. Diese
|
(Und ja: Hier stand zuerst der Name jener anderen Rolle. Diese
|
||||||
Datei wird an jedes Mitglied der Community ausgeliefert, samt
|
Datei wird an jedes Mitglied der Community ausgeliefert, samt
|
||||||
Kommentaren -- eine Rolle der Agentur hat darin nichts verloren.
|
Kommentaren -- eine Rolle der Agentur hat darin nichts verloren.
|
||||||
Gefunden hat das nicht das Auge, sondern pruef-crew-adresse, die
|
Gefunden hat das nicht das Auge, sondern pruef-crew-adresse, die
|
||||||
seit dem 10.09. genau danach sucht. Zum zweiten Mal an einem Tag,
|
seit dem 10.09. genau danach sucht. Zum zweiten Mal an einem Tag,
|
||||||
und zum zweiten Mal in einem Kommentar, der erklaert, warum man
|
und zum zweiten Mal in einem Kommentar, der erklaert, warum man
|
||||||
so etwas nicht schreibt.)
|
so etwas nicht schreibt.)
|
||||||
|
|
||||||
Die hintere Figur ist leiser gesetzt und teilweise verdeckt -- das
|
Die hintere Figur ist leiser gesetzt und teilweise verdeckt -- das
|
||||||
ist keine Zierde: Bei 22 px verschmelzen zwei gleich helle Formen
|
ist keine Zierde: Bei 22 px verschmelzen zwei gleich helle Formen
|
||||||
zu einem Klecks. Erst der Helligkeitsunterschied macht daraus zwei
|
zu einem Klecks. Erst der Helligkeitsunterschied macht daraus zwei
|
||||||
Menschen.
|
Menschen.
|
||||||
|
|
||||||
DERSELBE VERLAUF WIE DIE PFOTE, nicht der Husky-Filter: Die Pfote
|
DERSELBE VERLAUF WIE DIE PFOTE, nicht der Husky-Filter: Die Pfote
|
||||||
steht bei denen, die taeglich unterwegs sind, der Husky bei denen
|
steht bei denen, die taeglich unterwegs sind, der Husky bei denen
|
||||||
mit dem Ueberblick. Die Community ist weder das eine noch das
|
mit dem Ueberblick. Die Community ist weder das eine noch das
|
||||||
andere -- sie bekommt die Farbe der Pfote und eine eigene Form.
|
andere -- sie bekommt die Farbe der Pfote und eine eigene Form.
|
||||||
Ein drittes Farbsystem auf einer Wand mit vier Kacheln waere
|
Ein drittes Farbsystem auf einer Wand mit vier Kacheln waere
|
||||||
Unruhe ohne Aussage. -->
|
Unruhe ohne Aussage. -->
|
||||||
<g id="r-leute">
|
<g id="r-leute">
|
||||||
<circle fill="url(#rs-pfote)" opacity=".55" cx="15.9" cy="8.1" r="2.9"/>
|
<circle fill="url(#rs-pfote)" opacity=".55" cx="15.9" cy="8.1" r="2.9"/>
|
||||||
<path fill="url(#rs-pfote)" opacity=".55"
|
<path fill="url(#rs-pfote)" opacity=".55"
|
||||||
d="M10.6 20.4v-2.2c0-2.6 2.4-4.3 5.3-4.3s5.3 1.7 5.3 4.3v2.2z"/>
|
d="M10.6 20.4v-2.2c0-2.6 2.4-4.3 5.3-4.3s5.3 1.7 5.3 4.3v2.2z"/>
|
||||||
<circle fill="url(#rs-pfote)" cx="9.2" cy="7.4" r="3.4"/>
|
<circle fill="url(#rs-pfote)" cx="9.2" cy="7.4" r="3.4"/>
|
||||||
<path fill="url(#rs-pfote)"
|
<path fill="url(#rs-pfote)"
|
||||||
d="M2.8 20.4v-2.5c0-3 2.9-5 6.4-5s6.4 2 6.4 5v2.5z"/>
|
d="M2.8 20.4v-2.5c0-3 2.9-5 6.4-5s6.4 2 6.4 5v2.5z"/>
|
||||||
<path fill="rgba(255,255,255,.3)"
|
<path fill="rgba(255,255,255,.3)"
|
||||||
d="M6.6 5.6a3.4 3.4 0 0 1 3.6-1.4c-1.4.3-2.5 1.2-3 2.4z"/>
|
d="M6.6 5.6a3.4 3.4 0 0 1 3.6-1.4c-1.4.3-2.5 1.2-3 2.4z"/>
|
||||||
</g>
|
</g>
|
||||||
</defs></svg>
|
</defs></svg>
|
||||||
|
|
||||||
|
|
||||||
<!-- ---------- Bühne: Bild + Schleier ---------------------------------- -->
|
<!-- ---------- Bühne: Bild + Schleier ---------------------------------- -->
|
||||||
<div class="buehne" aria-hidden="true">
|
<div class="buehne" aria-hidden="true">
|
||||||
<picture>
|
<picture>
|
||||||
<!-- BIS 2560 PIXEL (07.09.2026). Vorher endete die Reihe bei 1600 --
|
<!-- BIS 2560 PIXEL (07.09.2026). Vorher endete die Reihe bei 1600 --
|
||||||
auf einem 2550 px breiten Schirm rechnete der Browser das Bild
|
auf einem 2550 px breiten Schirm rechnete der Browser das Bild
|
||||||
also um das 1,6-fache hoch, und jede Kante wurde weich. Genau
|
also um das 1,6-fache hoch, und jede Kante wurde weich. Genau
|
||||||
das sah man als "nicht hochwertig", ohne es benennen zu koennen.
|
das sah man als "nicht hochwertig", ohne es benennen zu koennen.
|
||||||
Eine hoehere Bildguete haette daran nichts geaendert: Man kann
|
Eine hoehere Bildguete haette daran nichts geaendert: Man kann
|
||||||
keine Bildpunkte zurueckholen, die nie ausgeliefert wurden.
|
keine Bildpunkte zurueckholen, die nie ausgeliefert wurden.
|
||||||
Ueber srcset laedt trotzdem jeder nur die Stufe, die er
|
Ueber srcset laedt trotzdem jeder nur die Stufe, die er
|
||||||
braucht -- ein Handy weiterhin 32 KB. -->
|
braucht -- ein Handy weiterhin 32 KB. -->
|
||||||
<source media="(min-width: 900px)" type="image/webp"
|
<source media="(min-width: 900px)" type="image/webp"
|
||||||
srcset="assets/img/buehne/crew-gate-960.webp 960w,
|
srcset="assets/img/buehne/crew-gate-960.webp 960w,
|
||||||
assets/img/buehne/crew-gate-1280.webp 1280w,
|
assets/img/buehne/crew-gate-1280.webp 1280w,
|
||||||
assets/img/buehne/crew-gate-1600.webp 1600w,
|
assets/img/buehne/crew-gate-1600.webp 1600w,
|
||||||
assets/img/buehne/crew-gate-1920.webp 1920w,
|
assets/img/buehne/crew-gate-1920.webp 1920w,
|
||||||
assets/img/buehne/crew-gate-2560.webp 2560w" sizes="100vw" />
|
assets/img/buehne/crew-gate-2560.webp 2560w" sizes="100vw" />
|
||||||
<source type="image/webp"
|
<source type="image/webp"
|
||||||
srcset="assets/img/buehne/crew-gate-hoch-440.webp 440w,
|
srcset="assets/img/buehne/crew-gate-hoch-440.webp 440w,
|
||||||
assets/img/buehne/crew-gate-hoch-580.webp 580w,
|
assets/img/buehne/crew-gate-hoch-580.webp 580w,
|
||||||
assets/img/buehne/crew-gate-hoch-900.webp 900w" sizes="100vw" />
|
assets/img/buehne/crew-gate-hoch-900.webp 900w" sizes="100vw" />
|
||||||
<img class="buehne__bild" src="assets/img/buehne/crew-gate-1280.webp" alt=""
|
<img class="buehne__bild" src="assets/img/buehne/crew-gate-1280.webp" alt=""
|
||||||
width="1647" height="955" fetchpriority="high" decoding="async" />
|
width="1647" height="955" fetchpriority="high" decoding="async" />
|
||||||
</picture>
|
</picture>
|
||||||
<div class="buehne__schleier"></div>
|
<div class="buehne__schleier"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ---------- Tafel ----------------------------------------------------
|
<!-- ---------- Tafel ----------------------------------------------------
|
||||||
|
|
||||||
DER ANKER (06.09.2026). Im Motiv steht rechts eine LEERE TAFEL mit
|
DER ANKER (06.09.2026). Im Motiv steht rechts eine LEERE TAFEL mit
|
||||||
Neonrahmen -- dort gehoert die Anmeldekarte hinein, und zwar genau
|
Neonrahmen -- dort gehoert die Anmeldekarte hinein, und zwar genau
|
||||||
hinein, nicht ungefaehr.
|
hinein, nicht ungefaehr.
|
||||||
|
|
||||||
Das geht nur, wenn man weiss, wo die gemalte Tafel auf dem
|
Das geht nur, wenn man weiss, wo die gemalte Tafel auf dem
|
||||||
Bildschirm landet. Das Bild liegt mit `object-fit: cover` darunter;
|
Bildschirm landet. Das Bild liegt mit `object-fit: cover` darunter;
|
||||||
je nach Fensterform schneidet der Browser oben/unten oder
|
je nach Fensterform schneidet der Browser oben/unten oder
|
||||||
links/rechts etwas ab. Dieser Anker rechnet genau dieselbe
|
links/rechts etwas ab. Dieser Anker rechnet genau dieselbe
|
||||||
Cover-Geometrie noch einmal nach (siehe gate.css) -- er ist damit
|
Cover-Geometrie noch einmal nach (siehe gate.css) -- er ist damit
|
||||||
deckungsgleich mit dem Bild, und die Karte kann in Prozent des
|
deckungsgleich mit dem Bild, und die Karte kann in Prozent des
|
||||||
BILDES sitzen statt in Prozent des Fensters.
|
BILDES sitzen statt in Prozent des Fensters.
|
||||||
|
|
||||||
Er faengt keine Klicks ab (pointer-events: none); nur die Karte
|
Er faengt keine Klicks ab (pointer-events: none); nur die Karte
|
||||||
darin ist bedienbar. -->
|
darin ist bedienbar. -->
|
||||||
<div class="tafel-anker">
|
<div class="tafel-anker">
|
||||||
<main class="tafel" id="tafel">
|
<main class="tafel" id="tafel">
|
||||||
<div class="tafel__kante" aria-hidden="true"></div>
|
<div class="tafel__kante" aria-hidden="true"></div>
|
||||||
|
|
||||||
<!-- 10.09.2026, Wunsch Filipe: hier soll alles auf DogFather und sein
|
<!-- 10.09.2026, Wunsch Filipe: hier soll alles auf DogFather und sein
|
||||||
Team zugeschnitten sein.
|
Team zugeschnitten sein.
|
||||||
|
|
||||||
Zwei Namen und ein Zeichen dazwischen -- nebeneinander, nicht
|
Zwei Namen und ein Zeichen dazwischen -- nebeneinander, nicht
|
||||||
uebereinander. Dogi steht hier nicht ueber den Modis, sie machen
|
uebereinander. Dogi steht hier nicht ueber den Modis, sie machen
|
||||||
das zusammen.
|
das zusammen.
|
||||||
|
|
||||||
Das "x" steht als eigenes Element, damit es kleiner und in der
|
Das "x" steht als eigenes Element, damit es kleiner und in der
|
||||||
Zwischenfarbe gesetzt werden kann -- so liest man zwei Namen und
|
Zwischenfarbe gesetzt werden kann -- so liest man zwei Namen und
|
||||||
ein Zeichen dazwischen, nicht drei gleich laute Wörter. Es trägt
|
ein Zeichen dazwischen, nicht drei gleich laute Wörter. Es trägt
|
||||||
aria-hidden nicht: Vorgelesen wird "DogFather x Team Dogi", und
|
aria-hidden nicht: Vorgelesen wird "DogFather x Team Dogi", und
|
||||||
genau so spricht man es auch aus. -->
|
genau so spricht man es auch aus. -->
|
||||||
<header class="kopf">
|
<header class="kopf">
|
||||||
<p class="marke marke--paar">
|
<p class="marke marke--paar">
|
||||||
<span class="marke__dogi">DogFather</span>
|
<span class="marke__dogi">DogFather</span>
|
||||||
<span class="marke__x">×</span>
|
<span class="marke__x">×</span>
|
||||||
<span class="marke__crew">Team Dogi</span>
|
<span class="marke__crew">Team Dogi</span>
|
||||||
</p>
|
</p>
|
||||||
<h1 class="titel">Team Dogi</h1>
|
<h1 class="titel">Team Dogi</h1>
|
||||||
<p class="unterzeile">Team Dogi und der Treff. Zugang nur mit persönlichem Code.</p>
|
<p class="unterzeile">Team Dogi und der Treff. Zugang nur mit persönlichem Code.</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="rollen" role="radiogroup" aria-labelledby="rollen-schild">
|
<div class="rollen" role="radiogroup" aria-labelledby="rollen-schild">
|
||||||
<p class="feldschild" id="rollen-schild">Womit meldest du dich an?</p>
|
<p class="feldschild" id="rollen-schild">Womit meldest du dich an?</p>
|
||||||
|
|
||||||
<button type="button" class="rolle" data-rolle="admin" role="radio" aria-checked="false">
|
<button type="button" class="rolle" data-rolle="admin" role="radio" aria-checked="false">
|
||||||
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-husky"/></svg>
|
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-husky"/></svg>
|
||||||
<span class="rolle__text">
|
<span class="rolle__text">
|
||||||
<span class="rolle__name">DogFather</span>
|
<span class="rolle__name">DogFather</span>
|
||||||
<span class="rolle__zusatz">Überblick & Entscheidungen</span>
|
<span class="rolle__zusatz">Überblick & Entscheidungen</span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<!-- Der Untertitel beschreibt eine AUFGABE, kein Recht -- dieselbe
|
<!-- Der Untertitel beschreibt eine AUFGABE, kein Recht -- dieselbe
|
||||||
Ueberlegung wie auf der anderen Wand: Wer vor der Auswahl
|
Ueberlegung wie auf der anderen Wand: Wer vor der Auswahl
|
||||||
steht, fragt sich nicht, was er duerfte, sondern was er hier
|
steht, fragt sich nicht, was er duerfte, sondern was er hier
|
||||||
tut. Und er stellt niemanden ueber jemanden: "vertritt und
|
tut. Und er stellt niemanden ueber jemanden: "vertritt und
|
||||||
koordiniert" ist eine Taetigkeit, kein Rang. -->
|
koordiniert" ist eine Taetigkeit, kein Rang. -->
|
||||||
<button type="button" class="rolle" data-rolle="hand" role="radio" aria-checked="false">
|
<button type="button" class="rolle" data-rolle="hand" role="radio" aria-checked="false">
|
||||||
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-husky"/></svg>
|
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-husky"/></svg>
|
||||||
<span class="rolle__text">
|
<span class="rolle__text">
|
||||||
<span class="rolle__name">Rechte Hand</span>
|
<span class="rolle__name">Rechte Hand</span>
|
||||||
<span class="rolle__zusatz">Vertritt und koordiniert</span>
|
<span class="rolle__zusatz">Vertritt und koordiniert</span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button type="button" class="rolle" data-rolle="modi" role="radio" aria-checked="false">
|
<button type="button" class="rolle" data-rolle="modi" role="radio" aria-checked="false">
|
||||||
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-pfote"/></svg>
|
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-pfote"/></svg>
|
||||||
<span class="rolle__text">
|
<span class="rolle__text">
|
||||||
<span class="rolle__name">Modi</span>
|
<span class="rolle__name">Modi</span>
|
||||||
<span class="rolle__zusatz">Chat, Live und eigene Aufgaben</span>
|
<span class="rolle__zusatz">Chat, Live und eigene Aufgaben</span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<!-- DIE VIERTE KACHEL (Entscheidung Filipe, 11.09.2026).
|
<!-- DIE VIERTE KACHEL (Entscheidung Filipe, 11.09.2026).
|
||||||
|
|
||||||
Der Treff ist kein eigenes Haus mehr, sondern ein Raum in
|
Der Treff ist kein eigenes Haus mehr, sondern ein Raum in
|
||||||
diesem. Damit kommt die Community durch DIESE Wand, und sie
|
diesem. Damit kommt die Community durch DIESE Wand, und sie
|
||||||
braucht etwas zum Drauftippen.
|
braucht etwas zum Drauftippen.
|
||||||
|
|
||||||
SIE STEHT GANZ UNTEN, und das ist nicht Rangfolge, sondern
|
SIE STEHT GANZ UNTEN, und das ist nicht Rangfolge, sondern
|
||||||
Haeufigkeit: Die drei darueber melden sich taeglich an, die
|
Haeufigkeit: Die drei darueber melden sich taeglich an, die
|
||||||
Community-Kachel wird von jedem Einzelnen genau einmal
|
Community-Kachel wird von jedem Einzelnen genau einmal
|
||||||
gedrueckt und danach merkt sich der Browser die Wahl
|
gedrueckt und danach merkt sich der Browser die Wahl
|
||||||
(localStorage, siehe gate.js). Wer taeglich kommt, soll oben
|
(localStorage, siehe gate.js). Wer taeglich kommt, soll oben
|
||||||
finden, was er taeglich braucht.
|
finden, was er taeglich braucht.
|
||||||
|
|
||||||
DER UNTERTITEL BESCHREIBT EINEN ORT, KEINE RECHTE -- dieselbe
|
DER UNTERTITEL BESCHREIBT EINEN ORT, KEINE RECHTE -- dieselbe
|
||||||
Ueberlegung wie bei den drei anderen: Wer vor der Auswahl
|
Ueberlegung wie bei den drei anderen: Wer vor der Auswahl
|
||||||
steht, fragt sich nicht, was er duerfte, sondern wo er
|
steht, fragt sich nicht, was er duerfte, sondern wo er
|
||||||
hinwill. -->
|
hinwill. -->
|
||||||
<button type="button" class="rolle" data-rolle="gast" role="radio" aria-checked="false">
|
<button type="button" class="rolle" data-rolle="gast" role="radio" aria-checked="false">
|
||||||
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-leute"/></svg>
|
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-leute"/></svg>
|
||||||
<span class="rolle__text">
|
<span class="rolle__text">
|
||||||
<span class="rolle__name">Community</span>
|
<span class="rolle__name">Community</span>
|
||||||
<span class="rolle__zusatz">Der Treff</span>
|
<span class="rolle__zusatz">Der Treff</span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ==== DAS ALTER (15.09.2026) ================================
|
<!-- ==== DAS ALTER (15.09.2026) ================================
|
||||||
Auf der Regelseite steht seit dem 11.09. „ab 18". Bis heute war
|
Auf der Regelseite steht seit dem 11.09. „ab 18". Bis heute war
|
||||||
das ein Satz; jetzt ist es eine Bedingung.
|
das ein Satz; jetzt ist es eine Bedingung.
|
||||||
|
|
||||||
Es erscheint nur bei der Community-Kachel: Wer zum Team gehört,
|
Es erscheint nur bei der Community-Kachel: Wer zum Team gehört,
|
||||||
hat seinen Zugang von DogFather persönlich bekommen – da ist die
|
hat seinen Zugang von DogFather persönlich bekommen – da ist die
|
||||||
Frage vorher geklärt, und ein Häkchen an der Tür wäre nur im Weg.
|
Frage vorher geklärt, und ein Häkchen an der Tür wäre nur im Weg.
|
||||||
|
|
||||||
Das Häkchen ist NICHT die Sicherung, es ist die Frage. Geprüft
|
Das Häkchen ist NICHT die Sicherung, es ist die Frage. Geprüft
|
||||||
und festgehalten wird sie am Server; hier steht sie nur so, dass
|
und festgehalten wird sie am Server; hier steht sie nur so, dass
|
||||||
man sie liest, bevor man sie setzt. -->
|
man sie liest, bevor man sie setzt. -->
|
||||||
<div class="alterfrage" id="alterfrage" hidden>
|
<div class="alterfrage" id="alterfrage" hidden>
|
||||||
<label class="alterfrage__zeile">
|
<label class="alterfrage__zeile">
|
||||||
<input type="checkbox" id="alter-ok" />
|
<input type="checkbox" id="alter-ok" />
|
||||||
<span class="alterfrage__text">
|
<span class="alterfrage__text">
|
||||||
Ich bin mindestens <strong id="alter-zahl">18</strong> Jahre alt.
|
Ich bin mindestens <strong id="alter-zahl">18</strong> Jahre alt.
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<form class="formular" id="formular" novalidate>
|
<form class="formular" id="formular" novalidate>
|
||||||
<label class="feldschild" for="code">
|
<label class="feldschild" for="code">
|
||||||
Persönlicher Zugangscode <span class="fuer" id="fuer" hidden></span>
|
Persönlicher Zugangscode <span class="fuer" id="fuer" hidden></span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<div class="feld">
|
<div class="feld">
|
||||||
<input type="password" id="code" name="code" inputmode="text"
|
<input type="password" id="code" name="code" inputmode="text"
|
||||||
autocomplete="current-password" spellcheck="false"
|
autocomplete="current-password" spellcheck="false"
|
||||||
placeholder="Code eingeben" aria-describedby="hinweis fehler" />
|
placeholder="Code eingeben" aria-describedby="hinweis fehler" />
|
||||||
<button type="button" class="feld__auge" id="auge"
|
<button type="button" class="feld__auge" id="auge"
|
||||||
aria-label="Code anzeigen" aria-pressed="false">
|
aria-label="Code anzeigen" aria-pressed="false">
|
||||||
<svg viewBox="0 0 24 24" aria-hidden="true">
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path class="strich" d="M2.5 12S6 5.8 12 5.8 21.5 12 21.5 12 18 18.2 12 18.2 2.5 12 2.5 12Z"/>
|
<path class="strich" d="M2.5 12S6 5.8 12 5.8 21.5 12 21.5 12 18 18.2 12 18.2 2.5 12 2.5 12Z"/>
|
||||||
<circle class="strich" cx="12" cy="12" r="2.9"/>
|
<circle class="strich" cx="12" cy="12" r="2.9"/>
|
||||||
<path class="strich durch" d="m4 20 16-16"/>
|
<path class="strich durch" d="m4 20 16-16"/>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="hinweis" id="hinweis" hidden>Feststelltaste ist aktiv.</p>
|
<p class="hinweis" id="hinweis" hidden>Feststelltaste ist aktiv.</p>
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<button type="submit" class="knopf" id="knopf">
|
<button type="submit" class="knopf" id="knopf">
|
||||||
<span class="knopf__text">Anmelden</span>
|
<span class="knopf__text">Anmelden</span>
|
||||||
<span class="knopf__laden" aria-hidden="true"></span>
|
<span class="knopf__laden" aria-hidden="true"></span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!-- EINE TÜR BRAUCHT EINE KLINGEL (ergänzt 19.09.2026).
|
<!-- EINE TÜR BRAUCHT EINE KLINGEL (ergänzt 19.09.2026).
|
||||||
|
|
||||||
Hier standen vier Kacheln, ein Feld „Code eingeben" und ein
|
Hier standen vier Kacheln, ein Feld „Code eingeben" und ein
|
||||||
Knopf. Wer keinen Code hat, fand keinen einzigen Satz, der ihm
|
Knopf. Wer keinen Code hat, fand keinen einzigen Satz, der ihm
|
||||||
sagt, was jetzt zu tun ist. Für die Community ist das besonders
|
sagt, was jetzt zu tun ist. Für die Community ist das besonders
|
||||||
teuer: Sie ist die einzige Rolle, die von außen kommt und
|
teuer: Sie ist die einzige Rolle, die von außen kommt und
|
||||||
niemanden im Haus kennt. -->
|
niemanden im Haus kennt. -->
|
||||||
<p class="fuss fuss--woher">Noch keinen Code? Frag im Live nach – Team Dogi gibt ihn dir persönlich.</p>
|
<p class="fuss fuss--woher">Noch keinen Code? Frag im Live nach – Team Dogi gibt ihn dir persönlich.</p>
|
||||||
|
|
||||||
<p class="fuss">
|
<p class="fuss">
|
||||||
Verschlüsselte Verbindung · Zugriffe werden protokolliert
|
Verschlüsselte Verbindung · Zugriffe werden protokolliert
|
||||||
</p>
|
</p>
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>␍
|
||||||
|
|
||||||
<script src="assets/js/gate.js?v=202609191915" defer></script>
|
<script src="assets/js/gate.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -22,25 +22,25 @@
|
|||||||
},
|
},
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "/assets/img/app-symbole/crew-192.png?v=202609191915",
|
"src": "/assets/img/app-symbole/crew-192.png?v=202609191956",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"purpose": "any"
|
"purpose": "any"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "/assets/img/app-symbole/crew-512.png?v=202609191915",
|
"src": "/assets/img/app-symbole/crew-512.png?v=202609191956",
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"purpose": "any"
|
"purpose": "any"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609191915",
|
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609191956",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"purpose": "maskable"
|
"purpose": "maskable"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609191915",
|
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609191956",
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"purpose": "maskable"
|
"purpose": "maskable"
|
||||||
|
|||||||
+15
-14
@@ -12,20 +12,20 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/dateien.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/dateien.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -108,12 +108,13 @@
|
|||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/dateien.js?v=202609191915" defer></script>
|
<script src="assets/js/dateien.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+116
-116
@@ -1,116 +1,116 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Eure Aufgaben · Spicy & Dogi</title>
|
<title>Eure Aufgaben · Spicy & Dogi</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Team Dogi</a> · Eure Aufgaben</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Team Dogi</a> · Eure Aufgaben</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt inhalt--breit">
|
<main class="inhalt inhalt--breit">
|
||||||
|
|
||||||
<section class="kopf-zeile">
|
<section class="kopf-zeile">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke" id="ober">Entwicklung & Nachwuchs</p>
|
<p class="marke" id="ober">Entwicklung & Nachwuchs</p>
|
||||||
<!-- UMBENANNT AM 19.09.2026 (siehe workspace.js). Diese Seite ist
|
<!-- UMBENANNT AM 19.09.2026 (siehe workspace.js). Diese Seite ist
|
||||||
der Aufgabenkatalog: was ein Modi koennen soll und wo er
|
der Aufgabenkatalog: was ein Modi koennen soll und wo er
|
||||||
gerade steht. Der Name "Entwicklung" bleibt dem vorbehalten,
|
gerade steht. Der Name "Entwicklung" bleibt dem vorbehalten,
|
||||||
was Filipe darunter versteht -- einer Auswertung je Person. -->
|
was Filipe darunter versteht -- einer Auswertung je Person. -->
|
||||||
<h1 class="titel" id="titel">Eure Aufgaben</h1>
|
<h1 class="titel" id="titel">Eure Aufgaben</h1>
|
||||||
<p class="unterzeile" id="unterzeile">
|
<p class="unterzeile" id="unterzeile">
|
||||||
Anklicken statt tippen. Keine Noten, keine Punktzahl – ein Gesprächsanlass.
|
Anklicken statt tippen. Keine Noten, keine Punktzahl – ein Gesprächsanlass.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<!-- ==================================================================
|
<!-- ==================================================================
|
||||||
DIE REIHENFOLGE AUF DIESER SEITE IST DAS EIGENTLICHE DESIGN
|
DIE REIHENFOLGE AUF DIESER SEITE IST DAS EIGENTLICHE DESIGN
|
||||||
|
|
||||||
1. Die Ampel — sie betrifft Menschen, nicht Prozesse.
|
1. Die Ampel — sie betrifft Menschen, nicht Prozesse.
|
||||||
2. Die Personen — wen gehe ich heute durch.
|
2. Die Personen — wen gehe ich heute durch.
|
||||||
3. Die Karte — und darin die ABWEICHUNGEN zuerst.
|
3. Die Karte — und darin die ABWEICHUNGEN zuerst.
|
||||||
4. Ganz unten der Weg zu den eigenen sechs Fragen — sie haben
|
4. Ganz unten der Weg zu den eigenen sechs Fragen — sie haben
|
||||||
seit dem 15.09.2026 eine eigene Seite.
|
seit dem 15.09.2026 eine eigene Seite.
|
||||||
|
|
||||||
Wer die Seite öffnet, soll die wichtigste Sache zuerst sehen, und
|
Wer die Seite öffnet, soll die wichtigste Sache zuerst sehen, und
|
||||||
das ist nicht die Liste. Eine Ampel unter 34 Beobachtungen hätte
|
das ist nicht die Liste. Eine Ampel unter 34 Beobachtungen hätte
|
||||||
niemand je gelesen.
|
niemand je gelesen.
|
||||||
============================================================== -->
|
============================================================== -->
|
||||||
|
|
||||||
<section id="ampel" class="e-ampel" hidden></section>
|
<section id="ampel" class="e-ampel" hidden></section>
|
||||||
|
|
||||||
<section id="personen-block" hidden>
|
<section id="personen-block" hidden>
|
||||||
<h2 class="e-abschnitt">Wen gehst du durch?</h2>
|
<h2 class="e-abschnitt">Wen gehst du durch?</h2>
|
||||||
<div id="personen" class="e-personen" role="group" aria-label="Person wählen" aria-busy="true"></div>
|
<div id="personen" class="e-personen" role="group" aria-label="Person wählen" aria-busy="true"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="karte" class="e-karte" hidden></section>
|
<section id="karte" class="e-karte" hidden></section>
|
||||||
|
|
||||||
<!-- DEINE EIGENE KARTE.
|
<!-- DEINE EIGENE KARTE.
|
||||||
|
|
||||||
Sie steht ÜBER den sechs Fragen und UNTER der Liste der anderen:
|
Sie steht ÜBER den sechs Fragen und UNTER der Liste der anderen:
|
||||||
Wer diese Seite als DogFather öffnet, kommt zuerst zu seiner
|
Wer diese Seite als DogFather öffnet, kommt zuerst zu seiner
|
||||||
Arbeit; wer beurteilt wird, sieht die Liste gar nicht und
|
Arbeit; wer beurteilt wird, sieht die Liste gar nicht und
|
||||||
landet direkt hier.
|
landet direkt hier.
|
||||||
|
|
||||||
Sie erscheint erst, wenn alle gesetzt haben — eine halbe Karte
|
Sie erscheint erst, wenn alle gesetzt haben — eine halbe Karte
|
||||||
ist schlimmer als keine. -->
|
ist schlimmer als keine. -->
|
||||||
<section id="karte-block" class="e-meine" hidden>
|
<section id="karte-block" class="e-meine" hidden>
|
||||||
<h2 class="e-abschnitt">Deine Karte</h2>
|
<h2 class="e-abschnitt">Deine Karte</h2>
|
||||||
<p class="e-meine__satz" id="karte-satz">…</p>
|
<p class="e-meine__satz" id="karte-satz">…</p>
|
||||||
<div id="meine-karte" aria-busy="true"></div>
|
<div id="meine-karte" aria-busy="true"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- ==== DIE SECHS FRAGEN STEHEN WOANDERS (15.09.2026) ==========
|
<!-- ==== DIE SECHS FRAGEN STEHEN WOANDERS (15.09.2026) ==========
|
||||||
Sie hatten hier ihren Platz, solange es keine eigene Seite gab.
|
Sie hatten hier ihren Platz, solange es keine eigene Seite gab.
|
||||||
Jetzt gibt es eine – und zwei Stellen für dieselben sechs Fragen
|
Jetzt gibt es eine – und zwei Stellen für dieselben sechs Fragen
|
||||||
wären zwei Stände, die auseinanderlaufen. Hier bleibt der Weg
|
wären zwei Stände, die auseinanderlaufen. Hier bleibt der Weg
|
||||||
dorthin, nicht eine Kopie. -->
|
dorthin, nicht eine Kopie. -->
|
||||||
<section class="e-meins e-meins--verweis" id="meins-block" hidden>
|
<section class="e-meins e-meins--verweis" id="meins-block" hidden>
|
||||||
<h2 class="e-abschnitt">Und wie geht es dir?</h2>
|
<h2 class="e-abschnitt">Und wie geht es dir?</h2>
|
||||||
<p class="e-meins__satz">
|
<p class="e-meins__satz">
|
||||||
Ein paar Fragen über dich – die Antworten sieht niemand außer dir.
|
Ein paar Fragen über dich – die Antworten sieht niemand außer dir.
|
||||||
</p>
|
</p>
|
||||||
<a class="knopf knopf--klein" href="befinden.html">Zu deinen Fragen</a>
|
<a class="knopf knopf--klein" href="befinden.html">Zu deinen Fragen</a>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>␍
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/entwicklung.js?v=202609191915" defer></script>
|
<script src="assets/js/entwicklung.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+13
-12
@@ -7,13 +7,13 @@
|
|||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -141,11 +141,12 @@
|
|||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/hilfe.js?v=202609191915" defer></script>
|
<script src="assets/js/hilfe.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+417
-417
@@ -1,417 +1,417 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Anmeldung · Spicy & Dogi</title>
|
<title>Anmeldung · Spicy & Dogi</title>
|
||||||
<meta name="description" content="Privater Arbeitsbereich für Creator, Scouts und DogFather." />
|
<meta name="description" content="Privater Arbeitsbereich für Creator, Scouts und DogFather." />
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
||||||
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
||||||
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
|
|
||||||
<!-- Die Bühne ist der erste Eindruck. Ohne diesen Hinweis lädt der Browser sie erst,
|
<!-- Die Bühne ist der erste Eindruck. Ohne diesen Hinweis lädt der Browser sie erst,
|
||||||
nachdem er das CSS gelesen hat - das kostet spürbar Zeit. Quer- und Hochformat
|
nachdem er das CSS gelesen hat - das kostet spürbar Zeit. Quer- und Hochformat
|
||||||
sind getrennt, damit das Handy nicht die große Fassung zieht.
|
sind getrennt, damit das Handy nicht die große Fassung zieht.
|
||||||
|
|
||||||
Hier steht bewusst WebP und nicht AVIF, obwohl die AVIF-Fassungen erzeugt
|
Hier steht bewusst WebP und nicht AVIF, obwohl die AVIF-Fassungen erzeugt
|
||||||
werden und rund ein Drittel kleiner wären: Der ausliefernde Server läuft auf
|
werden und rund ein Drittel kleiner wären: Der ausliefernde Server läuft auf
|
||||||
Express 4, dessen `send` eine alte MIME-Tabelle ohne AVIF mitbringt. Die
|
Express 4, dessen `send` eine alte MIME-Tabelle ohne AVIF mitbringt. Die
|
||||||
Dateien kämen als application/octet-stream an und würden wegen des
|
Dateien kämen als application/octet-stream an und würden wegen des
|
||||||
nosniff-Headers vom Browser verweigert - die Bühne bliebe leer. Sobald der
|
nosniff-Headers vom Browser verweigert - die Bühne bliebe leer. Sobald der
|
||||||
Workspace einen eigenen Server bekommt, kann AVIF wieder eingeschaltet
|
Workspace einen eigenen Server bekommt, kann AVIF wieder eingeschaltet
|
||||||
werden (die Dateien liegen bereit). -->
|
werden (die Dateien liegen bereit). -->
|
||||||
<link rel="preload" as="image" href="assets/img/buehne/gate-1920.webp"
|
<link rel="preload" as="image" href="assets/img/buehne/gate-1920.webp"
|
||||||
type="image/webp" media="(min-width: 900px)" />
|
type="image/webp" media="(min-width: 900px)" />
|
||||||
<link rel="preload" as="image" href="assets/img/buehne/gate-hoch-580.webp"
|
<link rel="preload" as="image" href="assets/img/buehne/gate-hoch-580.webp"
|
||||||
type="image/webp" media="(max-width: 899px)" />
|
type="image/webp" media="(max-width: 899px)" />
|
||||||
|
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="gate">
|
<body class="gate">
|
||||||
|
|
||||||
<!-- ====================================================================
|
<!-- ====================================================================
|
||||||
DIE FÜNF ROLLENZEICHEN, plastisch (08.09.2026)
|
DIE FÜNF ROLLENZEICHEN, plastisch (08.09.2026)
|
||||||
|
|
||||||
Filipe: "die symbole sollen auch noch viel viel viel realistischer
|
Filipe: "die symbole sollen auch noch viel viel viel realistischer
|
||||||
und geiler sein", mit genauen Vorgaben je Rolle:
|
und geiler sein", mit genauen Vorgaben je Rolle:
|
||||||
peperoni rot und grün
|
peperoni rot und grün
|
||||||
husky silber und blaue Augen
|
husky silber und blaue Augen
|
||||||
manager gelber Stern, der glitzert
|
manager gelber Stern, der glitzert
|
||||||
scout grünes Schild mit einer roten Peperoni darin
|
scout grünes Schild mit einer roten Peperoni darin
|
||||||
creator lila und silber, "was richtig geiles"
|
creator lila und silber, "was richtig geiles"
|
||||||
|
|
||||||
WAS SICH GRUNDSÄTZLICH ÄNDERT: Vorher trug jedes Zeichen genau EINE
|
WAS SICH GRUNDSÄTZLICH ÄNDERT: Vorher trug jedes Zeichen genau EINE
|
||||||
Farbe (`currentColor` über `.fuell`/`.linie`). Damit lässt sich
|
Farbe (`currentColor` über `.fuell`/`.linie`). Damit lässt sich
|
||||||
"rot UND grün" nicht darstellen. Jedes Zeichen bekommt deshalb
|
"rot UND grün" nicht darstellen. Jedes Zeichen bekommt deshalb
|
||||||
eigene Verläufe — dieselbe Technik, mit der auch die Kacheln
|
eigene Verläufe — dieselbe Technik, mit der auch die Kacheln
|
||||||
plastisch wirken: ein heller Rand oben, die Sättigung in der Mitte,
|
plastisch wirken: ein heller Rand oben, die Sättigung in der Mitte,
|
||||||
Abdunklung unten. Das ergibt Volumen statt einer flachen Fläche.
|
Abdunklung unten. Das ergibt Volumen statt einer flachen Fläche.
|
||||||
|
|
||||||
WARUM VERLÄUFE UND KEIN DETAIL: Diese Zeichen stehen bei 22 px.
|
WARUM VERLÄUFE UND KEIN DETAIL: Diese Zeichen stehen bei 22 px.
|
||||||
Mehr Linien werden dort zu Matsch — das stand schon beim Husky hier,
|
Mehr Linien werden dort zu Matsch — das stand schon beim Husky hier,
|
||||||
und es gilt weiter. "Realistischer" heißt bei dieser Größe also
|
und es gilt weiter. "Realistischer" heißt bei dieser Größe also
|
||||||
nicht "mehr Striche", sondern LICHT: eine Form, auf die Licht fällt,
|
nicht "mehr Striche", sondern LICHT: eine Form, auf die Licht fällt,
|
||||||
wirkt körperlich; dieselbe Form flach gefüllt wirkt wie ein
|
wirkt körperlich; dieselbe Form flach gefüllt wirkt wie ein
|
||||||
Aufkleber. Alle Verläufe laufen deshalb von oben nach unten, als
|
Aufkleber. Alle Verläufe laufen deshalb von oben nach unten, als
|
||||||
stünde das Licht über der Seite — so wie bei allem anderen hier auch.
|
stünde das Licht über der Seite — so wie bei allem anderen hier auch.
|
||||||
|
|
||||||
Die Verlaufs-IDs sind mit `rs-` vorangestellt (RollenSymbol), damit
|
Die Verlaufs-IDs sind mit `rs-` vorangestellt (RollenSymbol), damit
|
||||||
sie mit nichts kollidieren, was später dazukommt.
|
sie mit nichts kollidieren, was später dazukommt.
|
||||||
==================================================================== -->
|
==================================================================== -->
|
||||||
<!-- NICHT `display:none` VERSTECKEN -- das war ein echter Fehler, und man
|
<!-- NICHT `display:none` VERSTECKEN -- das war ein echter Fehler, und man
|
||||||
sieht ihn erst im Bild (08.09.2026).
|
sieht ihn erst im Bild (08.09.2026).
|
||||||
|
|
||||||
Solange die Zeichen einfarbig waren (`currentColor` ueber CSS), war
|
Solange die Zeichen einfarbig waren (`currentColor` ueber CSS), war
|
||||||
`display:none` harmlos. Sobald sie ihre Farbe aus einem <linearGradient>
|
`display:none` harmlos. Sobald sie ihre Farbe aus einem <linearGradient>
|
||||||
im selben <defs> holen, ist es das nicht mehr: Ein Verlauf in einem
|
im selben <defs> holen, ist es das nicht mehr: Ein Verlauf in einem
|
||||||
Teilbaum, der `display:none` traegt, wird nicht ausgewertet, und ein
|
Teilbaum, der `display:none` traegt, wird nicht ausgewertet, und ein
|
||||||
`<use>` darauf bekommt schlicht KEINE Fuellung. Im Bildschirmfoto
|
`<use>` darauf bekommt schlicht KEINE Fuellung. Im Bildschirmfoto
|
||||||
standen daraufhin fuenf Bruchstuecke -- nur die Strichlinien, keine
|
standen daraufhin fuenf Bruchstuecke -- nur die Strichlinien, keine
|
||||||
Flaechen. Die Zahlen sagten dazu nichts, das Sprite war ja da.
|
Flaechen. Die Zahlen sagten dazu nichts, das Sprite war ja da.
|
||||||
|
|
||||||
Richtig ist ein Kasten ohne Groesse: Er wird gerendert (Verlaeufe
|
Richtig ist ein Kasten ohne Groesse: Er wird gerendert (Verlaeufe
|
||||||
werden also aufgeloest), nimmt aber keinen Platz ein. -->
|
werden also aufgeloest), nimmt aber keinen Platz ein. -->
|
||||||
<svg width="0" height="0" style="position:absolute;overflow:hidden" aria-hidden="true"><defs>
|
<svg width="0" height="0" style="position:absolute;overflow:hidden" aria-hidden="true"><defs>
|
||||||
|
|
||||||
<linearGradient id="rs-chili-rot" x1="0" y1="0" x2="0" y2="1">
|
<linearGradient id="rs-chili-rot" x1="0" y1="0" x2="0" y2="1">
|
||||||
<stop offset="0" stop-color="#ff8a6b"/>
|
<stop offset="0" stop-color="#ff8a6b"/>
|
||||||
<stop offset=".55" stop-color="#ef4136"/>
|
<stop offset=".55" stop-color="#ef4136"/>
|
||||||
<stop offset="1" stop-color="#a8221c"/>
|
<stop offset="1" stop-color="#a8221c"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="rs-chili-gruen" x1="0" y1="0" x2="1" y2="1">
|
<linearGradient id="rs-chili-gruen" x1="0" y1="0" x2="1" y2="1">
|
||||||
<stop offset="0" stop-color="#8fd66a"/>
|
<stop offset="0" stop-color="#8fd66a"/>
|
||||||
<stop offset="1" stop-color="#3f7d33"/>
|
<stop offset="1" stop-color="#3f7d33"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<!-- `rs-silber` ist am 09.09.2026 entfallen. Er faerbte den alten,
|
<!-- `rs-silber` ist am 09.09.2026 entfallen. Er faerbte den alten,
|
||||||
selbstgebauten Husky; seit dort das echte Logo steht (mit einem
|
selbstgebauten Husky; seit dort das echte Logo steht (mit einem
|
||||||
eigenen Duotonie-Filter), benutzte ihn niemand mehr. Ein
|
eigenen Duotonie-Filter), benutzte ihn niemand mehr. Ein
|
||||||
Verlauf, den man im Quelltext findet und der nichts faerbt,
|
Verlauf, den man im Quelltext findet und der nichts faerbt,
|
||||||
kostet den naechsten Leser eine Suche. -->
|
kostet den naechsten Leser eine Suche. -->
|
||||||
<!-- DER STERN WIRD LILA (08.09.2026, zweite Ansage von Filipe).
|
<!-- DER STERN WIRD LILA (08.09.2026, zweite Ansage von Filipe).
|
||||||
Zuerst hiess es "manager: gelber stern der glitzert", dann nach
|
Zuerst hiess es "manager: gelber stern der glitzert", dann nach
|
||||||
dem Bildschirmfoto: "die hauptfarbe von denen ist lila, der stern
|
dem Bildschirmfoto: "die hauptfarbe von denen ist lila, der stern
|
||||||
soll so bleiben aber was gelb ist soll lila werden."
|
soll so bleiben aber was gelb ist soll lila werden."
|
||||||
|
|
||||||
Die FORM bleibt also, nur die Farbe wechselt -- und das ist auch
|
Die FORM bleibt also, nur die Farbe wechselt -- und das ist auch
|
||||||
stimmiger: Der Manager traegt Lila als Rollenfarbe, ein goldener
|
stimmiger: Der Manager traegt Lila als Rollenfarbe, ein goldener
|
||||||
Stern daneben waere die einzige Stelle gewesen, an der Zeichen und
|
Stern daneben waere die einzige Stelle gewesen, an der Zeichen und
|
||||||
Rolle auseinandergehen. Die Wechsel hell/dunkel bleiben, sie sind
|
Rolle auseinandergehen. Die Wechsel hell/dunkel bleiben, sie sind
|
||||||
es, die aus einer Flaeche einen Koerper machen.
|
es, die aus einer Flaeche einen Koerper machen.
|
||||||
|
|
||||||
Der Name der Kennung bleibt `rs-gold`: Sie wird an mehreren
|
Der Name der Kennung bleibt `rs-gold`: Sie wird an mehreren
|
||||||
Stellen benutzt, und ein Umbenennen waere eine zweite Gelegenheit,
|
Stellen benutzt, und ein Umbenennen waere eine zweite Gelegenheit,
|
||||||
eine davon zu vergessen. -->
|
eine davon zu vergessen. -->
|
||||||
<linearGradient id="rs-gold" x1="0" y1="0" x2="0" y2="1">
|
<linearGradient id="rs-gold" x1="0" y1="0" x2="0" y2="1">
|
||||||
<stop offset="0" stop-color="#e6d6ff"/>
|
<stop offset="0" stop-color="#e6d6ff"/>
|
||||||
<stop offset=".45" stop-color="#a78bfa"/>
|
<stop offset=".45" stop-color="#a78bfa"/>
|
||||||
<stop offset="1" stop-color="#5b3fa8"/>
|
<stop offset="1" stop-color="#5b3fa8"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="rs-schild" x1="0" y1="0" x2="0" y2="1">
|
<linearGradient id="rs-schild" x1="0" y1="0" x2="0" y2="1">
|
||||||
<stop offset="0" stop-color="#7fe0ae"/>
|
<stop offset="0" stop-color="#7fe0ae"/>
|
||||||
<stop offset=".5" stop-color="#3faa78"/>
|
<stop offset=".5" stop-color="#3faa78"/>
|
||||||
<stop offset="1" stop-color="#1c5e42"/>
|
<stop offset="1" stop-color="#1c5e42"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="rs-lila" x1="0" y1="0" x2="1" y2="1">
|
<linearGradient id="rs-lila" x1="0" y1="0" x2="1" y2="1">
|
||||||
<stop offset="0" stop-color="#d9c9ff"/>
|
<stop offset="0" stop-color="#d9c9ff"/>
|
||||||
<stop offset=".38" stop-color="#a78bfa"/>
|
<stop offset=".38" stop-color="#a78bfa"/>
|
||||||
<stop offset="1" stop-color="#5b3fa8"/>
|
<stop offset="1" stop-color="#5b3fa8"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient id="rs-lila-silber" x1="0" y1="1" x2="1" y2="0">
|
<linearGradient id="rs-lila-silber" x1="0" y1="1" x2="1" y2="0">
|
||||||
<stop offset="0" stop-color="#6d4fc4"/>
|
<stop offset="0" stop-color="#6d4fc4"/>
|
||||||
<stop offset=".5" stop-color="#cbd5e1"/>
|
<stop offset=".5" stop-color="#cbd5e1"/>
|
||||||
<stop offset="1" stop-color="#a78bfa"/>
|
<stop offset="1" stop-color="#a78bfa"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<radialGradient id="rs-auge" cx=".38" cy=".32" r=".85">
|
<radialGradient id="rs-auge" cx=".38" cy=".32" r=".85">
|
||||||
<stop offset="0" stop-color="#bfe9ff"/>
|
<stop offset="0" stop-color="#bfe9ff"/>
|
||||||
<stop offset=".45" stop-color="#3fa9f5"/>
|
<stop offset=".45" stop-color="#3fa9f5"/>
|
||||||
<stop offset="1" stop-color="#0f4c75"/>
|
<stop offset="1" stop-color="#0f4c75"/>
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
|
|
||||||
<!-- SPICY MEDIA — die Peperoni, rot mit grünem Stiel.
|
<!-- SPICY MEDIA — die Peperoni, rot mit grünem Stiel.
|
||||||
Der Stiel liegt ÜBER der Frucht und ist eine eigene Form: Als
|
Der Stiel liegt ÜBER der Frucht und ist eine eigene Form: Als
|
||||||
Teil desselben Pfades hätte er die Farbe der Frucht erben müssen,
|
Teil desselben Pfades hätte er die Farbe der Frucht erben müssen,
|
||||||
und genau das wollte Filipe nicht. -->
|
und genau das wollte Filipe nicht. -->
|
||||||
<g id="r-chili">
|
<g id="r-chili">
|
||||||
<path fill="url(#rs-chili-rot)" d="M13.4 4.6c-.6 1.4-.3 2.6.6 3.4 3 .3 5 2.6 5 5.4 0 3.4-3 6-6.8 6-4.6 0-8.2-2.9-9.7-6.7 3.7.9 6.6-.4 8-3.1.6-1.2.4-2.4-.4-3.1"/>
|
<path fill="url(#rs-chili-rot)" d="M13.4 4.6c-.6 1.4-.3 2.6.6 3.4 3 .3 5 2.6 5 5.4 0 3.4-3 6-6.8 6-4.6 0-8.2-2.9-9.7-6.7 3.7.9 6.6-.4 8-3.1.6-1.2.4-2.4-.4-3.1"/>
|
||||||
<path fill="none" stroke="rgba(255,255,255,.5)" stroke-width=".9" stroke-linecap="round" d="M6.2 13.9c2.4 1.9 5 2.6 7.4 2"/>
|
<path fill="none" stroke="rgba(255,255,255,.5)" stroke-width=".9" stroke-linecap="round" d="M6.2 13.9c2.4 1.9 5 2.6 7.4 2"/>
|
||||||
<path fill="none" stroke="url(#rs-chili-gruen)" stroke-width="1.9" stroke-linecap="round" d="M13.4 4.6c1.5-.6 2.8.1 3 1.4"/>
|
<path fill="none" stroke="url(#rs-chili-gruen)" stroke-width="1.9" stroke-linecap="round" d="M13.4 4.6c1.5-.6 2.8.1 3 1.4"/>
|
||||||
<path fill="none" stroke="url(#rs-chili-gruen)" stroke-width="1.7" stroke-linecap="round" d="M13.4 4.6c-.5 1.2-.3 2.3.5 3.2"/>
|
<path fill="none" stroke="url(#rs-chili-gruen)" stroke-width="1.7" stroke-linecap="round" d="M13.4 4.6c-.5 1.2-.3 2.3.5 3.2"/>
|
||||||
</g>
|
</g>
|
||||||
|
|
||||||
<!-- DER HUSKY IST JETZT DAS ECHTE LOGO (09.09.2026, screen3).
|
<!-- DER HUSKY IST JETZT DAS ECHTE LOGO (09.09.2026, screen3).
|
||||||
|
|
||||||
Filipe: "dieses husky symbol soll ersetzt werden durch den husky
|
Filipe: "dieses husky symbol soll ersetzt werden durch den husky
|
||||||
oben in der leiste ... die farbe von der rolle und die barre soll
|
oben in der leiste ... die farbe von der rolle und die barre soll
|
||||||
so richtig geil silber sein ... und der husky soll eine geile
|
so richtig geil silber sein ... und der husky soll eine geile
|
||||||
babyblau sein haben."
|
babyblau sein haben."
|
||||||
|
|
||||||
Hier stand eine geometrische Eigenkonstruktion: ein Fuenfeck mit
|
Hier stand eine geometrische Eigenkonstruktion: ein Fuenfeck mit
|
||||||
zwei dreieckigen Ohren und zwei Punkten. Sie war ordentlich
|
zwei dreieckigen Ohren und zwei Punkten. Sie war ordentlich
|
||||||
gebaut, aber sie war nicht DER Husky -- oben in der Leiste steht
|
gebaut, aber sie war nicht DER Husky -- oben in der Leiste steht
|
||||||
die richtige Marke, und zwei verschiedene Huskys auf einer Seite
|
die richtige Marke, und zwei verschiedene Huskys auf einer Seite
|
||||||
sind einer zu viel.
|
sind einer zu viel.
|
||||||
|
|
||||||
DAS BILD KOMMT ALS <image>, DIE FARBE AUS EINEM FILTER. Die
|
DAS BILD KOMMT ALS <image>, DIE FARBE AUS EINEM FILTER. Die
|
||||||
Datei ist schwarz-weiss und freigestellt. `feComponentTransfer`
|
Datei ist schwarz-weiss und freigestellt. `feComponentTransfer`
|
||||||
mit einer zweistufigen Tabelle bildet sie auf zwei Farben ab:
|
mit einer zweistufigen Tabelle bildet sie auf zwei Farben ab:
|
||||||
Schwarz wird zu dunklem Stahl (#2a3644), Weiss zu Silber
|
Schwarz wird zu dunklem Stahl (#2a3644), Weiss zu Silber
|
||||||
(#e8eef6). Das ist eine echte Duotonie -- ein `feColorMatrix`
|
(#e8eef6). Das ist eine echte Duotonie -- ein `feColorMatrix`
|
||||||
koennte das nicht, der kann nur linear mischen und wuerde die
|
koennte das nicht, der kann nur linear mischen und wuerde die
|
||||||
Mitteltoene flach ziehen.
|
Mitteltoene flach ziehen.
|
||||||
|
|
||||||
DAS AUGE IST GEMESSEN, NICHT GESETZT: Ein Durchlauf ueber die
|
DAS AUGE IST GEMESSEN, NICHT GESETZT: Ein Durchlauf ueber die
|
||||||
Bildpunkte hat die Pupille als einzige dunkle Insel gefunden,
|
Bildpunkte hat die Pupille als einzige dunkle Insel gefunden,
|
||||||
die ringsum von Hellem umgeben ist -- bei 165/258 von 512, also
|
die ringsum von Hellem umgeben ist -- bei 165/258 von 512, also
|
||||||
32,2 % und 50,4 %. Im 24er Raster sind das 7,73 und 12,1.
|
32,2 % und 50,4 %. Im 24er Raster sind das 7,73 und 12,1.
|
||||||
Darauf liegen Iris (babyblau), Pupille und ein Glanzpunkt.
|
Darauf liegen Iris (babyblau), Pupille und ein Glanzpunkt.
|
||||||
|
|
||||||
Warum ueberhaupt eine Iris: Das Logo hat ein schwarzes Auge.
|
Warum ueberhaupt eine Iris: Das Logo hat ein schwarzes Auge.
|
||||||
Babyblau war seit dem ersten Auftrag gewuenscht ("husky: silber
|
Babyblau war seit dem ersten Auftrag gewuenscht ("husky: silber
|
||||||
und blaue augen") und ist es jetzt wieder -- es ist der einzige
|
und blaue augen") und ist es jetzt wieder -- es ist der einzige
|
||||||
Farbfleck an einem sonst silbernen Zeichen und traegt damit
|
Farbfleck an einem sonst silbernen Zeichen und traegt damit
|
||||||
genau so viel Farbe wie die anderen Rollen auch. -->
|
genau so viel Farbe wie die anderen Rollen auch. -->
|
||||||
<filter id="rs-husky-duo" color-interpolation-filters="sRGB">
|
<filter id="rs-husky-duo" color-interpolation-filters="sRGB">
|
||||||
<feComponentTransfer>
|
<feComponentTransfer>
|
||||||
<feFuncR type="table" tableValues="0.165 0.910"/>
|
<feFuncR type="table" tableValues="0.165 0.910"/>
|
||||||
<feFuncG type="table" tableValues="0.212 0.933"/>
|
<feFuncG type="table" tableValues="0.212 0.933"/>
|
||||||
<feFuncB type="table" tableValues="0.267 0.965"/>
|
<feFuncB type="table" tableValues="0.267 0.965"/>
|
||||||
</feComponentTransfer>
|
</feComponentTransfer>
|
||||||
</filter>
|
</filter>
|
||||||
<g id="r-husky">
|
<g id="r-husky">
|
||||||
<image href="assets/img/marke-husky.webp" x="0" y="0" width="24" height="24"
|
<image href="assets/img/marke-husky.webp" x="0" y="0" width="24" height="24"
|
||||||
preserveAspectRatio="xMidYMid meet" filter="url(#rs-husky-duo)"/>
|
preserveAspectRatio="xMidYMid meet" filter="url(#rs-husky-duo)"/>
|
||||||
<circle fill="#7ec8f2" cx="7.73" cy="12.1" r="1.05"/>
|
<circle fill="#7ec8f2" cx="7.73" cy="12.1" r="1.05"/>
|
||||||
<circle fill="#16232f" cx="7.73" cy="12.1" r="0.52"/>
|
<circle fill="#16232f" cx="7.73" cy="12.1" r="0.52"/>
|
||||||
<circle fill="#ffffff" opacity=".85" cx="7.5" cy="11.85" r="0.2"/>
|
<circle fill="#ffffff" opacity=".85" cx="7.5" cy="11.85" r="0.2"/>
|
||||||
</g>
|
</g>
|
||||||
|
|
||||||
<!-- MANAGER — der goldene Stern, der glitzert.
|
<!-- MANAGER — der goldene Stern, der glitzert.
|
||||||
Das Funkeln ist ein schmaler heller Streifen, der einmal quer
|
Das Funkeln ist ein schmaler heller Streifen, der einmal quer
|
||||||
über den Stern wandert. Es ist BEWUSST langsam (4,5 s) und
|
über den Stern wandert. Es ist BEWUSST langsam (4,5 s) und
|
||||||
schwach: Ein schnelles Blinken wäre genau die aggressive Optik,
|
schwach: Ein schnelles Blinken wäre genau die aggressive Optik,
|
||||||
die hier nicht sein soll. Bei "weniger Bewegung" steht es still
|
die hier nicht sein soll. Bei "weniger Bewegung" steht es still
|
||||||
(siehe personen.css) -- dann bleibt ein ruhiger goldener Stern. -->
|
(siehe personen.css) -- dann bleibt ein ruhiger goldener Stern. -->
|
||||||
<g id="r-stern">
|
<g id="r-stern">
|
||||||
<path fill="url(#rs-gold)" d="m12 3.4 2.6 5.6 6 .8-4.4 4.2 1.1 6-5.3-2.9-5.3 2.9 1.1-6L3.4 9.8l6-.8z"/>
|
<path fill="url(#rs-gold)" d="m12 3.4 2.6 5.6 6 .8-4.4 4.2 1.1 6-5.3-2.9-5.3 2.9 1.1-6L3.4 9.8l6-.8z"/>
|
||||||
<path fill="rgba(255,255,255,.45)" d="m12 3.4 2.6 5.6-2.6.7z"/>
|
<path fill="rgba(255,255,255,.45)" d="m12 3.4 2.6 5.6-2.6.7z"/>
|
||||||
<path class="rs-funkel" fill="rgba(255,255,255,.75)" d="m12 3.4 2.6 5.6 6 .8-4.4 4.2 1.1 6-5.3-2.9-5.3 2.9 1.1-6L3.4 9.8l6-.8z"/>
|
<path class="rs-funkel" fill="rgba(255,255,255,.75)" d="m12 3.4 2.6 5.6 6 .8-4.4 4.2 1.1 6-5.3-2.9-5.3 2.9 1.1-6L3.4 9.8l6-.8z"/>
|
||||||
</g>
|
</g>
|
||||||
|
|
||||||
<!-- SCOUT — grünes Schild mit einer roten Peperoni darin.
|
<!-- SCOUT — grünes Schild mit einer roten Peperoni darin.
|
||||||
Der Haken von früher ist weg: Filipe hat die Peperoni ausdrücklich
|
Der Haken von früher ist weg: Filipe hat die Peperoni ausdrücklich
|
||||||
verlangt, und beides nebeneinander wäre bei 22 px Matsch. Die
|
verlangt, und beides nebeneinander wäre bei 22 px Matsch. Die
|
||||||
Chili ist stark vereinfacht — bei dieser Größe zählt nur, dass
|
Chili ist stark vereinfacht — bei dieser Größe zählt nur, dass
|
||||||
eine rote, gebogene Form mit grünem Stiel im Schild steht. -->
|
eine rote, gebogene Form mit grünem Stiel im Schild steht. -->
|
||||||
<g id="r-schutz">
|
<g id="r-schutz">
|
||||||
<path fill="url(#rs-schild)" d="M12 3.4 5.8 5.9v5c0 3.5 2.5 6.7 6.2 8 3.7-1.3 6.2-4.5 6.2-8v-5z"/>
|
<path fill="url(#rs-schild)" d="M12 3.4 5.8 5.9v5c0 3.5 2.5 6.7 6.2 8 3.7-1.3 6.2-4.5 6.2-8v-5z"/>
|
||||||
<path fill="rgba(255,255,255,.28)" d="M12 3.4 5.8 5.9v5c0 1.4.4 2.7 1.1 3.9L12 3.4z"/>
|
<path fill="rgba(255,255,255,.28)" d="M12 3.4 5.8 5.9v5c0 1.4.4 2.7 1.1 3.9L12 3.4z"/>
|
||||||
<path fill="url(#rs-chili-rot)" d="M13.6 8.1c-.4.9-.2 1.7.4 2.2 1.9.2 3.2 1.7 3.2 3.4 0 2.1-1.9 3.8-4.3 3.8-2.9 0-5.2-1.8-6.1-4.2 2.3.6 4.2-.3 5-2 .4-.8.3-1.5-.2-2z" transform="translate(-.6 -.9) scale(.92) translate(1 1)"/>
|
<path fill="url(#rs-chili-rot)" d="M13.6 8.1c-.4.9-.2 1.7.4 2.2 1.9.2 3.2 1.7 3.2 3.4 0 2.1-1.9 3.8-4.3 3.8-2.9 0-5.2-1.8-6.1-4.2 2.3.6 4.2-.3 5-2 .4-.8.3-1.5-.2-2z" transform="translate(-.6 -.9) scale(.92) translate(1 1)"/>
|
||||||
<path fill="none" stroke="#8fd66a" stroke-width="1.3" stroke-linecap="round" d="M12.9 7.6c.9-.4 1.7 0 1.8.8"/>
|
<path fill="none" stroke="#8fd66a" stroke-width="1.3" stroke-linecap="round" d="M12.9 7.6c.9-.4 1.7 0 1.8.8"/>
|
||||||
</g>
|
</g>
|
||||||
|
|
||||||
<!-- CREATOR — Lila und Silber.
|
<!-- CREATOR — Lila und Silber.
|
||||||
Statt der alten Person-Silhouette (die aussah wie ein leeres
|
Statt der alten Person-Silhouette (die aussah wie ein leeres
|
||||||
Benutzerbild und damit wie "niemand") jetzt ein geschliffener
|
Benutzerbild und damit wie "niemand") jetzt ein geschliffener
|
||||||
Kristall: lila Kern, silberne Facetten. Er hat als einziges der
|
Kristall: lila Kern, silberne Facetten. Er hat als einziges der
|
||||||
fünf Zeichen eine Innenzeichnung, und die trägt auch klein --
|
fünf Zeichen eine Innenzeichnung, und die trägt auch klein --
|
||||||
weil es gerade Kanten sind, keine Rundungen. -->
|
weil es gerade Kanten sind, keine Rundungen. -->
|
||||||
<g id="r-person">
|
<g id="r-person">
|
||||||
<path fill="url(#rs-lila)" d="M12 2.6 20 9l-3 11.4H7L4 9z"/>
|
<path fill="url(#rs-lila)" d="M12 2.6 20 9l-3 11.4H7L4 9z"/>
|
||||||
<path fill="url(#rs-lila-silber)" opacity=".85" d="M12 2.6 20 9h-5.6zM12 2.6 4 9h5.6z"/>
|
<path fill="url(#rs-lila-silber)" opacity=".85" d="M12 2.6 20 9h-5.6zM12 2.6 4 9h5.6z"/>
|
||||||
<path fill="rgba(255,255,255,.4)" d="M12 2.6 14.4 9H9.6z"/>
|
<path fill="rgba(255,255,255,.4)" d="M12 2.6 14.4 9H9.6z"/>
|
||||||
<path fill="none" stroke="rgba(216,222,233,.75)" stroke-width=".8" stroke-linejoin="round" d="M12 2.6 20 9l-3 11.4H7L4 9zM4 9h16M9.6 9 12 20.4 14.4 9"/>
|
<path fill="none" stroke="rgba(216,222,233,.75)" stroke-width=".8" stroke-linejoin="round" d="M12 2.6 20 9l-3 11.4H7L4 9zM4 9h16M9.6 9 12 20.4 14.4 9"/>
|
||||||
</g>
|
</g>
|
||||||
</defs></svg>
|
</defs></svg>
|
||||||
|
|
||||||
|
|
||||||
<!-- ---------- Bühne: Bild + Schleier ---------------------------------- -->
|
<!-- ---------- Bühne: Bild + Schleier ---------------------------------- -->
|
||||||
<div class="buehne" aria-hidden="true">
|
<div class="buehne" aria-hidden="true">
|
||||||
<picture>
|
<picture>
|
||||||
<!-- BIS 2560 PIXEL (07.09.2026). Vorher endete die Reihe bei 1600 --
|
<!-- BIS 2560 PIXEL (07.09.2026). Vorher endete die Reihe bei 1600 --
|
||||||
auf einem 2550 px breiten Schirm rechnete der Browser das Bild
|
auf einem 2550 px breiten Schirm rechnete der Browser das Bild
|
||||||
also um das 1,6-fache hoch, und jede Kante wurde weich. Genau
|
also um das 1,6-fache hoch, und jede Kante wurde weich. Genau
|
||||||
das sah man als "nicht hochwertig", ohne es benennen zu koennen.
|
das sah man als "nicht hochwertig", ohne es benennen zu koennen.
|
||||||
Eine hoehere Bildguete haette daran nichts geaendert: Man kann
|
Eine hoehere Bildguete haette daran nichts geaendert: Man kann
|
||||||
keine Bildpunkte zurueckholen, die nie ausgeliefert wurden.
|
keine Bildpunkte zurueckholen, die nie ausgeliefert wurden.
|
||||||
Ueber srcset laedt trotzdem jeder nur die Stufe, die er
|
Ueber srcset laedt trotzdem jeder nur die Stufe, die er
|
||||||
braucht -- ein Handy weiterhin 32 KB. -->
|
braucht -- ein Handy weiterhin 32 KB. -->
|
||||||
<source media="(min-width: 900px)" type="image/webp"
|
<source media="(min-width: 900px)" type="image/webp"
|
||||||
srcset="assets/img/buehne/gate-960.webp 960w,
|
srcset="assets/img/buehne/gate-960.webp 960w,
|
||||||
assets/img/buehne/gate-1280.webp 1280w,
|
assets/img/buehne/gate-1280.webp 1280w,
|
||||||
assets/img/buehne/gate-1600.webp 1600w,
|
assets/img/buehne/gate-1600.webp 1600w,
|
||||||
assets/img/buehne/gate-1920.webp 1920w,
|
assets/img/buehne/gate-1920.webp 1920w,
|
||||||
assets/img/buehne/gate-2560.webp 2560w" sizes="100vw" />
|
assets/img/buehne/gate-2560.webp 2560w" sizes="100vw" />
|
||||||
<source type="image/webp"
|
<source type="image/webp"
|
||||||
srcset="assets/img/buehne/gate-hoch-440.webp 440w,
|
srcset="assets/img/buehne/gate-hoch-440.webp 440w,
|
||||||
assets/img/buehne/gate-hoch-580.webp 580w,
|
assets/img/buehne/gate-hoch-580.webp 580w,
|
||||||
assets/img/buehne/gate-hoch-900.webp 900w" sizes="100vw" />
|
assets/img/buehne/gate-hoch-900.webp 900w" sizes="100vw" />
|
||||||
<img class="buehne__bild" src="assets/img/buehne/gate-1280.webp" alt=""
|
<img class="buehne__bild" src="assets/img/buehne/gate-1280.webp" alt=""
|
||||||
width="1647" height="955" fetchpriority="high" decoding="async" />
|
width="1647" height="955" fetchpriority="high" decoding="async" />
|
||||||
</picture>
|
</picture>
|
||||||
<div class="buehne__schleier"></div>
|
<div class="buehne__schleier"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ---------- Tafel ----------------------------------------------------
|
<!-- ---------- Tafel ----------------------------------------------------
|
||||||
|
|
||||||
DER ANKER (06.09.2026). Im Motiv steht rechts eine LEERE TAFEL mit
|
DER ANKER (06.09.2026). Im Motiv steht rechts eine LEERE TAFEL mit
|
||||||
Neonrahmen -- dort gehoert die Anmeldekarte hinein, und zwar genau
|
Neonrahmen -- dort gehoert die Anmeldekarte hinein, und zwar genau
|
||||||
hinein, nicht ungefaehr.
|
hinein, nicht ungefaehr.
|
||||||
|
|
||||||
Das geht nur, wenn man weiss, wo die gemalte Tafel auf dem
|
Das geht nur, wenn man weiss, wo die gemalte Tafel auf dem
|
||||||
Bildschirm landet. Das Bild liegt mit `object-fit: cover` darunter;
|
Bildschirm landet. Das Bild liegt mit `object-fit: cover` darunter;
|
||||||
je nach Fensterform schneidet der Browser oben/unten oder
|
je nach Fensterform schneidet der Browser oben/unten oder
|
||||||
links/rechts etwas ab. Dieser Anker rechnet genau dieselbe
|
links/rechts etwas ab. Dieser Anker rechnet genau dieselbe
|
||||||
Cover-Geometrie noch einmal nach (siehe gate.css) -- er ist damit
|
Cover-Geometrie noch einmal nach (siehe gate.css) -- er ist damit
|
||||||
deckungsgleich mit dem Bild, und die Karte kann in Prozent des
|
deckungsgleich mit dem Bild, und die Karte kann in Prozent des
|
||||||
BILDES sitzen statt in Prozent des Fensters.
|
BILDES sitzen statt in Prozent des Fensters.
|
||||||
|
|
||||||
Er faengt keine Klicks ab (pointer-events: none); nur die Karte
|
Er faengt keine Klicks ab (pointer-events: none); nur die Karte
|
||||||
darin ist bedienbar. -->
|
darin ist bedienbar. -->
|
||||||
<div class="tafel-anker">
|
<div class="tafel-anker">
|
||||||
<main class="tafel" id="tafel">
|
<main class="tafel" id="tafel">
|
||||||
<div class="tafel__kante" aria-hidden="true"></div>
|
<div class="tafel__kante" aria-hidden="true"></div>
|
||||||
|
|
||||||
<!-- 07.09.2026, Wunsch Filipe: "dogfather universe auch ersetzen durch
|
<!-- 07.09.2026, Wunsch Filipe: "dogfather universe auch ersetzen durch
|
||||||
SpicyMedia x DogFather" und der Satz darunter soll "nur um manager
|
SpicyMedia x DogFather" und der Satz darunter soll "nur um manager
|
||||||
scouts und creator von spicy media" gehen, ohne DogFather.
|
scouts und creator von spicy media" gehen, ohne DogFather.
|
||||||
|
|
||||||
Das "x" steht als eigenes Element, damit es kleiner und in der
|
Das "x" steht als eigenes Element, damit es kleiner und in der
|
||||||
Zwischenfarbe gesetzt werden kann -- so liest man zwei Namen und
|
Zwischenfarbe gesetzt werden kann -- so liest man zwei Namen und
|
||||||
ein Zeichen dazwischen, nicht drei gleich laute Wörter. Es trägt
|
ein Zeichen dazwischen, nicht drei gleich laute Wörter. Es trägt
|
||||||
aria-hidden nicht: Vorgelesen wird "SpicyMedia x DogFather", und
|
aria-hidden nicht: Vorgelesen wird "SpicyMedia x DogFather", und
|
||||||
genau so spricht man es auch aus. -->
|
genau so spricht man es auch aus. -->
|
||||||
<header class="kopf">
|
<header class="kopf">
|
||||||
<p class="marke marke--paar">
|
<p class="marke marke--paar">
|
||||||
<span class="marke__spicy">SpicyMedia</span>
|
<span class="marke__spicy">SpicyMedia</span>
|
||||||
<span class="marke__x">×</span>
|
<span class="marke__x">×</span>
|
||||||
<span class="marke__dogi">DogFather</span>
|
<span class="marke__dogi">DogFather</span>
|
||||||
</p>
|
</p>
|
||||||
<h1 class="titel">Creator Workspace</h1>
|
<h1 class="titel">Creator Workspace</h1>
|
||||||
<p class="unterzeile">Privater Bereich für die Manager, Scouts und Creator von Spicy Media.</p>
|
<p class="unterzeile">Privater Bereich für die Manager, Scouts und Creator von Spicy Media.</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="rollen" role="radiogroup" aria-labelledby="rollen-schild">
|
<div class="rollen" role="radiogroup" aria-labelledby="rollen-schild">
|
||||||
<p class="feldschild" id="rollen-schild">Womit meldest du dich an?</p>
|
<p class="feldschild" id="rollen-schild">Womit meldest du dich an?</p>
|
||||||
|
|
||||||
<!-- SPICY MEDIA steht ganz oben (07.09.2026, Wunsch Filipe: "ueber
|
<!-- SPICY MEDIA steht ganz oben (07.09.2026, Wunsch Filipe: "ueber
|
||||||
dogfather auch eine kategorie, eine neue rolle"). Der Chili ist
|
dogfather auch eine kategorie, eine neue rolle"). Der Chili ist
|
||||||
das Zeichen der Marke -- dieselbe Form wie im Logo, nur als
|
das Zeichen der Marke -- dieselbe Form wie im Logo, nur als
|
||||||
Umriss, damit sie neben Krone, Stern und Schild dieselbe
|
Umriss, damit sie neben Krone, Stern und Schild dieselbe
|
||||||
Strichstaerke hat. -->
|
Strichstaerke hat. -->
|
||||||
<button type="button" class="rolle" data-rolle="spicy" role="radio" aria-checked="false">
|
<button type="button" class="rolle" data-rolle="spicy" role="radio" aria-checked="false">
|
||||||
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-chili"/></svg>
|
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-chili"/></svg>
|
||||||
<span class="rolle__text">
|
<span class="rolle__text">
|
||||||
<span class="rolle__name">Spicy Media</span>
|
<span class="rolle__name">Spicy Media</span>
|
||||||
<span class="rolle__zusatz">Überblick über alle</span>
|
<span class="rolle__zusatz">Überblick über alle</span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<!-- DER HUSKY FÜR DOGFATHER (07.09.2026). Filipe: "bei dogfather ist
|
<!-- DER HUSKY FÜR DOGFATHER (07.09.2026). Filipe: "bei dogfather ist
|
||||||
immer noch die krone und da soll ja ein husky sein" -- auf der
|
immer noch die krone und da soll ja ein husky sein" -- auf der
|
||||||
Personenseite war er schon getauscht, hier nicht.
|
Personenseite war er schon getauscht, hier nicht.
|
||||||
|
|
||||||
Bei 21 Pixeln entscheidet die SILHOUETTE, nicht das Detail: die
|
Bei 21 Pixeln entscheidet die SILHOUETTE, nicht das Detail: die
|
||||||
spitzen aufrechten Ohren, der breite Kopf, der nach unten schmal
|
spitzen aufrechten Ohren, der breite Kopf, der nach unten schmal
|
||||||
zuläuft, die Gesichtsmaske. Mehr passt nicht hinein, und mehr
|
zuläuft, die Gesichtsmaske. Mehr passt nicht hinein, und mehr
|
||||||
braucht es nicht -- ein Husky ist an genau diesen drei Dingen
|
braucht es nicht -- ein Husky ist an genau diesen drei Dingen
|
||||||
zu erkennen.
|
zu erkennen.
|
||||||
|
|
||||||
Das Schild ist zum Scout gewandert: Ein Scout schirmt die
|
Das Schild ist zum Scout gewandert: Ein Scout schirmt die
|
||||||
Pipeline ab und prüft, bevor etwas weitergereicht wird. -->
|
Pipeline ab und prüft, bevor etwas weitergereicht wird. -->
|
||||||
<button type="button" class="rolle" data-rolle="admin" role="radio" aria-checked="false">
|
<button type="button" class="rolle" data-rolle="admin" role="radio" aria-checked="false">
|
||||||
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-husky"/></svg>
|
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-husky"/></svg>
|
||||||
<span class="rolle__text">
|
<span class="rolle__text">
|
||||||
<span class="rolle__name">DogFather</span>
|
<span class="rolle__name">DogFather</span>
|
||||||
<!-- "Manager & Technik" statt "Gesamtübersicht & Freigaben"
|
<!-- "Manager & Technik" statt "Gesamtübersicht & Freigaben"
|
||||||
(08.09.2026, screen27). Die alte Zeile beschrieb ein RECHT
|
(08.09.2026, screen27). Die alte Zeile beschrieb ein RECHT
|
||||||
("darf alles sehen und freigeben"), die neue eine AUFGABE --
|
("darf alles sehen und freigeben"), die neue eine AUFGABE --
|
||||||
und danach sucht jemand, der vor der Rollenwahl steht: Er
|
und danach sucht jemand, der vor der Rollenwahl steht: Er
|
||||||
fragt sich nicht, was er dürfte, sondern was er hier tut. -->
|
fragt sich nicht, was er dürfte, sondern was er hier tut. -->
|
||||||
<span class="rolle__zusatz">Manager & Technik</span>
|
<span class="rolle__zusatz">Manager & Technik</span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<!-- Manager: dieselben Rechte wie DogFather, nur die Personen-
|
<!-- Manager: dieselben Rechte wie DogFather, nur die Personen-
|
||||||
verwaltung bleibt DogFather vorbehalten. Der Stern steht fuer
|
verwaltung bleibt DogFather vorbehalten. Der Stern steht fuer
|
||||||
den Rang darunter, ohne "unter" zu sagen. -->
|
den Rang darunter, ohne "unter" zu sagen. -->
|
||||||
<button type="button" class="rolle" data-rolle="manager" role="radio" aria-checked="false">
|
<button type="button" class="rolle" data-rolle="manager" role="radio" aria-checked="false">
|
||||||
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-stern"/></svg>
|
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-stern"/></svg>
|
||||||
<span class="rolle__text">
|
<span class="rolle__text">
|
||||||
<span class="rolle__name">Manager</span>
|
<span class="rolle__name">Manager</span>
|
||||||
<span class="rolle__zusatz">Betreuung & Freigaben</span>
|
<span class="rolle__zusatz">Betreuung & Freigaben</span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button type="button" class="rolle" data-rolle="scout" role="radio" aria-checked="false">
|
<button type="button" class="rolle" data-rolle="scout" role="radio" aria-checked="false">
|
||||||
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-schutz"/></svg>
|
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-schutz"/></svg>
|
||||||
<span class="rolle__text">
|
<span class="rolle__text">
|
||||||
<span class="rolle__name">Scout</span>
|
<span class="rolle__name">Scout</span>
|
||||||
<span class="rolle__zusatz">Eigene Pipeline & Kontakte</span>
|
<span class="rolle__zusatz">Eigene Pipeline & Kontakte</span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button type="button" class="rolle" data-rolle="creator" role="radio" aria-checked="false">
|
<button type="button" class="rolle" data-rolle="creator" role="radio" aria-checked="false">
|
||||||
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-person"/></svg>
|
<svg class="rolle__zeichen" viewBox="0 0 24 24" aria-hidden="true"><use href="#r-person"/></svg>
|
||||||
<span class="rolle__text">
|
<span class="rolle__text">
|
||||||
<span class="rolle__name">Creator</span>
|
<span class="rolle__name">Creator</span>
|
||||||
<span class="rolle__zusatz">Eigener Bereich & Fortschritt</span>
|
<span class="rolle__zusatz">Eigener Bereich & Fortschritt</span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form class="formular" id="formular" novalidate>
|
<form class="formular" id="formular" novalidate>
|
||||||
<label class="feldschild" for="code">
|
<label class="feldschild" for="code">
|
||||||
Persönlicher Zugangscode <span class="fuer" id="fuer" hidden></span>
|
Persönlicher Zugangscode <span class="fuer" id="fuer" hidden></span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<div class="feld">
|
<div class="feld">
|
||||||
<input type="password" id="code" name="code" inputmode="text"
|
<input type="password" id="code" name="code" inputmode="text"
|
||||||
autocomplete="current-password" spellcheck="false"
|
autocomplete="current-password" spellcheck="false"
|
||||||
placeholder="Code eingeben" aria-describedby="hinweis fehler" />
|
placeholder="Code eingeben" aria-describedby="hinweis fehler" />
|
||||||
<button type="button" class="feld__auge" id="auge"
|
<button type="button" class="feld__auge" id="auge"
|
||||||
aria-label="Code anzeigen" aria-pressed="false">
|
aria-label="Code anzeigen" aria-pressed="false">
|
||||||
<svg viewBox="0 0 24 24" aria-hidden="true">
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path class="strich" d="M2.5 12S6 5.8 12 5.8 21.5 12 21.5 12 18 18.2 12 18.2 2.5 12 2.5 12Z"/>
|
<path class="strich" d="M2.5 12S6 5.8 12 5.8 21.5 12 21.5 12 18 18.2 12 18.2 2.5 12 2.5 12Z"/>
|
||||||
<circle class="strich" cx="12" cy="12" r="2.9"/>
|
<circle class="strich" cx="12" cy="12" r="2.9"/>
|
||||||
<path class="strich durch" d="m4 20 16-16"/>
|
<path class="strich durch" d="m4 20 16-16"/>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="hinweis" id="hinweis" hidden>Feststelltaste ist aktiv.</p>
|
<p class="hinweis" id="hinweis" hidden>Feststelltaste ist aktiv.</p>
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<button type="submit" class="knopf" id="knopf">
|
<button type="submit" class="knopf" id="knopf">
|
||||||
<span class="knopf__text">Anmelden</span>
|
<span class="knopf__text">Anmelden</span>
|
||||||
<span class="knopf__laden" aria-hidden="true"></span>
|
<span class="knopf__laden" aria-hidden="true"></span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!-- EINE TÜR BRAUCHT EINE KLINGEL (ergänzt 19.09.2026).
|
<!-- EINE TÜR BRAUCHT EINE KLINGEL (ergänzt 19.09.2026).
|
||||||
|
|
||||||
Hier standen vier Kacheln, ein Feld „Code eingeben" und ein
|
Hier standen vier Kacheln, ein Feld „Code eingeben" und ein
|
||||||
Knopf. Wer keinen Code hat, fand keinen einzigen Satz, der ihm
|
Knopf. Wer keinen Code hat, fand keinen einzigen Satz, der ihm
|
||||||
sagt, was jetzt zu tun ist. Für die Community ist das besonders
|
sagt, was jetzt zu tun ist. Für die Community ist das besonders
|
||||||
teuer: Sie ist die einzige Rolle, die von außen kommt und
|
teuer: Sie ist die einzige Rolle, die von außen kommt und
|
||||||
niemanden im Haus kennt. -->
|
niemanden im Haus kennt. -->
|
||||||
<p class="fuss fuss--woher">Noch keinen Code? Den bekommst du von deinem Manager oder von DogFather.</p>
|
<p class="fuss fuss--woher">Noch keinen Code? Den bekommst du von deinem Manager oder von DogFather.</p>
|
||||||
|
|
||||||
<p class="fuss">
|
<p class="fuss">
|
||||||
Verschlüsselte Verbindung · Zugriffe werden protokolliert
|
Verschlüsselte Verbindung · Zugriffe werden protokolliert
|
||||||
</p>
|
</p>
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/gate.js?v=202609191915" defer></script>
|
<script src="assets/js/gate.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+16
-15
@@ -12,20 +12,20 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/kalender.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/kalender.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -377,13 +377,14 @@
|
|||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kalender.js?v=202609191915" defer></script>
|
<script src="assets/js/kalender.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kalender-abo.js?v=202609191915" defer></script>
|
<script src="assets/js/kalender-abo.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+15
-14
@@ -12,20 +12,20 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/leistung.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/leistung.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -444,11 +444,12 @@
|
|||||||
</form>
|
</form>
|
||||||
</dialog>
|
</dialog>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915"></script>
|
<script src="assets/js/meldung.js?v=202609191956"></script>
|
||||||
<script src="assets/js/wahl.js?v=202609191915"></script>
|
<script src="assets/js/nachfrage.js?v=202609191956"></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915"></script>
|
<script src="assets/js/wahl.js?v=202609191956"></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915"></script>
|
<script src="assets/js/bereiche.js?v=202609191956"></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915"></script>
|
<script src="assets/js/kopf.js?v=202609191956"></script>
|
||||||
<script src="assets/js/leistung.js?v=202609191915"></script>
|
<script src="assets/js/glocke.js?v=202609191956"></script>
|
||||||
|
<script src="assets/js/leistung.js?v=202609191956"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+15
-14
@@ -12,20 +12,20 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/personen.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/personen.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -449,12 +449,13 @@
|
|||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/personen.js?v=202609191915" defer></script>
|
<script src="assets/js/personen.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+16
-15
@@ -12,20 +12,20 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/profil.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -214,13 +214,14 @@
|
|||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/steckbrief.js?v=202609191915" defer></script>
|
<script src="assets/js/steckbrief.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/profil.js?v=202609191915" defer></script>
|
<script src="assets/js/profil.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+14
-13
@@ -7,14 +7,14 @@
|
|||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/treff.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -134,10 +134,11 @@
|
|||||||
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
|
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
|
||||||
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
|
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
|
||||||
die seit dem 07.09. jede Seite danach absucht. -->
|
die seit dem 07.09. jede Seite danach absucht. -->
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/rechte.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/rechte.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+118
-118
@@ -1,118 +1,118 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Reports & Review · Spicy & Dogi</title>
|
<title>Reports & Review · Spicy & Dogi</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
||||||
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
||||||
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/report.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/report.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
|
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
|
||||||
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
|
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
|
||||||
Pseudo-Elements -- body hat nur ::before und ::after. -->
|
Pseudo-Elements -- body hat nur ::before und ::after. -->
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Review</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Review</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt inhalt--breit">
|
<main class="inhalt inhalt--breit">
|
||||||
|
|
||||||
<section class="kopf-zeile">
|
<section class="kopf-zeile">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Reports</p>
|
<p class="marke">Reports</p>
|
||||||
<h1 class="titel">Review & nächste Schritte</h1>
|
<h1 class="titel">Review & nächste Schritte</h1>
|
||||||
<p class="unterzeile" id="unterzeile">Fortschritt wird nicht gefühlt, sondern nachvollziehbar gemacht.</p>
|
<p class="unterzeile" id="unterzeile">Fortschritt wird nicht gefühlt, sondern nachvollziehbar gemacht.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="steuerung">
|
<div class="steuerung">
|
||||||
<div id="creator-block" hidden>
|
<div id="creator-block" hidden>
|
||||||
<label class="feld-schild" for="f-creator">Creator</label>
|
<label class="feld-schild" for="f-creator">Creator</label>
|
||||||
<select id="f-creator"></select>
|
<select id="f-creator"></select>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="feld-schild" for="f-tage">Zeitraum</label>
|
<label class="feld-schild" for="f-tage">Zeitraum</label>
|
||||||
<select id="f-tage">
|
<select id="f-tage">
|
||||||
<option value="7">7 Tage</option>
|
<option value="7">7 Tage</option>
|
||||||
<option value="30" selected>30 Tage</option>
|
<option value="30" selected>30 Tage</option>
|
||||||
<option value="90">90 Tage</option>
|
<option value="90">90 Tage</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<div id="bericht" aria-busy="true"><p class="leise">Report wird erstellt …</p></div>
|
<div id="bericht" aria-busy="true"><p class="leise">Report wird erstellt …</p></div>
|
||||||
|
|
||||||
<!-- Der Kern aus dem Konzept: Ein Review endet mit einer Entscheidung. -->
|
<!-- Der Kern aus dem Konzept: Ein Review endet mit einer Entscheidung. -->
|
||||||
<section class="entscheidung" id="entscheidung-block" hidden>
|
<section class="entscheidung" id="entscheidung-block" hidden>
|
||||||
<p class="marke">Abschluss</p>
|
<p class="marke">Abschluss</p>
|
||||||
<h2 class="entscheidung__titel">Was ist die Entscheidung?</h2>
|
<h2 class="entscheidung__titel">Was ist die Entscheidung?</h2>
|
||||||
<p class="entscheidung__text">
|
<p class="entscheidung__text">
|
||||||
Ein Review endet nicht mit einer Zusammenfassung, sondern mit einem nächsten Schritt.
|
Ein Review endet nicht mit einer Zusammenfassung, sondern mit einem nächsten Schritt.
|
||||||
Was hier steht, wird sofort als Aufgabe mit hoher Priorität angelegt.
|
Was hier steht, wird sofort als Aufgabe mit hoher Priorität angelegt.
|
||||||
</p>
|
</p>
|
||||||
<form id="entscheidung">
|
<form id="entscheidung">
|
||||||
<div class="entscheidung__raster">
|
<div class="entscheidung__raster">
|
||||||
<div>
|
<div>
|
||||||
<label class="feld-schild" for="e-titel">Nächster Schritt</label>
|
<label class="feld-schild" for="e-titel">Nächster Schritt</label>
|
||||||
<input id="e-titel" maxlength="160" placeholder="z. B. Mikro-Problem bis Freitag lösen" required />
|
<input id="e-titel" maxlength="160" placeholder="z. B. Mikro-Problem bis Freitag lösen" required />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="feld-schild" for="e-frist">Bis wann <span class="leise">(optional)</span></label>
|
<label class="feld-schild" for="e-frist">Bis wann <span class="leise">(optional)</span></label>
|
||||||
<input id="e-frist" type="date" />
|
<input id="e-frist" type="date" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="fehler" id="e-fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="e-fehler" role="alert" aria-live="polite"></p>
|
||||||
<div class="neu__knoepfe">
|
<div class="neu__knoepfe">
|
||||||
<button type="submit" class="knopf knopf--klein" id="e-speichern">Als Aufgabe festhalten</button>
|
<button type="submit" class="knopf knopf--klein" id="e-speichern">Als Aufgabe festhalten</button>
|
||||||
<span class="leise" id="e-stand"></span>
|
<span class="leise" id="e-stand"></span>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/ki.js?v=202609191915" defer></script>
|
<script src="assets/js/ki.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/report.js?v=202609191915" defer></script>
|
<script src="assets/js/report.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+15
-14
@@ -12,20 +12,20 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/scouting.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/scouting.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -173,12 +173,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/scouting.js?v=202609191915" defer></script>
|
<script src="assets/js/scouting.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+689
-689
File diff suppressed because it is too large
Load Diff
+97
-97
@@ -1,97 +1,97 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Start-Check · Spicy & Dogi</title>
|
<title>Start-Check · Spicy & Dogi</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
||||||
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
||||||
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
|
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
|
||||||
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
|
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
|
||||||
Pseudo-Elements -- body hat nur ::before und ::after. -->
|
Pseudo-Elements -- body hat nur ::before und ::after. -->
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Start-Check</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Start-Check</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt inhalt--breit">
|
<main class="inhalt inhalt--breit">
|
||||||
|
|
||||||
<section class="kopf-zeile">
|
<section class="kopf-zeile">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Onboarding · Erstanalyse</p>
|
<p class="marke">Onboarding · Erstanalyse</p>
|
||||||
<h1 class="titel">Start-Check</h1>
|
<h1 class="titel">Start-Check</h1>
|
||||||
<p class="unterzeile" id="unterzeile">
|
<p class="unterzeile" id="unterzeile">
|
||||||
Ausgangslage verstehen – und daraus konkrete Arbeitspakete bauen.
|
Ausgangslage verstehen – und daraus konkrete Arbeitspakete bauen.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="steuerung">
|
<div class="steuerung">
|
||||||
<div id="creator-block" hidden>
|
<div id="creator-block" hidden>
|
||||||
<label class="feld-schild" for="f-creator">Creator</label>
|
<label class="feld-schild" for="f-creator">Creator</label>
|
||||||
<select id="f-creator"></select>
|
<select id="f-creator"></select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<section class="fortschritt" id="fortschritt" hidden>
|
<section class="fortschritt" id="fortschritt" hidden>
|
||||||
<div class="fortschritt__kopf">
|
<div class="fortschritt__kopf">
|
||||||
<span class="fortschritt__zahl" id="f-zahl">0 von 16</span>
|
<span class="fortschritt__zahl" id="f-zahl">0 von 16</span>
|
||||||
<span class="fortschritt__text" id="f-text">Punkten geprüft</span>
|
<span class="fortschritt__text" id="f-text">Punkten geprüft</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="fortschritt__balken" role="progressbar" aria-valuemin="0" aria-valuemax="16"
|
<div class="fortschritt__balken" role="progressbar" aria-valuemin="0" aria-valuemax="16"
|
||||||
aria-valuenow="0" id="f-balken-aussen">
|
aria-valuenow="0" id="f-balken-aussen">
|
||||||
<div class="fortschritt__fuellung" id="f-balken"></div>
|
<div class="fortschritt__fuellung" id="f-balken"></div>
|
||||||
</div>
|
</div>
|
||||||
<p class="fortschritt__hinweis" id="f-hinweis"></p>
|
<p class="fortschritt__hinweis" id="f-hinweis"></p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<div id="felder" aria-busy="true"><p class="leise">Start-Check wird geladen …</p></div>
|
<div id="felder" aria-busy="true"><p class="leise">Start-Check wird geladen …</p></div>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/ki.js?v=202609191915" defer></script>
|
<script src="assets/js/ki.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/startcheck.js?v=202609191915" defer></script>
|
<script src="assets/js/startcheck.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+16
-15
@@ -12,20 +12,20 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/profil.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -150,13 +150,14 @@
|
|||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/auskunft.js?v=202609191915" defer></script>
|
<script src="assets/js/auskunft.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/steckbrief.js?v=202609191915" defer></script>
|
<script src="assets/js/steckbrief.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+15
-14
@@ -7,18 +7,18 @@
|
|||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609191956" />
|
||||||
<!-- Wegen des Kastens „Anfragen“ ueber der Liste. Eine eigene Kopie
|
<!-- Wegen des Kastens „Anfragen“ ueber der Liste. Eine eigene Kopie
|
||||||
der Regel hier waere die zweite Stelle, an der dieselbe Sache
|
der Regel hier waere die zweite Stelle, an der dieselbe Sache
|
||||||
anders aussieht. -->
|
anders aussieht. -->
|
||||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -111,11 +111,12 @@
|
|||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/talente.js?v=202609191915" defer></script>
|
<script src="assets/js/talente.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+121
-121
@@ -1,121 +1,121 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Team · Spicy & Dogi</title>
|
<title>Team · Spicy & Dogi</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/team.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/team.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Team</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Team</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt inhalt--breit">
|
<main class="inhalt inhalt--breit">
|
||||||
|
|
||||||
<!-- ==== DER KOPF ================================================
|
<!-- ==== DER KOPF ================================================
|
||||||
Er sagt in einem Satz, was diese Seite ist UND was sie nicht
|
Er sagt in einem Satz, was diese Seite ist UND was sie nicht
|
||||||
ist. Der zweite Teil ist der wichtigere: Eine Seite mit Zahlen
|
ist. Der zweite Teil ist der wichtigere: Eine Seite mit Zahlen
|
||||||
über Kollegen wird sonst als Überwachung gelesen -- und dann
|
über Kollegen wird sonst als Überwachung gelesen -- und dann
|
||||||
arbeitet niemand mehr offen damit.
|
arbeitet niemand mehr offen damit.
|
||||||
|
|
||||||
Aus der Recherche (Fachliteratur zu Arbeitslast-Dashboards):
|
Aus der Recherche (Fachliteratur zu Arbeitslast-Dashboards):
|
||||||
Der Zweck ist, Stellen zu finden, an denen Unterstützung fehlt.
|
Der Zweck ist, Stellen zu finden, an denen Unterstützung fehlt.
|
||||||
Wer das nicht dazuschreibt, baut ein Kontrollwerkzeug, auch wenn
|
Wer das nicht dazuschreibt, baut ein Kontrollwerkzeug, auch wenn
|
||||||
er es nicht wollte. -->
|
er es nicht wollte. -->
|
||||||
<!-- ==== EINE ECHTE KACHEL, IM TON DER KATEGORIE (09.09.2026) ====
|
<!-- ==== EINE ECHTE KACHEL, IM TON DER KATEGORIE (09.09.2026) ====
|
||||||
|
|
||||||
Filipe: "perfektionnir das in einer kachel in der farbe von der
|
Filipe: "perfektionnir das in einer kachel in der farbe von der
|
||||||
kategorie bitte."
|
kategorie bitte."
|
||||||
|
|
||||||
`t-kachel` steht in der Modulliste von module.css und bekommt
|
`t-kachel` steht in der Modulliste von module.css und bekommt
|
||||||
damit dieselbe Form wie jede Kachel im Haus: gefraeste Fase oben
|
damit dieselbe Form wie jede Kachel im Haus: gefraeste Fase oben
|
||||||
links, Kantenlicht, Eckwinkel, Raster. Die FARBE kommt aus
|
links, Kantenlicht, Eckwinkel, Raster. Die FARBE kommt aus
|
||||||
`--ton` -- derselben Variablen, aus der die Kachel auf der
|
`--ton` -- derselben Variablen, aus der die Kachel auf der
|
||||||
Startseite ihren Ton zieht, und dort ist es Ton 22 (#ffd166).
|
Startseite ihren Ton zieht, und dort ist es Ton 22 (#ffd166).
|
||||||
Beide lesen dieselbe Zahl; die Kachel auf der Startseite und die
|
Beide lesen dieselbe Zahl; die Kachel auf der Startseite und die
|
||||||
Ueberschrift hier koennen also nicht auseinanderlaufen. -->
|
Ueberschrift hier koennen also nicht auseinanderlaufen. -->
|
||||||
<section class="t-kachel" data-ton="22">
|
<section class="t-kachel" data-ton="22">
|
||||||
<div class="t-kopf">
|
<div class="t-kopf">
|
||||||
<div class="t-kopf__text">
|
<div class="t-kopf__text">
|
||||||
<p class="feldschild">Rund um das Team</p>
|
<p class="feldschild">Rund um das Team</p>
|
||||||
<h1 class="t-kopf__titel">Manager & Scouts</h1>
|
<h1 class="t-kopf__titel">Manager & Scouts</h1>
|
||||||
<p class="t-kopf__unter" id="kopf-unter">
|
<p class="t-kopf__unter" id="kopf-unter">
|
||||||
Wer betreut wen, wo staut sich etwas, wo fehlt jemand.
|
Wer betreut wen, wo staut sich etwas, wo fehlt jemand.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<p class="t-kopf__grenze">
|
<p class="t-kopf__grenze">
|
||||||
Termine, Chats und Dateien kommen hier nicht vor – weder Inhalte
|
Termine, Chats und Dateien kommen hier nicht vor – weder Inhalte
|
||||||
noch Zahlen. Das ist eine <strong>Arbeitslage</strong>, keine Überwachung.
|
noch Zahlen. Das ist eine <strong>Arbeitslage</strong>, keine Überwachung.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<!-- ==== DIE LÜCKEN ZUERST ======================================
|
<!-- ==== DIE LÜCKEN ZUERST ======================================
|
||||||
Eine Kennzahl sagt, wie es läuft. Eine Lücke sagt, wo etwas
|
Eine Kennzahl sagt, wie es läuft. Eine Lücke sagt, wo etwas
|
||||||
fehlt -- und nur das Zweite kann man heute abstellen. Deshalb
|
fehlt -- und nur das Zweite kann man heute abstellen. Deshalb
|
||||||
steht sie oben und nicht unter den Tabellen. -->
|
steht sie oben und nicht unter den Tabellen. -->
|
||||||
<section class="t-luecken" id="luecken" hidden></section>
|
<section class="t-luecken" id="luecken" hidden></section>
|
||||||
|
|
||||||
<!-- ==== DIE LAGE IN ZAHLEN ===================================== -->
|
<!-- ==== DIE LAGE IN ZAHLEN ===================================== -->
|
||||||
<section class="t-lage" id="lage" hidden></section>
|
<section class="t-lage" id="lage" hidden></section>
|
||||||
|
|
||||||
<!-- ==== DIE LEUTE ==============================================
|
<!-- ==== DIE LEUTE ==============================================
|
||||||
Jede Person einzeln, nicht als Durchschnitt: Zwei Scouts mit je
|
Jede Person einzeln, nicht als Durchschnitt: Zwei Scouts mit je
|
||||||
sechs Creators und einer mit achtzehn ergeben einen Schnitt von
|
sechs Creators und einer mit achtzehn ergeben einen Schnitt von
|
||||||
zehn -- und der sagt nichts über den, bei dem es klemmt. -->
|
zehn -- und der sagt nichts über den, bei dem es klemmt. -->
|
||||||
<section class="t-gruppe" id="manager-block" hidden>
|
<section class="t-gruppe" id="manager-block" hidden>
|
||||||
<h2 class="feldschild">Manager</h2>
|
<h2 class="feldschild">Manager</h2>
|
||||||
<div class="t-liste" id="manager-liste"></div>
|
<div class="t-liste" id="manager-liste"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="t-gruppe" id="scout-block" hidden>
|
<section class="t-gruppe" id="scout-block" hidden>
|
||||||
<h2 class="feldschild">Scouts</h2>
|
<h2 class="feldschild">Scouts</h2>
|
||||||
<div class="t-liste" id="scout-liste"></div>
|
<div class="t-liste" id="scout-liste"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="leise" id="laedt">Die Arbeitslage wird geladen …</p>
|
<p class="leise" id="laedt">Die Arbeitslage wird geladen …</p>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/team.js?v=202609191915" defer></script>
|
<script src="assets/js/team.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+93
-93
@@ -1,93 +1,93 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Dein Team · Spicy & Dogi</title>
|
<title>Dein Team · Spicy & Dogi</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/team.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/team.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<!-- `data-buehne` steht hier fest und nicht im Skript: Die Kachel zu
|
<!-- `data-buehne` steht hier fest und nicht im Skript: Die Kachel zu
|
||||||
dieser Seite kommt vom Server, `zuSeite()` in bereiche.js findet
|
dieser Seite kommt vom Server, `zuSeite()` in bereiche.js findet
|
||||||
sie deshalb nicht -- und ohne Fund griff der Rueckfall, also die
|
sie deshalb nicht -- und ohne Fund griff der Rueckfall, also die
|
||||||
Szene der anderen Marke. Eine Seite mit genau einer Buehne
|
Szene der anderen Marke. Eine Seite mit genau einer Buehne
|
||||||
braucht dafuer kein Skript. -->
|
braucht dafuer kein Skript. -->
|
||||||
<body class="start" data-buehne="eingang">
|
<body class="start" data-buehne="eingang">
|
||||||
|
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Dein Team</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Dein Team</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt inhalt--breit">
|
<main class="inhalt inhalt--breit">
|
||||||
|
|
||||||
<!-- ==== DER KOPF ================================================
|
<!-- ==== DER KOPF ================================================
|
||||||
Er sagt, was diese Seite ist UND was sie nicht ist. Der zweite
|
Er sagt, was diese Seite ist UND was sie nicht ist. Der zweite
|
||||||
Teil ist der wichtigere -- dieselbe Ueberlegung steht schon
|
Teil ist der wichtigere -- dieselbe Ueberlegung steht schon
|
||||||
ueber team.html: Eine Seite mit Zahlen ueber Kollegen wird sonst
|
ueber team.html: Eine Seite mit Zahlen ueber Kollegen wird sonst
|
||||||
als Kontrolle gelesen, und dann arbeitet niemand mehr offen
|
als Kontrolle gelesen, und dann arbeitet niemand mehr offen
|
||||||
damit.
|
damit.
|
||||||
|
|
||||||
"Offen" heisst hier deshalb ausdruecklich: darueber habt ihr
|
"Offen" heisst hier deshalb ausdruecklich: darueber habt ihr
|
||||||
noch nicht geredet. Es ist eine Liste fuer euch beide, keine
|
noch nicht geredet. Es ist eine Liste fuer euch beide, keine
|
||||||
Note fuer den anderen. -->
|
Note fuer den anderen. -->
|
||||||
<section class="t-kachel">
|
<section class="t-kachel">
|
||||||
<div class="t-kopf">
|
<div class="t-kopf">
|
||||||
<div class="t-kopf__text">
|
<div class="t-kopf__text">
|
||||||
<p class="feldschild">Zusammen</p>
|
<p class="feldschild">Zusammen</p>
|
||||||
<h1 class="t-kopf__titel">Was auf dich wartet</h1>
|
<h1 class="t-kopf__titel">Was auf dich wartet</h1>
|
||||||
<p class="t-kopf__unter" id="kopf-unter">…</p>
|
<p class="t-kopf__unter" id="kopf-unter">…</p>
|
||||||
<p class="t-kopf__grenze">
|
<p class="t-kopf__grenze">
|
||||||
Was hier steht, ist eine Merkliste für euch beide – keine Bewertung
|
Was hier steht, ist eine Merkliste für euch beide – keine Bewertung
|
||||||
von Menschen. „Offen“ heißt: darüber habt ihr noch nicht gesprochen.
|
von Menschen. „Offen“ heißt: darüber habt ihr noch nicht gesprochen.
|
||||||
Eingeschätzt wird dort, wo die Punkte stehen; jede Zahl führt dorthin.
|
Eingeschätzt wird dort, wo die Punkte stehen; jede Zahl führt dorthin.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="t-lage" id="lage" aria-busy="true"></section>
|
<section class="t-lage" id="lage" aria-busy="true"></section>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<!-- wahl.js VOR kopf.js (nachgetragen 10.09.2026).
|
<!-- wahl.js VOR kopf.js (nachgetragen 10.09.2026).
|
||||||
kopf.js baut den Sicht-Umschalter; ohne wahl.js sieht er aus wie
|
kopf.js baut den Sicht-Umschalter; ohne wahl.js sieht er aus wie
|
||||||
ein blankes Browser-Auswahlfeld statt wie der Rest des Hauses.
|
ein blankes Browser-Auswahlfeld statt wie der Rest des Hauses.
|
||||||
Kaputt ist dabei nichts -- er funktioniert. Genau deshalb faellt
|
Kaputt ist dabei nichts -- er funktioniert. Genau deshalb faellt
|
||||||
es niemandem auf, und deshalb prueft pruef-css-klassen die
|
es niemandem auf, und deshalb prueft pruef-css-klassen die
|
||||||
ABHAENGIGKEIT statt der Optik. Hier hat sie angeschlagen. -->
|
ABHAENGIGKEIT statt der Optik. Hier hat sie angeschlagen. -->
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/teamlage.js?v=202609191915" defer></script>
|
<script src="assets/js/teamlage.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+122
-122
@@ -1,122 +1,122 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Video übernehmen · Spicy & Dogi</title>
|
<title>Video übernehmen · Spicy & Dogi</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/bereich.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Team Dogi</a> · Video übernehmen</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Team Dogi</a> · Video übernehmen</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt">
|
<main class="inhalt">
|
||||||
|
|
||||||
<!-- ==================================================================
|
<!-- ==================================================================
|
||||||
AUS „TEILEN" WIRD EIN TIPP (17.09.2026)
|
AUS „TEILEN" WIRD EIN TIPP (17.09.2026)
|
||||||
Schritt 4 aus dem Video-Plan.
|
Schritt 4 aus dem Video-Plan.
|
||||||
|
|
||||||
Filipe postet ein Video auf dem Handy. Bisher hätte er den Link
|
Filipe postet ein Video auf dem Handy. Bisher hätte er den Link
|
||||||
kopieren, die App öffnen, den richtigen Bereich suchen und das
|
kopieren, die App öffnen, den richtigen Bereich suchen und das
|
||||||
Feld finden müssen – fünf Schritte, von denen jeder einzelne der
|
Feld finden müssen – fünf Schritte, von denen jeder einzelne der
|
||||||
Grund sein kann, es später zu machen. Und später heißt nie.
|
Grund sein kann, es später zu machen. Und später heißt nie.
|
||||||
|
|
||||||
Jetzt: in TikTok auf „Teilen", „DogFather" wählen, fertig. Diese
|
Jetzt: in TikTok auf „Teilen", „DogFather" wählen, fertig. Diese
|
||||||
Seite ist das Ziel dieses Tipps.
|
Seite ist das Ziel dieses Tipps.
|
||||||
|
|
||||||
WARUM SIE NICHT SOFORT EINTRÄGT: Weil sie nicht wissen kann, ob
|
WARUM SIE NICHT SOFORT EINTRÄGT: Weil sie nicht wissen kann, ob
|
||||||
der Griff in die Tasche gemeint war. Ein Video, das ungefragt in
|
der Griff in die Tasche gemeint war. Ein Video, das ungefragt in
|
||||||
den Highlights landet, muss jemand wieder löschen – und das ist
|
den Highlights landet, muss jemand wieder löschen – und das ist
|
||||||
mehr Arbeit als ein Tipp auf „Übernehmen". Sie zeigt also, was
|
mehr Arbeit als ein Tipp auf „Übernehmen". Sie zeigt also, was
|
||||||
sie verstanden hat, und wartet auf eine Bestätigung.
|
sie verstanden hat, und wartet auf eine Bestätigung.
|
||||||
|
|
||||||
WOHIN, IST EINE FRAGE UND KEINE ANNAHME: Highlights sind
|
WOHIN, IST EINE FRAGE UND KEINE ANNAHME: Highlights sind
|
||||||
vorausgewählt, weil dort die Videos hingehören. Aber ein Clip
|
vorausgewählt, weil dort die Videos hingehören. Aber ein Clip
|
||||||
kann auch eine Antwort auf einen Wunsch sein.
|
kann auch eine Antwort auf einen Wunsch sein.
|
||||||
============================================================== -->
|
============================================================== -->
|
||||||
|
|
||||||
<section class="kopf-zeile">
|
<section class="kopf-zeile">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Geteilt</p>
|
<p class="marke">Geteilt</p>
|
||||||
<h1 class="titel">Video übernehmen</h1>
|
<h1 class="titel">Video übernehmen</h1>
|
||||||
<p class="unterzeile">
|
<p class="unterzeile">
|
||||||
Titel und Coverbild werden von TikTok geholt – du musst nichts abtippen.
|
Titel und Coverbild werden von TikTok geholt – du musst nichts abtippen.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<section class="tl-seite" id="teilen" aria-busy="true">
|
<section class="tl-seite" id="teilen" aria-busy="true">
|
||||||
<p class="leise" id="ladezeile">einen Moment …</p>
|
<p class="leise" id="ladezeile">einen Moment …</p>
|
||||||
|
|
||||||
<!-- Was angekommen ist. Steht ganz oben, weil es die erste Frage
|
<!-- Was angekommen ist. Steht ganz oben, weil es die erste Frage
|
||||||
beantwortet: „hat er den richtigen Link erwischt?" -->
|
beantwortet: „hat er den richtigen Link erwischt?" -->
|
||||||
<div class="tl-fund" id="fund" hidden>
|
<div class="tl-fund" id="fund" hidden>
|
||||||
<p class="tl-label">Dieser Link ist angekommen:</p>
|
<p class="tl-label">Dieser Link ist angekommen:</p>
|
||||||
<p class="tl-url" id="url-text"></p>
|
<p class="tl-url" id="url-text"></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Wohin. -->
|
<!-- Wohin. -->
|
||||||
<div class="tl-wahl" id="wahl" hidden>
|
<div class="tl-wahl" id="wahl" hidden>
|
||||||
<p class="tl-label" id="wohin-label">Wohin soll es?</p>
|
<p class="tl-label" id="wohin-label">Wohin soll es?</p>
|
||||||
<div class="tl-bretter" role="group" aria-labelledby="wohin-label" id="bretter"></div>
|
<div class="tl-bretter" role="group" aria-labelledby="wohin-label" id="bretter"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tl-knoepfe" id="knoepfe" hidden>
|
<div class="tl-knoepfe" id="knoepfe" hidden>
|
||||||
<button type="button" class="knopf" id="uebernehmen">Übernehmen</button>
|
<button type="button" class="knopf" id="uebernehmen">Übernehmen</button>
|
||||||
<a class="schritt" href="start.html" id="abbrechen">Doch nicht</a>
|
<a class="schritt" href="start.html" id="abbrechen">Doch nicht</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Wenn gar kein Link dabei war. Kein Formular als Strafe, sondern
|
<!-- Wenn gar kein Link dabei war. Kein Formular als Strafe, sondern
|
||||||
ein Feld zum Einfügen – man ist ja schon hier. -->
|
ein Feld zum Einfügen – man ist ja schon hier. -->
|
||||||
<div class="tl-haendisch" id="haendisch" hidden>
|
<div class="tl-haendisch" id="haendisch" hidden>
|
||||||
<label class="tl-label" for="eingabe">Link zum Video</label>
|
<label class="tl-label" for="eingabe">Link zum Video</label>
|
||||||
<input type="url" id="eingabe" inputmode="url" autocomplete="off"
|
<input type="url" id="eingabe" inputmode="url" autocomplete="off"
|
||||||
placeholder="https://www.tiktok.com/@dogfather0804/video/…" />
|
placeholder="https://www.tiktok.com/@dogfather0804/video/…" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Das Ergebnis. -->
|
<!-- Das Ergebnis. -->
|
||||||
<div class="tl-fertig" id="fertig" hidden>
|
<div class="tl-fertig" id="fertig" hidden>
|
||||||
<p class="tl-fertig-satz" id="fertig-satz"></p>
|
<p class="tl-fertig-satz" id="fertig-satz"></p>
|
||||||
<div class="tl-knoepfe">
|
<div class="tl-knoepfe">
|
||||||
<a class="knopf" id="hin" href="start.html">Ansehen</a>
|
<a class="knopf" id="hin" href="start.html">Ansehen</a>
|
||||||
<a class="schritt" href="start.html">Fertig</a>
|
<a class="schritt" href="start.html">Fertig</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/teilen.js?v=202609191915" defer></script>
|
<script src="assets/js/teilen.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -7,14 +7,14 @@
|
|||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/treff.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -126,11 +126,12 @@
|
|||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/treff-moderation.js?v=202609191915" defer></script>
|
<script src="assets/js/treff-moderation.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+231
-231
@@ -1,231 +1,231 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Die Regeln · Der Treff</title>
|
<title>Die Regeln · Der Treff</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/treff.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein. Auf der Adresse des
|
<!-- haus.css MUSS die letzte Stilvorlage sein. Auf der Adresse des
|
||||||
Treffs biegt der Server genau diesen Dateinamen auf crew-haus.css
|
Treffs biegt der Server genau diesen Dateinamen auf crew-haus.css
|
||||||
um, und die Seite kommt schon beim ERSTEN Abruf in Lila und
|
um, und die Seite kommt schon beim ERSTEN Abruf in Lila und
|
||||||
Babyblau an -- ohne Umfaerben im Browser, ohne Flackern. -->
|
Babyblau an -- ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Der Treff</a> · Regeln</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Der Treff</a> · Regeln</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt">
|
<main class="inhalt">
|
||||||
|
|
||||||
<section class="kopf-zeile">
|
<section class="kopf-zeile">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Der Treff</p>
|
<p class="marke">Der Treff</p>
|
||||||
<!-- HIESS BIS ZUM 18.09.2026 „Regeln & Hilfe" -- genau wie das
|
<!-- HIESS BIS ZUM 18.09.2026 „Regeln & Hilfe" -- genau wie das
|
||||||
BRETT, auf das der Absatz weiter unten verweist. Auf dem
|
BRETT, auf das der Absatz weiter unten verweist. Auf dem
|
||||||
Brett stand damit ein Link „Regeln & Hilfe", der auf eine
|
Brett stand damit ein Link „Regeln & Hilfe", der auf eine
|
||||||
Seite namens „Regeln & Hilfe" fuehrte; wer ihn drueckte,
|
Seite namens „Regeln & Hilfe" fuehrte; wer ihn drueckte,
|
||||||
glaubte, im Kreis gelaufen zu sein.
|
glaubte, im Kreis gelaufen zu sein.
|
||||||
|
|
||||||
Die beiden sind verschiedene Dinge: Hier stehen die fuenf
|
Die beiden sind verschiedene Dinge: Hier stehen die fuenf
|
||||||
Regeln, kurz und fest. Das Brett sammelt daneben haeufige
|
Regeln, kurz und fest. Das Brett sammelt daneben haeufige
|
||||||
Fragen, Hilfe und was im Einzelfall passiert. Zwei Namen
|
Fragen, Hilfe und was im Einzelfall passiert. Zwei Namen
|
||||||
fuer zwei Sachen. -->
|
fuer zwei Sachen. -->
|
||||||
<h1 class="titel">Die Regeln</h1>
|
<h1 class="titel">Die Regeln</h1>
|
||||||
<p class="unterzeile">
|
<p class="unterzeile">
|
||||||
Kurz, in normaler Sprache, und alles, was hier steht, gilt auch.
|
Kurz, in normaler Sprache, und alles, was hier steht, gilt auch.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<!-- ==================================================================
|
<!-- ==================================================================
|
||||||
WARUM DER TEXT HIER STEHT UND DIE ZAHLEN NICHT
|
WARUM DER TEXT HIER STEHT UND DIE ZAHLEN NICHT
|
||||||
|
|
||||||
Die Saetze sind Text und gehoeren in eine Datei. Die ZAHLEN
|
Die Saetze sind Text und gehoeren in eine Datei. Die ZAHLEN
|
||||||
darin (sieben Tage, dreissig Tage, drei Beitraege, drei
|
darin (sieben Tage, dreissig Tage, drei Beitraege, drei
|
||||||
Anschlaege, 18 Jahre) kommen vom Server -- sie stehen im Code,
|
Anschlaege, 18 Jahre) kommen vom Server -- sie stehen im Code,
|
||||||
und ein Regeltext, der eine andere Zahl nennt als die Regel, ist
|
und ein Regeltext, der eine andere Zahl nennt als die Regel, ist
|
||||||
schlimmer als gar keiner: Niemand merkt es, und wer es merkt,
|
schlimmer als gar keiner: Niemand merkt es, und wer es merkt,
|
||||||
glaubt dem Text.
|
glaubt dem Text.
|
||||||
|
|
||||||
Die Platzhalter tragen deshalb "…" als Vorgabe. Kommt die
|
Die Platzhalter tragen deshalb "…" als Vorgabe. Kommt die
|
||||||
Antwort nicht, steht dort sichtbar nichts -- und nicht
|
Antwort nicht, steht dort sichtbar nichts -- und nicht
|
||||||
versehentlich eine Zahl von gestern.
|
versehentlich eine Zahl von gestern.
|
||||||
============================================================== -->
|
============================================================== -->
|
||||||
<section class="treff-abschnitt" id="willkommen">
|
<section class="treff-abschnitt" id="willkommen">
|
||||||
<h2 class="treff-abschnitt__titel">Schön, dass du da bist</h2>
|
<h2 class="treff-abschnitt__titel">Schön, dass du da bist</h2>
|
||||||
<div class="treff-abschnitt__inhalt">
|
<div class="treff-abschnitt__inhalt">
|
||||||
<p>
|
<p>
|
||||||
Der Treff ist der Ort rund um DogFather: Hier steht, was gerade gilt,
|
Der Treff ist der Ort rund um DogFather: Hier steht, was gerade gilt,
|
||||||
was ansteht, und hier redet ihr miteinander. Er ist nicht öffentlich –
|
was ansteht, und hier redet ihr miteinander. Er ist nicht öffentlich –
|
||||||
du bist hier, weil dir jemand einen Code gegeben hat.
|
du bist hier, weil dir jemand einen Code gegeben hat.
|
||||||
</p>
|
</p>
|
||||||
<p class="leise">
|
<p class="leise">
|
||||||
Gib diesen Code nicht weiter. Er gehört zu dir, und was damit
|
Gib diesen Code nicht weiter. Er gehört zu dir, und was damit
|
||||||
geschrieben wird, steht unter deinem Namen.
|
geschrieben wird, steht unter deinem Namen.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="treff-abschnitt">
|
<section class="treff-abschnitt">
|
||||||
<h2 class="treff-abschnitt__titel">Die fünf Regeln</h2>
|
<h2 class="treff-abschnitt__titel">Die fünf Regeln</h2>
|
||||||
<div class="treff-abschnitt__inhalt">
|
<div class="treff-abschnitt__inhalt">
|
||||||
<ol class="regel-liste">
|
<ol class="regel-liste">
|
||||||
<li><strong>Sei anständig.</strong> Keine Beleidigungen, keine Angriffe
|
<li><strong>Sei anständig.</strong> Keine Beleidigungen, keine Angriffe
|
||||||
auf Menschen, keine Hetze. Streiten über eine Sache ist in Ordnung –
|
auf Menschen, keine Hetze. Streiten über eine Sache ist in Ordnung –
|
||||||
über einen Menschen nicht.</li>
|
über einen Menschen nicht.</li>
|
||||||
<li><strong>Keine privaten Daten.</strong> Keine Adressen, keine
|
<li><strong>Keine privaten Daten.</strong> Keine Adressen, keine
|
||||||
Telefonnummern, keine Klarnamen von anderen. Auch nicht von dir
|
Telefonnummern, keine Klarnamen von anderen. Auch nicht von dir
|
||||||
selbst, es liest mehr mit, als du denkst.</li>
|
selbst, es liest mehr mit, als du denkst.</li>
|
||||||
<li><strong>Nichts Fremdes hochladen.</strong> Was du einstellst, muss
|
<li><strong>Nichts Fremdes hochladen.</strong> Was du einstellst, muss
|
||||||
von dir sein oder dir gehören.</li>
|
von dir sein oder dir gehören.</li>
|
||||||
<li><strong>Keine Werbung, kein Verkauf.</strong> Auch nicht für
|
<li><strong>Keine Werbung, kein Verkauf.</strong> Auch nicht für
|
||||||
andere Streams.</li>
|
andere Streams.</li>
|
||||||
<li><strong>Was hier passiert, bleibt hier.</strong> Keine
|
<li><strong>Was hier passiert, bleibt hier.</strong> Keine
|
||||||
Bildschirmfotos nach draußen.</li>
|
Bildschirmfotos nach draußen.</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="treff-abschnitt">
|
<section class="treff-abschnitt">
|
||||||
<h2 class="treff-abschnitt__titel">Wie du weiterkommst</h2>
|
<h2 class="treff-abschnitt__titel">Wie du weiterkommst</h2>
|
||||||
<div class="treff-abschnitt__inhalt">
|
<div class="treff-abschnitt__inhalt">
|
||||||
<p>
|
<p>
|
||||||
In der ersten Zeit kannst du lesen und bei Wünschen mitstimmen.
|
In der ersten Zeit kannst du lesen und bei Wünschen mitstimmen.
|
||||||
Das ist kein Misstrauen gegen dich – es ist eines gegen
|
Das ist kein Misstrauen gegen dich – es ist eines gegen
|
||||||
Wegwerf-Zugänge.
|
Wegwerf-Zugänge.
|
||||||
</p>
|
</p>
|
||||||
<ul class="regel-liste" id="stufen">
|
<ul class="regel-liste" id="stufen">
|
||||||
<li class="leise">wird geladen …</li>
|
<li class="leise">wird geladen …</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="treff-abschnitt">
|
<section class="treff-abschnitt">
|
||||||
<h2 class="treff-abschnitt__titel">Wenn etwas nicht stimmt</h2>
|
<h2 class="treff-abschnitt__titel">Wenn etwas nicht stimmt</h2>
|
||||||
<div class="treff-abschnitt__inhalt">
|
<div class="treff-abschnitt__inhalt">
|
||||||
<p>
|
<p>
|
||||||
An jedem Beitrag, der nicht von dir ist, steht <strong>melden</strong>.
|
An jedem Beitrag, der nicht von dir ist, steht <strong>melden</strong>.
|
||||||
Schreib in einem Satz, was daran nicht in Ordnung ist – ohne das
|
Schreib in einem Satz, was daran nicht in Ordnung ist – ohne das
|
||||||
können wir es nicht prüfen.
|
können wir es nicht prüfen.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Wir sehen uns jede Meldung an. Wird ein Beitrag entfernt, halten wir
|
Wir sehen uns jede Meldung an. Wird ein Beitrag entfernt, halten wir
|
||||||
fest, <strong>warum</strong> – und die Person, die ihn geschrieben hat,
|
fest, <strong>warum</strong> – und die Person, die ihn geschrieben hat,
|
||||||
erfährt den Grund. Das ist keine Höflichkeit, sondern
|
erfährt den Grund. Das ist keine Höflichkeit, sondern
|
||||||
<span class="leise">Artikel 17 des Digital Services Act</span>.
|
<span class="leise">Artikel 17 des Digital Services Act</span>.
|
||||||
</p>
|
</p>
|
||||||
<p class="leise" id="kontakt">
|
<p class="leise" id="kontakt">
|
||||||
Du erreichst uns außerdem direkt: Schreib es auf das Brett
|
Du erreichst uns außerdem direkt: Schreib es auf das Brett
|
||||||
<a href="bereich.html?b=treff">Der Treff</a> oder sag es <span
|
<a href="bereich.html?b=treff">Der Treff</a> oder sag es <span
|
||||||
id="kontakt-wem">jemandem aus dem Team</span>.
|
id="kontakt-wem">jemandem aus dem Team</span>.
|
||||||
</p>
|
</p>
|
||||||
<p class="leise">
|
<p class="leise">
|
||||||
Häufige Fragen und Antworten stehen auf dem Brett
|
Häufige Fragen und Antworten stehen auf dem Brett
|
||||||
<a href="bereich.html?b=regeln">Regeln & Hilfe</a>.
|
<a href="bereich.html?b=regeln">Regeln & Hilfe</a>.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="treff-abschnitt">
|
<section class="treff-abschnitt">
|
||||||
<h2 class="treff-abschnitt__titel">Was passiert, wenn jemand sich nicht daran hält</h2>
|
<h2 class="treff-abschnitt__titel">Was passiert, wenn jemand sich nicht daran hält</h2>
|
||||||
<div class="treff-abschnitt__inhalt">
|
<div class="treff-abschnitt__inhalt">
|
||||||
<p>Wir gehen der Reihe nach vor, und niemand fliegt ohne Ansage:</p>
|
<p>Wir gehen der Reihe nach vor, und niemand fliegt ohne Ansage:</p>
|
||||||
<ol class="regel-liste">
|
<ol class="regel-liste">
|
||||||
<li><strong>Hinweis.</strong> Jemand sagt dir, was nicht ging.</li>
|
<li><strong>Hinweis.</strong> Jemand sagt dir, was nicht ging.</li>
|
||||||
<li><strong>Pause.</strong> Ein paar Tage nichts schreiben. Lesen
|
<li><strong>Pause.</strong> Ein paar Tage nichts schreiben. Lesen
|
||||||
geht weiter.</li>
|
geht weiter.</li>
|
||||||
<li><strong>Ende.</strong> Der Zugang wird geschlossen.</li>
|
<li><strong>Ende.</strong> Der Zugang wird geschlossen.</li>
|
||||||
</ol>
|
</ol>
|
||||||
<p class="leise" id="ausschluss">…</p>
|
<p class="leise" id="ausschluss">…</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="treff-abschnitt">
|
<section class="treff-abschnitt">
|
||||||
<h2 class="treff-abschnitt__titel">Das Kleingedruckte – kurz</h2>
|
<h2 class="treff-abschnitt__titel">Das Kleingedruckte – kurz</h2>
|
||||||
<div class="treff-abschnitt__inhalt">
|
<div class="treff-abschnitt__inhalt">
|
||||||
<p id="alter">…</p>
|
<p id="alter">…</p>
|
||||||
<p>
|
<p>
|
||||||
<strong>Was gespeichert wird:</strong> dein Name, dein Zugangscode
|
<strong>Was gespeichert wird:</strong> dein Name, dein Zugangscode
|
||||||
(verschlüsselt, niemand kann ihn lesen), was du schreibst, und wann
|
(verschlüsselt, niemand kann ihn lesen), was du schreibst, und wann
|
||||||
du dich anmeldest. Mehr nicht – kein Standort, keine Werbe-IDs,
|
du dich anmeldest. Mehr nicht – kein Standort, keine Werbe-IDs,
|
||||||
keine Weitergabe an Dritte.
|
keine Weitergabe an Dritte.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<strong>Du willst weg?</strong> Sag Bescheid. Dein Zugang wird
|
<strong>Du willst weg?</strong> Sag Bescheid. Dein Zugang wird
|
||||||
geschlossen und deine Beiträge werden entfernt.
|
geschlossen und deine Beiträge werden entfernt.
|
||||||
</p>
|
</p>
|
||||||
<p class="leise">
|
<p class="leise">
|
||||||
Der Treff ist ein kleiner, geschlossener Bereich. Es gibt keine
|
Der Treff ist ein kleiner, geschlossener Bereich. Es gibt keine
|
||||||
Direktnachrichten zwischen Mitgliedern – absichtlich: Ein
|
Direktnachrichten zwischen Mitgliedern – absichtlich: Ein
|
||||||
öffentlicher Raum lässt sich moderieren, ein privater nicht.
|
öffentlicher Raum lässt sich moderieren, ein privater nicht.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<!-- ==== WAS IST ÜBER MICH GESPEICHERT? (15.09.2026) ==============
|
<!-- ==== WAS IST ÜBER MICH GESPEICHERT? (15.09.2026) ==============
|
||||||
Art. 15 DSGVO. Kein Antrag, kein Formular, kein Warten – ein
|
Art. 15 DSGVO. Kein Antrag, kein Formular, kein Warten – ein
|
||||||
Knopf. Er steht auf den beiden Seiten, die einem Menschen selbst
|
Knopf. Er steht auf den beiden Seiten, die einem Menschen selbst
|
||||||
gehören: dem Steckbrief und den Treff-Regeln. Die Community hat
|
gehören: dem Steckbrief und den Treff-Regeln. Die Community hat
|
||||||
keinen Steckbrief; ohne die zweite Stelle hätte ausgerechnet die
|
keinen Steckbrief; ohne die zweite Stelle hätte ausgerechnet die
|
||||||
Gruppe mit den wenigsten Rechten auch diesen nicht. -->
|
Gruppe mit den wenigsten Rechten auch diesen nicht. -->
|
||||||
<section class="meine-daten">
|
<section class="meine-daten">
|
||||||
<div class="meine-daten__kopf">
|
<div class="meine-daten__kopf">
|
||||||
<h2 class="meine-daten__titel">Was ist über mich gespeichert?</h2>
|
<h2 class="meine-daten__titel">Was ist über mich gespeichert?</h2>
|
||||||
<button type="button" class="knopf-still" id="auskunft-knopf">Datei herunterladen</button>
|
<button type="button" class="knopf-still" id="auskunft-knopf">Datei herunterladen</button>
|
||||||
</div>
|
</div>
|
||||||
<p class="meine-daten__satz">
|
<p class="meine-daten__satz">
|
||||||
Alles, was dieser Workspace über dich weiß, als Datei zum Mitnehmen.
|
Alles, was dieser Workspace über dich weiß, als Datei zum Mitnehmen.
|
||||||
Zugangsgeheimnisse sind nicht dabei, und wo andere Menschen vorkommen,
|
Zugangsgeheimnisse sind nicht dabei, und wo andere Menschen vorkommen,
|
||||||
stehen sie nicht mit Namen darin – ihre Daten gehören ihnen.
|
stehen sie nicht mit Namen darin – ihre Daten gehören ihnen.
|
||||||
</p>
|
</p>
|
||||||
<p class="leise" id="auskunft-stand" hidden></p>
|
<p class="leise" id="auskunft-stand" hidden></p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<!-- WER kopf.js LAEDT, MUSS AUCH wahl.js LADEN (Regel seit 07.09.2026).
|
<!-- WER kopf.js LAEDT, MUSS AUCH wahl.js LADEN (Regel seit 07.09.2026).
|
||||||
|
|
||||||
Der Umschalter "Meine Sicht" in der Kopfleiste ist ein selbst
|
Der Umschalter "Meine Sicht" in der Kopfleiste ist ein selbst
|
||||||
gebautes Bedienelement; dahinter liegt ein unsichtbares Systemfeld
|
gebautes Bedienelement; dahinter liegt ein unsichtbares Systemfeld
|
||||||
fuer Vorleseprogramme. Ohne wahl.js faellt kopf.js auf dieses Feld
|
fuer Vorleseprogramme. Ohne wahl.js faellt kopf.js auf dieses Feld
|
||||||
zurueck -- ein grauer Kasten von 92 x 19 Pixeln mit weisser
|
zurueck -- ein grauer Kasten von 92 x 19 Pixeln mit weisser
|
||||||
Schrift, mitten in einer dunklen Leiste.
|
Schrift, mitten in einer dunklen Leiste.
|
||||||
|
|
||||||
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
|
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
|
||||||
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
|
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
|
||||||
die seit dem 07.09. jede Seite danach absucht. -->
|
die seit dem 07.09. jede Seite danach absucht. -->
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/auskunft.js?v=202609191915" defer></script>
|
<script src="assets/js/auskunft.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/treff-regeln.js?v=202609191915" defer></script>
|
<script src="assets/js/treff-regeln.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+161
-161
@@ -1,161 +1,161 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Dashboard · Spicy & Dogi</title>
|
<title>Dashboard · Spicy & Dogi</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
||||||
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
||||||
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
|
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
|
||||||
Dialog "Creator anlegen". -->
|
Dialog "Creator anlegen". -->
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
|
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
|
||||||
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
|
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
|
||||||
Pseudo-Elements -- body hat nur ::before und ::after. -->
|
Pseudo-Elements -- body hat nur ::before und ::after. -->
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Dashboard</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Dashboard</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt inhalt--breit">
|
<main class="inhalt inhalt--breit">
|
||||||
|
|
||||||
<section class="kopf-zeile">
|
<section class="kopf-zeile">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Alles zentral</p>
|
<p class="marke">Alles zentral</p>
|
||||||
<h1 class="titel" id="titel">Dashboard</h1>
|
<h1 class="titel" id="titel">Dashboard</h1>
|
||||||
<p class="unterzeile" id="unterzeile">
|
<p class="unterzeile" id="unterzeile">
|
||||||
Eine Karte je Creator – mit einem Blick sehen, wo es hakt und wo es läuft.
|
Eine Karte je Creator – mit einem Blick sehen, wo es hakt und wo es läuft.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<!-- Der Knopf steht HIER und nicht in der Personenverwaltung
|
<!-- Der Knopf steht HIER und nicht in der Personenverwaltung
|
||||||
(07.09.2026). Ein Manager kommt dort gar nicht hinein, und er
|
(07.09.2026). Ein Manager kommt dort gar nicht hinein, und er
|
||||||
soll es auch nicht -- dahinter liegen Rollen, Codes, Sperren und
|
soll es auch nicht -- dahinter liegen Rollen, Codes, Sperren und
|
||||||
das Protokoll. Hier dagegen sieht er ohnehin seine Creator; der
|
das Protokoll. Hier dagegen sieht er ohnehin seine Creator; der
|
||||||
neue erscheint eine Zeile weiter unten. Das Skript blendet den
|
neue erscheint eine Zeile weiter unten. Das Skript blendet den
|
||||||
Knopf für Scouts und Creator aus, der Server lässt sie ohnehin
|
Knopf für Scouts und Creator aus, der Server lässt sie ohnehin
|
||||||
nicht durch. -->
|
nicht durch. -->
|
||||||
<button type="button" class="knopf knopf--klein" id="creator-neu" hidden>Creator anlegen</button>
|
<button type="button" class="knopf knopf--klein" id="creator-neu" hidden>Creator anlegen</button>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<!-- Creator anlegen. Derselbe Dialog-Aufbau wie überall sonst. -->
|
<!-- Creator anlegen. Derselbe Dialog-Aufbau wie überall sonst. -->
|
||||||
<dialog class="dialog" id="creator-dialog">
|
<dialog class="dialog" id="creator-dialog">
|
||||||
<form method="dialog" class="neu neu--blank" id="creator-form">
|
<form method="dialog" class="neu neu--blank" id="creator-form">
|
||||||
<h2 class="dialog__titel">Creator anlegen</h2>
|
<h2 class="dialog__titel">Creator anlegen</h2>
|
||||||
<p class="dialog__unter">
|
<p class="dialog__unter">
|
||||||
Der Zugangscode erscheint genau einmal – danach ist er weg und
|
Der Zugangscode erscheint genau einmal – danach ist er weg und
|
||||||
kann nur neu gesetzt werden.
|
kann nur neu gesetzt werden.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="neu__zeile">
|
<div class="neu__zeile">
|
||||||
<label class="feld-schild" for="cn-name">Name</label>
|
<label class="feld-schild" for="cn-name">Name</label>
|
||||||
<input id="cn-name" maxlength="60" required autocomplete="off" />
|
<input id="cn-name" maxlength="60" required autocomplete="off" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="neu__zeile" id="cn-scout-zeile" hidden>
|
<div class="neu__zeile" id="cn-scout-zeile" hidden>
|
||||||
<label class="feld-schild" for="cn-scout">Betreuung</label>
|
<label class="feld-schild" for="cn-scout">Betreuung</label>
|
||||||
<select id="cn-scout"></select>
|
<select id="cn-scout"></select>
|
||||||
<p class="feld-hinweis">
|
<p class="feld-hinweis">
|
||||||
Ohne Auswahl betreust du ihn selbst. Zur Auswahl stehen nur
|
Ohne Auswahl betreust du ihn selbst. Zur Auswahl stehen nur
|
||||||
deine eigenen Scouts.
|
deine eigenen Scouts.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Der Code. Steht erst nach dem Anlegen da und wird nie
|
<!-- Der Code. Steht erst nach dem Anlegen da und wird nie
|
||||||
nachgeladen -- die Seite ist die einzige Stelle, an der er je
|
nachgeladen -- die Seite ist die einzige Stelle, an der er je
|
||||||
zu sehen ist. -->
|
zu sehen ist. -->
|
||||||
<div class="neu__zeile" id="cn-code-zeile" hidden>
|
<div class="neu__zeile" id="cn-code-zeile" hidden>
|
||||||
<p class="feld-schild">Zugangscode für <span id="cn-code-name"></span></p>
|
<p class="feld-schild">Zugangscode für <span id="cn-code-name"></span></p>
|
||||||
<p class="code-anzeige" id="cn-code"></p>
|
<p class="code-anzeige" id="cn-code"></p>
|
||||||
<p class="feld-hinweis">
|
<p class="feld-hinweis">
|
||||||
Jetzt weitergeben. Nach dem Schließen ist er nicht mehr abrufbar.
|
Jetzt weitergeben. Nach dem Schließen ist er nicht mehr abrufbar.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="fehler" id="cn-fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="cn-fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<div class="dialog__knoepfe">
|
<div class="dialog__knoepfe">
|
||||||
<button type="submit" class="knopf knopf--klein" id="cn-speichern">Anlegen</button>
|
<button type="submit" class="knopf knopf--klein" id="cn-speichern">Anlegen</button>
|
||||||
<button type="button" class="abmelden" id="cn-zu">Schließen</button>
|
<button type="button" class="abmelden" id="cn-zu">Schließen</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</dialog>
|
</dialog>
|
||||||
|
|
||||||
<!-- FRÜHWARNUNG (06.09.2026).
|
<!-- FRÜHWARNUNG (06.09.2026).
|
||||||
|
|
||||||
Steht GANZ OBEN, noch vor den Summen. Die Summen beantworten "wie
|
Steht GANZ OBEN, noch vor den Summen. Die Summen beantworten "wie
|
||||||
steht es insgesamt", die Karten "wie steht es bei jedem" – aber
|
steht es insgesamt", die Karten "wie steht es bei jedem" – aber
|
||||||
die Frage, mit der ein Betreuer morgens ankommt, ist eine dritte:
|
die Frage, mit der ein Betreuer morgens ankommt, ist eine dritte:
|
||||||
"wo muss ich HEUTE hin?" Sie stand bis jetzt nirgends.
|
"wo muss ich HEUTE hin?" Sie stand bis jetzt nirgends.
|
||||||
|
|
||||||
Bewusst OHNE Punktzahl. Ein Wert wie "Abwanderungsrisiko 73"
|
Bewusst OHNE Punktzahl. Ein Wert wie "Abwanderungsrisiko 73"
|
||||||
klingt nach Wissenschaft und ist eine Behauptung: Man kann ihn
|
klingt nach Wissenschaft und ist eine Behauptung: Man kann ihn
|
||||||
nicht prüfen, nicht widersprechen und nicht erklären. Hier stehen
|
nicht prüfen, nicht widersprechen und nicht erklären. Hier stehen
|
||||||
stattdessen die einzelnen Beobachtungen im Klartext, jede mit
|
stattdessen die einzelnen Beobachtungen im Klartext, jede mit
|
||||||
ihrem Beleg – dann entscheidet ein Mensch.
|
ihrem Beleg – dann entscheidet ein Mensch.
|
||||||
|
|
||||||
Ein Creator sieht diesen Block nie (der Server liefert ihm gar
|
Ein Creator sieht diesen Block nie (der Server liefert ihm gar
|
||||||
keine Daten). Zu lesen, dass ein System einen für gefährdet hält,
|
keine Daten). Zu lesen, dass ein System einen für gefährdet hält,
|
||||||
ist keine Mitteilung an die betroffene Person. -->
|
ist keine Mitteilung an die betroffene Person. -->
|
||||||
<section class="warnblock" id="fruehwarnung" hidden aria-labelledby="warn-titel">
|
<section class="warnblock" id="fruehwarnung" hidden aria-labelledby="warn-titel">
|
||||||
<div class="klapp-kopf">
|
<div class="klapp-kopf">
|
||||||
<h2 class="feldschild" id="warn-titel">Wo ich diese Woche nachfassen würde</h2>
|
<h2 class="feldschild" id="warn-titel">Wo ich diese Woche nachfassen würde</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="warnliste" id="warnliste"></div>
|
<div class="warnliste" id="warnliste"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Summen über alle sichtbaren Creator. Steht oben, weil die Frage
|
<!-- Summen über alle sichtbaren Creator. Steht oben, weil die Frage
|
||||||
"wie steht es insgesamt" vor der Frage "bei wem" kommt. -->
|
"wie steht es insgesamt" vor der Frage "bei wem" kommt. -->
|
||||||
<section class="summen" id="summen" hidden></section>
|
<section class="summen" id="summen" hidden></section>
|
||||||
|
|
||||||
<div id="liste" aria-busy="true"><p class="leise">Übersicht wird geladen …</p></div>
|
<div id="liste" aria-busy="true"><p class="leise">Übersicht wird geladen …</p></div>
|
||||||
|
|
||||||
<p class="stand" id="stand" hidden></p>
|
<p class="stand" id="stand" hidden></p>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/uebersicht.js?v=202609191915" defer></script>
|
<script src="assets/js/uebersicht.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+227
-227
@@ -1,227 +1,227 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Unsere Seiten · Der Treff</title>
|
<title>Unsere Seiten · Der Treff</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Der Treff</a> · Unsere Seiten</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Der Treff</a> · Unsere Seiten</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt inhalt--breit">
|
<main class="inhalt inhalt--breit">
|
||||||
|
|
||||||
<section class="kopf-zeile">
|
<section class="kopf-zeile">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Der Treff · Unsere Seiten</p>
|
<p class="marke">Der Treff · Unsere Seiten</p>
|
||||||
<h1 class="titel">Unsere Seiten</h1>
|
<h1 class="titel">Unsere Seiten</h1>
|
||||||
<p class="unterzeile">
|
<p class="unterzeile">
|
||||||
Was es außerhalb vom Treff noch gibt — und wo dein Rabatt wartet.
|
Was es außerhalb vom Treff noch gibt — und wo dein Rabatt wartet.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- ==================================================================
|
<!-- ==================================================================
|
||||||
WARUM DIESE SEITE EXISTIERT (19.09.2026)
|
WARUM DIESE SEITE EXISTIERT (19.09.2026)
|
||||||
|
|
||||||
Filipe: "ich brauch im community bereich noch eine kachel, die
|
Filipe: "ich brauch im community bereich noch eine kachel, die
|
||||||
wenn man drauf drückt dan kacheln hat die auf die website von
|
wenn man drauf drückt dan kacheln hat die auf die website von
|
||||||
dogfather universe geht ... und die shop site von vanvan."
|
dogfather universe geht ... und die shop site von vanvan."
|
||||||
|
|
||||||
ZWEI GRUENDE, WARUM DAS EINE EIGENE SEITE IST und nicht zwei
|
ZWEI GRUENDE, WARUM DAS EINE EIGENE SEITE IST und nicht zwei
|
||||||
Kacheln direkt in der Uebersicht:
|
Kacheln direkt in der Uebersicht:
|
||||||
|
|
||||||
1. Die sieben Kacheln im Treff fuehren alle NACH INNEN -- auf
|
1. Die sieben Kacheln im Treff fuehren alle NACH INNEN -- auf
|
||||||
ein Brett, auf dem man liest und schreibt. Zwei Kacheln
|
ein Brett, auf dem man liest und schreibt. Zwei Kacheln
|
||||||
dazwischen, die den Browser verlassen, waeren ein Bruch: Man
|
dazwischen, die den Browser verlassen, waeren ein Bruch: Man
|
||||||
tippt auf etwas, das aussieht wie ein Brett, und ist
|
tippt auf etwas, das aussieht wie ein Brett, und ist
|
||||||
ploetzlich woanders. Eine eigene Seite sagt vorher, was
|
ploetzlich woanders. Eine eigene Seite sagt vorher, was
|
||||||
passiert.
|
passiert.
|
||||||
|
|
||||||
2. Ein Rabattcode braucht Platz. Er muss gross, kopierbar und
|
2. Ein Rabattcode braucht Platz. Er muss gross, kopierbar und
|
||||||
mit seinen Bedingungen dastehen -- sonst wird er falsch
|
mit seinen Bedingungen dastehen -- sonst wird er falsch
|
||||||
erinnert und jemand steht enttaeuscht an der Kasse.
|
erinnert und jemand steht enttaeuscht an der Kasse.
|
||||||
|
|
||||||
DER CODE IST ECHT UND WURDE NACHGESEHEN, nicht abgeschrieben:
|
DER CODE IST ECHT UND WURDE NACHGESEHEN, nicht abgeschrieben:
|
||||||
Er steht in partnercodes.json von VanVans Shop als DOGI10, 10
|
Er steht in partnercodes.json von VanVans Shop als DOGI10, 10
|
||||||
Prozent, aktiv, ohne Ablaufdatum, mit der Notiz "Zum weitergeben
|
Prozent, aktiv, ohne Ablaufdatum, mit der Notiz "Zum weitergeben
|
||||||
an Community, Zuschauer, Freunde etc." -- und mit
|
an Community, Zuschauer, Freunde etc." -- und mit
|
||||||
"giltAufSale": false. Genau deshalb steht der Satz zu den
|
"giltAufSale": false. Genau deshalb steht der Satz zu den
|
||||||
reduzierten Artikeln hier drunter. Ein Rabatt, der an der Kasse
|
reduzierten Artikeln hier drunter. Ein Rabatt, der an der Kasse
|
||||||
anders ausfaellt als angekuendigt, kostet mehr Vertrauen, als
|
anders ausfaellt als angekuendigt, kostet mehr Vertrauen, als
|
||||||
er Umsatz bringt.
|
er Umsatz bringt.
|
||||||
|
|
||||||
Der zweite Code in derselben Datei ist als "Nur fuer Filipe
|
Der zweite Code in derselben Datei ist als "Nur fuer Filipe
|
||||||
persoenlich" vermerkt und steht deshalb NIRGENDWO auf dieser
|
persoenlich" vermerkt und steht deshalb NIRGENDWO auf dieser
|
||||||
Seite.
|
Seite.
|
||||||
============================================================== -->
|
============================================================== -->
|
||||||
|
|
||||||
<div class="seiten-gitter">
|
<div class="seiten-gitter">
|
||||||
|
|
||||||
<!-- ---- DOGFATHER UNIVERSE ------------------------------------ -->
|
<!-- ---- DOGFATHER UNIVERSE ------------------------------------ -->
|
||||||
<article class="aussen aussen--dogi" data-weg="https://dogfather-universe.com/">
|
<article class="aussen aussen--dogi" data-weg="https://dogfather-universe.com/">
|
||||||
<div class="aussen__schein" aria-hidden="true"></div>
|
<div class="aussen__schein" aria-hidden="true"></div>
|
||||||
<!-- DIE SCHWEBENDEN LOGOS (19.09.2026).
|
<!-- DIE SCHWEBENDEN LOGOS (19.09.2026).
|
||||||
|
|
||||||
Filipe: "die sollen paar mal sein in der kacheln und so wie
|
Filipe: "die sollen paar mal sein in der kacheln und so wie
|
||||||
schweben, sich ganz leicht bewegen."
|
schweben, sich ganz leicht bewegen."
|
||||||
|
|
||||||
VIER STUECK, VERSCHIEDEN GROSS UND VERSCHIEDEN SCHNELL. Alle
|
VIER STUECK, VERSCHIEDEN GROSS UND VERSCHIEDEN SCHNELL. Alle
|
||||||
gleich waere ein Muster, und ein Muster sieht nach Tapete
|
gleich waere ein Muster, und ein Muster sieht nach Tapete
|
||||||
aus. Verschieden heisst: Man nimmt Tiefe wahr, ohne dass
|
aus. Verschieden heisst: Man nimmt Tiefe wahr, ohne dass
|
||||||
etwas ablenkt.
|
etwas ablenkt.
|
||||||
|
|
||||||
Sie tragen KEINE Farbe: Das PNG ist eine Maske, die Farbe
|
Sie tragen KEINE Farbe: Das PNG ist eine Maske, die Farbe
|
||||||
kommt aus dem CSS (--aussen-ton). Deshalb passt dasselbe
|
kommt aus dem CSS (--aussen-ton). Deshalb passt dasselbe
|
||||||
Logo in jede Kachel, egal welchen Ton sie hat.
|
Logo in jede Kachel, egal welchen Ton sie hat.
|
||||||
|
|
||||||
`aria-hidden`, weil sie nichts sagen -- wer die Seite
|
`aria-hidden`, weil sie nichts sagen -- wer die Seite
|
||||||
vorlesen laesst, soll nicht viermal "Logo" hoeren. -->
|
vorlesen laesst, soll nicht viermal "Logo" hoeren. -->
|
||||||
<div class="logo-feld" aria-hidden="true">
|
<div class="logo-feld" aria-hidden="true">
|
||||||
<span class="logo-feld__stueck" data-n="1"></span>
|
<span class="logo-feld__stueck" data-n="1"></span>
|
||||||
<span class="logo-feld__stueck" data-n="2"></span>
|
<span class="logo-feld__stueck" data-n="2"></span>
|
||||||
<span class="logo-feld__stueck" data-n="3"></span>
|
<span class="logo-feld__stueck" data-n="3"></span>
|
||||||
<span class="logo-feld__stueck" data-n="4"></span>
|
<span class="logo-feld__stueck" data-n="4"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="aussen__kopf">
|
<div class="aussen__kopf">
|
||||||
<span class="aussen__zeichen" aria-hidden="true">
|
<span class="aussen__zeichen" aria-hidden="true">
|
||||||
<svg viewBox="0 0 24 24">
|
<svg viewBox="0 0 24 24">
|
||||||
<circle cx="12" cy="12" r="8.4" />
|
<circle cx="12" cy="12" r="8.4" />
|
||||||
<path d="M3.6 12h16.8M12 3.6c2.4 2.5 2.4 13.9 0 16.8M12 3.6c-2.4 2.5-2.4 13.9 0 16.8" />
|
<path d="M3.6 12h16.8M12 3.6c2.4 2.5 2.4 13.9 0 16.8M12 3.6c-2.4 2.5-2.4 13.9 0 16.8" />
|
||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
<div>
|
<div>
|
||||||
<p class="aussen__marke">Die Website</p>
|
<p class="aussen__marke">Die Website</p>
|
||||||
<h2 class="aussen__titel">DogFather Universe</h2>
|
<h2 class="aussen__titel">DogFather Universe</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="aussen__satz">
|
<p class="aussen__satz">
|
||||||
Die Heimat von DogFather als Streamer, der HasiDog-Community
|
Die Heimat von DogFather als Streamer, der HasiDog-Community
|
||||||
und seiner Arbeit als Manager bei Spicy Media.
|
und seiner Arbeit als Manager bei Spicy Media.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<!-- WAS ES DORT GIBT -- ABGELESEN, NICHT AUSGEDACHT.
|
<!-- WAS ES DORT GIBT -- ABGELESEN, NICHT AUSGEDACHT.
|
||||||
Die Punkte stammen aus der Navigation von
|
Die Punkte stammen aus der Navigation von
|
||||||
dogfather-universe.com (streamplan.html, hasidog.html,
|
dogfather-universe.com (streamplan.html, hasidog.html,
|
||||||
zeitreise.html, stimmen.html). Eine erfundene Aufzählung
|
zeitreise.html, stimmen.html). Eine erfundene Aufzählung
|
||||||
wäre beim ersten Klick als Lüge aufgeflogen.
|
wäre beim ersten Klick als Lüge aufgeflogen.
|
||||||
|
|
||||||
UND SIE SIND KEINE LINKS: Die ganze Karte führt zur
|
UND SIE SIND KEINE LINKS: Die ganze Karte führt zur
|
||||||
Startseite; einzelne Links darin würden diesen Klick
|
Startseite; einzelne Links darin würden diesen Klick
|
||||||
zerschneiden und wären auf dem Handy außerdem zu kleine
|
zerschneiden und wären auf dem Handy außerdem zu kleine
|
||||||
Ziele. -->
|
Ziele. -->
|
||||||
<ul class="aussen__liste">
|
<ul class="aussen__liste">
|
||||||
<li>Der Streamplan – wann was läuft</li>
|
<li>Der Streamplan – wann was läuft</li>
|
||||||
<li>HasiDog: die Community rund um Dogi</li>
|
<li>HasiDog: die Community rund um Dogi</li>
|
||||||
<li>Die Zeitreise durch alles Bisherige</li>
|
<li>Die Zeitreise durch alles Bisherige</li>
|
||||||
<li>Stimmen von Leuten, die dabei waren</li>
|
<li>Stimmen von Leuten, die dabei waren</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p class="aussen__weg">
|
<p class="aussen__weg">
|
||||||
<span class="aussen__adresse">dogfather-universe.com</span>
|
<span class="aussen__adresse">dogfather-universe.com</span>
|
||||||
<a class="aussen__knopf" href="https://dogfather-universe.com/"
|
<a class="aussen__knopf" href="https://dogfather-universe.com/"
|
||||||
target="_blank" rel="noopener noreferrer">Seite öffnen →</a>
|
target="_blank" rel="noopener noreferrer">Seite öffnen →</a>
|
||||||
</p>
|
</p>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<!-- ---- VANVANS SHOP ------------------------------------------ -->
|
<!-- ---- VANVANS SHOP ------------------------------------------ -->
|
||||||
<article class="aussen aussen--shop" data-weg="https://vans-diy-bastelbedarf.com/">
|
<article class="aussen aussen--shop" data-weg="https://vans-diy-bastelbedarf.com/">
|
||||||
<div class="aussen__schein" aria-hidden="true"></div>
|
<div class="aussen__schein" aria-hidden="true"></div>
|
||||||
<div class="logo-feld" aria-hidden="true">
|
<div class="logo-feld" aria-hidden="true">
|
||||||
<span class="logo-feld__stueck" data-n="1"></span>
|
<span class="logo-feld__stueck" data-n="1"></span>
|
||||||
<span class="logo-feld__stueck" data-n="2"></span>
|
<span class="logo-feld__stueck" data-n="2"></span>
|
||||||
<span class="logo-feld__stueck" data-n="3"></span>
|
<span class="logo-feld__stueck" data-n="3"></span>
|
||||||
<span class="logo-feld__stueck" data-n="4"></span>
|
<span class="logo-feld__stueck" data-n="4"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="aussen__kopf">
|
<div class="aussen__kopf">
|
||||||
<span class="aussen__zeichen" aria-hidden="true">
|
<span class="aussen__zeichen" aria-hidden="true">
|
||||||
<svg viewBox="0 0 24 24">
|
<svg viewBox="0 0 24 24">
|
||||||
<path d="M5 8h14l-1.1 11.2a1.4 1.4 0 0 1-1.4 1.3H7.5a1.4 1.4 0 0 1-1.4-1.3z" />
|
<path d="M5 8h14l-1.1 11.2a1.4 1.4 0 0 1-1.4 1.3H7.5a1.4 1.4 0 0 1-1.4-1.3z" />
|
||||||
<path d="M9 8V6.4a3 3 0 0 1 6 0V8" />
|
<path d="M9 8V6.4a3 3 0 0 1 6 0V8" />
|
||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
<div>
|
<div>
|
||||||
<p class="aussen__marke">Der Shop</p>
|
<p class="aussen__marke">Der Shop</p>
|
||||||
<!-- NAME UND BESCHREIBUNG STAMMEN VON DER SEITE SELBST
|
<!-- NAME UND BESCHREIBUNG STAMMEN VON DER SEITE SELBST
|
||||||
(og:site_name und meta description). Meine erste Fassung
|
(og:site_name und meta description). Meine erste Fassung
|
||||||
hieß „Van's DIY Bastelbedarf" und nannte „Perlen,
|
hieß „Van's DIY Bastelbedarf" und nannte „Perlen,
|
||||||
Anhänger, Werkzeug" — beides ausgedacht und beides
|
Anhänger, Werkzeug" — beides ausgedacht und beides
|
||||||
falsch. Der Laden heißt mit „&", und er verkauft vor
|
falsch. Der Laden heißt mit „&", und er verkauft vor
|
||||||
allem Handgemachtes. -->
|
allem Handgemachtes. -->
|
||||||
<h2 class="aussen__titel">Van's DIY & Bastelbedarf</h2>
|
<h2 class="aussen__titel">Van's DIY & Bastelbedarf</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="aussen__satz">
|
<p class="aussen__satz">
|
||||||
VanVans eigener Laden: handgemachte Häkelwerke, Plushies,
|
VanVans eigener Laden: handgemachte Häkelwerke, Plushies,
|
||||||
Schmuck und Bastelzubehör.
|
Schmuck und Bastelzubehör.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<!-- Der Rabatt. Eigener Block, weil er das Wichtigste auf
|
<!-- Der Rabatt. Eigener Block, weil er das Wichtigste auf
|
||||||
dieser Karte ist -- und kopierbar, weil niemand einen Code
|
dieser Karte ist -- und kopierbar, weil niemand einen Code
|
||||||
abtippen soll, den er sich vorher merken muss. -->
|
abtippen soll, den er sich vorher merken muss. -->
|
||||||
<div class="gutschein">
|
<div class="gutschein">
|
||||||
<p class="gutschein__zeile">
|
<p class="gutschein__zeile">
|
||||||
<span class="gutschein__prozent">10 %</span>
|
<span class="gutschein__prozent">10 %</span>
|
||||||
<span class="gutschein__wofuer">für alle aus der Community</span>
|
<span class="gutschein__wofuer">für alle aus der Community</span>
|
||||||
</p>
|
</p>
|
||||||
<button type="button" class="gutschein__code" id="code-knopf"
|
<button type="button" class="gutschein__code" id="code-knopf"
|
||||||
data-code="DOGI10"
|
data-code="DOGI10"
|
||||||
aria-label="Rabattcode DOGI10 kopieren">
|
aria-label="Rabattcode DOGI10 kopieren">
|
||||||
<span class="gutschein__wort">DOGI10</span>
|
<span class="gutschein__wort">DOGI10</span>
|
||||||
<span class="gutschein__hinweis" id="code-hinweis">tippen zum Kopieren</span>
|
<span class="gutschein__hinweis" id="code-hinweis">tippen zum Kopieren</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="gutschein__klein">
|
<p class="gutschein__klein">
|
||||||
Beim Bestellen im Feld für den Gutscheincode eintragen.
|
Beim Bestellen im Feld für den Gutscheincode eintragen.
|
||||||
Gilt nicht auf bereits reduzierte Artikel.
|
Gilt nicht auf bereits reduzierte Artikel.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="aussen__weg">
|
<p class="aussen__weg">
|
||||||
<span class="aussen__adresse">vans-diy-bastelbedarf.com</span>
|
<span class="aussen__adresse">vans-diy-bastelbedarf.com</span>
|
||||||
<a class="aussen__knopf" href="https://vans-diy-bastelbedarf.com/"
|
<a class="aussen__knopf" href="https://vans-diy-bastelbedarf.com/"
|
||||||
target="_blank" rel="noopener noreferrer">Shop öffnen →</a>
|
target="_blank" rel="noopener noreferrer">Shop öffnen →</a>
|
||||||
</p>
|
</p>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="seiten-fuss">
|
<p class="seiten-fuss">
|
||||||
Beide Seiten öffnen sich in einem neuen Fenster — der Treff bleibt
|
Beide Seiten öffnen sich in einem neuen Fenster — der Treff bleibt
|
||||||
also offen.
|
also offen.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/unsere-seiten.js?v=202609191915" defer></script>
|
<script src="assets/js/unsere-seiten.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+154
-154
@@ -1,154 +1,154 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
<title>Entwicklung · Spicy & Dogi</title>
|
<title>Entwicklung · Spicy & Dogi</title>
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
|
|
||||||
<div class="schleier" aria-hidden="true"></div>
|
<div class="schleier" aria-hidden="true"></div>
|
||||||
|
|
||||||
<header class="kopfleiste">
|
<header class="kopfleiste">
|
||||||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||||||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||||||
</svg>
|
</svg>
|
||||||
<span class="zurueck-knopf__text">Zurück</span>
|
<span class="zurueck-knopf__text">Zurück</span>
|
||||||
</button>
|
</button>
|
||||||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Team Dogi</a> · Entwicklung</span></p>
|
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Team Dogi</a> · Entwicklung</span></p>
|
||||||
<div class="kopfleiste__rechts">
|
<div class="kopfleiste__rechts">
|
||||||
<span class="wer" id="wer">…</span>
|
<span class="wer" id="wer">…</span>
|
||||||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="inhalt">
|
<main class="inhalt">
|
||||||
|
|
||||||
<!-- ==================================================================
|
<!-- ==================================================================
|
||||||
ENTWICKLUNG — die Auswertung je Person (19.09.2026)
|
ENTWICKLUNG — die Auswertung je Person (19.09.2026)
|
||||||
|
|
||||||
Filipe: „dan perfektionierst du eine neue wo diagramme texte und
|
Filipe: „dan perfektionierst du eine neue wo diagramme texte und
|
||||||
so zu jedem modi gemacht wird und diese kategorie kannst du
|
so zu jedem modi gemacht wird und diese kategorie kannst du
|
||||||
entwicklung nenen."
|
entwicklung nenen."
|
||||||
|
|
||||||
DIESE SEITE HAT ZWEI GESICHTER, und welches man sieht, entscheidet
|
DIESE SEITE HAT ZWEI GESICHTER, und welches man sieht, entscheidet
|
||||||
der Server:
|
der Server:
|
||||||
|
|
||||||
Leitung -> die Karten aller, die eine haben
|
Leitung -> die Karten aller, die eine haben
|
||||||
Ein Modi -> ausschliesslich die Bewegung in der EIGENEN Karte,
|
Ein Modi -> ausschliesslich die Bewegung in der EIGENEN Karte,
|
||||||
ohne Namen, ohne Anlass, ohne wer-hat-was
|
ohne Namen, ohne Anlass, ohne wer-hat-was
|
||||||
|
|
||||||
WAS HIER NICHT STEHT UND NIE STEHEN WIRD: eine Punktzahl, ein
|
WAS HIER NICHT STEHT UND NIE STEHEN WIRD: eine Punktzahl, ein
|
||||||
Prozentwert, ein Durchschnitt, eine Rangliste, ein Vergleich
|
Prozentwert, ein Durchschnitt, eine Rangliste, ein Vergleich
|
||||||
zwischen zwei Menschen. Eine Zahl ueber einen Menschen wird
|
zwischen zwei Menschen. Eine Zahl ueber einen Menschen wird
|
||||||
gelesen, verglichen und weitererzaehlt — gebraucht wird ein
|
gelesen, verglichen und weitererzaehlt — gebraucht wird ein
|
||||||
Gespraechsanlass.
|
Gespraechsanlass.
|
||||||
============================================================== -->
|
============================================================== -->
|
||||||
|
|
||||||
<section class="kopf-zeile">
|
<section class="kopf-zeile">
|
||||||
<div>
|
<div>
|
||||||
<p class="marke">Entwicklung & Nachwuchs</p>
|
<p class="marke">Entwicklung & Nachwuchs</p>
|
||||||
<h1 class="titel" id="titel">Entwicklung</h1>
|
<h1 class="titel" id="titel">Entwicklung</h1>
|
||||||
<p class="unterzeile" id="unterzeile">
|
<p class="unterzeile" id="unterzeile">
|
||||||
Wie sich jemand über die Zeit bewegt. Keine Note, kein Vergleich –
|
Wie sich jemand über die Zeit bewegt. Keine Note, kein Vergleich –
|
||||||
jede Karte nur mit sich selbst.
|
jede Karte nur mit sich selbst.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||||||
|
|
||||||
<!-- ---- Die Liste (nur Leitung) ---------------------------------- -->
|
<!-- ---- Die Liste (nur Leitung) ---------------------------------- -->
|
||||||
<section id="liste-block" hidden>
|
<section id="liste-block" hidden>
|
||||||
<p class="w-hinweis" id="liste-hinweis"></p>
|
<p class="w-hinweis" id="liste-hinweis"></p>
|
||||||
<div id="liste" class="w-liste" aria-busy="true">
|
<div id="liste" class="w-liste" aria-busy="true">
|
||||||
<p class="leise">wird geladen …</p>
|
<p class="leise">wird geladen …</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- ---- Eine Karte (nur Leitung) --------------------------------- -->
|
<!-- ---- Eine Karte (nur Leitung) --------------------------------- -->
|
||||||
<section id="karte-block" hidden>
|
<section id="karte-block" hidden>
|
||||||
<button type="button" class="knopf knopf--still knopf--klein" id="zur-liste">
|
<button type="button" class="knopf knopf--still knopf--klein" id="zur-liste">
|
||||||
← Alle Karten
|
← Alle Karten
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<h2 class="w-name" id="karte-name">…</h2>
|
<h2 class="w-name" id="karte-name">…</h2>
|
||||||
<p class="w-satz" id="karte-satz">…</p>
|
<p class="w-satz" id="karte-satz">…</p>
|
||||||
|
|
||||||
<!-- Diagramm 1: Bewegung. Zwei Richtungen um eine Nulllinie —
|
<!-- Diagramm 1: Bewegung. Zwei Richtungen um eine Nulllinie —
|
||||||
vorwaerts und rueckwaerts sind dieselbe Groesse mit
|
vorwaerts und rueckwaerts sind dieselbe Groesse mit
|
||||||
verschiedenem Vorzeichen, nicht zwei Themen. -->
|
verschiedenem Vorzeichen, nicht zwei Themen. -->
|
||||||
<section class="w-teil" id="bewegung-block">
|
<section class="w-teil" id="bewegung-block">
|
||||||
<h3 class="e-abschnitt">Was sich bewegt hat</h3>
|
<h3 class="e-abschnitt">Was sich bewegt hat</h3>
|
||||||
<p class="w-teil__satz" id="bewegung-satz"></p>
|
<p class="w-teil__satz" id="bewegung-satz"></p>
|
||||||
<div id="bewegung"></div>
|
<div id="bewegung"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Diagramm 2: der Streifen. Eine Zeile je Punkt, eine Spalte je
|
<!-- Diagramm 2: der Streifen. Eine Zeile je Punkt, eine Spalte je
|
||||||
Monat. Das Zeichen sagt die Stufe, die Farbe verstaerkt nur. -->
|
Monat. Das Zeichen sagt die Stufe, die Farbe verstaerkt nur. -->
|
||||||
<section class="w-teil" id="streifen-block">
|
<section class="w-teil" id="streifen-block">
|
||||||
<h3 class="e-abschnitt">Punkt für Punkt, Monat für Monat</h3>
|
<h3 class="e-abschnitt">Punkt für Punkt, Monat für Monat</h3>
|
||||||
<p class="w-teil__satz" id="streifen-satz"></p>
|
<p class="w-teil__satz" id="streifen-satz"></p>
|
||||||
<div id="streifen" class="w-streifen"></div>
|
<div id="streifen" class="w-streifen"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Die Texte. Reihenfolge ist Absicht: erst was sich bewegt hat,
|
<!-- Die Texte. Reihenfolge ist Absicht: erst was sich bewegt hat,
|
||||||
dann was traegt, erst danach was liegt. -->
|
dann was traegt, erst danach was liegt. -->
|
||||||
<section class="w-teil" id="texte-block">
|
<section class="w-teil" id="texte-block">
|
||||||
<h3 class="e-abschnitt">Was dazu zu sagen ist</h3>
|
<h3 class="e-abschnitt">Was dazu zu sagen ist</h3>
|
||||||
<div id="texte"></div>
|
<div id="texte"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<p class="w-fuss">
|
<p class="w-fuss">
|
||||||
Auf dieser Seite gibt es keine Punktzahl und keinen Vergleich zwischen
|
Auf dieser Seite gibt es keine Punktzahl und keinen Vergleich zwischen
|
||||||
Personen. Was hier steht, ist ein Gesprächsanlass – kein Zeugnis.
|
Personen. Was hier steht, ist ein Gesprächsanlass – kein Zeugnis.
|
||||||
Einschätzungen setzt und ändert man im Katalog:
|
Einschätzungen setzt und ändert man im Katalog:
|
||||||
<a href="entwicklung.html">Eure Aufgaben</a>.
|
<a href="entwicklung.html">Eure Aufgaben</a>.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- ---- Die eigene Sicht (Modi) ---------------------------------- -->
|
<!-- ---- Die eigene Sicht (Modi) ---------------------------------- -->
|
||||||
<!-- ==================================================================
|
<!-- ==================================================================
|
||||||
WAS DER MENSCH SELBST SIEHT.
|
WAS DER MENSCH SELBST SIEHT.
|
||||||
|
|
||||||
Hier steht kein fremder Name, keine Beobachtung über jemand
|
Hier steht kein fremder Name, keine Beobachtung über jemand
|
||||||
anderen und kein Anlasstext. Nur: ob sich etwas bewegt hat.
|
anderen und kein Anlasstext. Nur: ob sich etwas bewegt hat.
|
||||||
|
|
||||||
Die Lesehilfe und die zwei Wege am Ende sind am 19.09.2026
|
Die Lesehilfe und die zwei Wege am Ende sind am 19.09.2026
|
||||||
dazugekommen. Vorher standen hier Balken ohne Erklärung und ein
|
dazugekommen. Vorher standen hier Balken ohne Erklärung und ein
|
||||||
„Frag danach" ohne Adressaten – eine Sackgasse mit freundlichem
|
„Frag danach" ohne Adressaten – eine Sackgasse mit freundlichem
|
||||||
Ton.
|
Ton.
|
||||||
============================================================== -->
|
============================================================== -->
|
||||||
<section id="mich-block" hidden>
|
<section id="mich-block" hidden>
|
||||||
<h2 class="e-abschnitt">Deine Entwicklung</h2>
|
<h2 class="e-abschnitt">Deine Entwicklung</h2>
|
||||||
<p class="w-satz" id="mich-satz">…</p>
|
<p class="w-satz" id="mich-satz">…</p>
|
||||||
<p class="w-lesehilfe" id="mich-lesehilfe" hidden></p>
|
<p class="w-lesehilfe" id="mich-lesehilfe" hidden></p>
|
||||||
<div id="mich-bewegung"></div>
|
<div id="mich-bewegung"></div>
|
||||||
<p class="w-fuss" id="mich-hinweis"></p>
|
<p class="w-fuss" id="mich-hinweis"></p>
|
||||||
<div class="w-wege" id="mich-wege" hidden></div>
|
<div class="w-wege" id="mich-wege" hidden></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/werdegang.js?v=202609191915" defer></script>
|
<script src="assets/js/werdegang.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+15
-14
@@ -12,20 +12,20 @@
|
|||||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||||
eine Flaeche sind statt zweier. -->
|
eine Flaeche sind statt zweier. -->
|
||||||
<meta name="theme-color" content="#06090f" />
|
<meta name="theme-color" content="#06090f" />
|
||||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191915" />
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609191956" />
|
||||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191915" />
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/gate.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/start.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/start.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/wissen.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/wissen.css?v=202609191956" />
|
||||||
<link rel="stylesheet" href="assets/css/module.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/module.css?v=202609191956" />
|
||||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609191915" />
|
<link rel="stylesheet" href="assets/css/haus.css?v=202609191956" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="start">
|
<body class="start">
|
||||||
@@ -190,12 +190,13 @@
|
|||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="assets/js/meldung.js?v=202609191915" defer></script>
|
<script src="assets/js/meldung.js?v=202609191956" defer></script>
|
||||||
|
<script src="assets/js/nachfrage.js?v=202609191956" defer></script>
|
||||||
|
|
||||||
<script src="assets/js/wahl.js?v=202609191915" defer></script>
|
<script src="assets/js/wahl.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/bereiche.js?v=202609191915" defer></script>
|
<script src="assets/js/bereiche.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/kopf.js?v=202609191915" defer></script>
|
<script src="assets/js/kopf.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/glocke.js?v=202609191915" defer></script>
|
<script src="assets/js/glocke.js?v=202609191956" defer></script>
|
||||||
<script src="assets/js/wissen.js?v=202609191915" defer></script>
|
<script src="assets/js/wissen.js?v=202609191956" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user