Benutzer:PerfektesChaos/js/autoBackup

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Helferlein, um vorübergehend Zwischenkopien des bearbeiteten Wikitexts zu sichern.

Hast du je deinen wertvollen Edit verloren, weil dein Browser abstürzte? Dein fein ausgetüftelter und wohl formulierter Text, – über eine Stunde geschliffen – ist futsch, weil dein Laptop keinen Saft mehr hat? Weil das Netzwerk zusammenbrach, du im Funkloch steckst, oder die Wiki-Server down waren? Zieht dir manchmal deine Katze oder die entnervte Freundin (oder Mami) den Stecker raus?

Mit autoBackup wird der im Moment bearbeitete Wikitext auf der Festplatte zwischengespeichert. Das geschieht zu regelmäßigen Anlässen, und es wird ermöglicht, darauf nach unvorhergesehenen Ereignissen wieder zuzugreifen.

Einbindung[Bearbeiten | Quelltext bearbeiten]

  • Es sind die folgenden Zeilen in die persönliche common.js einzufügen:
mw.loader.load("//en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/autoBackup/r.js&action=raw&ctype=text/javascript&maxage=604800&*",
               "text/javascript");
  • Das Skript funktioniert auch mit Projekten außerhalb der WMF, wenn MediaWiki 1.18 oder neuer benutzt wird.
  • Nur für angemeldete Benutzer sinnvoll, da über den Benutzernamen (nicht IP) mehrere Benutzer im selben Projekt im selben Browser unterschieden werden.
  • Wer fliegelflagel@Schnark benutzt, kann das Skript mit einem einfachen Häkchen aktivieren und deaktivieren.

Anpassung[Bearbeiten | Quelltext bearbeiten]

Wer durch seinen Browser im Speicherplatz begrenzt wird oder einen besonderen Arbeitsstil pflegt, kann das Gadget und die inneren Abläufe anpassen.

In die common.js vor mw.loader.load die folgenden Zeilen einfügen:

if ( typeof mw.libs.autoBackup !== "object" ) {
   mw.libs.autoBackup  =  {  opt: { }  };
}
mw.libs.autoBackup.opt.key1  =  wert1;
mw.libs.autoBackup.opt.key2  =  wert2;
Key Standard Typ Bedeutung
.opt.maxAge 72 number Anzahl der vollen Stunden, über die das Gedächtnis reichen soll.
Mindestens 1 Stunde.
.opt.maxHist 5 number Anzahl der Einträge pro Seitenversion, die behalten werden sollen.
Mindestens 1 Schnappschuss, aber wenigstens 2 sind empfehlenswert.
.opt.maxPages 10 number Anzahl der Seiten, die gleichzeitig verwaltet werden sollen.
Mindestens 1 Seite wird benötigt.
.opt.maxRev 3 number Anzahl der Seitenversionen, die behalten werden sollen.
Mindestens 1 Version, aber wenigstens 2 sind empfehlenswert.
.opt.mid 5 number Anzahl der Minuten für zeitabhängige Schnappschüsse.
0 oder false zum Abschalten zeitgesteuerter Kopien.
.opt.portlet keiner beliebig Erzeuge Portlet-Link, das einen Schnappschuss auslöst, wenn true.
.folder() (API) Liste alle Seiten im Speicher auf.
.fresh() (API) Löse einen Schnappschuss aus.

Beispiel:

if ( typeof mw.libs.autoBackup !== "object" ) {
   mw.libs.autoBackup  =  {  opt: { }  };
}
mw.libs.autoBackup.opt.mid  =  false;

Beachte: Die Benutzerkonfiguration könnte ignoriert werden, falls sie nicht im Standard-Benutzerskript erfolgt, weil alle anderen Skripte erst später geladen werden und autoBackup dann nichts davon weiß und auch nicht darauf warten kann.

Gedächtnis: localStorage und sessionStorage[Bearbeiten | Quelltext bearbeiten]

