Manual:Using custom namespaces/de

From MediaWiki.org
Jump to: navigation, search
Hinweis: Diese Seite ist wenigstens zu Teilen falsch.

Namensräume sind softwaremäßig abgegrenzte Bereiche zur Speicherung von Daten. Die Datensätze sind die Artikel, Schlüsselfeld ist der Titel eines Artikels, Standard-Feld ist der Artikelinhalt, zusätzlich können weitere Felder definiert werden (Kapitel, Referenzen, etc).

Contents

Standardnamensräume [edit]

In der MediaWiki-Software gibt es folgende Standardnamensräume:

Nr Namensraum Variable
0 (Artikel)
1 (Diskussion_Artikel)
2 Benutzer
3 Diskussion_Benutzer
4 Wikiname*
5 Diskussion_Wikiname*
6 Bild
7 Diskussion_Bild
8 MediaWiki
9 Diskussion_MediaWiki
10 Vorlage
11 Diskussion_Vorlage
12 Hilfe
13 Diskussion_Hilfe
14 Kategorie
15 Diskussion_Kategorie

Die Namensräume 4 und 5 heißen immer so, wie das jeweilige Wiki-Projekt. Bei Wikipedia also Wikipedia und Diskussion_Wikipedia.

Die Namensräume sind über die Nummer definiert. Die Bezeichnung des Namensraumes kann frei gewählt werden.

Zusätzliche Namensräume in Wikipedia [edit]

In Wikipedia gibt es folgende zusätzliche Namensräume:

Nr Namensraum Variable
100 Portal
101 Diskussion_Portal

Definition von Namensräumen [edit]

Die Namensräume sind in ... definiert: Namensräume sind Benutzergruppen oder Benutzer mit spezifisch festgelegten Werten.

Zusätzliche Namensräume einrichten [edit]

Zusätzliche Namensräume werden in der Datei LocalSettings.php eingerichtet. Dazu ist ein ftp-Zugang zum Server und eine entsprechende Berechtigung notwendig. In Wikipedia sind beispielsweise "Portal" "Diskussion_Portal definiert. Zugang zur LocalSettings.php von Wikipedia haben folgende Personen: ... .

Für die Definition zusätzlicher Namensräume gibt es zwei Verfahren:

zeilenweise [edit]

Vorteil: ...

Beispiel:

$wgExtraNamespaces[100] = "Portal";
$wgExtraNamespaces[101] = "Diskussion_Portal";
$wgExtraNamespaces[102] = "Irgendwas";
$wgExtraNamespaces[103] = "Diskussion_Irgendwas";
$wgExtraNamespaces[104] = "Etwasanderes";
$wgExtraNamespaces[105] = "Diskussion_Etwasanderes";

Achtung: Semikolon nach jeder Zeile.

als Array [edit]

Vorteil: ...

Beispiel:

$wgExtraNamespaces =
        array(100 => "Portal",
              101 => "Diskussion_Portal",
              102 => "Irgendwas",
              103 => "Diskussion_Irgendwas",
              104 => "Etwasanderes",
              105 => "Diskussion_Etwasanderes");

Achtung: Komma nach jeder Zeile, Semikolon am Ende der letzten Zeile, und schließende runde Klammer nicht vergessen.

Verwendung [edit]

Jeder Namensraum kann einer eigenen Gruppe von Regeln unterliegen.

Inhalte [edit]

Welche Inhalte in welche Namensräume gehören und wie diese auszusehen haben, kann in freier Vereinbarung festgelegt werden. Beispielsweise stehen im Namensraum "Hilfe" sinnvollerweise Artikel die bei der Arbeit im Wiki helfen, und Artikel über die MediaWiki-Software (wie dieser) stehen sinnvollerweise im Namensraum "MediaWiki". In Wikipedia ist beispielsweise auch festgelegt, wann ein Artikel im Artikel-Namensraum ein "guter Artikel" ist.

Aber auch der Artikel-Namensraum kann beliebig unterteilt oder erweitert werden. Damit könnten Inhalte gegliedert werden, beispielsweise könnten getrennte Namensräume angelegt werden für Schüler, Lehrer, Eltern, Schulorganisation, Unterrichtsmaterial.

Berechtigungen [edit]

