Skip to content

Neu: DenkzeitWiki

Es gibt jetzt das DenkzeitWiki, in dem ich strukturell komplexere Informationen sammle. Hauptsächlich wird es wohl eine Linksammlung zu verschiedenen Themengebieten. Die Verwendung eines Wikis erlaubt es, die Sammlung leicht umzustrukturieren, wenn eine Seite für ein Themengebiet zu voll werden sollte. Außerdem können bequem Dateien allgemein und Bilder und Codeschnipsel im Besonderen hinzugefügt werden. Zum Einsatz kommt PmWiki in einer inzwischen nicht mehr aktuellen 1er Version. Allerdings habe ich in anderen Wikis, die ich ebenfalls betreue, wie das HolonWiki und das SeSAmWiki soviele Änderungen am Code vorgenommen, dass ich nicht einfach auf eine neue Version wechseln kann (bzw. möchte). Außerdem tut’s die alte auch für meine Zwecke.

Ein nützliches Feature, das ich hinzugefügt habe, ist der Trail, der mit einer Session realisiert wird und quasi eine History der im Wiki besuchten Seite darstellt. Andere Änderungen sind intern und betreffen Dinge wie Spamschutz.

Ein bereits in der Standardinstallation des Wikis vorhandenes Feature, das allerdings aktiviert werden muss, ist ein RSS-Feed, der über Änderungen im Wiki informiert.

Das DenkzeitWiki ist mit dem DenkZeit-Blog durch ein WordPress-Plugin verbunden, das ich heute Nachmittag geschrieben habe. Es ersetzt in einem Blogeintrag vorkommende {{WikiGruppe.WikiSeitenname}} bzw. {{WikiSeitenname}} mit einem Link zur entsprechenden Seite im Wiki. Mit der erstgenannten Syntax kann man auch Seiten in einer WikiGruppe verlinken. Eine WikiGruppe ist eine Strukturierungsmöglichkeit von PmWiki analog zu einem Unterverzeichnis in einem Dateisystem.

Der Code des Plugins ist ziemlich einfach:

function gungfu_wikify($text) {
    $wikiroot = 'http://www.gungfu.de/facts/wiki/field.php?pagename=';
    $text = preg_replace('/{{(([A-Z][a-z]+){2,})}}/','<a href="'.$wikiroot.'Main.$1">$1</a>', $text);
    return preg_replace('/{{(([A-Z][a-z]+)+.([A-Z][a-z]+){2,})}}/','<a href="'.$wikiroot.'$1">$1</a>', $text);
}

add_filter('the_content', 'gungfu_wikify', 6);

$text repräsentiert den Text des Blog-Eintrags. In diesem wird durch zwei reguläre Ausdrücke (regular expression, RE) die oben beschriebene Syntax gesucht und ggf. durch Links ersetzt. Der erste RE /{{(([A-Z][a-z]+){2,})}}/ ist dabei für Referenzen der Form {{WikiSeitenname}} verantwortlich: [A-Z] steht für einen beliebigen Großbuchstaben. [a-z]+ steht für mindestens einen Kleinbuchstaben. ([A-Z][a-z]+){2,} bedeutet daher, dass mindestens zweimal eine Folge mit einem Groß- und mindestens einem Kleinbuchstaben gefunden werden muss, damit dieser RE passt. Drumrum noch die geschweiften Klammern. Fertig ist der erste Ausdruck.

Beim zweiten RE bedeutet ([A-Z][a-z]+)+, dass mindestens einmal eine Folge von einem Groß- und mehreren Kleinbuchstaben gefunden werden muss. Das wird mit dem RE für einen WikiSeitennamen zusammengesetzt und mit einem Punkt getrennt: (([A-Z][a-z]+)+.([A-Z][a-z]+){2,})

Mehr zu regulären Ausdrücken gibt’s natürlich auf Wikipedia und in der Regular Expression HOWTO (mit Python-Code). Mit Kodos kann man reguläre Ausdrücke testen. Ein paar weitere Links gibt’s im Wiki: RegularExpressions ;-)

{ 2 } Comments

  1. Emerentia | 2005/4/9 at 01:08 | Permalink

    Haben die Regular Expressions etwas mit mir zu tun?! Ich hab da so meine Vermutungen… Aber so werden Anekdoten geboren… ;-)

  2. Steffen | 2005/4/9 at 01:34 | Permalink

    Hallo Clemens,

    das sind die RE, über die wir gestern gesprochen haben. In welchem Zusammenhang das war, möchte ich hier nicht erläutern (>;->). Dass ich diese gestern noch zum Einsatz gebracht habe ist allerdings Zufall. Außer vielleicht, dass ich mit dir gestern soviel Zeit vertan habe, dass keine mehr übrig blieb was Vernünftiges zu machen… ;-)

    Außerdem hat der ersten Wiki-Eintrag auch was mit dir zu tun. Schließlich handelt es sich um eine Linksammlung zu den Themen der Prüfung, die du gestern sehr gut bestanden hast und die mir noch bevor steht. Hier, in aller Öffentlichkeit, daher nochmal: Gratulation! :-)

{ 1 } Trackback

  1. [...] #8212; Steffen @ 03:42

    Gestern habe ich ein WordPress-Plugin beschrieben, das Links in das DenkzeitWiki erzeugt, wenn es auf bestimmte Textmu [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *