Dateifassungen: die alte Fassung sieht man ihr an
Stufe 9 aus dem Plan: "Dateiversionen statt Ueberschreiben".
GEMESSEN, BEVOR ETWAS GEBAUT WURDE -- DER PLAN LAG DANEBEN
Ueberschrieben wurde nie: `name_datei` ist eindeutig und zufaellig,
jedes Hochladen legt eine neue Zeile an. Der wirkliche Mangel ist ein
anderer, und er ist gefaehrlicher als Ueberschreiben:
Zwei Dateien gleichen Namens standen BEZIEHUNGSLOS nebeneinander. Die
alte kann "freigegeben" sein, die neue "entwurf" -- und wer die Liste
ansieht, laedt die freigegebene herunter. Also die falsche. Kein
Fehler, keine Meldung, nur die alte Fassung in der Hand.
WAS JETZT PASSIERT
Beim Hochladen erkennt der Server die Vorgaengerin selbst: gleicher
Originalname, gleicher Creator-Bezug, und sie darf nicht schon ersetzt
sein. An der Datei steht danach "Fassung 2"; an der alten steht "nicht
mehr aktuell".
AUTOMATISCH, NICHT GEFRAGT -- eine Abwaegung: Wer die Verknuepfung
vergisst, hat zwei Dateien ohne Zusammenhang, und irgendwann laedt
jemand die alte herunter. Wer sie faelschlich bekommt, SIEHT das
sofort und loest sie mit einem Klick. Der stille Schaden ist groesser
als der sichtbare.
BEI ZWEIFEL WIRD NICHT GERATEN. Gibt es zwei unersetzte Dateien
gleichen Namens, bleibt die neue eigenstaendig.
LOESEN GEHT NUR AN DER AKTUELLEN FASSUNG. Wer eine ueberholte loest,
macht daraus eine zweite aktuelle -- und hat das Problem zurueck.
DIE NUMMER IST GERECHNET, NICHT GESPEICHERT. Eine Spalte "version"
muesste beim Loeschen einer mittleren Fassung nachgezogen werden, und
genau das vergisst man. Faellt die erste weg, zaehlt die zweite
wieder als erste -- richtig, denn mehr weiss das System dann nicht.
EIN RING IN DEN DATEN HAELT DIE SEITE NICHT AN. Kann ueber die Wege
hier nicht entstehen, aber ein Fehler anderswo koennte ihn erzeugen,
und ein Stillstand ist schlimmer als ein Fehler. Gemessen: 1 ms.
ZWEI SITZUNGEN IM SELBEN VERZEICHNIS
Der vorige Commit (d2210fd, aus einer anderen Sitzung) hat mit
`git add -A` meine damals noch unfertige Spalte `dateien.ersetzt_id`
mitgenommen -- sie steht dort unter einer Ueberschrift, die nichts
damit zu tun hat. Niemand hat etwas falsch gemacht; die Sitzungen
konnten voneinander nicht wissen. Aufgefallen ist es, weil der
Versionsstempel ploetzlich 347 statt 372 Verweise meldete und ich dem
Rueckgang nachgegangen bin.
PRUEFUNGEN: pruef-fassungen neu mit 37, davon 6 im Browser.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -176,3 +176,31 @@
|
||||
.marke-person--leer { color: var(--text-still); font-weight: 400; font-style: italic; }
|
||||
|
||||
@media (prefers-reduced-motion: reduce) { .wahl__knopf { transition: none; } }
|
||||
|
||||
/* =====================================================================
|
||||
FASSUNGEN (15.09.2026)
|
||||
|
||||
"Fassung 2" ist eine Nummer und bleibt ruhig. "nicht mehr aktuell"
|
||||
ist eine Warnung und darf auffallen -- aber nicht schreien: Sie steht
|
||||
an einer Datei, die niemand falsch gemacht hat, sie ist nur alt.
|
||||
===================================================================== */
|
||||
|
||||
.fassung { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 9px; }
|
||||
.fassung__nummer {
|
||||
font-size: .78rem; font-weight: 640; color: var(--text-still);
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.fassung__alt {
|
||||
font-size: .78rem; font-weight: 640;
|
||||
padding: 2px 9px; border-radius: 999px;
|
||||
color: #d8a76a;
|
||||
border: 1px solid color-mix(in srgb, #cc9451 45%, transparent);
|
||||
}
|
||||
.fassung__loesen {
|
||||
font: inherit; font-size: .76rem;
|
||||
padding: 2px 9px; border-radius: 999px; cursor: pointer;
|
||||
color: var(--text-still);
|
||||
background: none;
|
||||
border: 1px solid var(--rand);
|
||||
}
|
||||
.fassung__loesen:hover { color: var(--text); border-color: var(--rand-hell); }
|
||||
|
||||
@@ -238,6 +238,46 @@
|
||||
if (d.notiz) zeile2.append(el('span', null, '· ' + d.notiz));
|
||||
k.append(zeile2);
|
||||
|
||||
/* ---- WELCHE FASSUNG IST DAS? (15.09.2026, Stufe 9) --------------
|
||||
|
||||
ZWEI VERSCHIEDENE AUSSAGEN, und sie duerfen nicht gleich aussehen:
|
||||
|
||||
"Fassung 2" eine Nummer, ruhig
|
||||
"nicht mehr aktuell" eine WARNUNG -- wer DIESE Datei
|
||||
herunterlaedt, bekommt die falsche
|
||||
|
||||
Die zweite ist der eigentliche Grund fuer das Ganze: Eine alte
|
||||
Fassung kann "freigegeben" sein, waehrend die neue noch
|
||||
"entwurf" ist. Ohne den Hinweis laedt man die freigegebene -- und
|
||||
merkt nichts davon. */
|
||||
if (d.fassung > 1 || d.ersetzt_durch) {
|
||||
const f = el('div', 'fassung');
|
||||
if (d.fassung > 1) f.append(el('span', 'fassung__nummer', 'Fassung ' + d.fassung));
|
||||
if (d.ersetzt_durch) {
|
||||
const w = el('span', 'fassung__alt', 'nicht mehr aktuell');
|
||||
w.title = 'Es gibt eine neuere Fassung dieser Datei.';
|
||||
f.append(w);
|
||||
}
|
||||
/* Nur an der AKTUELLEN Fassung: Wer eine ueberholte loest, macht
|
||||
daraus eine zweite aktuelle -- und hat das Problem zurueck,
|
||||
das die Verknuepfung geloest hat. */
|
||||
if (d.fassung > 1 && !d.ersetzt_durch) {
|
||||
const k2 = el('button', 'fassung__loesen', 'eigene Datei');
|
||||
k2.type = 'button';
|
||||
k2.title = 'Das ist keine neue Fassung, sondern eine eigenständige Datei.';
|
||||
k2.addEventListener('click', async () => {
|
||||
k2.disabled = true;
|
||||
try {
|
||||
const a = await hole('/workspace/api/dateien/' + d.id + '/fassung',
|
||||
{ method: 'DELETE' });
|
||||
if (a.ok) await laden(); else melde('Ging nicht.');
|
||||
} finally { k2.disabled = false; }
|
||||
});
|
||||
f.append(k2);
|
||||
}
|
||||
k.append(f);
|
||||
}
|
||||
|
||||
/* Wer sie sehen darf -- sichtbar fuer alle, damit niemand raten
|
||||
muss, wer eine Datei schon hat. */
|
||||
const frei = el('div', 'datei__freigaben');
|
||||
|
||||
Reference in New Issue
Block a user