Die Berechtigungen, also wer was in welchem Namensraum darf, werden in der Datei "MediaWiki:Common.js" definiert.

Standardmäßig darf jeder Benutzer in jedem Namensraum:

Lesen read
Schreiben (Bearbeiten) edit
neue Artikel anlegen create
Artikel verschieben move

Die Berechtigungen können unterschiedlich zugeteilt werden, sowohl zu einzelnen Namensräumen, als auch zu einzelnen Benutzergruppen. Beispielsweise können standardmäßig alle Benutzer (auch unangemeldete) Artikel lesen, bearbeiten oder neue Artikel anlegen, aber nur angemeldete Benutzer dürfen Artikel verschieben, und nur Administratoren dürfen Artikel löschen.

Benutzergruppen [edit]

Standardmäßig gibt es folgende Benutzergruppen:

nicht angemeldete IPs -
Angemeldete Benutzer Benutzer
Administratoren Administrator
Bürokraten Bürocrat

Zusätzliche Benutzergruppen einrichten [edit]

Siehe das Beispiel #Vereinswiki und noch komplexer #Schulwiki.

Jede zusätzliche Benutzergruppe wird in der Datei "LocalSettings.php" so definiert:

$wgGroupPermissions['Lehrer'] = null;
$wgGroupPermissions['Schüler'] = null;
$wgGroupPermissions['Irgendeiner'] = null;

Die Namen der Gruppen dürfen höchstens 16 Zeichen lang sein und darunter keine Punkte oder Leerzeichen enthalten.

Namensraumspezifische Rechte an Benutzergruppen vergeben [edit]

Beispielsweise könnte man in einer Schule mit den Benutzergruppen "Schüler" und "Lehrer" und den Namensräumen "Lehrerzimmer" und "Unterricht" folgende Rechte vergeben:

# Rechte für Unterricht (ns103)
$wgGroupPermissions['Schüler']['ns103_read'] = true;
$wgGroupPermissions['Schüler']['ns103_edit'] = true;
$wgGroupPermissions['Schüler']['ns103_create'] = true;
$wgGroupPermissions['sysop']['ns103_delete'] = true;
# Rechte für Lehrerzimmer (ns105)
$wgGroupPermissions['Schüler']['ns105_*'] = false;     #Schüler dürfen nichts
$wgGroupPermissions['Lehrer']['ns105_read'] = true;
$wgGroupPermissions['Lehrer']['ns105_edit'] = true;
$wgGroupPermissions['Lehrer']['ns105_create'] = true;
$wgGroupPermissions['sysop']['ns105_delete'] = true;

Damit das funktioniert, muss die Software-Erweiterung "NamespacePermissions" oder eine ähnliche installiert werden. Diese muss in der Datei "LocalSettings.php" freigeschaltet werden:

require_once( "extensions/NamespacePermissions.php" );

Diese Codezeile muss am Ende der "LocalSettings.php" oder nach den Benutzergruppendefinitionen eingefügt werden.

Beispiel "Vereinswiki" [edit]

Ein Verein möchte eine interaktive Website mit der MediaWiki-Software gestalten. Die Vereinsseite soll öffentlich und für alle lesbar sein. Die Inhalte sollen aber nur von Vereinsmitgliedern erstellt werden dürfen. Auf den Diskussionsseiten sollen aber auch Nicht-Vereinsmitglieder einen Kommentar schreiben dürfen, sollen sich aber dafür anmelden. Vorlagen sollen nur von Administratoren bearbeitet werden. Das gilt auch für die Vereinssatzung und die Gebührenordnung.

Dazu ist die Datei "LocalSettings.php" folgendermaßen zu ergänzen:

# Benutzergruppe "Vereinsmitglied" einrichten
$wgGroupPermissions['Vereinsmitglied'];

# Administratoren dürfen Nutzern den Status "Vereinsmitglied" geben
$wgAddGroups['sysop'] = 'Vereinsmitglied';

# Rechte für nicht angemeldete Benutzer
$wgGroupPermissions['...']['ns*_*'] = false;              #dürfen erst mal nirgends irgendwas
$wgGroupPermissions['...']['ns*_read'] = true;            #aber überall lesen

