Plugins

WaBis-Wiki : Geschichte | Features | Download | Install | Aufbau | Konfig | Plugins | Implem. | Log
Mit Plugins kann das Wiki vom Programmierer um Funktionen erweitert werden. Als Programmiersprache wird VBScript verwendet.

Plugins sind spezielle Dateien, die im Verzeichnis wiki_app/plugins/ abgelegt sind. Diese Seiten können spezielle Zugriffsrechte verlangen, sodass nicht jeder User jede Seite aufrufen kann. Die Plugin Seiten werden üblicherweise über die Seite Erweiterte Funktionen aufgerufen, welche über die Schaltfläche [W] der Wiki-Toolbar aufgerufen werden kann oder über die Eingabe @wiki im Suchfeld.

Zweck von Plugins

  • Selten benötigte Funktionen aus dem Wiki auslagern
  • Wiki erweiterbar gestalten

Aufruf einer Plugin Seite

Es bestehen mehrere Möglichkeiten, Plugin-Seiten mit erweiterten Wiki-Funktionen aufzurufen:

Für Anwender

Der Benutzer gelangt über die Schaltfläche [W] in der Wiki-Toolbar zum Verzeichnis der Plugin-Seiten. Diese Seite kann auch durch Eingabe von @wiki in das Suchfeld aufgerufen werden.

Per URL

Per URL lässt sich eine bestimmte Plugin-Seite wiefolgt aufrufen:

index.asp?op=wiki
index.asp?op=exe&fn=Seitenname

Die erste Zeile ruft die Seite Erweiterte Funktionen auf, mit der zweiten URL kann eine bestimmte Plugin-Seite gerufen werden. Seitenname muss der Name der Plugin-Datei ohne Extension sein. Der angezeigte Name ist der in die Landessprache übersetzte Dateiname.

Per Makro

Um in einem Wikitext einen Link auf eine Plugin-Seite zu machen, verwende das Makro Wiki:

{{Wiki|Seitenname|Text}}
Seitenname (optional)
Name der Plugin-Datei ohne Extension (z.B. Extended Functions). Wird Seitenname nicht angegeben, wird die Seite Extendet Functions (Erweiterte Funktionen) aufgerufen.
Text (optional)
Der im Link angezeigte Text (z.B. Erweiterete Funktionen). Wird Text nicht angegeben, wird Seitenname als Text angezeigt.

Beispiel

{{Wiki|Extendet Functions|Erweiterte Funktionen}}

Erweiterte Funktionen

Die URL auf eine Plugin-Seite kann per Makro WikiUrl erfragt werden (z.B. für form-Makros):

{{WikiUrl|Seitenname}}
Seitenname (optional)
Name der Plugin-Datei ohne Extension (z.B. Extended Functions). Wird Seitenname nicht angegeben, wird die Seite Extendet Functions (Erweiterte Funktionen) aufgerufen.

Beispiel

{{form|{{WikiUrl|Plugin-Page}}}}

 index.asp?op=exe&fn=Plugin-Page

Plugin Verwaltung

Alle Plugin-Seiten sind im Plugin-Verzeichnis wiki_app/plugins/ als Dateien mit der Endung .inc abgelegt. Im Plugin-Verzeichnis gibt es zwei weitere wichtige Unterverzeichnisse:

plugins/
Enthält die Plugin-Seiten
plugins/lang/
Enthält die Sprach-Dateien für die Plugins
plugins/lib/
Enthält Funktions-Bibliotheken (z.B. mvc.inc, ein Model View Controller Framework) oder andere mehrfach verwendete Dateien wie Stylesheets.

Plugin Format

Plugin-Seiten sind (fast) normale Wiki-Seiten. Das heisst, sie enthalten Wiki-Text, aber in der Mehrzahl Wiki-Scripts. Die Wiki-Scripts in Plugin-Seiten unterliegen keinerlei Beschränkungen. Sie haben vollen Zugriff auf das Filesystem des Servers. Daher können Plugin-Seiten auch nur vom Webmaster angelegt werden.

Gemeinsam genutzte Bibliotheken und Stylesheets, die im Verzeichnis plugins/lib/ abgelegt sind, können mit der speziellen Anweisung #INCLUDE Dateiname in eine Plugin-Seite includet werden. Eingefügte Dateien dürfen auch selbst wieder Includes auf diese Weise includen.

