Adm:Einrichtung Wikis MW1.16

Aus Salzwiki
Zur Navigation springen Zur Suche springen

Dokumentation der Installation von "SalzWiki"


Allgemeines[Bearbeiten]

In diesr Dokumentation werden die Schritte und Extensions beschrieben, die in der Version 1.16.1 umgestzt sind.

Verzeichnisauflisten verboten[Bearbeiten]

apache\conf\httpd.conf

<Directory />
    Options FollowSymLinks -Indexes
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>


Suchmaschinen
[Bearbeiten]

Hschwarz 28.07.2009: Damit die Wikis während der Erprobungsphase nicht von Suchmaschinen durchsucht werden können, wurde eine


ROBOTS.txt in das htdocs-Verzeichnis gestellt.

robots.txt für das Salzwiki, kein Robot soll irgendetwas lesen können

User-agent: *
Disallow: /


Robots.txt neu am 13.2.2011 zu Beginn der Freischaltungder 16er VersionHschwarz 30.08.2010:

im Verzeichniss htdocs

  1. robots.txt für das Salzwiki, Robots sollen nur SalzWiki finden und keine Unterverzeichnisse und auch im Repositorium nicht lesen können.
User-agent: *

Disallow:/salzwiki_1.16.1/bibtex/
Disallow:/salzwiki_1.16.1/bin/
Disallow:/salzwiki_1.16.1/config/
Disallow:/salzwiki_1.16.1/docs/
Disallow:/salzwiki_1.16.1/extensions/
Disallow:/salzwiki_1.16.1/images/
Disallow:/salzwiki_1.16.1/includes/
Disallow:/salzwiki_1.16.1/languages/
Disallow:/salzwiki_1.16.1/maintenance/
Disallow:/salzwiki_1.16.1/math/
Disallow:/salzwiki_1.16.1/serialized/
Disallow:/salzwiki_1.16.1/skins/
Disallow:/salzwiki_1.16.1/t/
Disallow:/salzwiki_1.16.1/tests/
Disallow:/de/salzwiki/bibtex/
Disallow:/de/salzwiki/bin/
Disallow:/de/salzwiki/config/
Disallow:/de/salzwiki/docs/
Disallow:/de/salzwiki/extensions/
Disallow:/de/salzwiki/images/
Disallow:/de/salzwiki/includes/
Disallow:/de/salzwiki/languages/
Disallow:/de/salzwiki/maintenance/
Disallow:/de/salzwiki/math/
Disallow:/de/salzwiki/serialized/
Disallow:/de/salzwiki/skins/
Disallow:/de/salzwiki/t/
Disallow:/de/salzwiki/tests/
Disallow:/repository_1.16.1/
Disallow:/repository/
Disallow:/repository-test/
Disallow:/repository-test02/
Disallow:/repository-test-20100712/
Disallow:/repository-Kopie/
Disallow:/salzwiki-test/
Disallow:/salzwiki-test02/
Disallow:/salzwiki-test16/
Disallow:/salzwiki-test-20100712/
Disallow:/Test/


Im Verzeichnis de/salzWiki

  1. robots.txt für das Salzwiki,Robots sollen nur SalzWiki finden und keien Unterverzeichnisse lesen

User-agent: *

Disallow:/bibtex/ Disallow:/bin/ Disallow:/config/ Disallow:/docs/ Disallow:/extensions/ Disallow:/images/ Disallow:/includes/ Disallow:/languages/ Disallow:/maintenance/ Disallow:/math/ Disallow:/serialized/ Disallow:/skins/ Disallow:/t/ Disallow:/tests/

......................................................................................


Edit by Risos: Das Verhindern von Robots ist für Google eine "verdächtige" Seite und kommt in die Blacklist (im Firefox eine große rote Warnseite für den Anwender), da Google diese Seiten nicht ausspähen kann (Google zeigt auch bestimme Seiten garnicht an, wenn sie Google nicht "gefallen"!). Dies ist wohl das resultat der macht von Google durch uns. Abhilfe schafft hier die Einstellung im Firefox, dass man nicht auf verdächtige Seiten hingewiesen werden soll - doch wer weiß das schon?

Hier müsste es explizit jetzt und später mit einem resetteten Firefox gestestet werden.

E-Mail-Versand[Bearbeiten]

die "localSettings.php" wurde in den Verzeichnissen

  • salzwiki_1.16.1/
  • repository_1.16.1/

folgendermaßen für E-Mail-Versand angepasst:

E-Mail-Versand angepasst 09.10.2009 G. Werner

