Hilfe:VoWi zum Selbermachen

Aus VoWi
Zur Navigation springen Zur Suche springen

Mitmachen · Wikisyntax · Formeln · Mission · Policy · FAQ

Das VorlesungsWiki ist ein normales MediaWiki, für Details siehe Spezial:Version. Es verwendet einige 3rd Party Erweiterungen, ein paar selbst geschriebene Erweiterungen sowie eine Vielzahl an "Custom Hacks". Die meisten hat Fabian ursprünglich geschrieben und wurden von Mati gepatched, manche stammen direkt von Mati selbst.

3rd-Party Erweiterungen[Bearbeiten | Quelltext bearbeiten]

DynamicPageList (DPL)[Bearbeiten | Quelltext bearbeiten]

Die Extension DynamicPageList hat eine lange Geschichte. Ursprünglich unter diesem Namen mit sehr beschränkten Features entstanden, wurde sie von Fabian unter dem Namen "DynamicPageList2" aufgegriffen und erweitert und ist schließlich sogar ins MediaWiki-SVN aufgenommen worden und wurde dort von einigen anderen Menschen weiterentwickelt. Mittlerweile heißt die Extension wieder nur "DynamicPageList", wird wieder von einem anderen Menschen weiterentwickelt und hat auch ein separates DemoWiki.

Die DPL erlaubt es, eine Liste von Seiten, die bestimmte Kriterien erfüllen, dynamisch zu erstellen. So können u.a. Kategorien, Namensräume und Links-To anhand von logischen AND, OR und NOT verknüpft werden.
Wir verwenden diese Extension zum dynamischen erstellen von:

  • einer Auflistung aller LVAs. Dazu sind alle LVAs in Namensräumen (TU_Wien, Uni_Wien...) sortiert, die Liste inkludiert also alle Artikel, die in einem der dort angegebenen Namensraeume sind.
  • Auflistungen nach Studienplänen (z.B. dem Bachelorstudium Technische Informatik (535)). Dazu werden alle LVAs bestimmten Kategorien zugeordnet. Dies geschieht mittels Vorlage (etwa dieser hier).
  • Um z.B. Stubs und veraltete Artikel auszusortieren. Dazu werden ebenfalls Kategorien mittels Banner hinzugefügt. Eine Übersichtsseite gibt es übrigens unter Hilfe:Moderation.

Labeled Section Transclusion[Bearbeiten | Quelltext bearbeiten]

Die Labeled Section Transclusion ist ebenfalls im VoWi installiert. Ursprünglicher Grund war eigentlich nur, dass diese Extension als Voraussetzung für die DPL2 geführt wurde, was nun aber nicht mehr der Fall ist.

Mittlerweile wird diese Extension verwendet um die Beschreibungen der Banner in Hilfe:Kategorien_und_Vorlagen#Studienplanzuordnungen automatisch zu erzeugen, eine Demo ist auch unter Benutzer:Mati/LST-test1 bzw. Benutzer:Mati/LST-test2 verfügbar. (Um zu verstehen was daran jetzt so cool ist, musst du aber bei beiden Artikeln auf "Bearbeiten" klicken).

Ein weiterer Verwendungszweck (vor allem in den FAQs) ist, Überschriften aus einem anderen Text in der Seite zu inkludieren, besonders nützlich um etwa zu einem Kapitel (dessen Name sich möglicherweise ändert) zu linken. Das kann etwa so aussehen:

Im Ziel-Artikel
= <section begin=Kapitel />Überschrift<section end=Kapitel /> =
Im Artikel der den Link enthält
[[Ziel-Artikel#{{#lst:Ziel-Artikel|Kapitel}}]]

ParserFunctions[Bearbeiten | Quelltext bearbeiten]

In diesem Wiki ist auch die ParserFunctions-Erweiterung installiert.

Selbst geschriebene Erweiterungen[Bearbeiten | Quelltext bearbeiten]

Download[Bearbeiten | Quelltext bearbeiten]

Wie eingangs erwähnt befinden sich alle Erweiterungen in einem SVN-Repository, zu finden unter svn.fsinf.at/mediawiki[toter Link 2018-12-30]. Das Repository kann mit jedem Web-Browser angeschaut werden, wer die Erweiterungen allerdings verwenden will, sollte subversion (Packet "subversion" unter Debian/Ubuntu) verwenden. Wer so eine Erweiterung herunterladen will macht auf der Kommandozeile (es gibt allerdings auch graphische Frontends):

user@host:/var/www/mediawiki/extensions # svn co http://svn.fsinf.at/mediawiki/trunk/AddResource

und wer dann die Erweiterung aktualisieren will, macht einfach:

user@host:/var/www/mediawiki/extensions/AddResource # svn up

Natürlich ist es auch möglich das ganze Repository auszuchecken.

Lizenz[Bearbeiten | Quelltext bearbeiten]

Der Code aller selbst geschriebener Extensions ist unter die GPL, Version 3, gestellt.

gemeinsame Einstellungen[Bearbeiten | Quelltext bearbeiten]

Einige Einstellungen werden von mehreren Extensions verwendet:

# If the name of a namespace is displayed and its ID is listed
# in this array, the name will be a link that points to the
# the corresponding value.
# i.e. "TU Wien" will become "[[Alle LVAs (TU Wien)|TU Wien]]"
# assuming that "TU Wien" is a namespace with the ID 100
$wgNamespaceHomes = array(
        100                     => "Alle LVAs (TU Wien)",
        102                     => "Alle LVAs (Uni Wien)",
        104                     => "Alle LVAs (MU Wien)"
);

SimilarNamedArticles (a.k.a. LVASuche)[Bearbeiten | Quelltext bearbeiten]

Achtung: Die SimilarNamedArticles-Extension wurde mittlerweile auf zwei Erweiterungen aufgeteilt, siehe unten.

Die SimilarNamedArticles-Extension (auf Deutsch LVASuche - passend für dieses Wiki) ist eine Extension die es erlaubt auf einer mit einem Parameter aufgerufenen Spezialseite alle Artikel, deren Titel mit dem angegebenen String beginnt, aufzulisten. Hier ist ein Beispiel-Link: Spezial:LVASuche/Grundlagen methodischen Arbeitens.

Das Verhalten der Seite ähnelt damit sehr stark Spezial:Präfixindex, auch der Quellcode wurde in großen Teilen dort entliehen. Die Erweiterung hat aber einige Zusatzfunktionen, die allesamt optional sind:

  • Wird nur ein Artikel gefunden, wird direkt darauf weitergeleitet
  • Die Suche kann auf bestimmte Namensräume eingeschränkt werden
  • Enthält der Parameter einen Namensraum, wird nur in diesem Namensraum gesucht
  • Es kann bestimmt werden ob Unterseiten und Weiterleitungen im Suchergebnis enthalten sein sollen oder nicht
  • Es können zusätzliche Informationen daneben in Klammer ausgegeben werden:
    • Namensraum
    • Kategorien (es kann festgelegt werden, welche angezeigt werden sollen)
    • Anzahl der Materialien (siehe die Resources-Extension)

Die Konfiguration sollte aus der aktuellen Konfiguration dieses Wikis klar werden:

require_once ("$IP/extensions/SimilarNamedArticles/SimilarNamedArticles.php");
# enable Spezial:LVASuche
$wgSimilarNamedArticlesEnable = true;

# results must be in these namespaces (unless a NS is explicitly specified).
# If this variable is not set, this extension will use $wgNamespacesToBeSearchedDefault
$wgSimilarNamedArticlesNamespaces = array( 100 => 1, 102 => 1, 104 => 1, 106 => 1 );
# do not include subpages in results
$wgSimilarNamedArticlesIncludeSubpages = false;
$wgSimilarNamedArticlesIncludeRedirects = false;
$wgSimilarNamedArticlesAddInfoNamespaces = true;
$wgSimilarNamedArticlesAddInfoCategories = array("Stub", "Veraltet", "Illegal",
        "Veränderter Ablauf");
$wgSimilarNamedArticlesAddInfoResources = true;

SimilarNamedArticlesHeader[Bearbeiten | Quelltext bearbeiten]

Diese Extension ist dafür Verantwortlich, dass gleichnamige LVAs direkt unter dem Artikeltitel angezeigt werden. Ihr findet den Code hier. Es gibt auch hier ein paar Konfigurationsvariablen:

require_once ("$IP/extensions/SimilarNamedArticlesHeader/SimilarNamedArticlesHeader.php");
$wgSimilarNamedArticlesHeaderEnable = true;
# on which pages the headers should be displayed:
$wgSimilarNamedArticlesHeaderOnNamespaces = $wgSimilarNamedArticlesNamespaces;
# if headers should be displayed on Subpages:
$wgSimilarNamedArticlesHeaderOnSubpages = false;

Die Suche selbst wird zum einen von den Parametern der SimilarNamedArticles-Extension beeinflusst, also z.B. ob das Suchergebnis Unterseiten anzeigen soll oder nicht. Aber natürlich muss noch bestimmt werden, nach welchem String gesucht werden soll - der ganze Artikelname wuerde ja nur den Artikel selbst finden. Das ist natürlich konfigurierbar, im VoWi wollen wir etwa Artikel finden, deren Namen bis zum LVA-Typ gleich ist:

$wgSimilarNamedArticlesHeaderPREG = '/ (VO|VU|VL|VD|UE|LU|PS|SE|PR|AR|AG|KO|KU).*/';

NewArticleTemplates[Bearbeiten | Quelltext bearbeiten]

NewArticleTemplates ist ebenfalls eine selbstprogrammierte Extension, die es erlaubt ganz normale Artikel als Vorlagen für neue Artikel zu definieren. In der aktuellen Version ist es möglich je nach Namensraum unterschiedliche Vorlagen zu verwenden. Die Extension gibt es hier zum herunterladen.

Die gegenwärtige Version erlaubt nun eine sehr feine Einstellung für welche Artikel welche Vorlagen verwendet werden. Hier ein Ausschnitt aus LocalSettings.php:

# enable everything first:
$wgNewArticleTemplatesEnable = true;
# These Namespaces will have a Template.
$wgNewArticleTemplatesNamespaces = array(
        100                     => 1,
        102                     => 1,
        104                     => 1,
        106                     => 1
);
# You can define a different Template for every Namespace:
$wgNewArticleTemplates_PerNamespace = array(
        100                     => "MediaWiki:NewArticleTemplate",
        102                     => "MediaWiki:NewArticleTemplate",
        104                     => "MediaWiki:NewArticleTemplate",
        106                     => "MediaWiki:NewArticleTemplate"
);
# In case a namespace is listed in $wgNewArticleTemplatesNamespaces but not
# in $wgNewArticleTemplates_PerNamespace, use this Article as a Template:
$wgNewArticleTemplatesDefault = "MediaWiki:NewArticleTemplate";

# you may or may not want to have this on subpages (we don't):
$wgNewArticleTemplatesOnSubpages = false;

$wgNewArticleTemplatesDefault muss nicht unbedingt gesetzt werden, wenn alle Namensräume aus $wgNewArticleTemplatesNamespaces ein eigenes Template in $wgNewArticleTemplates_PerNamespace definiert haben. Umgekehrt müssen Namespaces nicht in $wgNewArticleTemplates_PerNamespace definiert werden, wenn $wgNewArticleTemplatesDefault gesetzt ist.

Materialien[Bearbeiten | Quelltext bearbeiten]

Speziell für dieses Wiki haben wir eine Möglichkeit geschaffen, für jeden Artikel "Materialien" hinzuzufügen (siehe auch Hilfe:Materialien). Im Prinzip stellt dieses Projekt also eine Möglichkeit zur Verfügung, Dateien, Links und weitere MediaWiki-Seiten wie ein E-Mail-Attachment an einen Artikel anzuhängen. Für eine Demonstration schau dir Spezial:Materialien/TU Wien:Mathematik 1 VO (Karigl) an, gehe auf den Materialien-Reiter (neben dem Diskussions-Reiter) und bewundere unser Schaffen :-).

Dieses Projekt ist allerdings nicht eine Erweiterung. Es ist viel mehr eine Sammlung von Erweiterungen, ein (minimaler) Patch für den MediaWiki-Quellcode und Integration in bestehende Erweiterungen (siehe oben). Einige der unten stehenden Erweiterungen (vor allem die ExternalRedirects-Erweiterung) sind auch für sich alleine nützlich, aber erst alle Erweiterungen zusammen ergeben ein großes ganzes.

ExternalRedirects[Bearbeiten | Quelltext bearbeiten]

Die ExternalRedirects-Erweiterung erlaubt es normale Weiterleitungen auch fuer externe Links zu verwenden. Die Erweiterung ueberprüft bei jedem Ansehen einer Weiterleitung ob das Ziel mit 'http' (oder einem anderen Protokoll) beginnt. Ist dies der Fall, so wird automatisch auf die entsprechende Seite weitergeleitet. Wird ein ExternalRedirect mit '?redirect=no' aufgerufen, so wird der gesamte Inhalt ausgetauscht, um den Eindruck einer funktionierenden Weiterleitung zu erwecken. Diese externen Weiterleitungen sind natürlich "in Wirklichkeit" kaputte Weiterleitungen, die auf einen (nicht existierenden) Artikel, der mit 'http' beginnt, zeigen. Als solches scheinen auch alle ExternalRedirects unter Spezial:Kaputte Weiterleitungen auf.

Ein Beispiel:

  • Homepage der FSINF ist eine Weiterleitung auf http://fsinf.at. Ein Klick auf vorhergehenden Link wird dich auf http://fsinf.at weiterleiten.
  • Der selbe Link mit ?redirect=no erlaubt es dir, die Weiterleitung im Detail anzusehen.

Die Konfiguration ist relativ simpel, kopiere einfach folgende Zeilen in LocalSettings.php:

# ExternalRedirects Extension
require_once("$IP/extensions/ExternalRedirects/ExternalRedirects.php");
$wgEnableExternalRedirects = true;
# targets that start with any of these Strings, are treated as ExternalRedirects:
$wgExternalRedirectProtocols = array('https', 'http', 'ftp');

Um zu verifizieren das diese Erweiterung korrekt installiert und konfiguriert ist, erstelle einfach eine Seite mit folgendem Text:

#REDIRECT [[http://www.fsinf.at]]

Ein einfacher Klick auf diese Seite wird dich auf http://fsinf.at weiterleiten.

Resources[Bearbeiten | Quelltext bearbeiten]

Die Resources-Erweiterung (Quellcode) implementiert Spezial:Materialien. Sie muss mit einem Parameter (einem Artikeltitel) aufgerufen werden und erstellt fuer diesen Artikel ohne Konfiguration eine Liste bestehend aus:

  • Dateien, die auf den Artikel verlinken
  • Unterseiten des Artikels (die keine Weiterleitungen sind)
  • Unterseiten des Artikels die externe Weiterleitungen sind (wenn die ExternalRedirects-Erweiterung installiert ist)

Es gibt nun eine Reihe von Konfigurationsmoeglichkeiten, die natürlich in LocalSettings.php einzutragen sind, angegeben sind hier immer die Default-Werte:

# first, we need to do a require_once:
require_once("$IP/extensions/Resources/Resources.php");
$wgResourcesEnable = true;

# everything below is optional, everything is set to their defaults:

# set any of these to false if you don't want to display Files, Subpages or External Redirects
$wgResourcesShowPages = true;
$wgResourcesShowSubpages = true;
$wgResourcesShowLinks = true; # this also requires $wgEnableExternalRedirects = true

# Create direct links to files instead of links to their file-pages:
$wgResourcesDirectFileLinks = false;

# Subpages may also include working redirects:
$wgResourcesSubpagesIncludeRedirects = false;

# The Resource-List may include some details for each resource:
$wgResourcesAddInfos = false;

Diese Erweiterung funktioniert wenn du in Spezial:Spezialseiten die Spezialseite "Materialien" findest.

ToDo: Der Teil, der Artikel, die hierher verlinken, findet, findet bis jetzt nur Artikel im Datei-Namensraum. Das ist eine hartkodierte Limitation, die sich eigentlich leicht erweitern liesse, deswegen heisst die Konfigurations-Variable auch wgResourcesShowPages und nicht wgResourcesShowFiles. (ich werde das bei Zeiten machen)

AddResource[Bearbeiten | Quelltext bearbeiten]

Die AddResource-Erweiterung implementiert Spezial:Materialien hinzufügen und erlaubt es, bequem dem VoWi neue Materialien fuer einen bestimmten Artikel hinzuzufügen. Die Seite bekommt dazu den Artikeltitel als Parameter übergeben. Der Quellcode befindet sich hier im SVN-Repository.

Die Extension hat nur wenige Konfigurationsmöglichkeiten. Die Kapitel zum Dateien hochladen und externe Links hinzufuegen wird aber nur angezeigt, wenn die entsprechenden Variablen ($wgEnableUploads und $wgEnableExternalRedirects) richtig gesetzt sind. Ansonsten reicht ein einfaches require_once:

require_once("$IP/extensions/AddResource/AddResource.php");



ManipulateUpload[Bearbeiten | Quelltext bearbeiten]

Die ManipulateUpload-Erweiterung manipuliert waehrend dem Upload-Prozess die Meta-Informationen zu den hochgeladenen Dateien. So wird automatisch der Dateiname umbenannt und der Beschreibung ein Text hinzugefügt. Damit die Erweiterung funktioniert benötigt sie den mReferer-Patch fuer SpecialUpload.php, mit dem eine im ursprünglichen HTTP-Request übergebene Variable im HTML-Formular enthalten ist und an den Formular-Handler übergeben wird.

Wird also Spezial:Hochladen so aufgerufen (spaces allowed!):

http://vowi.fsinf.at/wiki/Spezial:Hochladen?referer=Artikel Titel

so wird die hochgeladene Datei automatisch von "Prüfung SS07.pdf" in "Artikel Titel - Prüfung SS07.pdf" umbenannt und dem Kommentar der Text

<!-- don't edit below this line -->
[[Artikel Titel]]
[[Kategorie:Materialien]]

hinzugefügt.

Custom Hacks[Bearbeiten | Quelltext bearbeiten]

Die im folgenden zum Download bereitgestellten Patches sind

  1. selbst geschrieben und
  2. meistens nicht über mehrere Versionen von MediaWiki direkt portabel.

Da sich der Code von MediaWiki selbst immer wieder ändert ist es wahrscheinlich, dass die Patches bei zukünftigen (oder früheren) Versionen nicht mehr einfach so angewandt werden können. Die Patches sind daher lediglich als Orientierung gedacht, am besten ist es wohl noch immer, sie händisch einzuspielen.Gesammelt sind alle Patches im /patches-Verzeichnis des SVN-Repositories.

CustomNavBlocks[Bearbeiten | Quelltext bearbeiten]

Ermöglicht die genau Gestaltung der Seitenleiste: Liest den Artikel MediaWiki:CustomNavBlocks worin untereinander geschrieben die Beschreibungen der einzelnen Blöcke in der Sidebar im Format

Artikeltitel|Titel

liegen. Artikeltitel ist ein Artikel im MediaWiki-Namespace der den Blockinhalt beschreibt. Titel wird über dem Block angezeigt. Der Artikelname sollte mit CustomBlock beginnen um nicht mit anderen MediaWiki-Artikeln zu kollidieren.

Installation:

Da MonoBook.php selber keine passenden Hooks hat, kann diese Funktionalitaet nicht als einfache Extension implementiert werden sondern erfordert das patchen von MonoBook.php. Der CustomNavBlocks-Patch befindet sich hier. Weiters muss noch die Datei CustomNavBlocks.php ins extensions/ Verzeichnis kopiert werden (und muss nicht in LocalSettings.php includiert werden, das erledigt bereits der patch auf MonoBook.php).

Category-Sorting[Bearbeiten | Quelltext bearbeiten]

Aus unerfindlichen Gründen sortiert unser MediaWiki viele (aber nicht alle) Seiten einer Kategorie nicht nach Titel sondern zuerst nach Namensraum und dann nach Titel. Außerdem wird in der Artikelliste immer der Namensraum mit angezeigt, was uns nicht besonders gefallen hat.

Unter patches/CategoryPage.php/ befinden sich die entsprechenden patches. Der Sortkey-Patch behebt das Sortierungsproblem, der Display-Patch behebt das Anzeigeproblem.

/wiki/ redirect[Bearbeiten | Quelltext bearbeiten]

Verwendet man die mitgelieferten .htaccess um /wiki/-URLs zu ermöglichen bekommt man Probleme mit Artikel in deren Titel ein "kaufmännisches Und" ('&') verwendet wird. Ein Workaround dazu: 1. In die .htaccess folgendes eintragen:

RewriteEngine off

<Files "wiki">
   ForceType application/x-httpd-php
   Allow from all
</Files>

2. Ins Verzeichnis der MediaWiki-Installation eine Datei 'wiki' mit folgendem Inhalt anlegen:

<?php include_once('index.php');?>

3. in LocalSettings.php

$wgScript           = "$wgScriptPath/index.php";

ersetzen durch

$wgScript           = "$wgScriptPath/wiki";

Common.css[Bearbeiten | Quelltext bearbeiten]

Mittels MediaWiki:Common.css kann sehr einfach neuer CSS-code hinzugefügt werden. Wir verwenden dieses Feature um bei einigen Seiten die Überschrift nicht anzuzeigen (Hauptseite, Spezial:Materialien und Spezial:Materialien_hinzufügen) und um das nötige CSS fuer die schöne Startseite einzubinden.