Kombination aus Skripten, um das Arbeiten mit Wikitexten in lokalen Dateien (auf der Festplatte) im Kontext eines Wiki-Projektes zu ermöglichen.

Dieses Werkzeug wurde 2012 entwickelt und entsprach damliger Browser-Technologie. Aktuelle Browser unterstützen jedoch möglichrweise wesentliche Funktionalitätennicht mehr.

Ein noch nicht publizierter Seitentext soll entwickelt werden können, ohne dass die ersten Entwicklungsphasen im Projekt und weltweit verfolgt werden können.

  • Erst wenn der unfertige Text ausgereift ist, soll die Seite veröffentlicht werden.
    • Die frühen Versionen sollen nur auf der Festplatte vorliegen.
    • Das gilt natürlich nicht nur für völlig neue Texte, sondern trifft auch auf die zunächst private Überarbeitung eines Ausgangstextes zu.
  • Die Vorschau des Seitentextes soll bereits die gleiche Funktionalität erhalten wie die fertige Seite, also insbesondere Vorlagen und Bilder richtig darstellen; Links sollen funktionstüchtig und ggf. als redlinks dargestellt werden.
  • Die vertrauten Editierwerkzeuge, also vorhandenen Hilfsmittel für Syntaxelemente, sollen verwendbar sein.
  • Die Dateien sollen über das normale Dateisystem des Rechners zu verwalten sein, etwa als .TXT in UCS, und können kopiert und als einfacher Text auch mit anderen Hilfsmitteln editiert werden.

Grundsätzlich ist das zwar gelegentlich auf einer Spielwiese und mit viel copy&paste möglich, aber auf Dauer kein Arbeitsstil, und birgt immer das Risiko des Textverlustes durch irrtümliche Mausklicks.

Sicherheitshinweise

Bearbeiten

Jede Interaktion, die eine Speicherung von Daten aus der Webseite in eine lokale Datei auf der Festplatte ermöglicht, durchlöchert das Sicherheitssystem des Browsers.

  • Die Verwendung erfolgt grundsätzlich nur auf eigene Gefahr des Benutzers.
  • In der Kombination aus Skript und Browser-Erweiterung wird das maximal Mögliche getan, um keine Eintrittspforten und Angriffsmöglichkeiten zu bieten.

Sicherheitskonzept

Bearbeiten

Die Software ist aufgeteilt in

  1. ein normales Skript, das in die HTML-Seite des Wiki-Servers eingebettet ist, ohne Zugriff auf den Browser und Rechner des Benutzers
  2. eine Browser-Erweiterung („Add-On“ usw.), die etwa die gleichen Möglichkeiten hat wie jedes Programm auf dem Rechner, zumindest auch auf lokale Dateien zugreifen kann.

Zwischen diesen beiden Komponenten ist eine wirksame Trennung erforderlich. Es darf der Webseite in der Wiki-Welt nicht möglich sein, die Browser-Erweiterung außerhalb der vorgesehenen Zwecke zu steuern.

Das wird durch folgende Maßnahmen erreicht:

  • Die Seite aus dem Internet erhält keinerlei Zugriff auf das Add-On.
  • Sie kann nur über Ereignisse („Events“) informieren („ein Knopf wurde gedrückt“) und diese Ereignisse blind versenden; sie weiß aber nicht, wer und wo auf diese Ereignisse lauscht.
  • Die JavaScript-Informationen („global objects“) beider Komponenten haben keinen Kontakt miteinander; gegenseitig werden keine Funktionen aufgerufen und es werden keine Daten ausgelesen.
  • Bei der Informationsübermittlung werden zusammen mit Ereignissen nur einfache Zeichenketten übertragen, etwa Kennwörter für Aktivitäten. Ausgeführt wird dies nicht.
  • Die Browser-Erweiterung, die „privilegiert“ ist, schreibt nur Zeichenketten in das Wiki-Dokument und sendet gelegentlich Ereignisse.
  • Bei jedem Ereignis, das von der Browser-Erweiterung behandelt wird, wird überprüft, ob die URL der absendenden Seite den Erwartungen entspricht. Nur wenn es sich um eine spezielle Benutzer-Unterseite handelt und diese registriert worden war, wird der Zugriff auf Dateien freigegeben.

Dies wird auch bei developer.mozilla.org empfohlen.

  • Nur Dateien in einem hierfür freigegebenen Verzeichnis oder dessen Unterverzeichnisse können ohne Interaktion mit dem Benutzer gelesen (und geschrieben) werden. Dateinamen und Pfade werden nicht aus der Internet-Seite entgegengenommen, sondern müssen vom Benutzer interaktiv ausgewählt werden. Sie werden nicht im Internet gespeichert.

Installation

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/localEdit/r.js&action=raw&bcache=1&maxage=604800&ctype=text/javascript",
               "text/javascript");

Damit wird das Skript auf Seiten des Internets bereitgestellt. Es passt zu allen Browsern.

Anschließend ist die Erweiterung für den Browser zu installieren.

  • Firefox
  • Google Chrome (möglich, aber bislang nicht implementiert)

Konfiguration

Bearbeiten

Es gibt zwei Bereiche der Konfiguration:

  1. Für alle Arbeitsplätze und alle Browser; weltweit sichtbar.
  2. Für jeden Browser und Arbeitsplatz spezifisch; unsichtbar.

sichtbar

Bearbeiten

In der common.js sind die folgenden (weltweit sichtbaren) Anpassungen möglich, falls sie einmal erforderlich wären:

  • .opt.scan
    Auswahlmuster für Text-Dateien
    • Standard: *.txt; *.text; *.wiki
  • .opt.suffix
    Vervollständigte Erweiterung, wenn für neue Dateien nicht angegeben.
    • Standard: txt
    • Keine Erweiterung anhängen: "*"

Vor dem mw.loader.load wären die folgenden Zeilen anzugeben, und die gewünschten Optionen werden wirksam, wie beispielsweise:

if ( typeof mw.libs.localEdit !== "object" ) {
   mw.libs.localEdit  =  {  opt: { }  };
}
mw.libs.localEdit.opt.scan    =  "*.txt; *.wikitex";
mw.libs.localEdit.opt.suffix  =  "wikitex";

Diese Einstellungen gelten zentral für alle Arbeitsplätze und alle Browser.

Im entsprechenden Konfigurationsdialog nach der Installation sind drei Angaben möglich. Die erste ist eine Pflichtangabe.

  1. URL zur eigenen Benutzerseite
    • Es ist mit copy&paste die vollständige URL aus dem Adressfeld des Browsers zu übernehmen. Umlaute und Sonderzeichen sind oft anders und hübscher sichtbar, als sie tatsächlich in der URL vorhanden sind.
    • Auch das Protokoll (https oder http) muss angegeben sein. Sollen beide gelegentlich benutzt werden, sind zwei URL zu registrieren. Es empfiehlt sich, ab jetzt mit verschlüsselter Verbindung zu arbeiten.
    • Beliebig viele URL können angegeben werden.
    • Außerhalb der von diesen URL ausgehenden speziellen Benutzerseiten wird der Zugriff auf lokale Dateien verweigert.
  2. Es kann mit Start des Browsers das Add-On dienstbereit geschaltet werden.
    • Das ist die „werksseitige“ Voreinstellung, damit die ersten Schritte erleichtert werden. Sobald man mit der Funktionsweise vertraut ist und wenn das Werkzeug nicht laufend benutzt wird, sollte diese Einstellung deaktiviert werden und der Modus explizit zugeschaltet werden, wenn er tatsächlich benötigt wird.
  3. Das Basisverzeichnis für alle Textdateien kann an dieser Stelle ausgewählt werden.
    • Das kann aber auch später und an anderer Stelle jederzeit geschehen.

Bedienung

Bearbeiten

Zum produktiven Arbeiten ist die eigene Benutzer-Unterseite /LocalEdit aufzurufen.

  • Diese Unterseite muss nie existieren; es ist sogar besser, wenn sie nie wirklich angelegt wird.
  • Sie kann auch beliebigen Text enthalten; dieser wird ignoriert.

Die Seite /LocalEdit zeigt bei aktivem Skript eine Tabelle mit dem Status.

  • Es wird gezeigt, ob der Browser geeignet ist; falls ja, ob das Add-On eingeschaltet ist.

Wenn das Add-On noch nicht eingeschaltet war, kann das jetzt geschehen. Anschließend Seite neu laden.

Bei aktivem Add-On kann ein Basisverzeichnis für alle Textdateien gewählt werden.

  • Zusätzlich kann für das aktuelle Wiki-Projekt (und Benutzernamen) ein Unterverzeichnis bestimmt werden.
    Das Unterverzeichnis ist dafür vorgesehen, gleichzeitig in mehreren Sprachen oder Projektarten arbeiten zu können und die Aktivitäten zu strukturieren. Genauso kann darin auch für jeden Benutzernamen ein eigenes Unterverzeichnis festgelegt werden, falls man mehrere Identitäten hat oder mehrere Personen im Haushalt Wiki-Autoren sind.

Die sichtbaren Angaben zur Dateiauswahl werden wiedergespiegelt.

Darunter steht ein Link zum Bearbeitungsmodus.

Bearbeitungsmodus

Bearbeiten