# Rechte für angemeldete Benutzer
$wgGroupPermissions['user']['ns2_edit'] = true;           #dürfen die Diskussionsseite editieren
$wgGroupPermissions['user']['ns4_edit'] = true;
...
<!-- oder einfacher: $wgGroupPermissions['...']['alle_Diskussionsseiten_edit'] = true; -->

# Rechte für Vereinsmitglieder
$wgGroupPermissions['Vereinsmitglied']['*_edit'] = true;  #darf erst mal überall editieren

# Spezialseiten in der Sidebar ausblenden
....
# Spezialseiten für angemeldete Benutzer einblenden
...

Beispiel "Schulwiki" [edit]

Eine Schule will eine interaktive Website mit der MediaWiki-Software gestalten. Die Schulseite soll öffentlich und für alle lesbar sein. Die Inhalte sollen aber nur von angemeldeten Benutzern erstellt und editiert werden dürfen. Auf den Diskussionsseiten sollen aber auch Nicht-Angemeldete einen Kommentar schreiben dürfen. Schülern, Lehrern, und Eltern sollen einen eigenen Bereich erhalten, in dem zwar alle lesen, aber nur jeweils die Schüler, Lehrer, oder Eltern neue Artikel erstellen und editieren dürfen. Vorlagen sollen nur von Administratoren bearbeitet werden. Die Schulordnung soll nur vom Rektor verändert werden dürfen.

Alle Artikel über den Schulstoff kommen in den "Namensraum 0" und werden diskutiert im "Namensraum 1". Für die Lehrer, für die Schüler und für die Eltern werden zusätzliche Namensräume eingerichtet. Dazu muss der Systemadministrator über seinen ftp-Zugang die Datei "LocalSettings.php" folgendermassen ergänzen:

$wgExtraNamespaces =
        array(100 => "Schüler",
              101 => "Diskussion_Schüler",
              102 => "Lehrer",
              103 => "Diskussion_Lehrer",
              104 => "Eltern",
              105 => "Diskussion_Eltern"
             );

Dann muss die Softwareerweiterung "NamespacePermissions" installiert werden [...].

Dann müssen zusätzliche Benutzergruppen definiert und Rechte vergeben werden. Dies geschieht in der Datei "LocalSettings.php":

Dazu ist die Datei "Mediawiki:Commons.js" folgendermassen zu ergänzen:

# Benutzergruppen einrichten
$wgGroupPermissions['Schüler'];
$wgGroupPermissions['Lehrer'];
$wgGroupPermissions['Rektor'];

# Rektor und Bürokrat dürfen Nutzern einen neuen Status geben
$wgAddGroups['Rektor'] = array( 'Lehrer',
                                'Schüler',
                                'Eltern',
                                'sysop'
                              );
$wgAddGroups['bureaukrat'] = array( 'Lehrer',
                                    'Schüler',
                                    'Eltern',
                                    'sysop'
                                  );

# Rechte für nicht angemeldete Benutzer
$wgGroupPermissions['...']['ns*_*'] = false;              #dürfen erst mal nirgends irgendwas
$wgGroupPermissions['...']['ns0_read'] = true;            #dürfen im Namespace (Main) lesen
...

# Rechte für angemeldete Benutzer
$wgGroupPermissions['user']['ns1_edit'] = true;           #dürfen die Diskussionsseite editieren
$wgGroupPermissions['user']['ns3_edit'] = true;           #dürfen die BenutzerDiskussionsseite editieren
$wgGroupPermissions['user']['ns2_create'] = true;         #dürfen Benutzerseiten erstellen
$wgGroupPermissions['user']['ns2_edit'] = true;           #dürfen Benutzerseiten editieren
<!-- wie geht das, wenn sie nur die eigene Benutzerseite editieren dürfen? -->
...

# Rechte für Schüler im Namensraum "Schüler"
$wgGroupPermissions['Schüler']['ns100_edit'] = true;        #darf editieren
$wgGroupPermissions['Schüler']['ns101_edit'] = true;        #darf editieren
$wgGroupPermissions['Schüler']['ns100_create'] = true;      #darf editieren
$wgGroupPermissions['Schüler']['ns101_create'] = true;      #darf editieren

