SelfHTML als Offline Wiki, JSON based

Die offline Version des SelfHTML Wiki: Download der Binary, ca 30MB




Eine Machbarkeitsstudie zu dieser Anwendung

Was alles zu tun ist... in Kürze hier.

Bereitstellung der Binary für die SPA

Die SPA benötigt eine Datenstruktur wie folgt:

var RAM = {}; // Objekt mit contents:{} und examples:{} und redirects:{}

Wobei die Unterobjekte sog. Schlüssel-Werte-Paare darstellen was untenstehende SQuery implementiert.

-- fetch contents
    SELECT 
        text.old_text   as body,
        page.page_title as name

    from page 
    join revision on revision.rev_id = page.page_latest
    join text     on     text.old_id = revision.rev_text_id

    where page_namespace="0" and body not like "#%";

Die anderen Abfragen sehen, den anderen Namespaces (siehe where Klause) entsprechend, ganz analog aus. Zu beachten ist, daß die bodies über den parser.php der Wiki-Engine gerendert werden müssen damit ein brauchbares HTML entsteht.

Aus den abgezogenen Daten wird zur Laufzeit, also in dem Moment wenn das Download aktueller Daten angefordert wird, die JSON Datei nach obenstehender Datenstruktur erzeugt. Nach der Einrichtung der entsprechenden Scripts für das Download dieser sog. Binary ist kein weiterer Wartungsaufwand erforderlich.

JavaScript in der SPA

Die Aufgabe besteht darin, einer Navigation über die Inhalte zu ermöglichen sowie die Beispiele zu präsentieren. Hierzu sind die hrefs der eingebauten Verlinkungen entsprechend abzuändern. Zweckmäßigerweise wird dabei der className herangezogen sofern ein Solcher vorhanden ist. Für die Beispiele wird, sollen die in einem PopUp Fenster laufen, aus dem dazugehörigen Body ein BlobURL erstellt. Ebenfalls durch einen BlobURL ersetzt wird "./Beispiel:SELFHTML-Beispiel-Grundlayout.css", da dieser Link in allen Beispielen gleich ist, wird mit

CSS = URL.createObjectURL( new Blob([RAM.examples['SELFHTML-Beispiel-Grundlayout.css']]) );

dieser ObjectURL global verfügbar gemacht.

Bereitstellung der Images für die SPA

Als ZIP die auf dem Zielsystem in demselben Verzeichnis Platz finden wie die lokale SPA selbst. In der SPA sorgt JavaScript dafür, daß alle Pfadangaben aus den src=Attributen entfernt werden so daß eine relative Pfadangabe zum Image verbleibt.