Die Technik der localStorage (auch “super cookie” oder Web Storage) wurde vor einigen Jahren eingeführt und sollte in den meisten gängigen Browsern verfügbar sein. Dies wird von autoBackup zum Speichern der Daten benutzt. Während das Pendant sessionStorage nur für eine Sitzung gespeichert wird, bleibt localStorage persistent.

Die Größe der localStorage ist begrenzt. Man sollte nicht mehr als 5 MB pro Domain erwarten (individuelle Konfiguration möglich; Firefox: dom.storage.default_quotaOpera: “Domain Quota For localStorage”). Je nach der durchschnittlichen Größe der bearbeiteten Seiten oder Abschnitte, Anzahl gespeicherter Versionen und gleichzeitig als Multitasking bearbeiteten Seiten könnte die Grenze erreicht werden. Durch Anpassung der oben dargestellten Konfigurationsdaten lässt sich dies so an den eigenen Arbeitsstil anpassen, dass die Größe ausreicht.

Beachte, dass localStorage als Rettung vorgesehen ist, um den Verlust von Bearbeitungen zu vermeiden, nicht als normaler Weg zum Speichern von Texten. Der Speicherort von localStorage auf der Festplatte lässt sich herausfinden, aber das kann eine proprietäre Datenbank sein, die nicht zur regelmäßigen Speicherung in eigenen Dateien vorgesehen ist.

Während localStorage zwischen den Browser-Sitzungen erhalten bleibt, wird ein kleiner sessionStorage zur Beschleunigung verwendet. Die Seiten-Nummern, zu denen Sicherungskopien anhängig sind, werden für die Dauer einer Sitzung abgelegt und ermöglichen eine schnelle Antwort, wenn eine neue Seite geöffnet wird, ob ein Backup verfügbar ist. Diese Information im sessionStorage ist redundant: Er wird vernichtet, wenn die Sitzung beendet ist, und mit Eröffnung einer Sitzung frisch aufgebaut.

Einige Benutzer schalten aus Sicherheits- oder Datenschutzgründen die Benutzung von localStorage ab. Meist ist eine whitelist zur Konfiguration verfügbar, mittels der einer Wiki-Domain erlaubt werden kann, sich dieses Feature nutzbar zu machen.

Prozeduren[Bearbeiten | Quelltext bearbeiten]

Jedes Mal, wenn eine Wiki-Seite bearbeitet wird, werden Schnappschüsse des Wikitextes gemacht und abgespeichert. Das kann ausgelöst werden durch:

  • Anklicken vonVorschau (sofern möglich)
  • Anklicken vonÄnderungen (sofern möglich)
  • Bearbeitungskommentar wird aufgesucht (Fokus; sofern möglich)
  • Anklicken vonSeite speichern (sofern möglich) – Der Wikiserver kann down sein; Netzwerkfehler im allerletzten Moment
  • Vorschau- oder Diffpage wird aufgebaut
  • Zeitgesteuert planmäßig
  • Manuell über Portlet
  • API-Aufruf.

Aufeinanderfolgende Textversionen mit gleichem Inhalt werden nicht erneut gespeichert; Leerzeichen und Leerzeilen am Ende der Seite werden ignoriert.

Es wird kein Unterschied gemacht zwischen der Bearbeitung einzelner Abschnitte und des gesamten Textes der Seite.

Wiederherstellung[Bearbeiten | Quelltext bearbeiten]

Der einfachste Weg ist, eine Seite mit abgebrochener Bearbeitung schlicht erneut aufzurufen, nachdem das System wieder bereit ist. Du wirst über das Vorliegen von Sicherungskopien informiert und erhältst im Kopfbereich der Seite eine Benachrichtigung mit Button.

Wenn du diesen * Button anklickst, erhältst du die gespeicherten Schnappschüsse dieser Seite zur Auswahl. Es können mehrere Versionen dieser Seite verfügbar sein. Für jede Version sind mehrere Schnappschüsse zu erwarten. Bei einem Störungsfall solltest du die jüngste auswählen. Gleichwohl kann auch der Text einer älteren Variante benutzt werden. Falls irrtümlich während der Bearbeitung eine wichtige ungespeicherte Textpassage verlorenging, kann autoBackup auch hier bei der Rückgewinnung helfen.

