Didaktische Hinweise für jeden Artikel in DokuWiki

Ich benutze mein Unterrichtswiki hauptsächlich dafür, Schülern Material, Anleitungen und Arbeitsaufträge weiter zu geben. Viele dieser Materialien benutze ich direkt aus dem Wiki im Unterricht. Die Schüler arbeiten dann mit den Texten, Abbildungen, Videos auf der Wiki-Seite. Häufig möchte ich dann noch für mich oder auch für andere Lehrkräfte, die das Material evtl. nutzen, didaktische oder methodische Hinweise notieren.

Bei Wikispaces, wo mein Wiki früher gehostet war, gab es dafür keine elegante Lösung. Mit meiner eigenen Installation von DokuWiki konnte ich nun durch das sehr flexible Vector-Template und die Hilfe von dessen Autor Andreas Haerter eine solche einfache und gleichzeitig skalierbare Lösung realisieren.

»Hinweise« für jeden Artikel in einem eigenen Namensraum

Das Vector-Template hat die Option, mehrere Tabs oberhalb eines Artikels anzuzeigen. Standardmäßig sind ein Tab für den Inhalt des Artikels und einer für die Diskussion über den Artikel vorhanden. Die Diskussion ist – wie bei Wikipedia und andern Mediawikis – in einem eigenen Namensraum untergebracht wobei die URL der Artikeldiskussion ansonsten identisch mit der URL des Artikels selbst ist.

Der Artikel mit der URL

http://herr-kalt.de/arbeitsmethoden/zeitung

hat seine Diskussionsseite unter der URL

http://herr-kalt.de/talk/arbeitsmethoden/zeitung.

Für die methodischen oder didaktischen Hinweise wollte ich das genauso realisieren, damit jeder Artikel seine Hinweis-Seite unter einer Standard-URL hat und diese Hinweis-Seite mit dem Anlegen des Artikels bereits implizit vorhanden ist. So muss ich mir nicht merken, was für eine Namens- oder URL-Konvention ich mir für die Hinweise überlegt habe, denn ich werde diese Hinweise wahrscheinlich nur sporadisch anlegen oder aktualisieren.

tabs-dokuwiki-1.png

Codeanpassung für den »Hinweise«-Tab

Um jeder Seite einen neuen Tab »Hinweise« zu geben, habe ich mit der Hilfe von Andreas Haerter die Datei

/lib/tpl/vector/user/tabs.php

angepasst. Das ist die vorgesehene Stelle, wo der Benutzer Änderungen an den Tabs machen kann, die bei einem Update des Templates nicht angetastet werden.

Folgender Code wurde eingefügt:

//"Hinweise" tab $namespace_notes = ':hinweise:'; $_vector_tabs_left["tab-wiki-notes"]["text"]      = "Hinweise"; $_vector_tabs_left["tab-wiki-notes"]["accesskey"] = "H"; //accesskey is optional if (!preg_match("/^".$namespace_notes."?$|^".$namespace_notes.".*?$/i", ":".getNS(getID()))){   //We are NOT on a notes page   if ($vector_context !== "discuss" || !tpl_getConf("vector_discuss")){ //$vector_context was defined within main.php     //The current page is a normal wiki page outside the notes namespace and no     //discussion page. Therefore create a link to the corresponding notes page.     //Example:     //  - current page: "foobar"     //  - link we are creating here: $namespace_notes."foobar"     $_vector_tabs_left["tab-wiki-notes"]["wiki"]  = $namespace_notes.getID();   } else {     //The current page is a discussion page belonging to the normal wiki page.     //Create a link to the corresponding notes page of the normal wiki page,     //not a notes page for the discussion page. Example:     //  - current page: "tpl_getConf("vector_discuss_ns").foobar"     //  - link we are creating here: $namespace_notes."foobar"     $_vector_tabs_left["tab-wiki-notes"]["wiki"]  = $namespace_notes.substr(getID(), strlen(tpl_getConf("vector_discuss_ns"))-1);   } } else {   //We are on a notes page. Highlight/select the notes tab.   $_vector_tabs_left["tab-wiki-notes"]["wiki"]  = ":".getID();   $_vector_tabs_left["tab-wiki-notes"]["class"] = "selected";    //Overwrite the behavior of the article tab. Normally, it would link to the   //current notes page itself. We want to link the corresponding normal wiki   //page instead to make it easy for the user to get back to the main content.   $_vector_tabs_left["ca-nstab-main"]["wiki"]  = ":".substr(getID(), strlen($namespace_notes)-1);   //de-select the the article tab   unset($_vector_tabs_left["ca-nstab-main"]["class"]); //setting the class to "" would work, too. But I think unsetting the whole value is more tidy.    if (tpl_getConf("vector_discuss")) {     //Overwrite the behavior of the discussion tab. Normally, it would link to     //a discussion page for the notes page. We want to link the discussion     //page of the normal wiki page instead.     $_vector_tabs_left["ca-talk"]["wiki"] = tpl_getConf("vector_discuss_ns").substr(getID(), strlen($namespace_notes)-1);   } } 

Vorlage für die Hinweis-Seite

Wenn ich Hinweise zu einer Seite schreibe, möchte ich die leere Seite etwas vorstrukturieren, damit bestimmte Elemente immer vorhanden sind. DokuWiki hat dafür die Möglichkeit, einem Namensraum Vorlagen zuzuweisen.

Das habe ich für den Namensraum »Hinweise« gemacht und die Datei

/data/pages/hinweise/__template.txt

angelegt. Diese hat folgenden Inhalt:

======Anmerkungen zu »@PAGE@« ====== 

Es wird also eine Level-1-Überschrift angelegt und der Name der assoziierten Inhaltsseite dynamisch eingefügt.

Wichtig sind die beiden Unterstriche im Dateinamen der Vorlagendatei: damit gilt die Vorlage für den aktuellen Namensraum und alle darin verschachtelten Namensräume, das hier nötig ist, weil die einzelnen Bereiche des Wikis wie z.B. »Arbeitsmethoden« ebenfalls einen eigenen Namensraum haben.

Beispiel

Die Hinweise kommen zum Beispiel bei einigen Englisch-Übungen zum Einsatz, die ich oft auch an Referendare weitergebe und dabei bisher immer noch erklären musste, wie sie eingesetzt werden. Das habe ich nun einmal auf die Hinweis-Seite geschrieben und mir diesen Aufwand künftig erspart. Außerdem bleibt der Inhalt, den ich teilweise auch für Schüler als Arbeitsblatt oder Folie ausdrucke, frei von Kommentaren, die nur für Lehrer interessant sind.

Dank

Herzlichen Dank an Andreas Haerter für ein tolles und hervorragend dokumentiertes Template und die schnelle kompetente Hilfe bei der Umsetzung dieser Idee.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.