/*

$wgEmergencyContact = "schwarz@hornemann-institut.de";

$wgPasswordSender = "schwarz@hornemann-institut.de";

  • /

$wgEmergencyContact = "service@salzwiki.hawk-hhg.de";

$wgPasswordSender = "service@salzwiki.hawk-hhg.de";

$wgSMTP = array(

'host' => "10.104.1.2",

'IDHost' => "hawk-hhg.de",

'port' => "25",

'auth' => true,

'username' => "service@salzwiki.hawk-hhg.de",

'password' => "********"

);

SalzWiki[Bearbeiten]

Datenbank mittels XAMPP und phpmyAdmin anlegen:[Bearbeiten]

HSchwarz 13.07.2009: Es muss vor der Installation zuerst eine Datenbank angelegt werden.

salzwiki_1.16.1

Benutzer: hschwarz

Host: localhost

Global Rechte: all privileges

Grant : ja database table prefix: sw_

Mediawiki Installieren[Bearbeiten]

Nach Installationsanweisung mit folgenden Namen: „Salzwiki"


Lizenz für das Fachwiki[Bearbeiten]

HSchwarz 13.07.2009: Einfügen in LocalSettings.php

## For attaching licensing metadata to pages, and displaying an

## appropriate copyright notice / icon. GNU Free Documentation

## License and Creative Commons licenses are supported so far.

$wgEnableCreativeCommonsRdf = true;

$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright

$wgRightsUrl = "http://creativecommons.org/licenses/by-nc-sa/3.0/";

$wgRightsText = "Attribution-Noncommercial-Share Alike 3.0 Unported";

$wgRightsIcon = "http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png";

# $wgRightsCode = "[license_code]"; # Not yet used

Style/Skin[Bearbeiten]

Das Design für das Salzwiki basiert auf dem Stil (Skin) "monobook".
Dazu wird im Verzeichnis "skins/" das Verzeichnis "monobook/" sowie die Dateien "MonoBook.php" und "MonoBook.deps.php" kopiert und die Kopien umbenannt in "monobooksw" sowie in "MonoBookSW.php" und "MonoBookSW.deps.php".

In der Datei "MonoBookSW.php" werden dann alle Verweise und Bezeichnungen von "monobook" zu "monobooksw" geändert sowie die Klassennamen "SkinMonoBook" und "MonoBookTemplate" bei der Klassendefinition und den Klassenverwendungen geändert zu "SkinMonoBookSW" und "MonoBookSWTemplate".

Im Verzeichnis "monobooksw/" wird die Datei "headbg.jpg" durch ein eigenes Hintergrundbild mit gleichem Dateinamen ersetzt.
In der Datei "main.css" werden Anpassungen für Farben u. a. vorgenommen.

In der Datei "LocalSettings.php" heißt die entsprechende Zuweisung dann
$wgDefaultSkin = 'monobooksw';.

[Bearbeiten]

Die Datei für das Logo ist hochzuladen und einzufügen in LocalSettings.php:
##LOGO
$wgLogo = "/salzwiki_1.16.1/skins/common/images/Logo.png";

Logos mit Verlinkung (und Footerlinks angepasst)[Bearbeiten]

Änderungen in MonoBookSW.php: Zeile 213 - 239

 	<!-- end of banner1 -->
		</div><!-- end of the left (by default at least) column -->

			<div class="visualClear"></div>
			<div id="footer">
			
<!-- Logos der HAWK und des Hornemann Instituts zentral in den footer. Rudimentaere Anpassung der Bilder!! Zeitsparend-->

<?php
		if($this->data['poweredbyico']) { ?>
				<div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div>
<?php 	}
		if($this->data['copyrightico']) { ?>
				<div id="f-poweredbyico"><?php $this->html('copyrightico') ?></div>
<?php 	}
		if($this->data['copyrightico']) { ?>
				<div id="f-copyrightico">
				<a href="http://www.hornemann-institut.de/">
				<img src="/[salzwiki_1.16.1]/skins/common/images/HI.png" width=91 height=30>
				</a>
				   
				<a href="http://www.hawk-hhg.de/">
				<img src="/[salzwiki_1.16.1]/skins/common/images/HAWK.png" height=30 width=84>
				</a>
				</div>
<?php	}

		// Generate additional footer links "'copyright',  'viewcount', 'numberofwatchingusers'," entfernt!
		$footerlinks = array(
			'lastmod',  'credits',
			'privacy', 'about', 'disclaimer', 'tagline', 'Hallo', 
		);
		$validFooterLinks = array();
		foreach( $footerlinks as $aLink ) {
			if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
				$validFooterLinks[] = $aLink;
			}
		}
		if ( count( $validFooterLinks ) > 0 ) {
?> 			<ul id="f-list">

Favicon[Bearbeiten]

Damit ein Favicon dargestellt wird, ist die datei in das Verzeichnis "../salzwiki_1.16.1" hochzuladen und folgender Eintrag in den localsettings.php vorzunehmen:

$wgFavicon="/salzwiki_1.16.1/SalzWiki.ico";

Darstellung in einem Frame[Bearbeiten]

Seit Version 1.16.1 gibt es Vorkehrungen gegen CrossSiteScripting, was Seiten, die in Frames dargestellt werden und somit die Weiterleitung des Salzwiki-Hosters zur IP des HAWK-Rechenzentrumsservers, betrifft.

Die neuen Versionen des Internet Explorers und des Firefox zeigen eine Fehlermeldung, wenn man sich anmelden möchte, da der Inhalt in einem Frame angezeigt werden soll. Meist hilft die Nutzung eines Links zur IP-Seite weiter.

Dies ist zu umgehen, d.h. es tritt keine Fehlermeldung auf, wenn man in den localsetting.php einfügt:

$wgEditPageFrameOptions = 'false'; 

Hierzu näheres unter http://webcache.googleusercontent.com/search?q=cache:H1KG7SKYpvoJ:100thpriest.appspot.com/www.mediawiki.org/wiki/Project:Support_desk+mediawiki+1.16.1+frame+warnung+anmelden&cd=3&hl=de&ct=clnk&gl=de&client=firefox-a&source=www.google.de

* The X-Frame-Options header to send on pages sensitive to clickjacking
* attacks, such as edit pages. This prevents those pages from being displayed
* in a frame or iframe. The options are:
*
*   - 'DENY': Do not allow framing. This is recommended for most wikis.
*
*   - 'SAMEORIGIN': Allow framing by pages on the same domain. This can be used
*         to allow framing within a trusted domain. This is insecure if there
*         is a page on the same domain which allows framing of arbitrary URLs.
*
*   - false: Allow all framing. This opens up the wiki to XSS attacks and thus
*         full compromise of local user accounts. Private wikis behind a
*         corporate firewall are especially vulnerable. This is not
*         recommended.
*
* For extra safety, set $wgBreakFrames = true, to prevent framing on all pages,
* not just edit pages. 

Berechtigungen (siehe weiter unten)[Bearbeiten]

Sidebar anpassen (Wiki-Code, JS)[Bearbeiten]

Achtung: Funktioniert nur bei Browsern mit aktiviertem JavaScript und muss in "includes/Skin.php" nach jedem mediawiki-Update auf Vorhandensein überprüft werden!

Die Sidebar im Bereich Werkzeuge wird mit Hilfe von Javascript für alle Gruppen außer "autor", "admin" und "forschung" manipuliert.

  1. Die Erweiterung "JavaScript" einbinden - siehe hierzu weiter unten bei "Extensions/JavaScript".
  1. Die Datei "customizeSidebar.js" aus einem aktuellen Salzwiki in das Extensions-Unterverzeichnis "JavaScript" kopieren.
  1. Die Datei "include/Skin.php" für linke Navigation wie nachfolgend beschrieben anpassen.

Um die Navigation-Box anzupassen wurden folgende Änderungen an der "include/Skin.php" vorgenommen:

In der Funktion: "function buildSidebar()" In der zweiten Zeile die globale Variable "$wgUser" hinzufügen, um später die Gruppenrechte abzufragen zu können.

global $wgLang, $wgUser;

Nach der Zeile mit "$bar = array();" Z.2085 wird nun der folgende Code eingefügt:

//$wgHooks['SkinBuildSidebar'][] = 'customizeSidebar';

function customizeSidebar( $sidebar, &$bar) {
    global $wgUser;
	$groups = $wgUser->getEffectiveGroups();
	## add here admin support
	if (in_array("autor", $groups) || in_array("Administrators", $groups) || in_array("forschung", $groups)) {
		//$lines = explode( "\n", wfMsgForContent( 'autor_sidebar' ) );
		$sidebar->addToSidebar( &$bar, 'autor_sidebar' );
	} else {
		//$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );
		$sidebar->addToSidebar( &$bar, 'sidebar' );
	}
}

Die Zeile "$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );" muss auskommentiert oder gelöscht werden.

Nun gibt es zwei Sidebars die man unterschiedlich "bestücken" kann.

ACHTUNG: Wenn das Mediawiki aktualisiert wird, muss diese Änderung wieder eingefügt werden, um die Funktionalität zu erhalten! Deshalb ist von der geänderten Datei "Skin.php" zusätzlich eine Kopie "SkinSW.php" im Verzeichnis "includes" zu speichern.

Für normale angemeldete User: http://193.175.110.91/salzwiki_1.16.1/index.php/MediaWiki:Sidebar

Für Autoren, Administratoren und Forscher: http://193.175.110.91/salzwiki_1.16.1/index.php/MediaWiki:Autor_sidebar

Lizenzvorlagen[Bearbeiten]

Vorlagen = Templates finden sich beispielhaft auf der Seite Vorlagen dargestellt.

Die einzelnen Vorlagen sind im Namensraum "Vorlagen" zu finden. Für jede Vorlage ist eine eigene Wiki-Seite zu erstellen, um diese Vorlage dann im Wiki mit {{Vorlagenname}} verwenden zu können. Die Vorlage ist anschließend auf der Seite "Vorlagen" beispielhaft aufzuführen.

Für Lizenzvorlagen wurde eine neue Kategorie "Kategorie:Lizenzenvorlagen" erstellt.

Hilfeseiten[Bearbeiten]

Muss noch überarbeitet werden!!!

Deutsche und Englische Hilfeseiten von Wikimedia importiert (Risos 20.08.09) (Aktualisiert)

Hilfe:Contents | Hilfe/Contents/de |(einige Bilder fehlen noch)

Templates der Hilfeseiten Korrigiert, Bilder unter Beachtung der Lizenzen hochgeladen

XEB Extra Edit Buttons (Wiki-Code, JS)[Bearbeiten]

Achtung: Funktioniert nur bei Browsern mit aktiviertem JavaScript und muss in "includes/EditPage.php" nach jedem mediawiki-Update auf Vorhandensein überprüft werden!

Die Funktionen bzw. verfügbaren Schaltflächensymbole des Editors wurden durch nachfolgenden Scriptcode erweitert.

Die im Code benannten Bilder "Button_[...].png" im Verzeichnis skins/common/images/" speichern.

Den Code im Verzeichnis "includes" in der "EditPage.php" bei der Array-Variablen "$Toolarray" (ab Zeile 2110) am Ende einfügen (Z. 2210) - Komma nicht vergessen! - (siehe auch http://meta.wikimedia.org/wiki/Help_talk:Edit_toolbar). Hier können noch weitere eigene Funktionen implementiert werden.

			,
			array(	'image'	=> "Button_redirect.png",
				'id'    => "Button_redirect",
				'tip'	=> "Redirect",
				'open'	=> "#REDIRECT [[",
				'close'	=> "]]",
				'sample'=> "Insert text"
			),
			array(	'image'	=> "Button_strike.png",
				'id'    => "Button_strike",
				'tip'	=> "Strike",
				'open'	=> "<s>",
				'close'	=> "</s>",
				'sample'=> "Strike-through text"
			),
			array(	'image'	=> "Button_enter.png",
				'id'    => "Button_enter",
				'tip'	=> "Line break",
				'open'	=> "<br />",
				'close'	=> "",
				'sample'=> ""
			),
			array(	'image'	=> "Button_upper_letter.png",
				'id'    => "Button_upper_letter",
				'tip'	=> "Superscript",
				'open'	=> "<sup>",
				'close'	=> "</sup>",
				'sample'=> "Superscript text"
			),
			array(	'image'	=> "Button_lower_letter.png",
				'id'    => "Button_lower_letter",
				'tip'	=> "Subscript",
				'open'	=> "<sub>",
				'close'	=> "</sub>",
				'sample'=> "Subscript text"
			),
			array(	'image'	=> "Button_small.png",
				'id'    => "Button_small",
				'tip'	=> "Small",
				'open'	=> "<small>",
				'close'	=> "</small>",
				'sample'=> "Small Text"
			),
			array(	'image'	=> "Button_hide_comment.png",
				'id'    => "Button_hide_comment",
				'tip'	=> "Insert hidden Comment",
				'open'	=> "<!-- ",
				'close'	=> " -->",
				'sample'=> "Comment"
			),
			array(	'image'	=> "Button_blockquote.png",
				'id'    => "Button_blockquote",
				'tip'	=> "Insert block of quoted text",
				'open'	=> "<blockquote>\\n",
				'close'	=> "\\n</blockquote>",
				'sample'=> "Block quote"
			),
			array(	'image'	=> "Button_insert_table.png",
				'id'    => "Button_insert_table",
				'tip'	=> "Insert a table",
				'open'	=> '{| class="wikitable"\\n|-\\n',
				'close'	=> "\\n|}",
				'sample'=> "! header 1\n! header 2\n! header 3\n|-\n| row 1, cell 1\n| row 1, cell 2\n| row 1, cell 3\n|-\n| row 2, cell 1\n| row 2, cell 2\n| row 2, cell 3"
			),
			array(	'image'	=> "Button_reflink.png",
				'id'    => "Button_reflink",
				'tip'	=> "Insert a reference",
				'open'	=> "<ref>",
				'close'	=> "</ref>",
				'sample'=> "Insert footnote text here"
			)

Je nach Sprachvariante sind die Texte hinter "tip" und "sample" zu übersetzen.

ACHTUNG: Nach jedem mediawiki-Update muss überprüft werden, ob die vorgenommene Änderung in der Datei "EditPage.php" noch existiert und funktioniert. Deshalb ist von der Datei eine Kopie "EditPageSW.php" im Verzeichnis "inludes" zu speichern. Sollten die Übersetzungen in der entsprechenden Übersetzungsdatei statt in "EditPage.php" hinzugefügt werden, wäre die Übersetzungsdatei nach jedem mediawiki-Update ebenfalls zu überprüfen.

Zugangsberechtigungen[Bearbeiten]

Vergabe von Nutzerrechten durch den Hauptadministrator (sysop)[Bearbeiten]

Damit die unten beschriebenen Rechtevergaben umgesetzt werden können, erhält der Sysop zunächst den Zugang zu den SpecialPages. Folgende Zeile ist in "LocalSettings.php" einzufügen:

$wgGroupPermissions['sysop']['restrictusers'] = true; ##HJschwarz 22.02.2011, Ersteinstellung für "restrictusers" zum Einstellen der Rechte	

Anschließend über SpecialPages->UserRightsManagement->[Username] die Rechte erweitern und alle Gruppen aktivieren.

Benutzer-Rechte in SalzWiki[Bearbeiten]

Die aktuelle Benutzerrechteschema ist:

# alle duerfen '''nur''' lesen
$wgGroupPermissions['*']['read'] = true;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;	
$wgGroupPermissions['*']['createtalk'] = false;	
$wgGroupPermissions['*']['writeapi'] = false;	
# Benutzer duerfen: lesen, Diskussionsseiten erstellen und darin schreiben
$wgGroupPermissions['user']['read']             = true;
$wgGroupPermissions['user']['createtalk']       = true;
$wgGroupPermissions['user']['move']            = false;	
$wgGroupPermissions['user']['move-rootuserpages']            = false;
$wgGroupPermissions['user']['move-subpages']            = false;
$wgGroupPermissions['user']['edit']            = true;		
$wgGroupPermissions['user']['createpage']      = false;			
$wgGroupPermissions['user']['upload']          = false;		
$wgGroupPermissions['user']['reupload']        = false;		
$wgGroupPermissions['user']['reupload-shared'] = false;		
$wgGroupPermissions['user']['minoredit']       = false;		
$wgGroupPermissions['user']['purge']           = false; 	
#$wgGroupPermissions['emailconfirmed']['emailconfirmed'] = true;
# Spezialgruppe Autor
$wgGroupPermissions['autor']['emailconfirmed'] = true;
$wgGroupPermissions['autor']['createpage'] = true;
$wgGroupPermissions['autor']['createtalk'] = true;
$wgGroupPermissions['autor']['edit'] = true;
$wgGroupPermissions['autor']['protect'] = true;
$wgGroupPermissions['autor']['editprotected'] = true;
$wgGroupPermissions['autor']['read'] = true;
$wgGroupPermissions['autor']['upload'] = true;
$wgGroupPermissions['autor']['move'] = true;


Spezialseiten dürfen nur Autoren lesen[Bearbeiten]

Diese Änderungen dienen dazu, dass nur Autoren die SpecialPages lesen dürfen und keine normalen Nutzer oder angemeldeten Nutzer.

Achtung: Muss in "includes/SpecialPage.php" nach jedem mediawiki-Update auf Vorhandensein überprüft werden!

Im Verzeichnis "includes" in der Datei "SpecialPage.php" im Array "static public $mList" in zeile 187 bei der Array-Variablen "Specialpages" den Wert "restrictusers" einfügen:

'Specialpages'              => array( 'UnlistedSpecialPage', 'Specialpages', 'restrictusers'),

in LocalSettings.php einfügen:

$wgGroupPermissions['autor']['restrictusers'] = true;

und folgende Zeile wieder auskommentieren:

$wgGroupPermissions['sysop']['restrictusers'] = true;


Extensions[Bearbeiten]

JavaScript[Bearbeiten]

Diese Erweiterung dient dazu, den Navigationsbereich "Werkzeuge" in der Sidebar entsprechend dem Anmeldestatus zu manipulieren - siehe hierzu Sidebar anpassen.

include("$IP/extensions/JavaScript/JavaScript.php");

Die Erweiterung funktionierte leider nicht out of the box. Deshalb wurden von S. Reher (25.07.2010) Änderungen vorgenommen. Ab Zeile 32 wurden in der Datei "JavaScript.php" die folgenden Zeilen hinzugefügt, um auf dem Window-System die Pfade korrekt anzupassen:

  $slashPos = strpos('/',$wgScriptPath);
  if ($slashPos==0) $wgScriptPath_tmp = substr_replace($wgScriptPath ,"",0, 1);
  $file = str_replace('\\','/', $file);
  $pos = strpos($file, $wgScriptPath_tmp);
  $length = strlen($file)-$pos;
  $file = substr($file, $pos, $length);
  $out->addScript( "<script src='/$file' type='$wgJsMimeType'></script>" );

Das Javascript lädt alle Dateien aus dem Verzeichnis, in diesem Falle die Datei "customizeSidebar.js". Das Javascript entfernt aufgrund der folgenden Zeilen Einträge aus dem Werkzeug-Kasten:

ModifySidebar("remove", "toolbox", "Spezialseiten", wgServer+wgScriptPath+"/index.php/Spezial:Spezialseiten");

Wann dies aktiv wird, wird über die folgenden Zeilen geregelt:

/*if the user is not autor or admin, there should be displayed only necessary links*/
if ( wgUserGroups.Contains('autor') || wgUserGroups.Contains('Administrators') || wgUserGroups.Contains('forschung')) {
/*if the user is guest, there should be displayed only necessary links*/
if (wgUserName == null) {

AccessControl[Bearbeiten]

Die Erweiterung dient dazu, Seiten beispielsweise auch zum Lesen zu sperren, wenn wie im Repositorium Inhalte zwar bereits bearbeitet und ins Wiki eingestellt werden, aber noch nicht öffentlich zugänglich sein sollen.

  • Die Extension wird heruntergeladen und nach dem Extrahieren in das Verzeichnis "extensions" kopiert.
  • Einfügen in Datei "LocalSettings.php":
require_once("$IP/extensions/accesscontrol-1.1/AccessControl.php");

Der Zugang auf eine Seite wird durch Eingabe einer Nutzergruppe (Beispiel: "parole") erlaubt, die vorher z.B. in "LocalSettings.php" definiert wird:

$wgGroupPermissions['parole']['read'] = true;

Auf der jeweiligen Seite wird, damit nur Mitglieder der Gruppe "parole" Zugang zur Seite erhalten, oben folgende Zeile eingegeben:

<accesscontrol>parole</accesscontrol>

Siehe dazu auch http://www.mediawiki.org/wiki/Extension:AccessControl

Approved_Revs[Bearbeiten]

Mit dieser Erweiterung können Revisionen (Versionen einer SalzWiki-Seite) bestätigt oder abgelehnt werden.

Installation der Erweiterung "Approved_Revs"

  • Die Extension wird heruntergeladen und nach dem Extrahieren in das Extensions-Verzeichnis von SalzWiki kopiert.
  • Anlage einer Datenbank-Tabelle: Sie müssen für diese Extension eine Datenbanktabelle anlegen mit dem Namen "approved_revs". Hierzu gibt es zwei Möglichkeiten: Entweder Sie benutzen das Skript "update.php" in MediaWiki's /maintenance oder gehen direkt in die Datenbank und erstellen sie dort mit einem SQL Befehl, den Sie im File ApprovedRevs.sql finden. Achten Sie dabei auf ein mögliches DBprefix.
  • Konfiguration von den Approved_Revs in der LocalSettings.php
require_once( "$IP/extensions/ApprovedRevs/ApprovedRevs.php" );
Approved Revs-1.jpg

Funktionsweise

Man kann Revisionen bestätigen - oder wieder ablehnen. Die bestätigte Version wird allen Usern angezeigt.

  • Aktivierung von Approved_Revs, z.B. alle Autoren können Seiten als geprüft markieren
$wgGroupPermissions['autor']['approverevisions'] = true;
  • Für alle wird der Approved_Revs Link deaktiviert.
$wgGroupPermissions['*']['viewlinktolatest'] = false;
  • Für alle Autoren werden diese wieder eingeblendet
$wgGroupPermissions['autor']['viewlinktolatest'] = true;
$wgGroupPermissions['redakteure']['viewlinktolatest'] = true;

Diejenigen, die das Recht "viewlinktolatest" haben, sehen einen Link unter dem Titel des Artikels, um zur aktuellsten Version zu kommen.
Diejenigen, die das Recht "approverevisions" haben, sehen die "Bestätigen" und "Ablehnen" Links in der History (Versionen).

Nur Administratoren, d.h. Redakteure können eine Version bestätigen bzw. Ablehnen!

Ausblenden von der History (wurde nicht aktiviert)

Wenn nur die Autoren, Redakteure und Admins die History sehen sollen ist Folgendes in der Datei "LocalSettings.php" zu ergänzen:

## Bei der angegebenen User-Gruppe wird der Versionen-Button angezeigt. Der Admin sieht diesen immer!
$groupToShowHistory = 'autor';
## Code um die Histroy zu verstecken - sreher 20101105
$wgHooks['SkinTemplateContentActions'][] = 'removeHistory';
function removeHistory( $content_actions ) {
global $wgUser, $groupToShowHistory;
# print_r ($wgUser);
if ( ! (in_array( $groupToShowHistory, $wgUser->mGroups ) or in_array( 'sysop', $wgUser-
>mGroups) ) ) {
#print "drin!";
unset( $content_actions['history'] ); // only this to remove an action
}
return true;
}

DynamicPagesList[Bearbeiten]

include("$IP/extensions/DynamicPageList/DynamicPageList2.php");

Zur Funktionsweise und den umfangreichen Einsatzmöglichkeiten siehe auch http://semeb.com/dpldemo/index.php?title=Main_Page.

Bibliography[Bearbeiten]

Die Extension "Bibliography" ersetzt die Erweiterung "BibWiki" (http://www.mediawiki.org/wiki/Extension:Bibwiki), da "BibWiki" Probleme bereitete, und wird zum Erstellen von Literaturhinweisen und der Bibliographie eingesetzt. "Bibliography" wurde unter http://www.mediawiki.org/wiki/Extension:Bibliography heruntergeladen und in den Ordner "Extensions" kopiert. Achtung: Diese Erweiterung wird inzwischen nicht mehr als Download angeboten und auch nicht mehr weiter entwickelt.

  • Erweiterung "Bibliography" aus einem bestehenden (Test-)Wiki in das Verzeichnis "Extensions" kopieren.
  • In "LocalSettings.php" einfügen:
require_once("$IP/extensions/bibliography/bibliography.php");

Das das bibtex Feld, "Abstracts" die Laufzeit der Extension deutlich erhört, wurde dieses Feld ausgeklammert, da es auch nicht benötigt wird.

Die Publikationstypen und auch die Bibtex-Variablen, die vorgeschlagen werden, wenn keine Literatur zu einer angegebenen Literaturstelle in der Bibliography vorhanden ist, wurde angepasst. Anpassungen in der Datei bibtex_fields.php.

Damit eine neue Literaturstelle mit einer Überschrift 2. Grades dargestellt wird, wurde die Datei bibliography.php in Zeile 16 angepasst:

		$temp_textbox1= "==$entry_name==\n<bibentry>\n@".$entry_type.'{'.$entry_id.",\n";


Zur Darstellung der Literatureinträge erfolgrten weitere Anpassungen der Ausgaben ider bibliography.php:

Zeile 56ff:

$temp_return.="<a href='$wgScriptPath/?title=literature:Bibliography&action=edit&section=0&bibliography=new&entry_id=$entry_id&entry_name=$entry_name&entry_type=".rawurlencode($val)."'>$val</a>, "; 

Zeilen 194ff:

while(list($key,$val)=each($bibtex_entry_fields))
	$$key=stripslashes($val); //variable variables now you have all the keys assigned as variable names, $author, $title etc...
	if(isset($author) && $author!="") $author="$author ";
	if(isset($editor) && $editor!="") $author="$editor (eds.)";
	if(isset($year) && $year!="") $year="$year";
 	$return.="<a href='http://193.175.110.91/salzwiki_1.16.1/index.php/$bibtex_entry->key_identifier'>$author ($year): </a>";
	##	    if(isset($bibtex_entry->key_identifier) && $bibtex_entry->key_identifier!="") $return.= "$bibtex_entry->key_identifier";//Ausgabe ID
	if(isset($title) && $title!="") $return.="$title";    // HSChwarz Ausgabeformet geändert 18.10.2009
	if(isset($booktitle) && $booktitle!="") $return.=". $booktitle";
	if(isset($titleaddon) && $titleaddon!="") $return.=". $titleaddon";
	if(isset($crossref) && $crossref!="") $return.=". In: <a href='http://193.175.110.91/salzwiki_1.16.1/index.php/Literature:Bibliography#$crossref'>$crossref</a>";
	if(isset($school) && $school!="") $return.=", $school";
	if(isset($howpublished) && $howpublished!="") $return.=" $howpublished";
	if(isset($journal) && $journal!="") $return.=".<i> In: $journal</i>";
	if(isset($publisher) && $publisher!="") $return.=", $publisher";
	if(isset($address) && $address!="") $return.=", $address";
	if(isset($volume) && $volume!="") $return.=", <b>$volume</b>";
	if(isset($number ) && $number !="") $return.=" ($number)";
	if(isset($series) && $series!="") $return.=" $series";
	if(isset($edition) && $edition!="") $return.=", $edition";
	if(isset($pages) && $pages!="") $return.=", pp. $pages";
	if(isset($doi) && $doi!="") $return.=", DOI: <a href='http://dx.doi.org/$doi'>$doi</a>";
	if(isset($url) && $url!="") $return.=", link: <a href='$url'>$url</a>";
	if(isset($source) && $source!="") $return.=", link: <a href='$source'>$source</a>";
	if(isset($fulltext) && $fulltext!="") $return.=", <a href='http://193.175.110.91/salzwiki_1.16.1/index.php $fulltext'>Volltext</a>";

Zeilen 267ff:

switch($type){	
	case "intext":	// Within a written article/paper
		switch($entry["entry_type"]){
		case "book":
		if(isset($entry["year"]) && $entry["year"]!="") $entry_year=" ({$entry["year"]})";
		if(isset($entry["publisher"]) && $entry["publisher"]!="") $entry_publisher=" <i>{$entry["publisher"]}.</i> ";
		$return="{$entry["author"]}$entry_year. <br>{$entry["title"]}.$entry_publisher".$bibliography_url;
		break;
	case "article":
		$return="{$entry["author"]} ({$entry["year"]}). <br>{$entry["title"]} {$entry["journal"]}.".$bibliography_url;
		break;
	case "misc":
		$return="{$entry["author"]} ({$entry["year"]}). <br>{$entry["title"]}.".$bibliography_url;
		break;
	break;
	default: //inproceedings, phdthesis, masterthesis, techreport, unpublished
		$return="{$entry["author"]} ({$entry["year"]}). <br><i>{$entry["title"]}</i>.".$bibliography_url;
		break;
}
return stripslashes($return);
break;
		 
	case "list":	// As a list bei bibprint
		$start="<span  class='bibprint'>";
		$end="</span>\n";
		if(!isset($entry["entry_name"]) || $entry["entry_name"]=="") //whenever an entry name is not available show at least the entry_id
		$entry["entry_name"]=$entry_id;
		$entry_name_url="<span  class='bibprintwide' ><a href='$wgScriptPath/index.php?title=literature:Bibliography#".str_replace(' ','_',$entry_id)."'>[".$entry["entry_name"]."]:</a></span>"; //  Literaturliste auf der Seite Hschwarz Namensraum ergänzt 18.10.2009

	switch($entry["entry_type"]){
	case "book":
		if(isset($entry["author"]) && $entry["author"]!="") $entry_author=" {$entry["author"]} ";
		if(isset($entry["editor"]) && $entry["editor"]!="") $entry_author=" {$entry["editor"]} (eds.)";
		if(isset($entry["year"]) && $entry["year"]!="") $entry_year=" ({$entry["year"]})";
		if(isset($entry["address"]) && $entry["address"]!="") $entry_address=", ({$entry["address"]})";
		if(isset($entry["titleaddon"]) && $entry["titleaddon"]!="") $entry_titleaddon=". ({$entry["titleaddon"]})";
		if(isset($entry["publisher"]) && $entry["publisher"]!="") $entry_publisher=". <i>{$entry["publisher"]}</i>";
		if(isset($entry["pages"]) && $entry["pages"]!="") $entry_pages=", pp. {$entry["pages"]}";
					
		$return="$entry_name_url $start<a href='http://193.175.110.91/salzwiki_1.16.1/index.php/$entry_id'>$entry_author $entry_year: </a>  {$entry["title"]}$entry_titleaddon$entry_publisher$entry_address$entry_pages. $end";
//				$return="$entry_name_url $start $entry_author $entry_year: {$entry["title"]}$entry_titleaddon$entry_publisher$entry_pages. $end";
		break;
	case "article":
		if(isset($entry["volume"]) && $entry["volume"]!="") $entry_volume=", <b>{$entry["volume"]}</b>";
		if(isset($entry["number"]) && $entry["number"]!="") $entry_number=" ({$entry["number"]})";
		if(isset($entry["pages"]) && $entry["pages"]!="") $entry_pages=", pp. {$entry["pages"]}";
		if(isset($entry["titleaddon"]) && $entry["titleaddon"]!="") $entry_titleaddon="- {$entry["titleaddon"]}";
		if(isset($entry["url"]) && $entry["url"]!="") $entry_url=", <a href='{$entry["url"]}'>URL</a>";
		if(isset($entry["doi"]) && $entry["doi"]!="") $entry_doi=", <a href='http://dx.doi.org/{$entry["doi"]}'>DOI</a>";
		if(isset($entry["fulltext"]) && $entry["fulltext"]!="") $entry_fulltext=", <a href='http://193.175.110.91/salzwiki_1.16.1/index.php/{$entry["fulltext"]}'>Volltext</a>";
		if(isset($entry["journal"]) && $entry["journal"]!=""){$entry_journal="{$entry["journal"]} ";
		}
		else { //if yournal is not set, then there is no point in setting volume, number, pages
			$entry_volume="";
			$entry_pages="";
			$entry_number="";
		}
		$return="$entry_name_url $start <a href='http://193.175.110.91/salzwiki_1.16.1/index.php/$entry_id'>{$entry["author"]} ({$entry["year"]}) </a>: {$entry["title"]}$entry_titleaddon. In: <i>{$entry["journal"]}</i>$entry_volume$entry_number$entry_pages$entry_doi$entry_fulltext$entry_url.$end";
		break;
	case "misc":
		if(isset($entry["author"]) && $entry["author"]!="") $entry_author=" {$entry["author"]} ";
		if(isset($entry["editor"]) && $entry["editor"]!="") $entry_author=" {$entry["editor"]} (eds.)";
		if(isset($entry["year"]) && $entry["year"]!="") $entry_year=" ({$entry["year"]})";
		if(isset($entry["pages"]) && $entry["pages"]!="") $entry_pages=", pp. {$entry["pages"]}";
		if(isset($entry["titleaddon"]) && $entry["titleaddon"]!="") $entry_titleaddon=". {$entry["titleaddon"]}";
		if(isset($entry["howpublished"]) && $entry["howpublished"]!="") $entry_howpublished=". ({$entry["howpublished"]})";
		if(isset($entry["fulltext"]) && $entry["fulltext"]!="") $entry_fulltext=", <a href='http://193.175.110.91/salzwiki_1.16.1//index.php/{$entry["fulltext"]}'> Volltext</a>";
		$return="$entry_name_url $start <a href='http://193.175.110.91/salzwiki_1.16.1//index.php/$entry_id'>$entry_author $entry_year: </a> {$entry["title"]}$entry_titleaddon$entry_howpublished{$entry["address"]}$entry_pages$entry_fulltext.$end";
		break;
					
//masterthesis test					
	case "mastersthesis":
		if(isset($entry["author"]) && $entry["author"]!="") $entry_author=" {$entry["author"]} ";
		if(isset($entry["year"]) && $entry["year"]!="") $entry_year=" ({$entry["year"]})";
		if(isset($entry["type"]) && $entry["type"]!="") $entry_type=", ({$entry["type"]})";
		if(isset($entry["school"]) && $entry["school"]!="") $entry_school=", {$entry["school"]}";
		if(isset($entry["titleaddon"]) && $entry["titleaddon"]!="") $entry_titleaddon=". {$entry["titleaddon"]}";
		if(isset($entry["pages"]) && $entry["pages"]!="") $entry_pages=", pp. {$entry["pages"]}";
		if(isset($entry["url"]) && $entry["url"]!="") $entry_url=", <a href='{$entry["url"]}'>URL</a>";
		if(isset($entry["doi"]) && $entry["doi"]!="") $entry_doi=", <a href='http://dx.doi.org/{$entry["doi"]}'>DOI</a>";
		if(isset($entry["fulltext"]) && $entry["fulltext"]!="") $entry_fulltext=", <a href='http://193.175.110.91/salzwiki_1.16.1/index.php/{$entry["fulltext"]}'>Volltext</a>";
		$return="$entry_name_url $start <a href='http://193.175.110.91/salzwiki_1.16.1//index.php/$entry_id'>$entry_author $entry_year: </a> {$entry["title"]}$entry_titleaddon$entry_school$entry_type$entry_pages$entry_doi$entry_fulltext$entry_url.$end";
		break;				
// ende Masterthesis Test
	default: //inproceedings, phdthesis, masterthesis, techreport, unpublished, incollection
		if(isset($entry["author"]) && $entry["author"]!="") $entry_author=" {$entry["author"]} ";
		if(isset($entry["editor"]) && $entry["editor"]!="") $entry_author=" {$entry["editor"]} (eds.)";
		if(isset($entry["year"]) && $entry["year"]!="") $entry_year=" ({$entry["year"]})";
		if(isset($entry["school"]) && $entry["school"]!="") $entry_school=", {$entry["school"]}";
		if(isset($entry["titleaddon"]) && $entry["titleaddon"]!="") $entry_titleaddon=". {$entry["titleaddon"]}";
		if(isset($entry["pages"]) && $entry["pages"]!="") $entry_pages=", pp. {$entry["pages"]}";
		//if(isset($entry["crossref"]) && $entry["crossref"]!="") $entry_crossref=". In: {$entry["crossref"]}";
		if(isset($entry["crossref"]) && $entry["crossref"]!="") $entry_crossref=". In: 		
		<a href='http://193.175.110.91/salzwiki_1.16.1/index.php/Literature:Bibliography#{$entry["crossref"]}'>{$entry["crossref"]}</a>";
		if(isset($entry["url"]) && $entry["url"]!="") $entry_url=", <a href='{$entry["url"]}'>URL</a>";
		if(isset($entry["doi"]) && $entry["doi"]!="") $entry_doi=", <a href='http://dx.doi.org/{$entry["doi"]}'>DOI</a>";
		if(isset($entry["fulltext"]) && $entry["fulltext"]!="") $entry_fulltext=", <a href='http://193.175.110.91/de/salzwiki/index.php/{$entry["fulltext"]}'>Volltext</a>";
		$return="$entry_name_url $start <a href='http://193.175.110.91/salzwiki_1.16.1/index.php/$entry_id'>$entry_author $entry_year: </a> {$entry["title"]}$entry_titleaddon$entry_school{$entry["publisher"]}$entry_crossref$entry_pages$entry_doi$entry_fulltext$entry_url.$end";


Die Literaturliste im Repositorium wird bisher durchnumeriert durch Anpassung der Zeilen 294ff:

$entry_name_url="# <span  class='bibprintwide' ><a href='$wgScriptPath/index.php?title=literature:Bibliography#".str_replace(' ','_',$entry_id)."'>[".$entry["entry_name"]."]:</a></span>"; 

Das "#" Zeichen führt zur Nummerierung.

CharacterEscapes, LOParserFunctions, ControlStructureFunctions[Bearbeiten]

Notwendig für #if: und #switch-Anweisungen (zb beim einsetzen des Seitentitels im Kopf von Vorlage:Infobox_Salz. "ControlStructureFunctions" ist nur bis Version 1.12 erforderlich, danach im Wiki-Code integriert.

  • Erweiterungen in Datei "LocalSettings.php" eingefügen.
##Extension CharacterEscapes fuer Helppages
require_once("extensions/CharacterEscapes/CharacterEscapes.php");

##Extension LOParserFunctions  fuer Helppages
require_once( "extensions/LOParserFunctions/LOParserFunctions.php" );

##Extension  ControlStructureFunctions fuer Helppages
# require_once( "extensions/ControlStructureFunctions/ControlStructureFunctions.php" );

CategoryTree[Bearbeiten]

Die Extension dient zur Darstellung der Kategorienbäzme, damit schnell den Artikeln und Dokumenten die richtigen Kategorien zugewiesen werden können.

$wgUseAjax = true; ##muss von false auf true geändert werden, falls noch nicht geschehen
require_once("{$IP}/extensions/CategoryTree/CategoryTree.php"); 

Cite[Bearbeiten]

Dient zum Erstellen von Fußnoten in SalzWiki Artikeln.

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

Siehe näheres zum Einfügen von Fußnoten unter http://193.175.110.91/salzwiki_1.16.1/index.php/Autor#Fu.C3.9Fnoten.


OGG[Bearbeiten]

Diese Erweiterung dient zum Darstellen von Videodateien in SalzWiki-Artikeln. Da es sich beim OGG-Format um ein freies Format handelt, benötigt man keine Lizenz zum Darstellen der Inhalte. Es ist noch zu klären, ob eventuell das MPEG Format für eine Hochschulanwendung lizenzfrei sein könnte.

Für die Erweiterung sind "PEAR" und "FFmpeg" erforderlich.

  • "PEAR" ist in der PHP-Installation des Servers enthalten.
  • "FFmpeg" ist herunterzuladen von ??? und wird dann gespeichert unter "D:\ffmpeg-wiki\"

Installation der Erweiterung:

require( "$IP/extensions/OggHandler/OggHandler.php" );
$wgFFmpegLocation = 'd:\ffmpeg-wiki\bin\ffmpeg';

Terminology[Bearbeiten]

Die Extension Terminology dient zum Erstellen eines Glossars.
Um Verwirrungen zu vermeiden wurde in der Datei "terminology.php" in den Zeilen 29 und 51 der Name der Wiki-Seite, in der alles gespeichert wird, von "Terminology" in "Glossar" bzw. für SaltWiki in "Glossary" umbenannt (nur in SalzWiki/SaltWiki, nicht im Repositorium):

  • Z. 31
$wgExtensionCredits['parserhook'][] = array(
  'name' => 'Glossar', //in Glossar umbenannt HJSChwarz 12.08.2010
  • Z. 53
$rev = Revision::newFromTitle(Title::makeTitle(null, 'Glossar')); //in Glossar umbenannt HJSChwarz 12.08.2010
require_once( "$IP/extensions/terminology.php" );

User Merge - Benutzername löschen[Bearbeiten]

Das Löschen von benutzernamen, die nicht mehr benötigt werden, geschieht durch das Zusammenführen des zu löschenden Benuztzernamens mit dem Benutzername "Testuser" zu "Testuser" mit Hilfe der Extension UserMerge.

require_once( "$IP/extensions/UserMerge/UserMerge.php" );
# Assign the usermerge right to a usergroup, i.e. to the bureaucrats:
$wgGroupPermissions['bureaucrat']['usermerge'] = true;

WhosOnline - Wer ist online[Bearbeiten]

Die Extension WhosOnline dient dazu sich auf einer Specialpage anzeigen zu lassen, wer gerade online ist.

Geschieht mit der Extension "WhosOnline"

require_once("$IP/extensions/WhosOnline/WhosOnline.php");
$wgWhosOnlineShowAnons = true;

Mit "phpMyAdmin" die MySQL-Datenbank für das Wiki auswählen und nach Auswahl des Karteikartenreiters/Tabs "SQL" die Tabelle "sw_online" durch Eingabe des folgenden SQL-Statements anlegen:

CREATE TABLE  `salzwiki`.`sw_online`  (
	`userid` int(5) NOT NULL default '0',
	`username` varchar(255) NOT NULL default '',
	`timestamp` char(14) NOT NULL default '',
	PRIMARY KEY USING HASH (`userid`, `username`),
	INDEX USING BTREE (`timestamp`)
) TYPE=MEMORY;

Der sql-Befehl befindet sich in der Extension-Datei "WhosOnline.sql" und wird für die entsprechende Datenbank-Tabelle in der ersten Zeile z. B. wie folgt angepasst:

CREATE TABLE `saltwiki`.`sw_online` (

ContactPage - Kontaktseite[Bearbeiten]

Für Mitteilungen allgemeiner Art wird eine Kontaktseite eingesetzt. Hierzu wird die Extension "ContactPage"benutzt. Das Absenden einer Seite wird zum Verhindern von Spam über ein Captcha abgesichert.

require_once( "$IP/extensions/ContactPage/ContactPage.php" );
 
$wgContactUser = 'Hschwarz';
$wgContactSender = $wgPasswordSender;
$wgContactSenderName = 'Contact Form SalzWiki ' . $wgSitename;
$wgCaptchaTriggers['contactpage'] = true;


ConfirmEdit[Bearbeiten]

Registrierte Nutzer dürfen auf die Diskussionseiten schreiben. Damit dies etwas sicher vorstatten geht, wird mit ConfirmEdit ein Captcha eingeführt.

require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
$wgGroupPermissions['*'            ]['skipcaptcha'] = false;
$wgGroupPermissions['user'         ]['skipcaptcha'] = false;
$wgGroupPermissions['autor'        ]['skipcaptcha'] = true;
$wgGroupPermissions['autoconfirmed']['skipcaptcha'] = false;
$wgGroupPermissions['bot'          ]['skipcaptcha'] = true; // registered bots
$wgGroupPermissions['sysop'        ]['skipcaptcha'] = true;

$wgCaptchaTriggers['edit']          = true; 
$wgCaptchaTriggers['create']        = true; 
$wgCaptchaTriggers['addurl']        = true; 
$wgCaptchaTriggers['createaccount'] = true;
$wgCaptchaTriggers['badlogin']      = true;

Hochladen von Dateien[Bearbeiten]

Das Hochladen von Dateien geschieht immer in das Repositorium.

Hierzu sind Änderung in den LocalSettings.php vorgenommen worden:

$wgUploadNavigationUrl = "/repository_1.16.1/index.php/Special:Upload";
$wgEnableUploads       = false;  ##damit kein Upload in SalzWiki möglich ist

Damit automatisch im Repository nach „Dateien" gesucht wird, wurde folgendes geändert:

$wgUseSharedUploads = true;
$wgSharedUploadPath = "/repository_1.16.1/images";
#$wgSharedUploadPath = 'http://193.175.110.91/repository_16_p/images;
$wgSharedUploadDirectory = "D:/xampp/htdocs/repository_1.16.1/images";
$wgHashedSharedUploadDirectory = true;
$wgSharedUploadDBname = "repository_1.16.1";
$wgSharedUploadDBprefix  = "sr_";
#$wgRepositoryBaseUrl = "http://193.175.110.91/repository_16_p/images:";
$wgRepositoryBaseUrl = 'http://193.175.110.91/repository_1.16.1/index.php/Datei:';
$wgFetchCommonsDescriptions  = true;

Eingabe von Formeln mittels Tex[Bearbeiten]

Damit z.B mathematische und auch chemische Formneln dargestellt werden können, wird in Mediawiki TEX benutzt.

Die tatsächliche Installation eines Tex-Systems erfolgte in Anlehnung an die alternative Methode auf der Mediawiki Seite http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Windows#Alternative_Solution.

Installation gemäß Mediawiki[Bearbeiten]

  1. install the complete MikTeX (not the basic one, use the network installer) in D:\texfm\miktex (No: Since installing the complete version failed, we installed the basic one with administrator rights at last after installing GhostScript and installing ImageMagick.)
  2. install the static (to be sure dependencies are embed) binary of ImageMagick in D:\texfm\imagick (ensure there are no spaces in the path you choose) (No: We installed the dynamic version wih administrator rights.)
  3. install AFPL GhostScript in D:\texfm\ghostscript
  4. copy D:\texfm\ghostscript\gs8.70\bin\gswin32c.exe to D:\texfm\ghostscript\gs8.70\bin\gs.exe (8.70 can be different depending on version you install)
  5. add to the windows PATH environnement variable this path: D:\texfm\ghostscript\gs8.70\bin (again, 8.70 can be different depending on version you install)
  6. If you installed MiKTeX for all users and are running IIS, you may also need to create MiKTeX folders under "C:\Documents and Settings\Default User\Application Data" and "C:\Documents and Settings\Default User\Local Settings\Application Data". Make sure the IIS working process account running PHP (IUSR_[whoever]) has both read and write permissions to these directories!
  7. open a command line (start -> execute -> cmd.exe)
  8. verify that the following commands are working:
    latex
    dvips
    convert (not the microsoft convert)
    gs
  9. [edit] Settings

(your wiki directory = $)

$wgUseTeX= true; 
  • insert in $/LocalSettings.php:

- ImageMagick

$wgImageMagickConvertCommand    = 'D:\texmf\imagick\convert.exe';
$wgImageMagickIdentifyCommand   = 'D:\texmf\imagick\identify.exe'; 

- Tex

$wgLaTexCommand                 = 'D:\texmf\miktex\miktex\bin\latex.exe';
$wgDvipsCommand                 = 'D:\texmf\miktex\miktex\bin\dvips.exe';
  • reboot if needed so that paths variables are updated for your services too

Tatsächliche Installation[Bearbeiten]

Die Applikationen als Administrator für alle User im Verzeichnis "D:\texmf\" installieren:

  1. GhostScript im Unterverzeichnis "ghostscript/" für alle User installieren
    1. aus dem Unterverzeichnis "bin/" die Datei "gswin32c.exe" kopieren und die Kopie umbenennen zu "gs.exe"
    2. Im ServerManager bei "Systemeigenschaften ändern/Erweitert/Umgebungsvariablen" die Systemvariable "path" erweitern mit "D:\texmf\ghostscript\gs8.70\bin;"
  2. ImageMagick im Unterverzeichnis "imagick/" installieren
    1. ImageMagick-6.5.9-0-Q16.dll (bei vorhandener Windows-Server-Konfigurationsberechtigung), sonst "static" (nur XAMPP-Zugriffsberechtigungen), inkl. "zum Systempfad hinzufügen" und "header für C/C++ Developement"
    2. Testen mit der "Eingabeaufforderung/Konsole" durch Eingabe von
      • convert logo: logo.miff [=>Enter drücken]
      • imdisplay logo.miff [=>Enter drücken]
      • = > ein Bild soll angezeigt werden
    3. Für PHP die VC6-kompilierte Datei "php_imagick_dyn-Q16.dll" in das PHP-Unterverzeichnis "ext/" kopieren und umbenennen zu "php_imagick_dyn_Q16.dll"
    4. In der Datei "php.ini" die Datei "php_imagick_dyn_Q16.dll" einbinden
  3. MikTex im Unterverzeichnis "miktex/" installieren
    1. Für Sophos-Antivirus eine Ausnahme festlegen:
      Konfigurieren->On-Access-Überprüfung->Ausnahmen -> "D:\texmf\Miktex\" hinzufügen

in unseren localsettings.php ist jeweils einzufügen:

$wgUseTeX = true;

#ImageMagick

$wgImageMagickConvertCommand = 'D:\texmf\imagick\convert.exe';<br> 
$wgImageMagickIdentifyCommand = 'D:\texmf\imagick\identify.exe';<br>

#Tex

$wgLaTexCommand = 'D:\texmf\miktex\miktex\bin\latex.exe'; 
$wgDvipsCommand = 'D:\texmf\miktex\miktex\bin\dvips.exe';


Einrichten von Namensräumen
[Bearbeiten]

Es werden ein Namensraum für Dokumente der Administratoren (ADM)eingerichtet, den nur diese Bearbeiten können. Dazu eien Namensraum für die Bibliographie (Literatur) und einer zum erstmaligen Erstellen von Dokumenten (Bearbeitung), die kein Leser sehen soll.

# Einrichten eines Namensraumes Adm, Bearbeitung und Literature
define("NS_ADM", 100);
define("NS_ADM_TALK", 101);
define("NS_Bearbeitung", 120);
define("NS_Bearbeitung_TALK", 121);
define("NS_Literature", 110);
define("NS_Literature_TALK", 111);
# Create namespaces
$wgExtraNamespaces = array(
NS_ADM => 'Adm',
NS_ADM_TALK => 'Adm_talk',
NS_Bearbeitung => 'Bearbeitung',
NS_Bearbeitung_TALK => 'Bearbeitung_talk',
NS_Literature => 'Literature',
NS_Literature_TALK => 'Literature _talk'
);
$wgNamespacesWithSubpages[NS_HELP] = true;            #subpages enabled for the Heplnamespace
$wgNamespaceProtection[NS_ADM] = array( 'editadm' ); #permission "editadmin" required to edit the Adm namespace
$wgNamespacesWithSubpages[NS_ADM] = true;            #subpages enabled for the ADM namespace
$wgGroupPermissions['Administrator']['editadm'] = true;

Metadaten von Dateien im Wiki sichtbar[Bearbeiten]

Alle Dateien wie z.B Fotos liegen im Repositorium. Wenn ein Leser sich dieses Foto ansieht, muss er auch Zugriff auf alle Metadaden haben, die dazu gehören. Damit dies möglich ist, sind folgende Einstellungen vorzunehmen.

Einstellungen zum Zugriff auf das Datei Repository: Findet das Salzwiki eine Datei/Bild nicht im eigenen Wiki, schaut es in dem Shared Einstellungen nach und sucht dort nach Bildern.

$wgUseSharedUploads = true;
$wgSharedUploadPath = "/repository_1.16.1/images";
$wgSharedUploadDirectory = "D:/xampp/htdocs/repository_1.16.1/images";
$wgHashedSharedUploadDirectory = true;
$wgSharedUploadDBname = "repository_1.16.1";
$wgSharedUploadDBprefix  = "sr_";
$wgRepositoryBaseUrl = 'http://193.175.110.91/repository_1.16.1/index.php/Datei:';

Einstellung, um das Holen der Beschreibungstexte von Bildern in das lokale Wiki zu ermöglichen: Es findet ein Zugriff über http statt, um den Text zu dem Bild aus dem Repository zu holen. Dazu muss der anonyme User Zugriff auf die Beschreibungstexte erhalten.

$wgFetchCommonsDescriptions  = true;

Änderung/Prüfung der Einstellung in der "php.ini" Zeile 523: Sorgt dafür, dass der Befehl fopen ausgeführt wird, um die Beschreibungsdaten von dem Repository Wiki zu holen.

allow_url_fopen = On 

Zugriff auf ein geschütztes Repository[Bearbeiten]

Die beschriebene Vorgehenssweise erlaubt es, auf ein für den normalen User gesperrtes Wiki = Repositorium zuzugreifen und die Metadaten der Abbildungen/Dateien auszulesen und in SalzWiki widerzugeben.

  • Hierzu ist zunächst die Datei httpFunctions.php im Verzeichnis includes von SalzWiki zu modifizieren. Folgender Programmcode ist für die Mediawiki Version 15.3 einzufügen:
--- HttpFunctions.php	2009-01-08 07:56:11.000000000 +0100
+++ HttpFunctions_new.php	2010-11-01 11:47:57.000000000 +0100
@@ -78,6 +78,65 @@
 				}
 			}
 
+		  global $wgAuthenticatedRepository, $wgAuthenticatedRepositoryUser, $wgAuthenticatedRepositoryPassword, $wgShowAuthenticatedRepositoryError;
+      $text = '';
+			if ( $wgAuthenticatedRepository ) {
+			  require_once 'extensions/Snoopy-1.2.4/Snoopy.class.php';
+        $index = '';
+        $login = '';
+			  
+			  $wikiPath = "";
+			  if (!preg_match('/(.*)\/index.php\/(.*)\?(.*)/', $url, $matches)) {
+			      echo "nicht gefunden";
+			  } else {
+			      $wikiPath = $matches[1];
+			  }
+			  
+			  $apiPath = "$wikiPath/api.php";
+			  $indexPath = "$wikiPath/index.php";
+			  $title = $wgTitle->mPrefixedText;
+			  			  		
+			  $snoopy = new Snoopy;
+			  	  
+			  $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword, 'format' => 'php');
+			  if(!$snoopy->submit($apiPath, $request_vars))
+			          die("Snoopy error: {$snoopy->error}");
+			  
+			  // We're only really interested in the cookies
+			  $snoopy->setcookies();
+			  $token = unserialize($snoopy->results);
+        $error = true;
+			  $token2 = array();
+			  
+			  if ( $token['login']['result'] == 'NeedToken') { 
+  			  $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword,  'lgtoken' => $token['login']['token'], 'format' => 'php');
+  			  if(!$snoopy->submit($apiPath, $request_vars))
+  			          die("Snoopy error: {$snoopy->error}");
+  			  $token2 = unserialize($snoopy->results);
+			  }
+			  else if ( ($token['login']['result'] == 'NoName') ) {
+			    wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" );
+          if ( $wgShowAuthenticatedRepositoryError ) $text = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>";
+			  }
+			  
+			  
+			  if ( ($token2['login']['result'] == 'Success') or ($token['login']['result'] == 'Success') ) { 
+  			  $request_vars = array('action' => 'render', 'title'=>$title, 'lgtoken' => $token['login']['token'], 'format' => 'php');
+  			  if(!$snoopy->submit($indexPath, $request_vars))
+  			          die("Snoopy error: {$snoopy->error}");
+  			  $text = $snoopy->results;
+        }
+        else if ( ($token2['login']['result'] == 'WrongPass') or ($token2['login']['result'] == 'WrongPluginPass') or ($token2['login']['result'] == 'EmptyPass') ) {
+          wfDebug( __METHOD__ . ": Wrong or no Password for wgAuthenticatedRepositoryPassword in the LocalSetting." );
+          if ( $wgShowAuthenticatedRepositoryError ) $text = "Wrong or no Password for <i>wgAuthenticatedRepositoryPassword</i> in the LocalSetting.<br/>";
+        }
+        else if ( ($token2['login']['result'] == 'NotExists') ) {
+          wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" );
+          if ( $wgShowAuthenticatedRepositoryError ) $text = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>";
+        }
+			}
+			else 
+			{
 			ob_start();
 			curl_exec( $c );
 			$text = ob_get_contents();
@@ -97,6 +156,7 @@
 				$text = false;
 			}
 			curl_close( $c );
+			}
 		} else {
 			# Otherwise use file_get_contents...
 			# This doesn't have local fetch capabilities...
  • Folgender Programmcode ist für die Mediawiki Version 16.0 einzufügen:
    • Es sind hauptsächlich Anpassungen gemacht wurden, die den Text zurückgeben, sowie an der Abarbeitung von Fehlern. Für das korrekte Bearbeiten von Sonderzeichen in der url wurde rawurldecode() hinzugefügt.
--- HttpFunctions.php	2010-06-09 05:49:34.000000000 +0200
+++ HttpFunctions_new.php	2010-11-22 17:09:33.000000000 +0100
@@ -744,7 +744,7 @@
 			$this->curlOptions[CURLOPT_CUSTOMREQUEST] = $this->method;
 		}
 
-		$this->curlOptions[CURLOPT_HTTPHEADER] = $this->getHeaderList();
+  		$this->curlOptions[CURLOPT_HTTPHEADER] = $this->getHeaderList();
 
 		$curlHandle = curl_init( $this->url );
 		if ( !curl_setopt_array( $curlHandle, $this->curlOptions ) ) {
@@ -755,24 +755,118 @@
 			/* Continue the processing. If it were in curl_setopt_array, processing would have halted on its entry */
 		}
 
-		if ( false === curl_exec( $curlHandle ) ) {
-			$code = curl_error( $curlHandle );
-
-			if ( isset( self::$curlMessageMap[$code] ) ) {
-				$this->status->fatal( self::$curlMessageMap[$code] );
-			} else {
-				$this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) );
-			}
-		} else {
-			$this->headerList = explode("\r\n", $this->headerText);
-		}
-
-		curl_close( $curlHandle );
-
+		/*
+		 *  START:
+		 *  Add code to access restricted repositories. 
+		 *  Add the following line in the LocalSettings.php 		 
+		 * 		$wgAuthenticatedRepository = true;
+		 * 		$wgAuthenticatedRepositoryUser = 'WikiSysop';
+		 * 		$wgAuthenticatedRepositoryPassword = 'dev2010wer';
+		 * 		$wgShowAuthenticatedRepositoryError = true;
+		 */
+
+    global $wgAuthenticatedRepository, $wgAuthenticatedRepositoryUser, $wgAuthenticatedRepositoryPassword, $wgShowAuthenticatedRepositoryError;
+    $error = true;
+    $text = '';
+    $token2 = array();
+
+		/* run the code only if the user activate is in the LocalSettings.php*/
+    if ( $wgAuthenticatedRepository ) {
+      require_once 'extensions/Snoopy-1.2.4/Snoopy.class.php';
+      $index = '';
+      $login = '';
+      
+      /* Get all relevat url informations */
+      /* URL: http://localhost/mediawiki/mediawiki-repository/index.php/File:MediawikiExampleImageFlower.jpg?action=render&uselang=en */
+      $wikiPath = "";
+      if (!preg_match('/(.*)\/index.php\/(.*)\?(.*)/', $this->url, $matches)) {
+          echo "nicht gefunden";
+      } else {
+          $wikiPath = $matches[1];
+				  /* If the url contains special characters, when these characters must be convert */
+			  	$title = rawurldecode($matches[2]);
+      }
+      
+      $apiPath = "$wikiPath/api.php";
+      $indexPath = "$wikiPath/index.php";
+
+      $snoopy = new Snoopy;
+      /* Start request to get an token */
+      $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword, 'format' => 'php');
+      if(!$snoopy->submit($apiPath, $request_vars))
+      	$this->status->fatal("Snoopy error: {$snoopy->error}");
+      
+      // We're only really interested in the cookies
+      $snoopy->setcookies();
+      $token = unserialize($snoopy->results);
+      
+      /* Use the Token to login */
+      if ( $token['login']['result'] == 'NeedToken') { 
+    	  $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword,  'lgtoken' => $token['login']['token'], 'format' => 'php');
+    	  if(!$snoopy->submit($apiPath, $request_vars))
+   				$this->status->fatal("Snoopy error: {$snoopy->error}");
+    	  $token2 = unserialize($snoopy->results);
+      }
+      else if ( ($token['login']['result'] == 'NoName') ) {
+        wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" );
+        if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>";
+      }
+            
+      /* If the login was successful, get the Information from the File Description */
+      if ( ($token2['login']['result'] == 'Success') or ($token['login']['result'] == 'Success') ) { 
+    	  $request_vars = array('action' => 'render', 'title'=> $title, 'lgtoken' => $token['login']['token'], 'format' => 'php');
+    	  if(!$snoopy->submit($indexPath, $request_vars))
+   				$this->status->fatal("Snoopy error: {$snoopy->error}");
+    	  $this->content = $snoopy->results;
+      }
+      else if ( ($token2['login']['result'] == 'WrongPass') or ($token2['login']['result'] == 'WrongPluginPass') or ($token2['login']['result'] == 'EmptyPass') ) {
+        wfDebug( __METHOD__ . ": Wrong or no Password for wgAuthenticatedRepositoryPassword in the LocalSetting." );
+        if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no Password for <i>wgAuthenticatedRepositoryPassword</i> in the LocalSetting.<br/>";
+      }
+      else if ( ($token2['login']['result'] == 'NotExists') ) {
+        wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" );
+        if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>";
+      }
+      $this->headerList = explode("\r\n", $this->headerText);      
+    }
+    else 
+    {    
+			/*
+			 *  START:
+			 *  Original Code - now in a if statement
+			 * 
+			 */
+
+  		if ( false === curl_exec( $curlHandle ) ) {
+  			$code = curl_error( $curlHandle );
+  
+  			if ( isset( self::$curlMessageMap[$code] ) ) {
+  				$this->status->fatal( self::$curlMessageMap[$code] );
+  			} else {
+  				$this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) );
+  			}
+  		} else {
+  			$this->headerList = explode("\r\n", $this->headerText);
+  		}
+  		curl_close( $curlHandle );
+  		
+			/*
+			 *  END:
+			 *  Original Code - now in a if statement
+			 * 
+			 */
+  	}
+  	
+		/*
+		 *  END:
+		 *  Add code to access restricted repositories
+		 * 
+		 */
+  
 		$this->parseHeader();
 		$this->setStatus();
 		return $this->status;