Die Schnappschüsse werden als nicht bearbeitbare Textfelder dargestellt. Du kannst dir den Inhalt ansehen und mit den üblichen Methoden von Copy&Paste transportieren. Es ist empfehlenswert, die gleiche Seite ein zweites Mal in einem anderen Browser-Fenster/Tab zu öffen, da die Bearbeitung bereits wieder die Abfolge der Schnappschüsse beeinflusst und aus der localStorage herausschiebt.

Wenn jemand anders zwischenzeitlich die Seite geändert hatte, während dein Computer nicht einsatzfähig war, muss der Bearbeitungskonflikt nach den üblichen Verfahren vorsichtig gelöst werden und dein Text in die aktuelle Version eingearbeitet werden.

Vertraue nicht darauf, dass unter allen Umständen Sicherungskopien verfügbar sind.

Aufräumen[Bearbeiten | Quelltext bearbeiten]

Jedes Mal, wenn eine Seite mit vorhandenen Schnappschüssen dargestellt wird, wird der Server abgefragt, ob die Seite inzwischen erfolgreich gespeichert wurde. Wenn dabei erkannt wird, dass du Autor einer späteren Version bist, wird die Seite automatisch aus dem Speicher entfernt. Damit wird sichergestellt, dass im regulären Arbeitsablauf die Schnappschüsse nach erfolgreichem Speichern gelöscht werden und localStorage nicht überquillt. Bearbeitungen anderer Benutzer zählen nicht.

Du kannst überflüssige Seitenversionen auch manuell löschen, indem du den X Button zur Version anklickst, wenn du eine aktive Sicherungsgeschichte aufsuchst.

Weil das Überschwemmen der begrenzten localStorage mit vielen großen Zwischenversionen das Abspeichern der aktuellen Bearbeitung verhindern würde, werden die ältesten und überzähligen Versionen durch den Algorithmus entfernt. Nach drei Tagen ist zu erwarten, dass dein Beitrag überholt ist; du solltest deinen Rechner inzwischen wieder zum Laufen gebracht haben.

Unerledigtes[Bearbeiten | Quelltext bearbeiten]

Falls es aus irgendeinem Grund aus der jüngsten Zeit Schnappschüsse zur aktuellen Seite gibt und du die Seitenansicht der Seite aufrufst, wirst du nahe der Seitenüberschrift informiert.

Du kannst bewusst eine Bearbeitung abgebrochen haben; das führt zur gleichen Situation wie ein Absturz.

Manuelle Überwachung[Bearbeiten | Quelltext bearbeiten]

Wenn du einen Überblick über die aktuelle Sammlung an Schnappschüssen bekommen möchtest, öffne einfach die gleiche Seite noch einmal in einem anderen Tab während du sie bearbeitest. Weil dadurch eine ungesicherte Bearbeitung anhängig ist, wirst du entsprechend informiert. Du kannst die Schnappschüsse und Versionen (oldid) der aktuellen Seite ansehen, und weitere Seiten mit Sicherungskopien in anderen Browser-Tabs öffnen, die durch die Nummern curid identifiziert sind und als Kommentar den letzten bekannten Seitentitel zeigen.

Datenstruktur[Bearbeiten | Quelltext bearbeiten]

Nach einigen Bearbeitungen und Abbrüchen ergibt sich möglicherweise folgende Speicherstruktur:

  • curid=2007 Seite A
    • Version oldid=100009
      1. Schnappschuss-2
      2. Schnappschuss-1
    • Version oldid=100003
      1. Schnappschuss-26
      2. Schnappschuss-25
      3. Schnappschuss-24
      4. Schnappschuss-23
      5. Schnappschuss-22
  • curid=3456 Seite B
    • Version oldid=100001
      1. Schnappschuss-8
      2. Schnappschuss-7
      3. Schnappschuss-6
      4. Schnappschuss-5
      5. Schnappschuss-4