Im Bearbeitungsmodus steht ein normales Bearbeitungsfeld mit allen Werkzeugen zur Verfügung. Allerdings ist von den gewohnten Knöpfen nur Vorschau vorhanden. Weil die Seite kein Pendant auf dem Wiki-Server hat, ist weder eine Diffpage möglich, noch soll sie dort gespeichert werden.

Dazu gibt es die in einem Editor üblichen Knöpfe

  • Datei öffnen
  • Datei speichern
  • Datei speichern unter

und eine Option „ANSI“ beim Öffnen; siehe Zeichensätze.

  • Mit Öffnen kann eine vorhandene Datei ausgewählt werden, es kann auch der Dateiname für eine erst neu zu erstellende Datei festgelegt werden.
  • Es kann aber auch ohne einen Dateinamen sofort Text in das Bearbeitungsfeld geschrieben werden und der Dateiname erst beim Abspeichern festgelegt werden.
  • Sobald ein Dateiname festgelegt wurde, ist Speichern möglich.
    Der aktuelle Dateiname wird im Seitenkopf angezeigt.
  • Mit Speichern als kann ein neuer Dateiname bestimmt werden. Er gilt auch für die folgenden Abspeicherungen.
  • Im weiteren Verlauf ist Datei öffnen nur möglich, wenn entweder der Inhalt des Bearbeitungsfeldes vorher gespeichert worden war oder das Bearbeitungsfeld völlig gelöscht wurde.

Schließlich gibt es eine Funktionalität

  • Seitentext importieren

Anschließend kann man den Namen einer Seite angeben (oder alternativ eine Revisions-ID), deren Text in das Bearbeitungsfeld übernommen wird; der Seitenname wird anschließend auch vorgeschlagen, wenn als Datei gespeichert werden soll. Das Bearbeitungsfeld muss geleert worden sein, bevor ein Text importiert werden kann.

Reihenfolge

Bearbeiten

Die Abfolge von Aktivieren und Laden der Seite und Laden der Dateien sollte eingehalten werden; durch Zurück-Buttons, Bookmarks usw. werden möglicherweise nicht alle Parameter richtig gesetzt, was zwar nicht zum Datenverlust führt, jedoch zu blockierten Knöpfen oder falschen Dateinamen. Durch Neuladen der Seiten lässt sich die Initialisierung nachholen.

Wenn nicht benötigt

Bearbeiten

Wenn das Hilfsmittel nicht mehr benötigt wird, kann es einfach abgeschaltet werden, indem auf den Anwendungs-Icon in der Browser-Werkzeugleiste geklickt wird. Es reagiert dann sofort nur noch auf einen erneuten Klick auf den Icon. Die Unterseite /LocalEdit muss nach Reaktivierung möglicherweise neu geladen werden.

Wenn für längere Zeit keine Verwendung geplant ist, kann das Add-On auch auf der Konfigurationsseite für Add-Ons deaktiviert werden. Damit wird es nach Start des Browsers nicht mehr aktiv, ist aber nicht deinstalliert. Es kann einfach wieder aktiviert werden.

Zeichensätze

Bearbeiten

Standardmäßig wird immer in UTF-8 eingelesen und gespeichert. Dies ist die Kodierung, die auch auf dem Wiki-Server vorliegt und in allen Browsern für das Eingabefeld erwartet wird. Sie ermöglicht beliebige Zeichen und kompakte Abspeicherung.

Wenn beim ersten Mal eine bereits vorhandene Datei in für rein westeuropäische Zeichen geeigneter ANSI-Kodierung eingebracht werden soll, gibt es die Möglichkeit, ausnahmsweise dort ein Häkchen zu setzen. Andernfalls würde die Darstellung beim ersten „ä“ enden. Geschrieben wird diese Datei wie alle anderen dann in UTF-8.

Zwischenzeitliche Bearbeitung außerhalb

Bearbeiten

Soll die Datei außerhalb des Browsers zwischendurch bearbeitet werden, muss sie ggf. geeignet importiert (und auch wieder exportiert) werden.

  • Microsoft Windows notepad beherrscht dies unter „Speichern als“.
  • Unter Linux/Unix gibt es unzählbar viele Konvertierer für diesen Zweck.
  • Emacs beherrscht dies automatisch; insbesondere wenn für die Dauer der Entwicklung der folgende Kommentar am Ende angebracht wird:
<-- Local Variables:
    coding: mule-utf-8-unix
    End:
    -->

Kompatibilität

Bearbeiten

Das Skript ist abgestimmt auf Techniken von:

  • LivePreview
  • WikEd

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

Quellcode
ResourceLoader
Namensräume 2
mw.libs localEdit
Add-On ID PerfektesChaos.localEdit@user.wikimedia.org