-	}
+  }
 }
 
 class PhpHttpRequest extends HttpRequest {
  • die Extension "Snoopy-1.2.4" ist in das Extensions-Verzeichnis zu kopieren.
  • curl muss beim Apache aktiviert sein, dazu kommentiert man die folgende Zeile in der PHP.ini ein:
extension=php_curl.dll 

apache neu starten, damit die Änderungen wirksam werden.

  • Der Zugriff auf das Mediawiki Repository wird gesperrt?
$wgGroupPermissions['*']['read'] = false;
  • LocalSettings.php - Konfiguration

Einstellungen, um den Zugriff auf ein gesichertes Repository durchführen zu können.

$wgAuthenticatedRepository = true;
$wgAuthenticatedRepositoryUser = 'WikiSysop';
$wgAuthenticatedRepositoryPassword = 'xxx';
$wgShowAuthenticatedRepositoryError = false;

$wgAuthenticatedRepository - aktiviert den Zugriff auf ein gesichertes Repository. Wenn dies nicht notwendig ist, bitte abstellen, da die Funktion zusätzliche Abfragen schickt, was die Zugriff bei hoher Last verlangsamen kann.
$wgShowAuthenticatedRepositoryError - Gibt Fehlermeldungen in die Log Dateien. Für den Live Betrieb bitte abstellen.

  • Konfiguration für das Mediawiki, um die Daten aus der Datenbank zu holen. Folfende Zeilen in die localsettings.php einfügen:
$wgForeignFileRepos[] = array(
'class' => 'ForeignDBRepo',
'name' => 'mediawiki-repository',
'url' => $wgSharedUploadPath,
'directory' => $wgSharedUploadDirectory,
'hashLevels' => 2, // This must be the same for the other family member
'dbType' => $wgDBtype,
'dbServer' => $wgDBserver,
'dbUser' => $wgDBuser,
'dbPassword' => $wgDBpassword,
'dbFlags' => DBO_DEFAULT,
'dbName' => $wgSharedUploadDBname,
'tablePrefix' => $wgSharedUploadDBprefix,
'hasSharedCache' => false,
'descBaseUrl' => $wgRepositoryBaseUrl,
'fetchDescription' => $wgFetchCommonsDescriptions
);

Repositorium[Bearbeiten]

Zur Installation wurden fogende Einstellungen und Extensions eingestzt:

Datenbank mittel XAMPP und phpmyAdmin anlegen[Bearbeiten]

Es muss vor der Installation zuerst eine Datenbank angelegt werden.

database name: repository_1.16.1 datbase table prefix: sr_

Benutzer: hschwarz

Host: localhost

Global Rechte: all privileges

Grant : ja

Mediawiki Installieren[Bearbeiten]

Nach Installationsanweisung mit folgenden Namen: : Repository

http://193.175.110.91/repository_1.16.1/index.php/Main_Page


Lizenz für das Repositorium[Bearbeiten]

Einfügen in LocalSettings.php

$wgEnableCreativeCommonsRdf = true;
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
$wgRightsUrl = "http://creativecommons.org/licenses/by-nc-sa/3.0/";
$wgRightsText = "Attribution-Noncommercial-Share Alike 3.0 Unported";
$wgRightsIcon = "http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png";
# $wgRightsCode = "[license_code]"; # Not yet used

Style/Skin[Bearbeiten]

siehe oben bei "SalzWiki

Logo[Bearbeiten]

Die Datei für das Logo ist noch hochzuladen und einzufügen in LocalSettings.php:

## The relative URL path to the logo.  Make sure you change this from the default,
## or else you'll overwrite your logo when you upgrade!
$wgLogo = "$wgStylePath/common/images/Logo_Repo.png";

Logos mit Verlinkung (und Footerlinks angepasst)[Bearbeiten]

Änderungen in MonoBookSW.php: Zeile 213 - 239

 	<!-- end of banner1 -->
		</div><!-- end of the left (by default at least) column -->

			<div class="visualClear"></div>
			<div id="footer">
			
<!-- Logos der HAWK und des Honrmanninstitues zentral in den footer. Rudimentaere Anpassung der Bilder!! Zeitsparend-->

<?php
		if($this->data['poweredbyico']) { ?>
				<div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div>
<?php 	}
		if($this->data['copyrightico']) { ?>
				<div id="f-poweredbyico"><?php $this->html('copyrightico') ?></div>
<?php 	}
		if($this->data['copyrightico']) { ?>
				<div id="f-copyrightico">
				<a href="http://www.hornemann-institut.de/">
				<img src="/[repository_1.16.1]/skins/common/images/HI.png" width=91 height=30>
				</a>
				   
				<a href="http://www.hawk-hhg.de/">
				<img src="/[repository_1.16.1]/skins/common/images/HAWK.png" height=30 width=84>
				</a>
				</div>
<?php	}

		// Generate additional footer links "'copyright',  'viewcount', 'numberofwatchingusers'," entfernt!
		$footerlinks = array(
			'lastmod',  'credits',
			'privacy', 'about', 'disclaimer', 'tagline', 'Hallo', 
		);
		$validFooterLinks = array();
		foreach( $footerlinks as $aLink ) {
			if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
				$validFooterLinks[] = $aLink;
			}
		}
		if ( count( $validFooterLinks ) > 0 ) {
?> 			<ul id="f-list">

Favicon[Bearbeiten]

Damit ein Favicon dargestellt wird, ist die datei in das Verzeichnis "../repository_1.16.1" hochzuladen und folgender Eintrag in den localsettings.php vorzunehmen:

$wgFavicon="/repository_1.16.1/SalzWiki.ico";

Lizenzvorlagen[Bearbeiten]

Vorlagen = Templates finden sich beispielhaft auf der Seite Vorlagen dargestellt. Die einzelnen Vorlagen sind im Namensraum Vorlagen zu finden.

"Kategorie:Lizenzenvorlagen" erstellt.


Lizenzen im Upload-Formular[Bearbeiten]

Um neue Lizenzen im Klappfeld im Upload-Formular einzugeben muss die Datei Mediawiki:Licenses (http://193.175.110.91/repository_1.16.1/index.php?title=MediaWiki:Licenses) editiert werden, nach dem vorgegebene Schema:

*Free licenses:           <!-- Lizenztyp -->
**PD|PD: public domain    <!--einzelne Lizenz-->
**GNU|GFDL: GNU Free Documentation License 

*Creative Commons
**CC-by-nc-nd|Attribution-NonCommercial-NoDerivs 3.0 Unported (CC BY-NC-ND 3.0) 
**CC-by-nc-sa|Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)

Extensions[Bearbeiten]

AccessControl[Bearbeiten]

  • Die Extension wird heruntergeladen und nach dem Extrahieren in das Extensions-Verzeichnis von SalzWiki kopiert.
  • Einfügen in LocalSettings:
 require_once("$IP/extensions/accesscontrol-1.1/AccessControl.php");

Der Zugang auf eine Seite wird durch Eingabe einer Nutzergruppe erlaubt, die vorher z.B. in den local settiongs definiert werden kann.

<accesscontrol>SalzWiki</accesscontrol>  : Zugang nur für Mitglieder der Gruppe SalzWiki

Siehe dazu auch wie z.B. http://www.mediawiki.org/wiki/Extension:AccessControl

Approved_Revs[Bearbeiten]

Ist noch zu installieren.

DynamicPagesList[Bearbeiten]

include("$IP/extensions/DynamicPageList/DynamicPageList2.php");

Zur Funktionsweise und den umfangreichen Einsatzmöglichkeiten siehe auch http://semeb.com/dpldemo/index.php?title=Main_Page.

Bibliography[Bearbeiten]

Diese Extension ersetzt BibWiki (http://www.mediawiki.org/wiki/Extension:Bibwiki) und wird zum Erstellen von Literaturhinweisen und der Bibliographie eingesetzt.

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

Das das bibtex Feld, "Abstracts" die Laufzeit der Extension deutlich erhört, wurde dieses Feld ausgeklammert, da es auch nicht benötigt wird.

Die Publikationstypen und auch die Bibtex-Variablen, die vorgeschlagen werden, wenn keine Literatur zu einer angegebenen Literaturstelle in der Bibliography vorhanden ist, wurde angepasst. Anpassungen in der Datei bibtex_fields.php.

Damit eine neue Literaturstelle mit einer Überschrift 2. Grades dargestellt wird, wurde die Datei bibliography.php in Zeile 16 angepasst:

		$temp_textbox1= "==$entry_name==\n<bibentry>\n@".$entry_type.'{'.$entry_id.",\n";


Zur Darstellung der Literatureinträge erfolgrten weitere Anpassungen der Ausgaben ider bibliography.php:

Zeile 56ff:

$temp_return.="<a href='$wgScriptPath/?title=literature:Bibliography&action=edit&section=0&bibliography=new&entry_id=$entry_id&entry_name=$entry_name&entry_type=".rawurlencode($val)."'>$val</a>, "; 

Zeilen 194ff:

	while(list($key,$val)=each($bibtex_entry_fields))
	$$key=stripslashes($val); //variable variables now you have all the keys assigned as variable names, $author, $title etc...
	if(isset($author) && $author!="") $author="$author ";
	if(isset($editor) && $editor!="") $author="$editor (eds.)";
	if(isset($year) && $year!="") $year="$year";
 	$return.="<a href='http://193.175.110.91/repository_1.16.1/index.php/$bibtex_entry->key_identifier'>$author ($year): </a>";
##	    if(isset($bibtex_entry->key_identifier) && $bibtex_entry->key_identifier!="") $return.= "$bibtex_entry->key_identifier";//Ausgabe ID
			if(isset($title) && $title!="") $return.="$title";                                 // HSChwarz Ausgabeformet geändert 18.10.2009
	if(isset($booktitle) && $booktitle!="") $return.=". $booktitle";
	if(isset($titleaddon) && $titleaddon!="") $return.=". $titleaddon";
	if(isset($crossref) && $crossref!="") $return.=". In: <a href='../Literature:Bibliography#$crossref'>$crossref</a>";
	if(isset($howpublished) && $howpublished!="") $return.=" $howpublished";
	if(isset($school) && $school!="") $return.=", $school";
	if(isset($journal) && $journal!="") $return.=".<i> In: $journal</i>";
	if(isset($publisher) && $publisher!="") $return.=", $publisher";
	if(isset($address) && $address!="") $return.=", $address";
	if(isset($volume) && $volume!="") $return.=", <b>$volume</b>";
	if(isset($number ) && $number !="") $return.=" ($number)";
	if(isset($series) && $series!="") $return.=" $series";
	if(isset($edition) && $edition!="") $return.=", $edition";
	if(isset($pages) && $pages!="") $return.=", pp. $pages";
	if(isset($doi) && $doi!="") $return.=", doi: <a href='http://dx.doi.org/$doi'>$doi</a>";
	if(isset($url) && $url!="") $return.=", link: <a href='$url'>$url</a>";
	if(isset($source) && $source!="") $return.=", link: <a href='$source'>$source</a>";
	if(isset($fulltext) && $fulltext!="") $return.=", <a href='http://193.175.110.91/repository_1.16.1/index.php/$fulltext'>Volltext</a>";

Zeilen 267ff:

switch($type){	
case "intext":	// Within a written article/paper
	switch($entry["entry_type"]){
	case "book":
		if(isset($entry["year"]) && $entry["year"]!="") $entry_year=" ({$entry["year"]})";
		if(isset($entry["publisher"]) && $entry["publisher"]!="") $entry_publisher=" <i>{$entry["publisher"]}.</i> ";
		$return="{$entry["author"]}$entry_year. <br>{$entry["title"]}.$entry_publisher".$bibliography_url;
		break;
	case "article":
		$return="{$entry["author"]} ({$entry["year"]}). <br>{$entry["title"]} {$entry["journal"]}.".$bibliography_url;
		break;
	case "misc":
		$return="{$entry["author"]} ({$entry["year"]}). <br>{$entry["title"]}.".$bibliography_url;
		break;
	break;
	default: //inproceedings, phdthesis, masterthesis, techreport, unpublished
		$return="{$entry["author"]} ({$entry["year"]}). <br><i>{$entry["title"]}</i>.".$bibliography_url;
		break;
}
return stripslashes($return);
break;
		 
case "list":	// As a list bei bibprint
	$start="<span  class='bibprint'>";
	$end="</span>\n";
	if(!isset($entry["entry_name"]) || $entry["entry_name"]=="") //whenever an entry name is not available show at least the entry_id
	$entry["entry_name"]=$entry_id;
        $entry_name_url="<span  class='bibprintwide' ><a href='$wgScriptPath/index.php?title=literature:Bibliography#".str_replace(' ','_',$entry_id)."'>[".$entry["entry_name"]."]:</a></span>"; //  Literaturliste auf der Seite Hschwarz Namensraum ergänzt 18.10.2009

	switch($entry["entry_type"]){
	case "book":
		if(isset($entry["author"]) && $entry["author"]!="") $entry_author=" {$entry["author"]} ";
		if(isset($entry["editor"]) && $entry["editor"]!="") $entry_author=" {$entry["editor"]} (eds.)";
		if(isset($entry["year"]) && $entry["year"]!="") $entry_year=" ({$entry["year"]})";
		if(isset($entry["titleaddon"]) && $entry["titleaddon"]!="") $entry_titleaddon=". ({$entry["titleaddon"]})";
		if(isset($entry["publisher"]) && $entry["publisher"]!="") $entry_publisher=". <i>{$entry["publisher"]}</i> ";
		if(isset($entry["pages"]) && $entry["pages"]!="") $entry_pages=", pp. {$entry["pages"]}";
					
		$return="$entry_name_url $start<a href='http://193.175.110.91/salzwiki_1.16.1/index.php/$entry_id'>$entry_author $entry_year: </a>  {$entry["title"]}$entry_titleaddon$entry_publisher, {$entry["address"]}$entry_pages. $end";
//				$return="$entry_name_url $start $entry_author $entry_year: {$entry["title"]}$entry_titleaddon$entry_publisher$entry_pages. $end";
		break;
	case "article":
		if(isset($entry["volume"]) && $entry["volume"]!="") $entry_volume=", <b>{$entry["volume"]}</b>";
		if(isset($entry["number"]) && $entry["number"]!="") $entry_number=" ({$entry["number"]})";
		if(isset($entry["pages"]) && $entry["pages"]!="") $entry_pages=", pp. {$entry["pages"]}";
		if(isset($entry["titleaddon"]) && $entry["titleaddon"]!="") $entry_titleaddon="- {$entry["titleaddon"]}";
		if(isset($entry["url"]) && $entry["url"]!="") $entry_url=", <a href='{$entry["url"]}'>URL</a>";
		if(isset($entry["doi"]) && $entry["doi"]!="") $entry_doi=", <a href='http://dx.doi.org/{$entry["doi"]}'>DOI</a>";
		if(isset($entry["fulltext"]) && $entry["fulltext"]!="") $entry_fulltext=", <a href='http://193.175.110.91/salzwiki_1.16.1/index.php/{$entry["fulltext"]}'>Volltext</a>";
		if(isset($entry["journal"]) && $entry["journal"]!=""){$entry_journal="{$entry["journal"]} ";
		}
		else { //if yournal is not set, then there is no point in setting volume, number, pages
			$entry_volume="";
			$entry_pages="";
			$entry_number="";
		}
		$return="$entry_name_url $start <a href='http://193.175.110.91/salzwiki_1.16.1/index.php/$entry_id'>{$entry["author"]} ({$entry["year"]}) </a>: {$entry["title"]}$entry_titleaddon. In: <i>{$entry["journal"]}</i>$entry_volume$entry_number$entry_pages$entry_doi$entry_fulltext$entry_url.$end";
		break;
	case "misc":
		if(isset($entry["author"]) && $entry["author"]!="") $entry_author=" {$entry["author"]} ";
		if(isset($entry["editor"]) && $entry["editor"]!="") $entry_author=" {$entry["editor"]} (eds.)";
		if(isset($entry["year"]) && $entry["year"]!="") $entry_year=" ({$entry["year"]})";
		if(isset($entry["pages"]) && $entry["pages"]!="") $entry_pages=", pp. {$entry["pages"]}";
		if(isset($entry["titleaddon"]) && $entry["titleaddon"]!="") $entry_titleaddon=". {$entry["titleaddon"]}";
		if(isset($entry["howpublished"]) && $entry["howpublished"]!="") $entry_howpublished=". ({$entry["howpublished"]})";
		if(isset($entry["fulltext"]) && $entry["fulltext"]!="") $entry_fulltext=", <a href='http://193.175.110.91/de/salzwiki/index.php/{$entry["fulltext"]}'> Volltext</a>";
		$return="$entry_name_url $start <a href='http://193.175.110.91/de/salzwiki/index.php/$entry_id'>$entry_author $entry_year: </a> {$entry["title"]}$entry_titleaddon$entry_howpublished{$entry["address"]}$entry_pages$entry_fulltext.$end";
		break;
					
//masterthesis test					
	case "mastersthesis":
		if(isset($entry["author"]) && $entry["author"]!="") $entry_author=" {$entry["author"]} ";
		if(isset($entry["year"]) && $entry["year"]!="") $entry_year=" ({$entry["year"]})";
		if(isset($entry["type"]) && $entry["type"]!="") $entry_type=", ({$entry["type"]})";
		if(isset($entry["school"]) && $entry["school"]!="") $entry_school=", {$entry["school"]}";
		if(isset($entry["titleaddon"]) && $entry["titleaddon"]!="") $entry_titleaddon=". {$entry["titleaddon"]}";
		if(isset($entry["pages"]) && $entry["pages"]!="") $entry_pages=", pp. {$entry["pages"]}";
		if(isset($entry["url"]) && $entry["url"]!="") $entry_url=", <a href='{$entry["url"]}'>URL</a>";
		if(isset($entry["doi"]) && $entry["doi"]!="") $entry_doi=", <a href='http://dx.doi.org/{$entry["doi"]}'>DOI</a>";
		if(isset($entry["fulltext"]) && $entry["fulltext"]!="") $entry_fulltext=", <a href='http://193.175.110.91/de/salzwiki/index.php/{$entry["fulltext"]}'>Volltext</a>";
		$return="$entry_name_url $start <a href='http://193.175.110.91/de/salzwiki/index.php/$entry_id'>$entry_author $entry_year: </a> {$entry["title"]}$entry_titleaddon$entry_school$entry_type$entry_pages$entry_doi$entry_fulltext$entry_url.$end";
		break;				
// ende Masterthesis Test
	default: //inproceedings, phdthesis, masterthesis, techreport, unpublished, incollection
		if(isset($entry["author"]) && $entry["author"]!="") $entry_author=" {$entry["author"]} ";
		if(isset($entry["editor"]) && $entry["editor"]!="") $entry_author=" {$entry["editor"]} (eds.) ";
		if(isset($entry["year"]) && $entry["year"]!="") $entry_year=" ({$entry["year"]})";
		if(isset($entry["school"]) && $entry["school"]!="") $entry_school=", {$entry["school"]}";
		if(isset($entry["titleaddon"]) && $entry["titleaddon"]!="") $entry_titleaddon=". {$entry["titleaddon"]}";
		if(isset($entry["pages"]) && $entry["pages"]!="") $entry_pages=", pp. {$entry["pages"]}";
		//if(isset($entry["crossref"]) && $entry["crossref"]!="") $entry_crossref=". In: {$entry["crossref"]}";
		if(isset($entry["crossref"]) && $entry["crossref"]!="") $entry_crossref=". In: 		
		<a href='http://193.175.110.91/salzwiki_1.16.1/index.php/Literature:Bibliography#{$entry["crossref"]}'>{$entry["crossref"]}</a>";
		if(isset($entry["url"]) && $entry["url"]!="") $entry_url=", <a href='{$entry["url"]}'>URL</a>";
		if(isset($entry["doi"]) && $entry["doi"]!="") $entry_doi=", <a href='http://dx.doi.org/{$entry["doi"]}'>DOI</a>";
		if(isset($entry["fulltext"]) && $entry["fulltext"]!="") $entry_fulltext=", <a href='http://193.175.110.91/de/salzwiki/index.php/{$entry["fulltext"]}'>Volltext</a>";
		$return="$entry_name_url $start <a href='http://193.175.110.91/salzwiki_1.16.1/index.php/$entry_id'>$entry_author $entry_year: </a> {$entry["title"]}$entry_titleaddon$entry_school{$entry["publisher"]}$entry_crossref$entry_pages$entry_doi$entry_fulltext$entry_url.$end";


Die Literaturliste im Repositorium wird bisher durchnumeriert durch Anpassung der Zeilen 294ff:

$entry_name_url="# <span  class='bibprintwide' ><a href='$wgScriptPath/index.php?title=literature:Bibliography#".str_replace(' ','_',$entry_id)."'>[".$entry["entry_name"]."]:</a></span>"; 

Das "#" Zeichen führt zur Nummerierung.

OGG[Bearbeiten]

Dient zum Darstellen von Videodateien in SalzWiki Artikeln. Da es sich beim OGG-Format um ein freies Format hat, benötigt man keine Lizenz zum Darstellen der Inhalte. (Es ist noch zu klären, ob eventuell das MPEG Format für eine Hochschulanwendung Lizenzfrei sein könnte)

require( "$IP/extensions/OggHandler/OggHandler.php" );
$wgFFmpegLocation = 'd:\ffmpeg-wiki\bin\ffmpeg';

Hilfeseiten[Bearbeiten]

Deutsche und Englische Hilfeseiten von Wikimedia importiert (Risos 20.08.09) (Aktualisiert)

Hilfe:Contents | Hilfe/Contents/de |(einige Bilder fehlen noch)

Templates der Hilfeseiten Korrigiert, Bilder unter Beachtung der Lizenzen hochgeladen


Javascript[Bearbeiten]

Die Erweiterung dient dazu, den Navigationsbereich "Werkzeuge" entsprechend dem Anmeldestatus zu manipulieren. Siehe hierzu Sidebar anpassen.

include("$IP/extensions/JavaScript/JavaScript.php");

Die Erweiterung funktionierte leider nicht out of the box. Folgende Änderungen wurden von S. Reher (25.07.2010) vorgenommen:

Ab Zeile 32 wurden in der JavaScript.php die folgenden Zeilen hinzugefügt; dies dient dazu auf dem Window-System die Pfade korrekt anzupassen:

 $slashPos = strpos('/',$wgScriptPath);
 if ($slashPos==0) $wgScriptPath_tmp = substr_replace($wgScriptPath ,"",0, 1);
 $file = str_replace('\\','/', $file);
 $pos = strpos($file, $wgScriptPath_tmp);
 $length = strlen($file)-$pos;
 $file = substr($file, $pos, $length);
 $out->addScript( "<script src='/$file' type='$wgJsMimeType'></script>" );

Das Javascript lädt alle Dateien aus dem Verzeichnis, in diesem Falle die Datei "customizeSidebar.js". Das Javascript entfernt aufgrund der folgenden Zeilen Einträge aus dem Werkzeug-Kasten:

ModifySidebar("remove", "toolbox", "Spezialseiten", wgServer+wgScriptPath+"/index.php/Spezial:Spezialseiten");

Wann dies aktiv wird, wird über die folgenden Zeilen geregelt: /*if the user is not autor or admin, there should be displayed only necessary links*/ if ( wgUserGroups.Contains('autor') || wgUserGroups.Contains('Administrators') || wgUserGroups.Contains('forschung')) { /*if the user is guest, there should be displayed only necessary links*/ if (wgUserName == null) {

Terminology[Bearbeiten]

Die Extension Terminology dient zum Erstellen eines Glossars. Um Verwirrungen zu vermeiden, wurde die Datei in der alles gespeichert wird von Terminology in Glossar umbenannt. Nur in SalzWiki!!

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

;

CategoryTree[Bearbeiten]

Die Extension dient zur Darstellung der Kategorienbäzme, damit schnell den Artikeln und Dokumenten die richtigen Kategorien zugewiesen werden können.

$wgUseAjax = true; ##muss von false auf true geändert werden, falls noch nicht geschehen
require_once("{$IP}/extensions/CategoryTree/CategoryTree.php"); 

Cite[Bearbeiten]

Dient zum Erstellen von Fußnoten in SalzWiki Artikeln.

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

Siehe näheres zum Einfügen von Fußnoten unter http://193.175.110.91/salzwiki_1.16.1/index.php/Autor#Fu.C3.9Fnoten.

User Merge - Benutzername löschen[Bearbeiten]

Das Löschen von benutzernamen, die nicht mehr benötigt werden, geschieht durch das Zusammenführen des zu löschenden Benuztzernamens mit dem Benutzername "Testuser" zu "Testuser" mit Hilfe der Extension UserMerge.

require_once( "$IP/extensions/UserMerge/UserMerge.php" );
# Assign the usermerge right to a usergroup, i.e. to the bureaucrats:
$wgGroupPermissions['bureaucrat']['usermerge'] = true;

Eingabe von Formeln mittels Tex[Bearbeiten]

Damit z.B mathematische und auch chemische Formneln dargestellt werden können, wird in Mediawiki TEX benutzt.

Die tatsächliche Installation eines Tex-Systems erfolgte in Anlehnung an die alternative Methode auf der Mediawiki Seite http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Windows#Alternative_Solution.

Siehe im entsprechenden Kapitel unter SalzWiki


Hochladen von Dateien[Bearbeiten]

Damit Dateien hochgeladen werden können, ist in der localsettings.php folgende Einstellung vorzunehmen:

## To enable image uploads, make sure the 'images' directory
## is writable, then set this to true:
$wgEnableUploads       = true;

Folgende Dateitypen sind durch eine entsprechende Einstellung in den localsettings.php zugelassen:

$wgFileExtensions = array('png', 'gif', 'tiff','tif','jpg', 'jpeg', 'doc', 'xls', 'xml','pdf', 'svg', 'avi',
'mpeg','ogg', 'ogv', 'oga','mov');

Zugangsberechtigungen[Bearbeiten]

Nur Autoren können lesen und editieren[Bearbeiten]

Das aktuelle Nutzerschema lautet:

$wgWhitelistRead = array(":home", "Spezial:Userlogin");
$wgGroupPermissions['*']['read'] = false;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['user']['read'] = false;
$wgGroupPermissions['user']['edit'] = false;

# Prevent new user registrations except by sysops
$wgWhitelistAccount = array ( "user" => 0, "sysop" => 1, "developer" => 1 );
$wgGroupPermissions['*']['createaccount'] = false;

# Spezialgruppe Autor 
$wgGroupPermissions['autor']['emailconfirmed'] = true;
$wgGroupPermissions['autor']['createpage'] = true;
$wgGroupPermissions['autor']['createtalk'] = true;
$wgGroupPermissions['autor']['edit'] = true;
$wgGroupPermissions['autor']['read'] = true;
$wgGroupPermissions['autor']['upload'] = true;
$wgGroupPermissions['autor']['move'] = true;


# Spezialgruppe SalzWiki
$wgGroupPermissions['SalzWiki']['emailconfirmed'] = true;
$wgGroupPermissions['SalzWiki']['createpage'] = true;
$wgGroupPermissions['SalzWiki']['createtalk'] = true;
$wgGroupPermissions['SalzWiki']['edit'] = true;
$wgGroupPermissions['SalzWiki']['read'] = true;
$wgGroupPermissions['SalzWiki']['move'] = true;

$wgGroupPermissions['autor']['restrictusers'] = true; ##nur Autoren haben Zugriff auf special pages

Zugriff für Verzeichnis mit Bildern einschränken[Bearbeiten]

Standardmäßig kann in der Adresszeile des Browsers das Verzeichnis "images" aufgerufen werden, wodurch alle Dateien angezeigt und verfügbar werden. Um dies zu Verhindern ist eien Änderung wie folgt notwendig:


in der httpd.conf des Apache in ein "-" einzufügen

<Directory "D:\xampp\apache\conf">

   #
   # Possible values for the Options directive are "None", "All",
   # or any combination of:
   #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
   #
   # Note that "MultiViews" must be named *explicitly* --- "Options All"
   # doesn't give it to you.
   #
   # The Options directive is both complicated and important.  Please see
   # http://httpd.apache.org/docs/2.2/mod/core.html#options
   # for more information.
   #
   Options -Indexes FollowSymLinks Includes ExecCGI  // hier wurde ein "-" vor Indexces eingefügt