Wiki-Package

Das Wiki-Package enthält eine in der Programmiersprache Java implementierte Wiki-Engine. Die Software besteht aus zwei Komponenten, einer Backend-Komponente für die Datenhaltung und einer Frontend-Komponente mit der webbasierten Oberfläche. Beide Komponenten setzen eine Java-Laufzeitumgebung 1.4.2 oder neuer voraus.

Die mitgelieferten Templates für die webbasierte Oberfläche sind auch für die Browser von neueren Mobiltelefonen geeignet (getestet mit Openwave 7, siehe
http://www.openwave.com und Opera mit Small Screen Rendering siehe http://www.opera.com ). Die Templates können in weiten Grenzen verändert werden, um ein individuelles Look and Feel zu erreichen.

Eine Installation des Wikis findet sich unter der URL
http://213.133.123.184:8081/wiki?action=index .


Funktionen

Die webbasierte Oberfläche bietet folgende Funktionen:

• Alphabetische Übersicht über alle Artikel,
• Detailansicht eines Artikels,
• Selbstregistrierung von neuen Mitgliedern,
• Abmeldung von Mitgliedern,
• Login von Mitgliedern,
• Selfcare für Mitglieder: Ändern der Stammdaten und der PIN,
• Logout von Mitgliedern,
• Bearbeiten eines Artikels durch den Besitzer,
• Löschen eines Artikels durch den Besitzer,
• Zweistufiger Besitzerwechsel eines Artikels,
• Automatische Verlinkung der Artikel untereinander anhand des Titels,
• Automatische Verlinkung von URLs,
• Sichtbarkeitsstufen für Artikel (privat, nur für Mitglieder, für alle).


Backend-Komponente

Die Backend-Komponente basiert auf dem
Space-Server-Package. Die Inbetriebnahme des Space-Servers ist im Dokument über das Space-Server-Package beschrieben.


Frontend-Komponente

Für die Frontend-Komponente werden die Dateien collections.jar,
html.jar, http.jar, lisp.jar, spaceclient.jar, standardwebcontrollers.jar, threads.jar, webcontroller.jar, wiki.jar, wikihtml.zip und xmlutils.jar aus dem Verzeichnis http://www.qrst.de/downloads benötigt.

Es wird empfohlen, für den Betrieb des Wikis einen eigenen Benutzer anzulegen. Die oben genannten Jar-Dateien sind dann in das Home-Verzeichnis des Benutzers zu kopieren. Die Zip-Datei wikihtml.zip muss in das Home-Verzeichnis entpackt werden.

Bevor die Frontend-Komponente in Betrieb genommen werden kann, muss die Backend-Komponente gestartet werden (siehe oben). Danach wird mit zwei Hilfsprogrammen ein Customizing der Backend-Komponente vorgenommen:

java -cp collections.jar:lisp.jar:spaceclient.jar:threads.jar:wiki.jar:xmlutils.jar wiki.backend.CreateUniqueId <host> <port>
java -cp collections.jar:lisp.jar:spaceclient.jar:threads.jar:wiki.jar:xmlutils.jar wiki.backend.Library <host> <port>

(bei Windows-Systemen ist das Semikolon anstelle des Doppelpunkts als Trennzeichen im Klassenpfad zu verwenden, <host> und <port> sind Host und Port des Space-Servers)

Nun kann die Frontend-Komponente gestartet werden:

java -cp collections.jar:html.jar:http.jar:lisp.jar:spaceclient.jar:standardwebcontrollers.jar:threads.jar:webcontroller.jar:wiki.jar:xmlutils.jar wiki.frontend.App <host> <port> <directory> <http-port>

(bei Windows-Systemen ist das Semikolon anstelle des Doppelpunkts als Trennzeichen im Klassenpfad zu verwenden, <host> und <port> sind Host und Port des Space-Servers, <directory> ist das Verzeichnis "templates", das beim Entpacken der Datei wikihtml.zip entstanden ist und <http-port> ist der Port, unter dem die Weboberfläche des Wikis zu erreichen ist)

Nach dem Start der Frontend-Komponente kann man die Benutzeroberfläche des Wiki unter der URL
http://<host>:<http-port>/wiki?action=index erreichen (<host> ist der Rechnername oder die IP-Adresse des Rechners, auf dem die Frontend-Komponente installiert wurde).


Automatische Verlinkung

Die automatische Verlinkung zwischen den Wiki-Artikeln sorgt dafür, dass überall da, wo in einem Artikel der Titel eines anderen Artikels vorkommt, dieses Vorkommen mit dem zugehörigen Artikel verlinkt wird. Die automatische Verlinkung basiert auf einer Repräsentation der zu verlinkenden Titel als
Baum.

Angenommen Dokument 1 hat den Titel "A B", Dokument 2 hat den Titel "A B C D E" und Dokument 3 hat den Titel "D", dann werden im ersten Schritt die Titel in ihre Wörter zerlegt und der linke
Baum in der folgenden Abbildung aufgebaut. Wenn n die Zahl der Wörter in allen Titeln zusammengenommen ist, dann kann der Baum in O(n log(n)) Schritten aufgebaut werden.



Abbildung:
Baum nach dem ersten und nach dem zweiten Schritt.

Die Kanten des Baums sind mit den Worten aus den Titeln beschriftet. Wenn die Kantenbeschriftungen des Pfads von der Wurzel des Baums zu einem Knoten dem Titel eines Dokuments entspricht, dann ist der Knoten mit einem Zahlenpaar beschriftet. Das Zahlenpaar besteht aus der Referenznummer des Dokuments und aus der Wortanzahl im Titel. Der linke, untere Knoten ist also mit "2, 5" beschriftet, weil das Dokument 2 einen Titel aus fünf Wörtern hat und der Titel genau der Folge der Kantenbeschriftungen "A B C D E" entspricht.

Im zweiten Schritt werden alle bisher unbeschrifteten
Knoten darauf untersucht, ob es einen Titel gibt, dessen Wortfolge als Kantenbeschriftung im untersuchten Knoten endet. Bei diesem Schritt werden auch Pfade untersucht, die nicht bei der Wurzel des Baums beginnen. Wenn es einen Titel gibt, der in einem unbeschrifteten Knoten endet, dann wird dieser Knoten analog zum ersten Schritt mit einem Zahlenpaar beschriftet. Im Beispiel betrifft das den fett umrandeten Knoten mit der Beschriftung "3, 1" im rechten Baum in der Abbildung. Sollte es für die Beschriftung mehrere Möglichkeiten geben, so wird die mit dem längsten Titel ausgewählt. Der zweite Schritt benötigt maximal O(n^2) Schritte.

Anhand des Baumes nach dem zweiten Schritt kann ein Artikel mit einer Länge von w Wörtern in O(w log(n)) Schritten mit Links versehen werden. Dabei werden die Wörter des Texts sequentiell verarbeitet. Der Zustand der Verarbeitung wird mittels einer Marke verwaltet, die jeweils einem
Knoten des Baumes zugeordnet ist. Zu Beginn der Verarbeitung ist die Marke der Wurzel des Baums zugeordnet. Das erste Wort des Texts wird gelesen. Es wird überprüft, ob es ausgehend vom markierten Knoten des Baums eine Kante gibt, deren Beschriftung mit dem Wort übereinstimmt. Wenn ja, wird die Marke entlang der Kante zum nächsten Knoten bewegt. Mit dem jeweils nächsten gelesenen Wort verfährt man analog. Wenn ein Wort gelesen wird, zu dem es keine passende ausgehende Kante gibt, werden die Wörter entlang des Pfades von der Wurzel bis zum markierten Knoten in den Ausgabestrom geschrieben und Links anhand der Knotenbeschriftungen erzeugt. Wenn zu diesem Zeitpunkt die Marke nicht der Wurzel des Baums zugeordnet war (d.h. der Pfad war nicht leer), dann wird die Marke der Wurzel zugeordnet und das nicht passende Wort erneut verarbeitet. Anderenfalls, wenn es ausgehend von der Wurzel keine passende Kante gibt, wird das nicht passende Wort in den Ausgabestrom geschrieben.


Quelltexte

Die Quelltexte unterliegen der
Modified Artistic License v1 finden sich in der Version v9 in der Jar-Datei unter dieser URL: http://www.qrst.de/downloads/wikisrc.jar

Zusätzlich werden noch das
Collections-Package, das Html-Package, das Http-Package, das Lisp-Package, das Property-Set-Package, das Space-Client-Package, das Space-Server-Package, das Standard-Web-Controllers-Package, das Threads-Package, das Web-Controller-Package und das XML-Utils-Package benötigt.

Die Templates für die webbasierte Benutzeroberfläche können von der URL
http://www.qrst.de/downloads/wikihtml.zip geladen werden.