diff --git a/server/pruef-backstage-import.mjs b/server/pruef-backstage-import.mjs index 4f939f62..62b0add0 100644 --- a/server/pruef-backstage-import.mjs +++ b/server/pruef-backstage-import.mjs @@ -304,6 +304,37 @@ console.log("\n=== Die Seite ==="); ok(/niemand_hier/.test(vorschau), "und den Namen, der nicht zugeordnet wurde"); const losFrei = await seite.$eval("#netz-los", (e) => !e.disabled); ok(losFrei === true, "der Übernehmen-Knopf ist danach frei"); + + /* ---- DIE ERKLÄRUNG MUSS DA SEIN (11.09.2026) -------------------- + Filipe: "ich brauch auch eine erklärung immer dabei wo die scouts + und manager das finden." Ein Text, den niemand prüft, verschwindet + beim nächsten Umbau -- und niemandem fällt es auf, weil ein + fehlender Satz nichts kaputtmacht. */ + const schritte = await seite.$$eval("#netz-dialog .anleitung li", (ls) => ls.length); + ok(schritte >= 5, `die Backstage-Anleitung hat ${schritte} Schritte`); + const anleitung = await seite.$eval("#netz-dialog", (e) => e.textContent); + ok(/Überschriftenzeile/.test(anleitung), + "und sagt, dass die Überschriftenzeile mitmarkiert werden muss"); + ok(/Steckbrief/.test(anleitung), + "und woher die Zuordnung kommt (TikTok-Name im Steckbrief)"); + + await seite.click("#netz-zu"); + await seite.waitForTimeout(300); + const hinweis = await seite.$eval("#quellen-hinweis", (e) => (e.hidden ? "" : e.textContent)); + ok(/Backstage/.test(hinweis) && /TikTok-Datei/.test(hinweis), + "unter den Knöpfen steht dauerhaft, was die beiden Quellen sind"); + + /* Und der fertige Text für den Creator -- mit den zwei Angaben, an + denen es sonst scheitert: JSON und "alle Daten". */ + await seite.click("#tt-oeffnen"); + await seite.waitForTimeout(300); + const fuerCreator = await seite.$eval("#tt-text", (e) => e.textContent); + ok(/JSON/.test(fuerCreator) && /Alle Daten/i.test(fuerCreator), + "der Text für den Creator nennt JSON und „Alle Daten“"); + ok(/Einstellungen und Datenschutz/.test(fuerCreator) && /Deine Daten herunterladen/.test(fuerCreator), + "und den Weg in der App"); + ok(/nicht gespeichert/.test(fuerCreator), + "und was mit der Datei passiert -- das gehört dem Creator gesagt"); await browser.close(); } diff --git a/workspace/app.webmanifest b/workspace/app.webmanifest index 0a325d8c..04d4339f 100644 --- a/workspace/app.webmanifest +++ b/workspace/app.webmanifest @@ -13,25 +13,25 @@ "theme_color": "#06090f", "icons": [ { - "src": "/assets/img/app-symbole/workspace-192.png?v=202609111324", + "src": "/assets/img/app-symbole/workspace-192.png?v=202609111350", "sizes": "192x192", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/workspace-512.png?v=202609111324", + "src": "/assets/img/app-symbole/workspace-512.png?v=202609111350", "sizes": "512x512", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609111324", + "src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609111350", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609111324", + "src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609111350", "sizes": "512x512", "type": "image/png", "purpose": "maskable" diff --git a/workspace/assets/css/leistung.css b/workspace/assets/css/leistung.css index 0f914675..0a5792b2 100644 --- a/workspace/assets/css/leistung.css +++ b/workspace/assets/css/leistung.css @@ -348,3 +348,56 @@ font-family: ui-monospace, "Cascadia Code", "Consolas", monospace; overflow-wrap: anywhere; } + +/* ===================================================================== + DIE ANLEITUNGEN (11.09.2026) + + Filipe: "ich brauch auch eine erklärung immer dabei wo die scouts und + manager das finden. also eine perfekte beschreibung bitte." + + Zwei Ebenen, weil zwei Fragen dahinterstecken: + + 1. WAS IST DAS? -- zwei Sätze, immer sichtbar unter den Knöpfen. + Wer davorsitzt und beide Knöpfe zum ersten Mal sieht, weiß sonst + nicht, welcher für ihn gemeint ist. + 2. WIE GEHT DAS? -- die Schritte, im Fenster, wo man sie braucht. + Dort stören sie niemanden, der es längst weiß. + + Eine Anleitung, die immer und vollständig auf der Seite steht, liest + nach dem dritten Mal niemand mehr -- und dann steht sie nur im Weg. + ===================================================================== */ +.quellen-hinweis { + display: flex; flex-wrap: wrap; gap: 6px 22px; + margin: 10px 0 0; + font-size: .8rem; line-height: 1.5; + color: var(--text-still); +} +.quellen-hinweis > span { flex: 1 1 320px; min-width: 0; } +.quellen-hinweis strong { color: var(--text-leise); } + +/* Die Schritte im Fenster. Nummern in der Hausfarbe, damit man sie als + Reihenfolge liest und nicht als Aufzählung -- bei einer Anleitung ist + die Reihenfolge die halbe Auskunft. */ +.anleitung { + margin: 4px 0 14px; padding: 0 0 0 1.6em; + font-size: .86rem; line-height: 1.6; + color: var(--text-leise); +} +.anleitung li { margin: 0 0 7px; } +.anleitung li::marker { color: var(--akzent); font-weight: 700; } +.anleitung strong { color: var(--text); } + +/* Der fertige Text zum Weiterschicken. Als
, damit die Nummerierung
+ stehen bleibt -- und mit Umbruch, damit er nicht seitlich herausläuft. */
+.anleitung-text {
+ margin: 4px 0 8px;
+ max-height: 210px; overflow-y: auto;
+ padding: 11px 13px;
+ border: 1px solid var(--rand); border-radius: 11px;
+ background: rgba(0, 0, 0, .28);
+ font-family: inherit; font-size: .81rem; line-height: 1.55;
+ color: var(--text-leise);
+ white-space: pre-wrap; overflow-wrap: anywhere;
+}
+.dialog__unter--still { font-size: .8rem; color: var(--text-still); }
+.dialog__knoepfe--links { justify-content: flex-start; margin: 0 0 10px; }
diff --git a/workspace/assets/js/leistung.js b/workspace/assets/js/leistung.js
index 854ae8da..5b7f49e7 100644
--- a/workspace/assets/js/leistung.js
+++ b/workspace/assets/js/leistung.js
@@ -184,6 +184,10 @@
/* Die Datei gehoert EINEM Creator -- deshalb sichtbar fuer alle,
die fuer ihn eintragen duerfen, also auch fuer seinen Scout. */
$('tt-oeffnen').hidden = !darfEintragen();
+ /* Der Hinweis erscheint nur, wenn wenigstens einer der beiden
+ Knoepfe da ist -- eine Erklaerung zu Knoepfen, die man nicht
+ sieht, ist Rauschen. */
+ $('quellen-hinweis').hidden = $('tt-oeffnen').hidden && $('netz-oeffnen').hidden;
if (!z || (!z.diamanten && !z.tage && !z.verweildauer)) {
ziel.append(el('p', 'leistung__leer',
@@ -773,6 +777,18 @@
});
$('tt-zu').addEventListener('click', () => $('tt-dialog').close());
$('tt-datei').addEventListener('change', ttDateiGewaehlt);
+ /* Den Text fuer den Creator in die Zwischenablage. Kein
+ Erfolgshaken ohne Beleg: Geht es schief (kein Recht, alter
+ Browser), steht das auch da -- sonst glaubt man, es sei kopiert,
+ und schickt eine leere Nachricht. */
+ $('tt-text-kopieren').addEventListener('click', async (e) => {
+ const knopf = e.currentTarget;
+ try {
+ await navigator.clipboard.writeText($('tt-text').textContent);
+ knopf.textContent = 'Kopiert';
+ } catch { knopf.textContent = 'Ging nicht - bitte von Hand markieren'; }
+ setTimeout(() => { knopf.textContent = 'Text kopieren'; }, 2600);
+ });
$('tt-form').addEventListener('submit', ttUebernehmen);
/* Beim EINFÜGEN sofort nachsehen -- nicht erst auf einen Knopf warten.
Wer eine Tabelle einfügt, will wissen, ob sie erkannt wurde; ein
diff --git a/workspace/aufgaben.html b/workspace/aufgaben.html
index a9571985..0a6535c0 100644
--- a/workspace/aufgaben.html
+++ b/workspace/aufgaben.html
@@ -12,19 +12,19 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
-
-
-
-
-
-
+
+
+
+
+
+
-
+
@@ -252,10 +252,10 @@
-
-
-
-
-
+
+
+
+
+