# Rechte für Lehrer im Namensraum "Lehrer"
$wgGroupPermissions['Lehrer']['ns102_edit'] = true;        #darf editieren
$wgGroupPermissions['Lehrer']['ns103_edit'] = true;        #darf editieren
$wgGroupPermissions['Lehrer']['ns102_create'] = true;      #darf erstellen
$wgGroupPermissions['Lehrer']['ns103_create'] = true;      #darf erstellen

# Rechte für Eltern im Namensraum "Eltern"
$wgGroupPermissions['Eltern']['ns104_edit'] = true;        #darf editieren
$wgGroupPermissions['Eltern']['ns105_edit'] = true;        #darf editieren
$wgGroupPermissions['Eltern']['ns104_create'] = true;      #darf erstellen
$wgGroupPermissions['Eltern']['ns105_create'] = true;      #darf erstellen

# Rechte für Rektor

# Spezialseiten in der Sidebar ausblenden
....
# Spezialseiten für angemeldete Benutzer einblenden
...

# Software-Erweiterung "NamespacePermissions" freischalten
require_once( "extensions/NamespacePermissions.php" );

Geschützter Namensraum [edit]

Die Wikimedia-Software ist nicht geeignet, absolut geschützte Namensräume zu erzeugen.

Dennoch gibt es gute Möglichkeiten, Inhalte vor Unbefugten zu verbergen. Wenn beispielsweise die Lehrer für die Notenkonferenz einen Namensraum "Geheim" möchten, zu dem ausser Lehrern niemand Zugang hat, dann wäre folgendes zu tun:

# geheimen Namensraum einichten
$wgExtraNamespaces[110] = "Geheim";
$wgExtraNamespaces[111] = "Diskussion_Geheim";

# Namensraum "Geheim" für alle sperren
$wgGroupPermissions['*']['ns110_*'] = false;
$wgGroupPermissions['*']['ns111_*'] = false;

# Namensraum "Geheim" nur für Mitglieder der Benutzergruppe "Lehrer" freigeben
$wgGroupPermissions['Lehrer']['ns110_read'] = true;
$wgGroupPermissions['Lehrer']['ns111_read'] = true;
$wgGroupPermissions['Lehrer']['ns110_edit'] = true;
$wgGroupPermissions['Lehrer']['ns111_edit'] = true;
$wgGroupPermissions['Lehrer']['ns110_create'] = true;
$wgGroupPermissions['Lehrer']['ns111_create'] = true;

# aber nur der Rektor und der Bürokrat dürfen löschen
$wgGroupPermissions['Rektor']['ns110_delete'] = true;
$wgGroupPermissions['Rektor']['ns111_delete'] = true;
$wgGroupPermissions['Bürokrat']['ns110_delete'] = true;
$wgGroupPermissions['Bürokrat']['ns111_delete'] = true;

Über "Suchen" und "Spezial:alle_Seite" können die Artikel im Namensraum aber immer noch gefunden und gelesen werden.

Suche einschränken [edit]

So wird die Suche im Namensraum "Geheim" unterbunden:

function powerSearch( &$request ) {
                global $wgUser;
                $arr = array();
                foreach( SearchEngine::searchableNamespaces() as $ns => $name ) {
                        if( $request->getCheck( 'ns' . $ns ) ) {
                                if ( $ns >= 100 ) {
                                    if ( $wgUser->isAllowed("ns{$ns}_read") ) {
                                        $arr[] = $ns;
                                    }
                                } else {
                                        $arr[] = $ns;
                                }
                        }
                }
                return $arr;
        }

Spezial:Alle_Seiten einschränken [edit]

So wird der Zugriff über "Spezial:Alle_Seiten" auf den Namensraum "Geheim" unterbunden:

...

Sidebar ausblenden [edit]

So wird "Spezialseiten" in der Sidebar für nicht angemeldete Benutzer ausgeblendet:

...

Benutzer zu einer Benutzergruppe zuordnen [edit]

Damit nur der Rektor und der Bürokrat den Status "Lehrer" vergeben kann ist noch folgender Code notwendig:

# Bürokraten dürfen Nutzern jeden Status geben
$wgAddGroups['bureaucrat'] = array( 'Lehrer',
                                    'bureaucrat',
                                    'sysop'
                             );
$wgAddGroups['Rektor'] = array( 'Lehrer',
                                'bureaucrat',
                                'sysop'
                             );

Deutsche Hilfe-Seiten [edit]

Englische Hilfe-Seiten [edit]