#INCLUDE Dateiname

Includes können VBScript Programme, Texte, Styles usw. sein. Sie müssen einfach nur in jenem Format vorliegen, das an der Stelle der #INCLUDE Anweisung erwartet wird.

Spezialfall: Damit normale ASP-Bibliotheken includet werden können, werden beim Includen die ASP-Tags <% und %> herausgefiltert, wenn sie auf einer eigenen Zeile stehen. Dadurch können ASP-Bibliotheken direkt in WScript includet und verwendet werden (z.B. die mvc.inc Bibliothek).

Plugin Header

In einem optionalen Header können spezielle Eigenschaften einer Plugin-Seiten angegeben werden:

<hidden>
#REQ_RIGHT edit
xMsgD("Seitenname")
</hidden>

Durch Einschliessen der obigen Angaben in die hidden-Wiki-Tags wird erreicht, dass diese Angaben nicht auf der Seite ausgegeben werden.

Mit der Zeile #REQ_RIGHT wird definiert, welche Rechte ein User mindestens haben muss, um die Plugin-Seite aufrufen bzw. ausführen zu können. Standard-Recht ist new, womit ein User mindestens die Rechte zum Anlegen (Upload) von Seiten haben muss.

Weitere mögliche Werte in aufsteigender Reihenfolge sind: none, read, disc, new, edit, manage, admin

Durch die Zeile xMsgD(..) wird dem Verwaltungsprogramm zum Erstellen der Übersetzungen xlang.asp der Originalname der Plugin-Seite bekannt gemacht. xlang.asp scannt alle Dateien im Plugin-Verzeichnis nach Stellen mit xMsg Aufrufen und sammelt die so gefundenen Texte in Sprach-Dateien (siehe xlang Dokumentation).

Wenn der Plugin-Seitenname in einem Script benötigt wird, kann er anstatt im Header im Script definiert werden:

<wscript>
dim PluginPageName: PluginPageName = xMsgD("Seitenname")
 :
</wscript>

Plugin Landessprachen

Ein Plugin muss nur in einer Landessprache erstellt werden. Wenn alle Ausgabetexte in xMsg() Aufrufe verpackt werden, wird die Seite automatisch in der gewählten Landessprache ausgegeben, sofern eine entsprechende Sprach-Datei erstellt worden ist. Somit sind Plugin-Seiten Sprachunabhängig.

 ASP: Mehrsprachige Programme (xlang)

ExecRights für Scripts und Makros in Plugins

Plugins laufen mit erweiterten Rechten. Das heisst, Plugins dürfen alle VbScript und Wiki-Funktionen ohne Einschränkung nutzen. Diese Rechte werden standardmässig auch auf User-Scripts und User-Makros vererbt, welche per Plugin ausgeführt werden (z.B. bei der Probierseite des Wikis).

Durch Aufruf der Funktion InhibitExecRight werden diese Rechte für User Makros und Scripts wieder auf die normalerweise dafür geltenden Rechte zurückgesetzt.

sub PluginFunction()
  InhibitExecRight
   :
end sub

Mit InhibitExecRight werden nicht die Rechte des Plugins selbst eingeschränkt.

Damit wird verhindert, dass böswillige Scripts oder Makros ausgeführt werden, mit denen zum Beispiel Seiten gelöscht werden.

Plugin Debug

Das Debuggen von Plugin-Code ist mit Hilfe eines Debuggers nur beschränkt möglich. Folgende Einstellungen können bei der Fehlersuche nützlich sein:

  • WIKI_DEBUG = true wikiengine.inc
  • #DEBUG in WScript-Code

Setze in wikiengine.inc die Konstante WIKI_DEBUG = true. Dadurch werden Javascripts in nicht gepackter Form geladen und bei einigen Programmierfehlern wird das Programm gestopt und eine Fehlermeldung ausgegeben.

Setze in einem Wscript die Anweisung #DEBUG. Dies fügt umfangreiche Trace-Aufrufe in jeder Funktion ein. Bei einigen Runtime-Fehlern wird dann die Zeile ausgegeben, bei welcher der Fehler aufgetreten ist.