Endlich dauerhaft löschen, ohne all die Hindernisse

Ich würde mir sehr wünschen, eine Option zu haben, Beiträge/Themen tatsächlich zu löschen, ohne dabei bei jedem Schritt daran gehindert zu werden – das macht die Sache nur schwieriger.

Hier sollte es einfach ein Häkchen geben, mit dem man bestätigt, dass man sich der Konsequenzen bewusst ist und es trotzdem tun möchte. Man sollte mich nicht zwingen, in sehr langen Themen jeden einzelnen Beitrag manuell löschen zu müssen.

Oder so wie bei Reddit: Ich sollte in der Lage sein, einfach nur den ersten Beitrag wirklich zu löschen und ihn leer zu lassen.

Ich verstehe, dass viele sagen werden: „Aber die Antworten könnten für andere/die Nachwelt wichtig sein.“ Ich kann nicht genug betonen, wie wenig das uns interessiert – wir ist es egal, wenn alle Antworten gelöscht werden.

und man sollte nicht gezwungen sein, das für jeden einzelnen Beitrag zu tun.

3 „Gefällt mir“

Ich denke, das könnte gut als Enum-Einstellung auf Seitenebene umgesetzt werden, wobei das bestehende Verhalten als Standard beibehalten wird. Zum Beispiel könnte permanent_topic_deletion_mode das aktuelle Verhalten „Jeder Beitrag muss zunächst dauerhaft gelöscht werden“ sowie eine optionale Einstellung „Thema und alle Beiträge dauerhaft löschen“ anbieten, weiterhin hinter der bestehenden Bestätigung per Eingabe. So würde die aktuelle Sicherheitsrichtlinie für bestehende Seiten beibehalten, während Admins, die ausdrücklich eine Massenlöschung wünschen, diese explizit aktivieren können.

Ein kurzes Fortschrittsupdate, nachdem ich mich in den vorhandenen Code für die permanente Löschung vertieft habe:

Ich habe festgestellt, dass Discourse bereits das tatsächliche Verhalten für die Massenlöschung besitzt, das hier benötigt wird. Wenn der erste Beitrag dauerhaft gelöscht wird, kann PostDestroyer die verbleibenden Beiträge im Thema bereits rekursiv dauerhaft löschen. Die Einschränkung liegt hauptsächlich in den Berechtigungs- und Policy-Prüfungen, die derzeit verlangen, dass die anderen Beiträge zuerst dauerhaft gelöscht werden müssen.

Ich habe mich daher von der site-weiten Enumeration verabschiedet, die ich oben vorgeschlagen habe, und habe eine funktionierende Implementierung mit einem konservativeren Opt-in-Modell erstellt:

  • Die bestehende Einstellung can_permanently_delete bleibt der Hauptschalter
  • Es gibt ein zusätzliches, standardmäßig deaktiviertes, verborgenes Gate auf Operator-Ebene
  • Wenn beide aktiviert sind, kann sich jeder Administrator unter Einstellungen → Oberfläche individuell opt-in
  • Wenn sich ein Administrator opt-in, ändert sich das Verhalten für keinen anderen Administrator
  • Das Deaktivieren des verborgenen Gates stellt das bestehende Verhalten sofort global wieder her
  • Die bestehende Bestätigung für die permanente Löschung und andere Sicherheitsvorkehrungen bleiben in Kraft

Die Einstellung ist derzeit wie folgt beschriftet:

Erlaube, dass die permanente Löschung eines Themas alle Beiträge löscht

mit der Erklärung:

Lösche bei der permanenten Löschung eines Themas auch alle verbleibenden Beiträge, anstatt sie einzeln dauerhaft löschen zu müssen.

Ich habe Backend-Policy-/Sicherheitstests, Controller-Abdeckung zur Bestätigung, dass das Thema und alle verbleibenden Beiträge tatsächlich dauerhaft entfernt werden, Serializer-/API-Abdeckung und Frontend-Akzeptanztests für die Sichtbarkeit und das Speichern der Einstellung hinzugefügt. Diese bestehen.

Ich überlege auch, Änderungen an diesem Administrator-spezifischen Opt-in in den Staff Action Logs zu protokollieren, da die Aktivierung eines destruktiveren Löschmodus als zeitgestempeltes Audit-Ereignis sinnvoll erscheint.

Ich werde den GitHub-PR posten, sobald ich das und die finale Überprüfung abgeschlossen habe.

Ein letztes Update: Die Implementierung liegt jetzt als PR bereit und kann geprüft werden:

Das finale Design basiert auf dem oben beschriebenen Opt-in-Ansatz pro Admin, nicht auf dem site-weiten Enum, das ich ursprünglich vorgeschlagen hatte.

Beim letzten Durchgang wurden einige UX-Details hinzugefügt:

  • Die Admin-Einstellung wird unter Einstellungen → Oberfläche angezeigt, wenn die site-weiten Voraussetzungen dies zulassen.
  • Wenn ein Admin, der sich angemeldet hat, den ersten Beitrag/das erste Thema endgültig löscht, weist die Bestätigung für die unwiderrufliche Aktion nun ausdrücklich darauf hin, dass das Thema und alle Antworten endgültig gelöscht werden.
  • Wenn der Admin nicht angemeldet ist, bleiben das bestehende Verhalten und die Wortlaut unverändert.
  • Die bestehende Lösch-Sperre (Cooldown) für endgültige Löschungen durch denselben Admin wird weiterhin durchgesetzt.
  • Änderungen an den Einstellungen werden in den Staff Action Logs protokolliert.

Ich habe den vollständigen Opt-in-Weg manuell auf einem einmaligen Thema mit zwei Antworten getestet und anschließend überprüft, dass das Thema und alle seine Beiträge aus der Datenbank entfernt wurden.

Die wichtigsten GitHub-Test- und Lint-Prüfungen sind bestanden; die PR wartet nun auf eine Prüfung, wobei der Sicherheits-Scan zum Zeitpunkt der Erstellung noch in der Warteschlange stand.

1 „Gefällt mir“