Die Anzahl der Schnappschüsse ist begrenzt auf die jüngsten 5 Gelegenheiten. Bis zu 10 Seiten sind standardmäßig möglich.

Fehler[Bearbeiten | Quelltext bearbeiten]

Wenn das Abspeichern einer Sicherungskopie fehlschlägt, wirst du auf der Seite alarmiert. Wenn localStorage nicht erlaubt ist, kannst du die Konfiguration des Browsers anpassen. Wenn die Maximalgröße erreicht wird, kann manuelles Aufräumen helfen. Vielleicht hattest du gestern eine große Seite bearbeitet mit mehreren Versionen in vielen Zwischenschritten.

Mehrfache Benutzer, Projekte und Skripte[Bearbeiten | Quelltext bearbeiten]

Für jedes Projekt wird ein Eintrag in localStorage benutzt. Wenn du mehrere Accounts im selben Browserprofil benutzt, werden sie nicht unterschieden.

Es ist anzunehmen, dass du die einzige Person bist, die dein Browserprofil verwendet; deshalb sind keine Probleme hinsichtlich Sicherheit und Privatsphäre zu erwarten. Wenn du dein Browserprofil mit jemand anders teilst, werden auch viele andere Informationen enthüllt. Wikitext-Bearbeitungen in einem öffentlichen Wiki sind dafür vorgesehen, weltweit sichtbar zu werden.

Es gibt nur eine Größenbegrenzung für localStorage pro Domain – etwa de.wikipedia.org – und Browserprofil. Wenn du mehrere Helferlein benutzt, die localStorage einsetzen, kann das den verfügbaren Speicherplatz beeinflussen.

Browserfenster und Tabs[Bearbeiten | Quelltext bearbeiten]

Wenn du irrtümlich ein Browserfenster oder einen Tab schließt, werden sie meist nur versteckt (unsichtbar gemacht). Ihr Inhalt bleibt mitsamt aller flüchtiger Daten vollständig erhalten, so lange der Browser benutzt wird oder es nicht zu viele werden. Die meisten modernen Browser bieten einen Weg an, eine Anzahl geschlossener Fenster/Tabs wieder zu öffnen, so dass du direkt fortsetzen kannst. Sogar frühere Stadien der Bearbeitung lassen sich vorsichtig wiederfinden; der aktuelle Text sollte aber sicherheitshalber in einem externen Editor abgelegt werden.

Für und Wider[Bearbeiten | Quelltext bearbeiten]

  • Jedes Skript, das du beim Aufbau einer Seite hinzulädst, verlängert den Zeitbedarf ein wenig. Der Austausch vieler großer Schnappschüsse kann einen Moment dauern.
  • Wenn du dich zu sehr auf automatische Sicherungskopien verlässt, könntest du allzu sorglos werden.
  • Mein System stürzt nie ab, und Wiki-Server sind immer verfügbar und immer mit mir verbunden.
  • Wenn du umfassende Bearbeitungen vornimmst und die Versionsgeschichte dadurch schonst, dass du erst zum Schluss abspeicherst, kann die Arbeit einer ganzen Stunde verloren gehen.

Kompatibilität[Bearbeiten | Quelltext bearbeiten]

Das Skript ist abgestimmt auf Techniken von

  • LivePreview
  • WikEd

Die meisten aktuellen Browser unterstützen localStorage.

Code[Bearbeiten | Quelltext bearbeiten]

Die Stammseite ist en:User:PerfektesChaos/js/autoBackup mit:

Quellcode
ResourceLoader
  • ext.gadget.autoBackup für mw:Extension:Gadgets
  • Dependencies: user, user.options, mediawiki.api, mediawiki.user, mediawiki.util
Namensräume
  • (alle)
  • -1 (Gadgets)
Cookies
  • AutoBackupPerfectChaos Benutzername (localStorage)
  • AutoBackupPerfectChaos Benutzername (sessionStorage)
mw.libs autoBackup