diff --git a/server/pruef-backstage-import.mjs b/server/pruef-backstage-import.mjs index a1c6a26d..a9c10f43 100644 --- a/server/pruef-backstage-import.mjs +++ b/server/pruef-backstage-import.mjs @@ -452,6 +452,93 @@ for (const [rolle, code, wer] of [ } +{ + /* ---- DER EINZEL-IMPORT KENNT DEN DRITTEN AUSGANG (14.09.2026) ---- + Als tagAusZelle() den Zeitraum dazubekam, kannte ihn nur der + Backstage-Weg. Im Einzel-Import stand weiterhin `gelesen.tag` -- + bei einem Zeitraum `undefined`. Folge: Die VORSCHAU haette die + Zeile gezaehlt, der SCHREIBWEG sie still uebersprungen. + + Zwei Aussagen ueber dieselbe Datei, die einander widersprechen -- + das ist der Unterschied, den niemand bemerkt, weil beide Seiten + fuer sich plausibel aussehen. + + GEPRUEFT WIRD DESHALB DER ABGLEICH: Was die Vorschau verspricht, + muss danach dastehen. */ + const datei = [ + "Datum;Diamanten;LIVE-Dauer", + "2026-09-01 ~ 2026-09-11;53.679;86Std. 10Min. 52Sek.", + ].join("\n"); + + /* WIE VIELE TAGESZEILEN LUMI SCHON HAT. Zum zweiten Mal heute derselbe + Griff: Der Backstage-Import weiter oben hat ihr bereits einen Tag + geschrieben, der in dieselbe Spanne faellt. Gemessen wird die + VERAENDERUNG, nicht der Absolutwert. */ + const tageVorLumi = (() => { + const d0 = new DatabaseSync(DB, { readOnly: true }); + const n = d0.prepare( + "SELECT COUNT(*) AS n FROM leistung WHERE creator_id = ? AND tag >= '2026-09-01' AND tag <= '2026-09-11'") + .get(idLumi).n; + d0.close(); + return n; + })(); + + const v = await ruf(`/workspace/api/leistung/${idLumi}/import/vorschau`, + keksDogi, { text: datei }); + ok(v.status === 200, `die Vorschau nimmt den Zeitraum an (HTTP ${v.status})`); + const versprochen = (v.daten?.neu ?? 0) + (v.daten?.ersetzt ?? 0); + ok(versprochen === 1, `sie verspricht genau eine Zeile (${versprochen})`); + /* `fehlerhaft` ist eine ZAHL, keine Liste -- nachgesehen in der + Antwort, nicht geraten. Beim ersten Anlauf stand hier `.length` + auf einer Zahl: immer `undefined`, immer ungleich 0, immer rot. */ + ok((v.daten?.fehlerhaft ?? -1) === 0, + `und meldet keinen Fehler (${v.daten?.fehlerhaft})`); + /* KEIN `undefined` IN DER VORSCHAU. Der alte Weg haette hier eine + Zeile mit `tag: undefined` gezeigt -- sichtbar als leere Spalte. */ + const beispiel = (v.daten?.beispiele || [])[0] + || (v.daten?.ersetzt_beispiele || [])[0] || {}; + ok(beispiel.von === "2026-09-01" && beispiel.bis === "2026-09-11", + `und nennt die Spanne statt eines leeren Tages (${beispiel.von}–${beispiel.bis})`); + ok(beispiel.tage === 11, `mit der Zahl der Tage (${beispiel.tage})`); + + const s = await ruf(`/workspace/api/leistung/${idLumi}/import`, + keksDogi, { text: datei }); + ok(s.status === 200, `der Import laeuft (HTTP ${s.status})`); + const angekommen = (s.daten?.geschrieben ?? 0) + (s.daten?.zeitraeume ?? 0); + ok(angekommen === versprochen, + `es kommt an, was die Vorschau versprochen hat (${versprochen} -> ${angekommen})`); + ok(s.daten?.zeitraeume === 1 && s.daten?.geschrieben === 0, + `und zwar als Zeitraum, nicht als Tag (${s.daten?.zeitraeume} / ${s.daten?.geschrieben})`); + + { + const d2 = new DatabaseSync(DB, { readOnly: true }); + const z = d2.prepare( + "SELECT * FROM leistung_zeitraum WHERE creator_id = ?").get(idLumi); + const tage = d2.prepare( + "SELECT COUNT(*) AS n FROM leistung WHERE creator_id = ? AND tag >= '2026-09-01' AND tag <= '2026-09-11'") + .get(idLumi).n; + d2.close(); + ok(z?.tage === 11 && z?.diamanten === 53679, + `er steht in der Datenbank (${z?.tage} Tage, ${z?.diamanten} Diamanten)`); + ok(z?.dauer_min === 5171, `mit der Dauer in Minuten (${z?.dauer_min})`); + ok(tage === tageVorLumi, + `und KEINE Tageszeile kam hinzu (${tageVorLumi} -> ${tage})`); + } + + /* GEGENPROBE: Eine Datei mit echten Tagen geht weiterhin als Tage + durch -- sonst hiesse alles oben nur, dass jetzt alles ein + Zeitraum ist. */ + const tagesdatei = [ + "Datum;Diamanten", + `${gestern};1.111`, + ].join("\n"); + const t = await ruf(`/workspace/api/leistung/${idLumi}/import`, + keksDogi, { text: tagesdatei }); + ok(t.daten?.geschrieben === 1 && (t.daten?.zeitraeume ?? 0) === 0, + `eine Tagesdatei bleibt eine Tagesdatei (${t.daten?.geschrieben} Tag, ` + + `${t.daten?.zeitraeume} Zeitraeume)`); +} + /* ======================================================================= 7. Und die Seite selbst ======================================================================= */ diff --git a/server/workspace-leistung.js b/server/workspace-leistung.js index 991c7a4d..acc96fd3 100644 --- a/server/workspace-leistung.js +++ b/server/workspace-leistung.js @@ -1244,15 +1244,52 @@ leistungRouter.post("/workspace/api/leistung/:creatorId/import/vorschau", gleich const fehlerhaft = []; for (let i = 1; i < zeilen.length; i++) { const z = zeilen[i]; + /* DER DRITTE AUSGANG MUSS HIER GENAUSO ANKOMMEN wie im + Backstage-Weg (14.09.2026). + + Als tagAusZelle() den Zeitraum bekam, stand hier weiterhin + nur `gelesen.tag`. Bei einem Zeitraum war der `undefined`, + der Vergleich mit heute wurde still falsch, und die Zeile + landete mit `tag: undefined` in der Vorschau -- waehrend der + Schreibweg daneben sie kommentarlos uebersprang. Vorschau + und Ergebnis haetten sich widersprochen, und das ist der + Unterschied, den niemand bemerkt. + + Ein dritter Ausgang taugt nur, wenn ihn ALLE Aufrufer + kennen. Das ist an diesem Tag die fuenfte Wiederholung + derselben Sache -- gefunden, bevor sie jemanden getroffen + hat, weil ich nach dem Umbau nachgesehen habe, wer die + Funktion sonst noch ruft. */ const gelesen = tagAusZelle(z[zu.tag]); if (gelesen.fehler) { fehlerhaft.push({ zeile: i + 1, grund: gelesen.fehler }); continue; } + + if (gelesen.zeitraum) { + const { von, bis } = gelesen.zeitraum; + if (bis > tagVor(0)) { + fehlerhaft.push({ zeile: i + 1, grund: `${bis} liegt in der Zukunft` }); + continue; + } + const wertez = { von, bis, tage: tageImZeitraum(von, bis) }; + for (const [feld, spalte] of Object.entries(zu)) { + if (feld === "tag" || spalte === undefined) continue; + wertez[feld] = feld === "dauer_min" ? dauerLesen(z[spalte]) : zahlLesen(z[spalte]); + } + const daz = db().prepare( + "SELECT 1 FROM leistung_zeitraum WHERE creator_id = ? AND von = ? AND bis = ?") + .get(creatorId, von, bis); + (daz ? ersetzt : neu).push(wertez); + continue; + } + const tag = gelesen.tag; if (tag > tagVor(0)) { fehlerhaft.push({ zeile: i + 1, grund: `${tag} liegt in der Zukunft` }); continue; } const werte = { tag }; for (const [feld, spalte] of Object.entries(zu)) { if (feld === "tag" || spalte === undefined) continue; - werte[feld] = zahlLesen(z[spalte]); + /* Die Dauer hat eine Einheit, die uebrigen Felder nicht -- + dieselbe Unterscheidung wie im Backstage-Weg. */ + werte[feld] = feld === "dauer_min" ? dauerLesen(z[spalte]) : zahlLesen(z[spalte]); } const vorhanden = db().prepare( "SELECT 1 FROM leistung WHERE creator_id = ? AND tag = ?").get(creatorId, tag); @@ -1301,15 +1338,41 @@ leistungRouter.post("/workspace/api/leistung/:creatorId/import", gleicheHerkunft (SELECT notiz FROM leistung WHERE creator_id = ? AND tag = ?), ?,?, 'import')`); - let geschrieben = 0, uebersprungen = 0; + /* Der zweite Weg, wie im Backstage-Import: Ein Zeitraum geht in + seine eigene Tabelle. */ + const spanneSchreiben = d.prepare(` + INSERT OR REPLACE INTO leistung_zeitraum + (creator_id, von, bis, tage, diamanten, dauer_min, gueltige_tage, + zuschauer_avg, zuschauer_max, verweildauer_s, schenker, follower_neu, + erfasst, erfasst_von) + VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)`); + + let geschrieben = 0, uebersprungen = 0, spannen = 0; d.exec("BEGIN"); try { for (let i = 1; i < zeilen.length; i++) { const z = zeilen[i]; /* Dieselbe Regel wie in der Vorschau -- sonst zeigt die Vorschau etwas anderes an, als geschrieben wird. Genau das - ist der Unterschied, den niemand bemerkt. */ + ist der Unterschied, den niemand bemerkt. + + UND DERSELBE DRITTE AUSGANG: Ohne diesen Zweig wuerde ein + Zeitraum hier still uebersprungen, waehrend die Vorschau + ihn zaehlt. */ const gelesen = tagAusZelle(z[zu.tag]); + const wz = (feld) => (zu[feld] === undefined ? null + : (feld === "dauer_min" ? dauerLesen(z[zu[feld]]) : zahlLesen(z[zu[feld]]))); + if (gelesen.zeitraum) { + const { von, bis } = gelesen.zeitraum; + if (bis > tagVor(0)) { uebersprungen++; continue; } + spanneSchreiben.run(creatorId, von, bis, tageImZeitraum(von, bis), + wz("diamanten"), wz("dauer_min"), wz("gueltige_tage"), + wz("zuschauer_avg"), wz("zuschauer_max"), wz("verweildauer_s"), + wz("schenker"), wz("follower_neu"), + jetzt(), req.person.id); + spannen++; + continue; + } const tag = gelesen.tag; if (!tag || tag > tagVor(0)) { uebersprungen++; continue; } const w = (feld) => (zu[feld] === undefined ? null : zahlLesen(z[zu[feld]])); @@ -1338,7 +1401,7 @@ leistungRouter.post("/workspace/api/leistung/:creatorId/import", gleicheHerkunft personId: req.person.id, rolle: req.person.rolle, ip: echteIp(req), detail: `Creator #${creatorId}: ${geschrieben} Tage`, }); - res.json({ ok: true, geschrieben, uebersprungen }); + res.json({ ok: true, geschrieben, zeitraeume: spannen, uebersprungen }); } catch (fehler) { console.error("[leistung] Import:", fehler?.message); res.status(503).json({ fehler: "nicht_verfuegbar" }); diff --git a/workspace/app.webmanifest b/workspace/app.webmanifest index e6c81009..fa1df43b 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=202609141622", + "src": "/assets/img/app-symbole/workspace-192.png?v=202609141634", "sizes": "192x192", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/workspace-512.png?v=202609141622", + "src": "/assets/img/app-symbole/workspace-512.png?v=202609141634", "sizes": "512x512", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609141622", + "src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609141634", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609141622", + "src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609141634", "sizes": "512x512", "type": "image/png", "purpose": "maskable" diff --git a/workspace/assets/js/leistung.js b/workspace/assets/js/leistung.js index 6b796674..dd69bc7e 100644 --- a/workspace/assets/js/leistung.js +++ b/workspace/assets/js/leistung.js @@ -626,7 +626,14 @@ $('datei').value = ''; importText = ''; await allesLaden(); - melde(`${r.geschrieben} Tage übernommen.`); + /* WAS GENAU ANGEKOMMEN IST -- Tage und Zeitraeume getrennt. + "2 Tage uebernommen" waere bei einer Backstage-Ausgabe ueber + zwei Wochen schlicht falsch; man wuerde sie in der Tagesliste + suchen und nicht finden. */ + const teile = []; + if (r.geschrieben) teile.push(`${r.geschrieben} Tag${r.geschrieben === 1 ? '' : 'e'}`); + if (r.zeitraeume) teile.push(`${r.zeitraeume} Zeitraum${r.zeitraeume === 1 ? '' : 'e'}`); + melde(teile.length ? `${teile.join(' und ')} übernommen.` : 'Nichts zu übernehmen.'); setTimeout(() => melde(''), 5000); } catch { /* umgeleitet */ } finally { knopf.disabled = false; } } diff --git a/workspace/aufgaben.html b/workspace/aufgaben.html index e8ca170c..ec1ac400 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 @@ - - - - - + + + + + diff --git a/workspace/automation.html b/workspace/automation.html index e075516b..eaec99c2 100644 --- a/workspace/automation.html +++ b/workspace/automation.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -147,10 +147,10 @@ - - - - - + + + + + diff --git a/workspace/bereich.html b/workspace/bereich.html index f7f54d44..9fdb9b20 100644 --- a/workspace/bereich.html +++ b/workspace/bereich.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -181,14 +181,14 @@ - - - - - - - - - + + + + + + + + + diff --git a/workspace/calls.html b/workspace/calls.html index 3aa54e2e..e7d17b57 100644 --- a/workspace/calls.html +++ b/workspace/calls.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -89,11 +89,11 @@ - - - - - - + + + + + + diff --git a/workspace/chat.html b/workspace/chat.html index 59c42952..afc9a568 100644 --- a/workspace/chat.html +++ b/workspace/chat.html @@ -12,26 +12,26 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - + + + + - - - + + + - + @@ -341,10 +341,10 @@ - - - - - + + + + + diff --git a/workspace/content.html b/workspace/content.html index 1ac802ed..9633b5c5 100644 --- a/workspace/content.html +++ b/workspace/content.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -179,12 +179,12 @@ - - - - - - - + + + + + + + diff --git a/workspace/crew-index.html b/workspace/crew-index.html index 04ca4592..0b9da1c0 100644 --- a/workspace/crew-index.html +++ b/workspace/crew-index.html @@ -36,15 +36,15 @@ - - - + + + - + @@ -319,6 +319,6 @@ - + diff --git a/workspace/crew.webmanifest b/workspace/crew.webmanifest index f6d3b088..abd628b0 100644 --- a/workspace/crew.webmanifest +++ b/workspace/crew.webmanifest @@ -13,25 +13,25 @@ "theme_color": "#06090f", "icons": [ { - "src": "/assets/img/app-symbole/crew-192.png?v=202609141622", + "src": "/assets/img/app-symbole/crew-192.png?v=202609141634", "sizes": "192x192", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/crew-512.png?v=202609141622", + "src": "/assets/img/app-symbole/crew-512.png?v=202609141634", "sizes": "512x512", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609141622", + "src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609141634", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609141622", + "src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609141634", "sizes": "512x512", "type": "image/png", "purpose": "maskable" diff --git a/workspace/dateien.html b/workspace/dateien.html index 2c6dd4de..4a8ea19c 100644 --- a/workspace/dateien.html +++ b/workspace/dateien.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -108,10 +108,10 @@ - - - - - + + + + + diff --git a/workspace/entwicklung.html b/workspace/entwicklung.html index 446f6ebd..412779e3 100644 --- a/workspace/entwicklung.html +++ b/workspace/entwicklung.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -94,9 +94,9 @@ - - - - + + + + diff --git a/workspace/index.html b/workspace/index.html index 642d93d0..1e14ba6e 100644 --- a/workspace/index.html +++ b/workspace/index.html @@ -30,9 +30,9 @@ - - - + + + @@ -401,6 +401,6 @@ - + diff --git a/workspace/kalender.html b/workspace/kalender.html index e7d56fb2..ed865034 100644 --- a/workspace/kalender.html +++ b/workspace/kalender.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -377,11 +377,11 @@ - - - - - - + + + + + + diff --git a/workspace/leistung.html b/workspace/leistung.html index 21ba97b2..60e6ed72 100644 --- a/workspace/leistung.html +++ b/workspace/leistung.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -412,10 +412,10 @@ - - - - - + + + + + diff --git a/workspace/personen.html b/workspace/personen.html index ed24295b..38dd17c5 100644 --- a/workspace/personen.html +++ b/workspace/personen.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -423,10 +423,10 @@ - - - - - + + + + + diff --git a/workspace/profil.html b/workspace/profil.html index 40848bda..ba9ae4fb 100644 --- a/workspace/profil.html +++ b/workspace/profil.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -214,11 +214,11 @@ - - - - - - + + + + + + diff --git a/workspace/rechte.html b/workspace/rechte.html index 5da042d5..35f4df79 100644 --- a/workspace/rechte.html +++ b/workspace/rechte.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -134,9 +134,9 @@ Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen, die seit dem 07.09. jede Seite danach absucht. --> - - - - + + + + diff --git a/workspace/report.html b/workspace/report.html index f4c7a57d..d74d021c 100644 --- a/workspace/report.html +++ b/workspace/report.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -106,11 +106,11 @@ - - - - - - + + + + + + diff --git a/workspace/scouting.html b/workspace/scouting.html index a46c1e7b..e018d18e 100644 --- a/workspace/scouting.html +++ b/workspace/scouting.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -173,10 +173,10 @@ - - - - - + + + + + diff --git a/workspace/start.html b/workspace/start.html index 3222f3af..3fd68827 100644 --- a/workspace/start.html +++ b/workspace/start.html @@ -12,21 +12,21 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - + + + + - - + + - + @@ -674,10 +674,10 @@

- - - - - + + + + + diff --git a/workspace/startcheck.html b/workspace/startcheck.html index 4463a28d..06989fd9 100644 --- a/workspace/startcheck.html +++ b/workspace/startcheck.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -85,11 +85,11 @@ - - - - - - + + + + + + diff --git a/workspace/steckbrief.html b/workspace/steckbrief.html index 5dddc5f2..415c750d 100644 --- a/workspace/steckbrief.html +++ b/workspace/steckbrief.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -126,10 +126,10 @@ - - - - - + + + + + diff --git a/workspace/talente.html b/workspace/talente.html index 5c3ba8ec..1ee13a84 100644 --- a/workspace/talente.html +++ b/workspace/talente.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -94,9 +94,9 @@ - - - - + + + + diff --git a/workspace/team.html b/workspace/team.html index 1ebc80d4..f7157bbe 100644 --- a/workspace/team.html +++ b/workspace/team.html @@ -7,20 +7,20 @@ - - - - - - - + + + + + + + - + @@ -110,10 +110,10 @@ - - - - - + + + + + diff --git a/workspace/teamlage.html b/workspace/teamlage.html index eeb66ad5..3da4ee20 100644 --- a/workspace/teamlage.html +++ b/workspace/teamlage.html @@ -7,20 +7,20 @@ - - - - - - - + + + + + + + - + - - - - + + + + diff --git a/workspace/treff-moderation.html b/workspace/treff-moderation.html index c9fbb10c..4e3bd721 100644 --- a/workspace/treff-moderation.html +++ b/workspace/treff-moderation.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -110,9 +110,9 @@ - - - - + + + + diff --git a/workspace/treff-regeln.html b/workspace/treff-regeln.html index b364348c..5cc49ad8 100644 --- a/workspace/treff-regeln.html +++ b/workspace/treff-regeln.html @@ -7,18 +7,18 @@ - - - - - - - + + + + + + + - + @@ -190,9 +190,9 @@ Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen, die seit dem 07.09. jede Seite danach absucht. --> - - - - + + + + diff --git a/workspace/uebersicht.html b/workspace/uebersicht.html index b5df79bd..8d7d7a4d 100644 --- a/workspace/uebersicht.html +++ b/workspace/uebersicht.html @@ -12,22 +12,22 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - + + + + - - - + + + - + @@ -149,11 +149,11 @@ - + - - - - + + + + diff --git a/workspace/wissen.html b/workspace/wissen.html index 8bf49ac3..1424883a 100644 --- a/workspace/wissen.html +++ b/workspace/wissen.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -190,10 +190,10 @@ - - - - - + + + + +