WaBis

walter.bislins.ch

Wiki-Script

Wiki-Script (oder wscript) ist die in dieses Wiki integrierte Programmiersprache VBScript von Microsoft. Damit lässt sich dieses Wiki um fast beliebige Funktionen erweitern. In Wiki-Script stehen viele mächtige Funktionen zur Verfügung:

 Wscript-Funktionen

Wiki-Scripts einbauen

Um Wiki-Scripts auf einer Seite einzubauen, müssen die Script-Anweisungen zwischen <wscript> und </wscript> gesetzt werden.

Beispiel

<wscript>
Writeln "Hallo Welt"
</wscript>

Neben den in VBScript eingebauten Funktionen stellt dieses Wiki mächtige Datenverarbeitungs- und String-Funktionen bereit, mit deren Hilfe es rel. einfach ist, beliebige Daten aus Wiki-Seiten zu extrahieren. Die gesammelten Daten können entweder in eine Wiki-Seite geschrieben werden oder direkt auf der aktuellen Seite, in welcher das Script läuft, mit «Writeln» ausgegeben werden.

Die Ausführung von Wiki-Scripts in Seiten kann global aktiviert und deaktiviert werden. Es gibt auch einen Modus, in dem nur Scripts auf Seiten ausgeführt werden, welche in der Seite «Spezial: ScriptPages» im selben Wiki eingetragen werden (Beschreibung siehe ScriptPages).

Zeitpunkt der Ausführung

Alle Ausgaben eines Wiki-Scripts mit der Funktion «Write» oder «Writeln» werden zunächst intern gespeichert, bis ein Script-Teil einer Seite fertig ausgeführt ist. Danach wird dieser Script-Teil durch die gespeicherte Ausgabe ersetzt. Für die weitere Bearbeitung der Wiki-Seite ist also nicht mehr das Script sichtbar, sondern nur noch dessen Output.

Eine Wiki-Seite wird in folgender Reihenfolge bearbeitet:

  1. <comment>-Teile werden entfernt
  2. Includes werden eingebunden (rekursiv)
  3. Wiki-Scripts werden ausgeführt (zuerst in den Includes, dann auf der aktuellen Seite)
  4. Makro-Definitionen werden gelesen
  5. Makros werden ausgeführt
  6. Die Seite wird formatiert (Umwandlung Wiki-Syntax in HTML)

Entsprechend dieser Reihenfolge kannst du also mit «Writeln» Ausgaben in Wiki-Syntax machen, ja sogar Makros ausgeben. Diese Script-Ausgabe wird also ebenfalls vom Wiki bearbeitet.

In Wiki-Script definierte Funktionen können auch per Makro-Syntax aufgerufen werden.

Sicherheit

Um Missbrauch zu verhindern sind alle Server-Objekte in Wiki-Script deaktiviert. Es ist mittels den bereit gestellten Wscript-Funktionen lediglich möglich, auf das Wiki- und Medien-Verzeichnis des aktuellen Wikis zuzugreifen.

Wiki-Script kann über die Variable SCRIPT_EXE_RIGHT global deaktiviert werden oder so eingestellt werden, dass nur ausgewählte Seiten Scripts ausführen dürfen. Diese Seiten müssen dann auf der speziellen Seite «Spezial: ScriptPages» eingetragen werden, damit sie ausgeführt werden. Die Seite «Spezial: ScriptPages» ist geschützt und kann nur mit entsprechendem Passwort verändert werden.

Fehlersuche

Die Fehlersuche in Wiki-Scripts gestaltet sich leider etwas mühsam. Da die Scripts auf dem Server ausgeführt werden, können sie i.d.R. nicht mit einem Debugger überwacht werden. Das geht nur, wenn ein Webserver auf dem lokalen PC installiert ist und die Scripts auf diesem Server laufen. In diesem Fall kann einen Debugger z.B. von Microsoft verwenden, nachdem man ihn und den Webserver entsprechend konfiguriert hat.

Steht das Debuggen nicht zur Verfügung, so gibt es ein paar Möglichkeiten, einem Fehler auf die Schliche zu kommen.

#DEBUG

Platziere in deinem Script die Anweisung #DEBUG. Diese Anweisung muss auf einer separaten Zeile stehen! Durch #DEBUG wird jede Zeile des Scripts vor dem Ausführen intern zwischengespeichert. Nach dem Auftreten eines Laufzeitfehlers kann das Wiki dann die zugehörige Zeile ausgeben, bei welcher der Fehler aufgetreten ist.

Mit #DEBUG läuft das Script langsamer. Also nicht vergessen, diese Anweisung wieder zu entfernen!

Zeilen auskommentieren

Eine weiter Methode Fehler einzugrenzen ist das Auskommentieren von Anweisungen im Script, sodass diese nicht ausgeführt werden:

<wscript>

#DEBUG

function Test()
  dim x
  <comment>
  x = f1()
  </comment>
  x = f2(x)
  Test = x
end function
</wscript>

Zwischenresultate ausgeben

Durch temporäres Einfügen von «Writeln» Anweisungen kannst du Zwischenresultate oder Meldungen ausgeben lassen, die dir helfen können, den Script-Ablauf nachzuvollziehen.

Anwendungsmöglichkeiten

Das Wiki-Testlabor und viele erweiterte Wiki-Funktionen sind in Wiki-Script programmiert. Es lassen sich in Wiki-Script alle Arten von Reports programmieren. Das sind Seiten, die sich die Informationen von diversen Wiki-Seiten zusammen suchen, sie filtern und aufbereiten und schliesslich ausgeben. Dazu stehen mächtige Wscript-Funktionen bereit.

Weitere Infos zur Seite
Erzeugt Montag, 6. März 2006
Zum Seitenanfang
Geändert Mittwoch, 29. September 2010
von wabis