Adm:Einrichtung Wikis MW1.23: Unterschied zwischen den Versionen

Aus Salzwiki
Zur Navigation springen Zur Suche springen
 
(175 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 21: Zeile 21:
=== Server und Anwendungen ===
=== Server und Anwendungen ===


# Betriebssystem Windows-Server
# Betriebssystem Windows-Server 2012 R2
# XAMPP-Paket oder notwendige Bestandteile davon
# Webserver Apache 2.4.29 mit OpenSSL und anderen Zusatzmodulen
#* Datenbank-Server MySQL/MariaDB
#* 64-Bit ohne XAMPP
#* Webserver Apache
#* 32-Bit von XAMPP
#* Scriptsprache PHP mit Zusatzmodulen
# Datenbank-Server (MySQL/)MariaDB 10.1.30
# Wikisystem MediaWiki mit Erweiterungen und Zusatz-Software
#* 64-Bit ohne XAMPP
# Statistik-Anwendung
#* 32-Bit von XAMPP
# Datenbank-Management-Anwendung phpMyAdmin
# Scriptsprache PHP ThreadSafe (für Apache unter Windows) mit Zusatzmodulen
#* 64-Bit ohne XAMPP
#* 32-Bit von XAMPP 7.2.1/7.2.2
#* Zusatzmodul php-imagick (TS => PECL)
#** 64-Bit
#** 32-Bit
# Statistik-Anwendung Webalizer 2.23-08
#* 32-Bit
# XAMPP-Paket 7.2.1/7.2.2 wegen notwendiger Bestandteile davon
#* 32-Bit
# Wikisystem MediaWiki 1.27.4 LTS mit Erweiterungen und Zusatz-Software
# GhostScript (für MediaWiki), AGPL statt GPL seit Version 9.07
#* AGPL Version 9.22 (2017-10-04) statt GPL-Version 9.10 (2013-09-02) bei https://www.ghostscript.com/
#** 64-Bit-Version gs922w64.exe ohne XAMPP-Anwendungen
#** 32-Bit-Version gs922w32.exe für XAMPP-Anwendungen
#* GPL bis Version 9.10 (2013-09-02) bei https://sourceforge.net/projects/ghostscript/
#** 64-Bit-Version gs910w64.exe ohne XAMPP-Anwendungen
#** 32-Bit-Version gs910w32.exe für XAMPP-Anwendungen
# ImageMagick (für MediaWiki)
#* Version 7.0.7-25-Q16-[HDRI-]x64-dll.exe ohne XAMPP-Anwendungen
#* Version 7.0.7-25-Q16-[HDRI-]x86-dll.exe für XAMPP-Anwendungen 32-Bit
#* Version 6.9.3-8-Q16-x64-dll.exe ohne XAMPP-Anwendungen
#* Version 6.9.3-8-Q16-x86-dll.exe für XAMPP-Anwendungen 32-Bit
# php-imagick
#* neue 64-Bit-Version statt 3.2.0RC1-5.6-zd-bv22-c86_peewit.zip ohne XAMPP-Anwendungen
#* neue 32-Bit-Version statt 3.2.0RC1-5.6-zd-bv22-c86_peewit.zip für XAMPP-Anwendungen
# MiKTeX 2.9.5870
# <del>Statistik-Anwendung Piwik</del>
 
==== Programme unter Systemsteuerung Windows Server 2012 R2 ====
 
===== Für MediaWiki 1.27.4 LTS =====
 
* GPL Ghostscript 9.22
* ImageMagick 7.0.7-25 Q16 HDRI dll (dynamic)
* Microsoft Visual C++ 2017 Redistributable [VC15]
** (x64) - 14.13.26020.0
** (x86) - 14.13.26020.0 <del>14.11.25325.0</del>
* MikTeX 2.9
 
===== Für MediaWiki 1.23.11 LTS =====
 
* GPL Ghostscript 9.10
* ImageMagick 6.9.3-8 Q16 (32-bit) (2016-04-10)
* Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.6161
* Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148
* Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.6161
* Microsoft Visual C++ 2012 Redistributable (x86) - 11.0.61030 Update 4
* MikTeX 2.9
 
==== Programme unter Systemsteuerung Windows Server 2008 32 Bit ====
 
===== Für MediaWiki 1.23.11 LTS und 1.16 =====
 
* GPL GhostScript 8.70
* ImageMagick 6.5.9-0 Q16 (2010-01-01)
* Microsoft .Net Framework 3.5 Language Pack SP1 - DEU
* Microsoft .Net Framework 3.5 SP1
* Microsoft .Net Framework 4.5.2
* Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148
* Microsoft Visual C++ 2012 Redistributable (x86) - 11.0.61030 Update 4
* MikTeX 2.8
* MSXML 4.0 SP2 (KB954430)
* MSXML 4.0 SP2 (KB973688)
* OggVideoTools Ogg Video Tools
* XAMPP 1.7.1


=== Verzeichnisse und Dateien ===
=== Verzeichnisse und Dateien ===
Zeile 98: Zeile 165:
Das XAMPP-Paket ist als gepackte Datei, entweder zip oder 7z, zu verwenden, um eine Installation im System zu verhindern.
Das XAMPP-Paket ist als gepackte Datei, entweder zip oder 7z, zu verwenden, um eine Installation im System zu verhindern.


Nach dem Entpacken des XAMPP-Pakets ist die Datei "D:\xampp\setup_xampp.bat" auszuführen, um in den Konfigurationsdateien die Pfade für "D:\xampp\..." anpassen zu lassen.
Nach dem Entpacken des XAMPP-Pakets ist
* im Verzeichnis "D:\xampp\" das Unterverzeichnis "Apache24\" umzubenennen in "apache\"
* die Datei "D:\xampp\setup_xampp.bat" auszuführen, um in den Konfigurationsdateien die Pfade für "D:\xampp\..." anpassen zu lassen.


Bei der Installation von XAMPP werden nicht erforderliche Anwendungen auf dem Server gespeichert, z. B.:
Bei der Installation von XAMPP werden nicht erforderliche Anwendungen auf dem Server gespeichert, z. B.:
Zeile 114: Zeile 183:
===== Verzeichniszugriff für "dashboard" einrichten =====
===== Verzeichniszugriff für "dashboard" einrichten =====


Um das Verzeichnis "dashboard", das als localhost-Startverzeichnis im Browser geladen wird, vor öffentlichen Zugriffen zu schützen, werden 2 Dateien angelegt:
Um das Verzeichnis "dashboard", das als localhost-Startverzeichnis im Browser geladen wird, vor öffentlichen Zugriffen zu schützen, wird die allgemeine Startseiten-Datei "index.php" angepasst und werden 2 Dateien angelegt.
 
Anpassung bei der allgemeinen Startseiten-Datei:
* "xampp\htdocs\index.php" umbenennen zu "xampp\htdocs\index_original.php"
* Datei "index.php" erstellen mit Verweisen zu den Wikis
* Dtaei "index_localhost.php" erstellen für Zugriff auf das Verzeichnis "dashboard"
 
Die beiden neuen Dateien für Zugangsberechtigungen:
* "xampp\htdocs\dashboard\.htaccess"
* "xampp\htdocs\dashboard\.htaccess"
* "xampp\security\dashboard.htpasswd"
* "xampp\security\dashboard.htpasswd"


Datei ".htaccess" mit "/" statt "\" in der Pfadangabe unter Windows wie bei Linux:
Neu erstellte Datei "index.php":
<pre>
<pre>
AuthType Basic
<!DOCTYPE>
AuthName "XAMPP Dashboard"
<html>
AuthUserFile "../security/dashboard.htpasswd"
<head>
Require valid-user
<title>SalzWiki SaltWiki RepositoryWiki</title>
</head>
<body>
<?php
if(!empty($_SERVER['HTTPS']) && ('on'==$_SERVER['HTTPS'])){
  $prot = 'https://';
}
else{
  $prot = 'http://';
}
?>
<ul>
  <li><a href="<?php echo $prot; ?>salzwiki.de" title="SalzWiki">SalzWiki: www.salzwiki.de</a></li>
  <li><a href="<?php echo $prot; ?>saltwiki.net" title="SaltWiki">SaltWiki: www.saltwiki.net</a></li>
  <li><a href="<?php echo $prot; ?>repository.hawk-hhg.de" title="RepositoryWiki">RepositoryWiki: repository.hawk-hhg.de</a></li>
</ul>
</body>
</html>
</pre>
 
Neu erstellte Datei "index_localhost.php":
<pre>
<?php
if($_SERVER['HTTP_HOST']=="localhost"){
  #var_dump($_SERVER['HTTP_HOST']);
  header('Location: http://'.$_SERVER['HTTP_HOST'].'/dashboard/');
}
else{
  header('Location: http://'.$_SERVER['HTTP_HOST'].'/index.php');
}
?>
</pre>
 
Datei ".htaccess" mit "/" statt "\" in der Pfadangabe unter Windows wie bei Linux:
<pre>
AuthType Basic
AuthName "XAMPP Dashboard"
AuthUserFile "../security/dashboard.htpasswd"
Require valid-user
</pre>
</pre>


Zeile 135: Zeile 249:
Die Server und Anwendungen werden wie bei einer XAMPP-Installation in ein Verzeichnis "D:\xampp\" installiert.
Die Server und Anwendungen werden wie bei einer XAMPP-Installation in ein Verzeichnis "D:\xampp\" installiert.


Sofern Apache, MySQL/MariaDB, PHP, phpMyAdmin aus einem XAMPP-Paket verwendet werden, sind Angaben in den Konfigurationsdateien sowie in den batch-Dateien für Starts und Stopps anzupassen.
Sofern Apache, MySQL/MariaDB, PHP, phpMyAdmin und gegebenenfalls Webalizer aus einem XAMPP-Paket verwendet werden, sind Angaben in den Konfigurationsdateien sowie in den batch-Dateien für Starts und Stopps anzupassen.


Es ist im Verzeichnis "D:\xampp\htdocs\" ein Unterverzeichnis "info\" anzugelegen, in das die Datei "phpinfo.php" aus dem XAMPP-Verzeichnis "dashboard\" kopiert wird. Im Verzeichnis "htdocs\" wird die XAMPP-Datei "index.php" dahingehend angepasst, dass die Weiterleitung nicht zum Verzeichnis "/dashboard/", sondern zur Datei "/info/phpinfo.php" führt und dass in der letzten Zeile im Textbereich das Wort "XAMPP" entfernt wird.
Es ist im Verzeichnis "D:\xampp\htdocs\" ein Unterverzeichnis "info\" anzugelegen, in das die Datei "phpinfo.php" aus dem XAMPP-Verzeichnis "dashboard\" kopiert wird. Im Verzeichnis "htdocs\" wird die XAMPP-Datei "index.php" dahingehend angepasst, dass die Weiterleitung nicht zum Verzeichnis "/dashboard/", sondern zur Datei "/info/phpinfo.php" führt und dass in der letzten Zeile im Textbereich das Wort "XAMPP" entfernt wird.
Zeile 143: Zeile 257:
== Apache-Webserver ==
== Apache-Webserver ==


Das Verzeichnis für Apache wird von "Apache2.4" in "apache" umbenannt.
Der Apache-Webserver ist als Dienst zu installieren, damit er nach Rechner-Neustarts durch Windows-Updates automatisch gestartet werden kann.
 
=== Konfiguration für HTTPS ===
 
Es sind für HTTPS mit Verschlüsselung folgende Änderungen gegenüber HTTP ohne Verschlüsselung erforderlich:
 
* Server-Zertifikat
** Zertifikat von einer anerkannten Zertifizierungsstelle erstellen lassen
** Anpassung einiger Zertifikat-Dateien für Apache unter Windows
* Domain-Adresse für das Repositorium
* Apache-Konfiguration
** für Virtuelle Hosts mit Port 443 in der Datei "...\apache\extra\httpd-vhosts.conf"
** für Deaktivierung des Passphrasen-Dialogs in der Datei "...\apache\extra\httpd-ssl.conf"
* MediaWiki-Konfigurationsdatei "LocalSettings.php"
** eigene PHP-Variable für das bei der Anfrage verwendete Protokoll
** CreativeCommons-URLs mit https
 
==== Server-Zertifikat ====
 
Das Server-Zertifikat wird vom Rechenzentrum der Hochschule beim DFN beantragt.
 
===== Zertifikat-Domains =====


=== Apache ohne XAMPP ===
Das Zertifikat muss folgende Domain-Adressen abdecken:
* salzwiki.de, www.salzwiki.de
* saltwiki.net, www.saltwiki.net
* repository.hawk-hhg.de, salzwiki.hawk-hhg.de, saltwiki.hawk-hhg.de
 
===== Zertifikat-Dateien =====


Für die Nutzung von Apache ohne XAMPP ist zu berücksichtigen, dass der Apache-Webserver für Windows nicht bei [http://httpd.apache.org/docs/current/platform/windows.html#down apache.org] erhältlich ist. Es empfiehlt sich die Verwendung des Apache aus einem [https://www.apachefriends.org/index.html?ModPagespeed=noscript XAMPP-Paket von apachefriends.org]. Eventuell können auch die Portable-Versionen von [https://sourceforge.net/projects/apachehttpportable/ ApacheHTTPD_PHP_Portable_2.4.6] und [https://sourceforge.net/projects/apache2portable/ portable-apache-2.2.17-win32-x86] verwendet werden.
Die Zertifikat-Dateien haben folgende Bezeichnungen:
* **öffentlicher Schlüssel**: "cert-***.pem" wird umbenannt in "salzwiki_cert_pem.crt"
* **Zertifikate-Kette**
** "salzwiki.de.pem" enthält zwischen den Zertifikate-Blöcken Hinweise zum jeweiligen Zertifikat und kann von Apache nicht verwendet werden
** "salzwiki_chain_pem.crt" wird als Kopie von "salzwiki.de.pem" ohne die Hinweise zwischen den Blöcken erstellt
* privater Schlüssel
** "salzwiki.de.key" ist mit einem Passwort geschützt und kann von Apache unter Windows nicht verwendet werden
** "salzwiki.de.nopw.key" wird als Kopie von "salzwiki.de.key" ohne Passwortschutz erstellt


Die Pfadangaben in den Konfigurationsdateien und in den batch-Dateien für Starts und Stopps sind nach der Verzeichnisumbenennung von "Apache2.4" zu "apache" anzupassen.
Um die Datei mit dem privaten Schlüssel ohne Passwortschutz verwenden zu können, müssen die Zugriffsrechte für das Verzeichnis "...\apache\conf\ssl.key\" erhöht werden. Das Verzeichnis darf nur vom Webserver ausgelesen werden können und nur mit Admin-Rechten zugänglich sein. Die Windows-Gruppe "Benutzer" muss von der Vererbung der übergeordneten Verzeichnisse befreit und aus den Verzeichnis-Berechtigungen entfernt werden.


Nachdem die Kommandozeile als Administrator geöffnet wurde, den Apache-Dienst installieren:
Für die Erzeugung der Datei mit dem privaten Schlüssel ohne Passwortschutz kann die Datei "...\apache\bin\openssl.exe" verwendet werden, wenn der Webserver aus dem "XAMPP"-Paket installiert ist. Hierzu die geschützte Schlüsseldatei in dasselbe Verzeichnis einfügen, die Kommandozeile mit Admin-Rechten öffnen und folgenden Befehl eingeben:
<pre>
<pre>
D:
openssl x509 -in salzwiki.de.key -out salzwiki.de.nopw.key
cd xampp\apache\bin
httpd -k install
</pre>
</pre>


Der Apache-Webserver wird entweder mit Hilfe des Apache-Monitors oder per Kommandozeile gestartet und angehalten:
Die Zertifikate-Dateien werden in folgenden Unterverzeichnissen von "...\apache\conf\" gespeichert:
* ssl.crt
** salzwiki_cert_pem.crt
** salzwiki_chain_pem.crt
* ssl.key
** salzwiki.de.key
** salzwiki.de.nopw.key
 
==== Apache-Konfiguration ohne Passphrasen-Dialog ====
 
Um unter Windows den Apache-Webserver bei Seitenaufrufen an der Passwort-Abfrage zu hindern ist in der Datei "httpd-ssl.conf" der Passphrasen-Dialog wie folgt auszukommentieren:
<pre>
<pre>
NET start Apache2.4
#SSLPassPhraseDialog builtin
</pre>
 
==== Wiki-Konfiguration für Übertragungsprotokoll ====


cd D:\xampp\
In der Datei "LocalSettings.php" wird bei Z.33ff eine Abfrage, welches Protokoll (http oder https) beim jeweiligen Seitenaufruf verwendet wird, eingefügt. Das Ergebnis wird in einer Variablen gespeichert und an mehreren Stellen in der Datei eingesetzt:
apache\bin\pv -f -k httpd.exe -q
<pre>
del apache\logs\httpd.pid
## The protocol and server name to use in fully-qualified URLs
if($_SERVER['HTTPS']==="on" OR !empty($_SERVER['HTTPS'])){$protokoll = "https";}
else{$protokoll = "http";}
$wgServer = $protokoll."://".$_SERVER['SERVER_NAME'];
</pre>
</pre>


=== Konfiguration allgemein ===
=== Konfiguration für IP oder Domain ===
 
"SalzWiki" und "Salt"Wiki" wurden ursprünglich durch Weiterleitungen von den "1&1"-Servern über folgende IP-Adressen eines "HAWK"-Servers zur Verfügung gestellt:
* salzwiki.de => 193.175.110.91/salzwiki
* saltwiki.net => 193.175.110.91/saltwiki


Bei einer Installation von Apache, PHP, phpMyAdmin und MariaDB ohne XAMPP werden die Verwendung von PHP und die Berechtigungen nicht in der Datei "\conf\extra\httpd-xampp.conf" festgelegt, sondern in der Datei "httpd.conf" und bei XAMPP 5.6.14 zusätzlich in der Datei "\conf\extra\httpd-phpmyadmin.conf".
Das Repositorium war ohne Domain nur direkt über folgende IP-Adresse eines "HAWK"-Servers verfügbar:
* 193.175.110.91/repository


Die Konfiguration unterscheidet sich somit je nach Installation:
Für eine Nutzung der Wikis per "HTTPS" mit SSL-Server-Zertifikat müssen Domain-Adressen statt IP-Adressen verwendet werden. Hierfür wurde bei den über "1&1" gehosteten Domains der DNS-Eintrag vom "1&1"-Server zum "HAWK"-Server geändert und die Weiterleitung aufgehoben.
* Apache eigenständig oder als Teil von XAMPP, z. B. für die Verwendung von PHP sowie für Berechtigungen
** ohne XAMPP: in der Datei "\conf\httpd.conf"
** mit XAMPP: in der Datei "\conf\extra\httpd-xampp.conf"
* bei der Verwendung von XAMPP in der Version 5.6.14 gegenüber der Version 5.6.30
** XAMPP 5.6.14 mit Konfiguration für phpMyAdmin in der Datei "apache\conf\extra\httpd-phpmyadmin.conf"


==== conf-Dateien mit und ohne XAMPP ====
Damit bei der Anmeldung im Repositorium vom Browser keine Sicherheitswarnung wegen eines fehlenden Server-Zertifikats erscheint, ist eine eigene Domain-Adresse für das Repositorium notwendig. Weil der Vertrag mit "1&1" keine Subdomains vorsieht, wurde hierfür bei der HAWK die Subdomain "repository.hawk-hhg.de" eingerichtet.


Verzeichnispfade anpassen von "C:/Apache24" zu "D:/xampp/apache"
==== Konfiguration für IP ====
* Datei "apache\conf\httpd.conf
* Verzeichnis "apache\conf\extra\": httpd-autoindex.conf, httpd-dav.conf, httpd-manual.conf, httpd-multilang-errordoc.conf, httpd-ssl.conf, httpd-vhosts.conf
* XAMPP-Konfiguration "apache\conf\extra\httpd-xampp.conf"
* phpMyAdmin-Konfiguration von XAMPP 5.6.14 "apache\conf\extra\httpd-phpmyadmin.conf"


==== httpd.conf mit und ohne XAMPP ====
Sofern die Wikis mit der IP-Adresse verwendet werden, sind keine besonderen Anpassungen in den Apache-Konfigurationsdateien erforderlich, abgesehen von den Unterschieden zwischen einer Installation mit oder ohne "XAMPP".


==== Konfiguration für Domain ====
Sofern die Wikis mit den Domain-Adressen und "HTTPS" verwendet werden, sind Definitionen in folgenden Apache-Konfigurationsdateien im Unterverzeichnis "\extra\" erforderlich:
* httpd-vhosts.conf für Virtual Hosts
* httpd-ssl.conf eventuell für Anpassung der Standard-SSL-Konfiguration
===== Virtual Hosts =====
Mehrere Domain-Adressen mit unterschiedlichen Inhalten auf einem Server werden als Virtual Hosts (VHosts) in der Datei "httpd-vhosts.conf" verwaltet.
Der zuerst definierte VHost ist der Standard-Server, beispielsweise "localhost", für Test-Wikis ohne Domain-Adresse und für nicht definierte Adressen mit dem Standard-Port 80 für "HTTP". Danach folgen die Definitionen für die Domain-Adressen und ihre Alias-Adressen mit dem Standard-Port 80 für "HTTP":
* localhost (inkl. 193.175.110.91/salzwiki_draft, 193.175.110.91/saltwiki_draft, 193.175.110.91/repository_draft)
* salzwiki.de alias www.salzwiki.de und salzwiki.hawk-hhg.de
* saltwiki.net alias www.saltwiki.net und saltwiki.hawk-hhg.de
* repository.hawk-hhg.de
* subdomain-name.localhost
Für HTTPS-Verbindungen mit Port 443 erhalten folgende Domain-Adressen ebenfalls einen Eintrag in dieser VHosts-Datei – nicht in der Datei "httpd-ssl.conf":
* localhost (mit selbst erstelltem SSL-Server-Zertifikat)
* salzwiki.de alias www.salzwiki.de und salzwiki.hawk-hhg.de
* saltwiki.net alias www.saltwiki.net und saltwiki.hawk-hhg.de
* repository.hawk-hhg.de
====== Subdomains für localhost ======
Subdomains für "localhost" können als "ServerAlias" oder für lokale Tests als "ServerName" festgelegt werden. Hierfür ist zusätzlich die "hosts"-Datei von Windows im Verzeichnis "C:\Windows\System32\drivers\etc\" zu ergänzen:
<pre>
<pre>
ServerRoot "D:/xampp/apache"
# Für Tests des Hornemann Instituts der HAWK eingefügt 2017-05-23
Listen 80
193.175.110.91  szw.localhost
...
193.175.110.91  stw.localhost
LoadModule acces_compat_module modules/mod_access_compat.so
193.175.110.91  rpw.localhost
LoadModule actions_module modules/mod_actions.so
193.175.110.91  salzwiki.localhost
LoadModule alias_module modules/mod_alias.so
193.175.110.91  saltwiki.localhost
LoadModule allowmethods_module modules/mod_allowmethods.so
193.175.110.91  repository.localhost
LoadModule asis_module modules/mod_asis.so
</pre>
LoadModule auth_basic_module modules/mod_auth_basic.so
 
LoadModule authn_core_module modules/mod_authn_core.so
====== Umstellung von IP-Adresse zu Domain-Adresse ======
LoadModule authn_file_module modules/mod_authn_file.so
 
LoadModule authz_core_module modules/mod_authz_core.so
Bei einer Umstellung von IP-Adresse zu Domain-Adresse ändert sich das "root"-Verzeichnis von "htdocs" zum jeweiligen Wiki-Unterverzeichnis, das bei der VHost-Definition angegeben ist. Deshalb werden beim Standard-VHost für die bisher verwendeten Wiki-IP-Adressen Weiterleitungen zu den Wiki-Domain-Adressen eingerichtet, weil bei einer solchen Umstellung auch in den Wiki-Konfigurationsdateien "LocalSettings.php" in Z.30 der Pfad bei "$wgScriptPath" zu einem leeren String zu ändern ist:
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
<pre>
LoadModule authz_host_module modules/mod_authz_host.so
$wgScriptPath = ""; #"/salzwiki"; #"/saltwiki"; #"/repository";
LoadModule authz_user_module modules/mod_authz_user.so
</pre>
LoadModule autoindex_module modules/mod_autoindex.so
Vergleich zwischen IP-Adresse und Domain-Adresse:
LoadModule dir_module modules/mod_dir.so
* SalzWiki
LoadModule env_module modules/mod_env.so
** IP-Adresse: salzwiki.de als Weiterleitung zu "193.175.110.91/salzwiki/" mit $wgScriptPath = "/salzwiki";
LoadModule include_module modules/mod_include.so
** Domain-Adresse: salzwiki.de als DNS-Eintrag zu "193.175.110.91" bei "1&1" mit Apache-VHost-Verzeichnis "/salzwiki" und mit $wgScriptPath = "";
LoadModule isapi_module modules/mod_isapi.so
* SaltWiki
LoadModule log_config_module modules/mod_log_config.so
** IP-Adresse: saltwiki.net als Weiterleitung zu "193.175.110.91/saltwiki/" mit $wgScriptPath = "/saltwiki";
LoadModule mime_module modules/mod_mime.so
** Domain-Adresse: saltwiki.net als DNS-Eintrag zu "193.175.110.91" bei "1&1" mit Apache-VHost-Verzeichnis "/saltwiki" und mit $wgScriptPath = "";
LoadModule negotiation_module modules/mod_negotiation.so
* Repository ohne Domain-Adresse
LoadModule rewrite_module modules/mod_rewrite.so
** IP-Adresse: "193.175.110.91/repository/" mit $wgScriptPath = "/repository";
#LoadModule session_module modules/mod_session.so
* Repository mit Domain-Adresse
#LoadModule session_cookie_module modules/mod_session_cookie.so
** IP-Adresse: repository.hawk-hhg.de als Weiterleitung zu "193.175.110.91/repository/" mit $wgScriptPath = "/repository";
#LoadModule session_crypto_module modules/mod_session_crypto.so
** Domain-Adresse: repository.hawk-hhg.de als DNS-Eintrag zu "193.175.110.91" bei der HAWK mit Apache-VHost-Verzeichnis "/repository" und mit $wgScriptPath = "";
LoadModule setenvif_module modules/mod_setenvif.so
 
LoadModule ssl_module modules/mod_ssl.so
====== VHost-Definitionen ======
LoadModule status_module modules/mod_status.so
 
...
Für HTTPS ist das öffentliche Ketten-Zertifikat "salzwiki_chain_pem.crt" als Standard-Zertifikat in der Direktive "SSLCertificateFile" anzugeben und die Direktive "SSLCertificateChainFile" auszukommentieren, weil sonst die Browser bei der Überprüfung hängen bleiben, wenn nicht gerade der Apache-Dienst im Task-Manager neu gestartet wurde.
ServerAdmin webmaster@hornemann-institut.de
 
ServerName localhost:80
Für HTTPS dürfen die Angaben für ServerName und ServerAlias keine Port-Angabe enthalten, weil "Google Chrome" sonst das Zertifikat als unsicher deklariert.
...
 
DocumentRoot D:/xampp/htdocs
Einzutragende Definitionen in der Datei "httpd-vhosts.conf":
...
<pre>
<IfModule dir_module>
# Standard-VHost HTTP
   DirectoryIndex index.php index.shtml index.html index.htm \
<VirtualHost *:80>
                default.php default.shtml default.html default.htm \
ServerName localhost
                home.php home.shtml home.html home.htm
##ServerAlias 193.175.110.91
</IfModule>
ServerAdmin service@salzwiki.de
...
DocumentRoot "D:/xampp/htdocs/"
<Files ".ht*">
ErrorLog "logs/error.log"
   Require all denied
CustomLog "logs/access.log" combined
</Files>
RewriteEngine On
RewriteCond %{REQUEST_URI} /salzwiki
RewriteCond %{REQUEST_URI} !=/salzwiki_
RewriteRule "^/salzwiki/(.*)$" "http://salzwiki.de/$1" [R=301,L]
RewriteCond %{REQUEST_URI} /saltwiki
RewriteCond %{REQUEST_URI} !=/saltwiki_
RewriteRule "^/saltwiki/(.*)$" "http://saltwiki.net/$1" [R=301,L]
# Weiterleitung, sobald eine Subdomain repository.hawk-hhg.de eingerichtet ist
RewriteCond %{REQUEST_URI} /repository
RewriteCond %{REQUEST_URI} !=/repository_
RewriteRule "^/repository/(.*)$" "http://repository.hawk-hhg.de/$1" [R=301,L]
</VirtualHost>
# Standard-VHost HTTPS
<VirtualHost *:443>
ServerName localhost
ServerAdmin service@salzwiki.de
DocumentRoot "D:/xampp/htdocs"
<Directory "D:/xampp/htdocs">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
</Directory>
ErrorLog "logs/error.log"
TransferLog "logs/access.log"
CustomLog "logs/ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
RewriteEngine On
RewriteCond %{HTTP_HOST} salzwiki.localhost
RewriteRule "^(.*)$" "https://salzwiki.de$1" [R=301,L]
RewriteCond %{REQUEST_URI} /repository
RewriteCond %{REQUEST_URI} !=/repository_
RewriteRule "^(.*)$" "http://193.175.110.91/$1" [R=301,L]
# Weiterleitung, sobald eine Subdomain repository.hawk-hhg.de eingerichtet ist
RewriteCond %{REQUEST_URI} /repository
RewriteCond %{REQUEST_URI} !=/repository_
RewriteRule "^/repository/(.*)$" "https://repository.hawk-hhg.de/$1" [R=301,L]
SSLEngine on
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
</VirtualHost>
# SalzWiki-VHost HTTP
<VirtualHost *:80>
ServerName salzwiki.de
ServerAlias www.salzwiki.de salzwiki.hawk-hhg.de salzwiki.localhost
ServerAdmin service@salzwiki.de
DocumentRoot "D:/xampp/htdocs/salzwiki"
<Directory "D:/xampp/htdocs/salzwiki">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
</Directory>
ErrorLog "logs/error_salzwiki.log"
CustomLog "logs/access_salzwiki.log" combined
RewriteEngine On
RewriteCond %{HTTP_HOST} salzwiki.localhost
RewriteRule "^(.*)$" "http://193.175.110.91/salzwiki$1" [R=301,L]
RewriteCond %{REQUEST_URI} /repository
RewriteCond %{REQUEST_URI} !=/repository_
RewriteRule "^(.*)$" "http://193.175.110.91/$1" [R=301,L]
</VirtualHost>
# SalzWiki-VHost HTTPS
<VirtualHost *:443>
ServerName salzwiki.de
ServerAlias www.salzwiki.de salzwiki.hawk-hhg.de salzwiki.localhost
ServerAdmin service@salzwiki.de
DocumentRoot "D:/xampp/htdocs/salzwiki"
<Directory "D:/xampp/htdocs/salzwiki">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
</Directory>
ErrorLog "logs/error_salzwiki.log"
TransferLog "logs/access_salzwiki.log"
CustomLog "logs/ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
RewriteEngine On
RewriteCond %{HTTP_HOST} salzwiki.localhost
RewriteRule "^(.*)$" "https://salzwiki.de$1" [R=301,L]
RewriteCond %{REQUEST_URI} /repository
RewriteCond %{REQUEST_URI} !=/repository_
RewriteRule "^(.*)$" "http://193.175.110.91/$1" [R=301,L]
SSLEngine on
SSLCertificateFile "conf/ssl.crt/salzwiki_chain_pem.crt"
#SSLCertificateFile "conf/ssl.crt/salzwiki_cert_pem.crt"
SSLCertificateKeyFile "conf/ssl.key/salzwiki.denopw.key"
#SSLCertificateChainFile "conf/ssl.crt/salzwiki_chain_pem.crt"
#SSLCertificateFile "conf/ssl.crt/server.crt"
#SSLCertificateKeyFile "conf/ssl.key/server.key"
</VirtualHost>
# SaltWiki-VHost HTTP
<VirtualHost *:80>
ServerName saltwiki.net
ServerAlias www.saltwiki.net saltwiki.hawk-hhg.de saltwiki.localhost
ServerAdmin service@saltwiki.net
DocumentRoot "D:/xampp/htdocs/saltwiki"
<Directory "D:/xampp/htdocs/saltwiki">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
</Directory>
ErrorLog "logs/error_saltwiki.log"
CustomLog "logs/access_saltwiki.log" combined
RewriteEngine On
RewriteCond %{HTTP_HOST} saltwiki.localhost
RewriteRule "^(.*)$" "http://193.175.110.91/saltwiki$1" [R=301,L]
RewriteCond %{REQUEST_URI} /repository
RewriteCond %{REQUEST_URI} !=/repository_
RewriteRule "^(.*)$" "http://193.175.110.91/$1" [R=301,L]
</VirtualHost>
# SaltWiki-VHost HTTPS
<VirtualHost *:443>
ServerName saltwiki.net
ServerAlias www.saltwiki.net saltwiki.hawk-hhg.de saltwiki.localhost
ServerAdmin service@saltwiki.net
DocumentRoot "D:/xampp/htdocs/saltwiki"
<Directory "D:/xampp/htdocs/saltwiki">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
</Directory>
ErrorLog "logs/error_saltwiki.log"
TransferLog "logs/access_saltwiki.log"
CustomLog "logs/ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
RewriteEngine On
RewriteCond %{HTTP_HOST} saltwiki.localhost
RewriteRule "^(.*)$" "https://saltwiki.net$1" [R=301,L]
RewriteCond %{REQUEST_URI} /repository
RewriteCond %{REQUEST_URI} !=/repository_
RewriteRule "^(.*)$" "http://193.175.110.91/$1" [R=301,L]
SSLEngine on
SSLCertificateFile "conf/ssl.crt/salzwiki_chain_pem.crt"
#SSLCertificateFile "conf/ssl.crt/salzwiki_cert_pem.crt"
SSLCertificateKeyFile "conf/ssl.key/salzwiki.denopw.key"
#SSLCertificateChainFile "conf/ssl.crt/salzwiki_chain_pem.crt"
#SSLCertificateFile "conf/ssl.crt/server.crt"
#SSLCertificateKeyFile "conf/ssl.key/server.key"
</VirtualHost>
# Repositorium-VHost HTTP
<VirtualHost *:80>
ServerName repository.hawk-hhg.de
ServerAlias repository.localhost
ServerAdmin service@salzwiki.de
DocumentRoot "D:/xampp/htdocs/repository"
<Directory "D:/xampp/htdocs/repository">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
</Directory>
ErrorLog "logs/error_repository.log"
CustomLog "logs/access_repository.log" combined
# Weiterleitung, solange keine Subdomain repository.hawk-hhg.de eingerichtet ist
RewriteEngine On
RewriteCond %{HTTP_HOST} repository.localhost [OR]
RewriteCond %{HTTP_HOST} repository.hawk-hhg.de
RewriteRule "^(.*)$" "http://193.175.110.91/repository$1" [R=301,L]
</VirtualHost>
# Repositorium-VHost HTTPS
<VirtualHost *:443>
ServerName repository.hawk-hhg.de
ServerAlias repository.localhost
ServerAdmin service@salzwiki.de
DocumentRoot "D:/xampp/htdocs/repository"
<Directory "D:/xampp/htdocs/repository">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
   Require all granted
</Directory>
ErrorLog "logs/error_repository.log"
TransferLog "logs/access_repository.log"
CustomLog "logs/ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
# Weiterleitung, solange keine Subdomain repository.hawk-hhg.de eingerichtet ist
#RewriteEngine On
#RewriteCond %{HTTP_HOST} repository.localhost [OR]
#RewriteCond %{HTTP_HOST} repository.hawk-hhg.de
#RewriteRule "^(.*)$" "https://193.175.110.91/repository$1" [R=301,L]
SSLEngine on
SSLCertificateFile "conf/ssl.crt/salzwiki_chain_pem.crt"
#SSLCertificateFile "conf/ssl.crt/salzwiki_cert_pem.crt"
SSLCertificateKeyFile "conf/ssl.key/salzwiki.denopw.key"
#SSLCertificateChainFile "conf/ssl.crt/salzwiki_chain_pem.crt"
#SSLCertificateFile "conf/ssl.crt/server.crt"
#SSLCertificateKeyFile "conf/ssl.key/server.key"
</VirtualHost>
 
######## Beginn Draft-Wikis für Tests ########
<VirtualHost *:80>
ServerName szw.localhost
ServerAdmin service@salzwiki.de
DocumentRoot "D:/xampp/htdocs/salzwiki_draft"
<Directory "D:/xampp/htdocs/salzwiki_draft">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
</Directory>
ErrorLog "logs/error_salzwiki_draft.log"
CustomLog "logs/access_salzwiki_draft.log" combined
RewriteEngine On
RewriteCond %{HTTP_HOST} szw.localhost
RewriteRule "^(.*)$" "http://193.175.110.91/salzwiki_draft$1" [R=301,L]
</VirtualHost>
<VirtualHost *:80>
ServerName stw.localhost
ServerAdmin service@saltwiki.net
DocumentRoot "D:/xampp/htdocs/saltwiki_draft"
<Directory "D:/xampp/htdocs/saltwiki_draft">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
</Directory>
ErrorLog "logs/error_saltwiki_draft.log"
CustomLog "logs/access_saltwiki_draft.log" combined
RewriteEngine On
RewriteCond %{HTTP_HOST} stw.localhost
RewriteRule "^(.*)$" "http://193.175.110.91/saltwiki_draft$1" [R=301,L]
</VirtualHost>
<VirtualHost *:80>
ServerName rpw.localhost
ServerAdmin service@salzwiki.de
DocumentRoot "D:/xampp/htdocs/repository_draft"
<Directory "D:/xampp/htdocs/repository_draft">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
   Require all granted
</Directory>
ErrorLog "logs/error_repository_draft.log"
CustomLog "logs/access_repository_draft.log" combined
RewriteEngine On
RewriteCond %{HTTP_HOST} rpw.localhost
RewriteRule "^(.*)$" "http://193.175.110.91/repository_draft$1" [R=301,L]
</VirtualHost>
######## Ende Draft-Wikis für Tests ########
</pre>
</pre>


==== httpd.conf für PHP ohne XAMPP ====
=== conf-Dateien mit und ohne XAMPP ===


Bei einer Installation von Apache, PHP, phpMyAdmin und MariaDB ohne XAMPP werden die Verwendung von PHP und die Berechtigungen nicht in der Datei "\conf\extra\httpd-xampp.conf" festgelegt, sondern in den Dateien "httpd.conf" und "\conf\extra\httpd-phpmyadmin.conf".
Konfigurationsdateien mit Verzeichnispfaden:
* Datei "apache\conf\httpd.conf
* Dateien im Verzeichnis "apache\conf\extra\"
** httpd-autoindex.conf
** httpd-dav.conf
** httpd-manual.conf
** httpd-multilang-errordoc.conf
** httpd-ssl.conf
** httpd-vhosts.conf
* XAMPP-Konfiguration "apache\conf\extra\httpd-xampp.conf"


<pre>
=== Apache ohne XAMPP ===
...
LoadModule php5_module D:/xampp/php/php5apache2_4.dll


<IfModule php5_module>
Für die Nutzung von Apache ohne XAMPP ist zu berücksichtigen, dass der Apache-Webserver für Windows nicht bei [http://httpd.apache.org/docs/current/platform/windows.html#down apache.org] erhältlich ist. Es empfiehlt sich die Verwendung des Apache aus einem [https://www.apachefriends.org/index.html?ModPagespeed=noscript XAMPP-Paket von apachefriends.org]. Eventuell können auch die Portable-Versionen von [https://sourceforge.net/projects/apachehttpportable/ ApacheHTTPD_PHP_Portable_2.4.6] und [https://sourceforge.net/projects/apache2portable/ portable-apache-2.2.17-win32-x86] verwendet werden.
AddHandler application/x-httpd-php .php
PHPIniDir "D:/xampp/php"
</IfModule>
...
<IfModule mime_module>
  ...
  # For PHP
  AddType text/html .php
</IfModule>
...
# phpMyAdmin settings
Include "conf/extra/httpd-phpmyadmin.conf"
...
</pre>


==== httpd.conf für XAMPP ====
==== Verzeichnisumbenennung ====


Bei einer Installation mit XAMPP werden die Verwendung von PHP und die Berechtigungen in der Datei "\conf\extra\httpd-xampp.conf" festgelegt und in der Datei "httpd.conf" in Z.250 hinzugefügt.
Sofern das Verzeichnis für Apache "Apache24" lautet, wird es in "apache" umbenannt.


<pre>
Die Pfadangaben in den Konfigurationsdateien mit der Dateiendung "conf" und in den batch-Dateien für Starts und Stopps mit der Dateiendung "bat" sind anschließend an die Bezeichnung "apache" anzupassen.
...
# XAMPP settings
Include "conf/extra/httpd-xampp.conf"
...
</pre>


=== Verzeichnisauflistungen verhindern ===
==== Apache als Dienst installieren ====


Um Auflistungen von Dateien und Verzeichnissen im Browser zu verhindern, ist die Angabe "-Indexes" in der Konfigurationsdatei "apache\conf\httpd.conf" Z.227ff und Z.246ff erforderlich:
Nachdem die Kommandozeile als Administrator geöffnet wurde, den Apache-Dienst installieren:
<pre>
<pre>
<Directory />
D:
  Options -Indexes +FollowSymLinks
cd xampp\apache\bin
  AllowOverride none
httpd -k install
  Require all denied
</Directory>
...
<Directory "/xampp/htdocs">
  Options -Indexes +FollowSymLinks +Includes -ExecCGI
  AllowOverride All
  Require all granted
</Directory>
</pre>
</pre>


=== Verzeichniszugriff per Authentifizierung ===
==== Start und Stopp im Produktivbetrieb ====


Um den Zugriff auf bestimmte Verzeichnisse per Browser nur für bestimmte Anmeldenamen mit Passwort zu erlauben, sind Angaben in folgenden Konfigurationsdateien erforderlich:
Unter "Systemsteuerung => System und Sicherheit => Verwaltung => Dienste" prüfen, ob der Dienst "Apache2.4" den Starttyp "Automatisch" aufweist, damit er nach einem Rechner-Neustart automatisch gestartet wird.


* "xampp\apache\conf\httpd.conf"
Um den Apache-Dienst zu starten oder anzuhalten, wird unter "Verwaltung => Dienste" nach Auswahl des Dienstes "Apache2.4" entweder im Menü unter "Aktion" oder mit der rechten Maustaste im Kontextmenü der jeweilige Vorgang ausgewählt.
* "xampp\apache\conf\extra\httpd-default.conf"
* für phpMyAdmin ohne XAMPP
** "xampp\phpMyAdmin\.htaccess"
** "xampp\security\phpmyadmin.htpasswd"
* für XAMPP
** "xampp\htdocs\dashboard\.htaccess"
** "xampp\security\dashboard.htpasswd"


==== Datei "httpd.conf" ====
==== Start und Stopp im Testbetrieb ====
Z.288ff und Z.520f
<pre>
<Files ".ht*">
  Require all denied
<Files>
...
# XAMPP settings
Include "conf/extra/httpd-xampp.conf"
# phpMyAdmin settings bei XAMPP 5.6.14
Include "conf/extra/httpd-phpmyadmin.conf"
</pre>


==== Datei "httpd-default.conf" ====
Der Apache-Webserver kann entweder mit Hilfe des Apache-Monitors oder per Kommandozeile gestartet und angehalten werden:
Z.45
<pre>AccessFileName .htaccess</pre>
 
==== Datei ".htaccess" ohne XAMPP ====
"\xampp\phpMyAdmin\.htaccess"
<pre>
<pre>
AuthType Basic
NET start Apache2.4
AuthName "phpMyAdmin"
AuthUserFile "../security/phpmyadmin.htpasswd"
Require valid-user
</pre>


==== Datei ".htaccess" mit XAMPP ====
cd D:\xampp\
"\xampp\dashboard\.htaccess"
apache\bin\pv -f -k httpd.exe -q
<pre>
AuthType Basic
AuthName "XAMPP Dashboard"
AuthUserFile "../security/dashboard.htpasswd"
Require valid-user
</pre>
</pre>


==== Datei "htpasswd" ====
=== Konfiguration allgemein ===


* ohne XAMPP 5.6.14: "\xampp\security\phpmyadmin.htpasswd"
Bei einer Installation von Apache ohne XAMPP werden die Verwendung von PHP und die Berechtigungen etwas anders als bei einer Installation mit XAMPP festgelegt. Die Haupt-Konfiguration unterscheidet sich je nach Installation wie folgt:
* mit XAMPP 5.6.14 "\xampp\security\dashboard.htpasswd"
* ohne XAMPP: in der Datei "apache\conf\httpd.conf"
<pre>
* mit XAMPP: zusätzlich in der Datei "apache\conf\extra\httpd-xampp.conf"
username:password
</pre>


=== Verzeichniszugriff für bestimmte Rechner-IPs ===
==== httpd.conf mit und ohne XAMPP ====


Um von einem Rechner aus, der sich in einem bestimmten Netz befindet oder per VPN mit einer bestimmten IP verbunden ist, per Browser die Verzeichnisse nicht nur mit "localhost" aufrufen zu können, müssen zusätzliche Angaben mit "Require ip ..." erfolgen; die Fehlermeldung für einen unzulässigen Aufruf wird mit "ErrorDocument ..." erzeugt.
<pre>
 
ServerRoot "D:/xampp/apache"
==== Verzeichniszugriff für IPs mit XAMPP ====
Listen 80
 
...
Das XAMPP-Sicherheitskonzept ab XAMPP 1.8 erlaubt den Zugriff per Browser auf bestimmte Verzeichnisse wie "phpmyadmin" nur noch vom Server aus ("Require local").
LoadModule acces_compat_module modules/mod_access_compat.so
 
LoadModule actions_module modules/mod_actions.so
Beispiel XAMPP 5.6.14, Datei "xampp\apache\conf\extra\httpd-xampp.conf" Z.108ff
LoadModule alias_module modules/mod_alias.so
<pre>
LoadModule allowmethods_module modules/mod_allowmethods.so
# New XAMPP security concept
LoadModule asis_module modules/mod_asis.so
&lt;LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))"&gt;
LoadModule auth_basic_module modules/mod_auth_basic.so
  Require local
LoadModule authn_core_module modules/mod_authn_core.so
  Require ip 193.175.110
LoadModule authn_file_module modules/mod_authn_file.so
  Require ip 10.104.5
LoadModule authz_core_module modules/mod_authz_core.so
  Require ip 172.16.100.2
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
  ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
LoadModule authz_host_module modules/mod_authz_host.so
&lt;/LocationMatch&gt;
LoadModule authz_user_module modules/mod_authz_user.so
</pre>
LoadModule autoindex_module modules/mod_autoindex.so
 
LoadModule dir_module modules/mod_dir.so
==== Verzeichniszugriff für IPs ohne XAMPP ====
LoadModule env_module modules/mod_env.so
 
LoadModule include_module modules/mod_include.so
Beispiel ohne XAMPP, Datei "xampp\apache\conf\httpd.conf" am Ende:
LoadModule isapi_module modules/mod_isapi.so
<pre>
LoadModule log_config_module modules/mod_log_config.so
&lt;LocationMatch "^/(?i:(?:info|phpmyadmin|))"&gt;
LoadModule mime_module modules/mod_mime.so
   Require local
LoadModule negotiation_module modules/mod_negotiation.so
  Require ip 193.175.110
LoadModule rewrite_module modules/mod_rewrite.so
  Require ip 10.104.5
#LoadModule session_module modules/mod_session.so
  Require ip 172.16.100.2
#LoadModule session_cookie_module modules/mod_session_cookie.so
&lt;/LocationMatch&gt;
#LoadModule session_crypto_module modules/mod_session_crypto.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule status_module modules/mod_status.so
...
ServerAdmin webmaster@hornemann-institut.de
ServerName localhost:80
...
DocumentRoot D:/xampp/htdocs
...
<IfModule dir_module>
   DirectoryIndex index.php index.shtml index.html index.htm \
                default.php default.shtml default.html default.htm \
                home.php home.shtml home.html home.htm
</IfModule>
...
<Files ".ht*">
  Require all denied
</Files>
</pre>
</pre>


== Datenbank-Server ==
==== httpd.conf ohne XAMPP ====


=== MySQL/MariaDB ohne XAMPP ===
Bei einer Installation von Apache ohne XAMPP werden die Verwendung von PHP und die Berechtigungen nicht in der Datei "\conf\extra\httpd-xampp.conf", sondern in der Datei "httpd.conf" wie folgt festgelegt.


Nachdem die Kommandozeile als Administrator geöffnet wurde, den MySQL-Dienst installieren:
<pre>
<pre>
D:
...
cd xampp\mysql\bin
#### aus "/extras/httpd-xampp.conf"
mysqld --install
LoadFile "/xampp/php/php5ts.dll"
</pre>
LoadFile "/xampp/php/libpq.dll"
 
...
Aus dem XAMPP-Paket folgende Dateien in das Verzeichnis "D:\xampp\" kopieren:
#### aus "/extras/httpd-xampp.conf"
* mysql_start.bat
LoadModule php5_module D:/xampp/php/php5apache2_4.dll
* mysql_stop.bat
...
#### aus "/extras/httpd-xampp.conf"
<IfModule env_module>
  SetEnv MIBDIRS "/xampp/php/extras/mibs"
  SetEnv MYSQL_HOME "\\xampp\\mysql\\bin"
  SetEnv OPENSSL_CONF "/xampp/apache/bin/openssl.cnf"
  SetEnv PHP_PEAR_SYSCONF_DIR "\\xampp\\php"
  SetEnv PHPRC "\\xampp\\php"
  SetEnv TMP "\\xampp\\tmp"
</IfModule>
...
<IfModule mime_module>
  ...
  #AddType text/html .shtml
  #AddOutputFilter INCLUDES .shtml
  #### Fuer PHP aus "/extras/httpd-xampp.conf"
  AddType text/html .php
  #AddType text/html .php .phps
</IfModule>
...
#### aus "/extras/httpd-xampp.conf"
<IfModule php5_module>
  PHPIniDir "/xampp/php"
  #PHPIniDir "D:/xampp/php"
</IfModule>
...
# XAMPP settings
#Include "conf/extra/httpd-xampp.conf"
...
#### aus "/extras/httpd-xampp.conf"
<FilesMatch "\.php$">
  SetHandler application/x-httpd-php
</FilesMatch>
#<FilesMatch "\.phps$">
#  SetHandler application/x-httpd-php-source
#</FilesMatch>
 
#### aus "/extras/httpd-xampp.conf" abgewandelt
<LocationMatch "^/(?i:(?:phpmyadmin|info))">
  Require local
  Require ip 193.175.110.
  Require ip 10.104.5.
  Require ip 172.16.100.2
</LocationMatch>
</pre>
 
==== httpd.conf für XAMPP ====


Auf dem Desktop jeweils eine Verknüpfung zu den beiden bat-Dateien anlegen.
Bei einer Installation mit XAMPP werden die Verwendung von PHP und die Berechtigungen in der Datei "\conf\extra\httpd-xampp.conf" festgelegt, welche in der Datei "httpd.conf" in Z.250 eingebunden wird.


Der MySQL-Server wird per Batch-Datei oder Kommandozeile gestartet und angehalten:
<pre>
<pre>
D:
...
cd xampp\mysql\
# XAMPP settings
bin\mysqld.exe --defaults-file=mysql\bin\my.ini
Include "conf/extra/httpd-xampp.conf"
 
...
D:
cd xampp\mysql
bin\mysqld.exe -q
del data\%computername%.pid
</pre>
</pre>


== PHP ==
=== Verzeichnisauflistungen verhindern ===


=== php.ini ===
Um Auflistungen von Dateien und Verzeichnissen im Browser zu verhindern, ist die Angabe "-Indexes" in der Konfigurationsdatei "apache\conf\httpd.conf" Z.227ff und Z.246ff erforderlich:
 
<pre>
==== Module ====
<Directory />
 
  Options -Indexes +FollowSymLinks
Folgende Module sind aktiviert:
  AllowOverride none
* bz2
  Require all denied
* curl
</Directory>
* gd2
...
* gettext
<Directory "/xampp/htdocs">
* mbstring
  Options -Indexes +FollowSymLinks +Includes -ExecCGI
* exif ; Must be after mbstring
  AllowOverride All
* mysql
  Require all granted
* mysqli
</Directory>
* openssl
</pre>
* pdo_mysql
* pdo_sqlite
* soap
* sockets
* sqlite3
* xmlrpc
* xsl


==== php-Konfiguration ====
=== Verzeichniszugriff per Authentifizierung ===


engine = On
Um den Zugriff auf bestimmte Verzeichnisse per Browser nur für bestimmte Anmeldenamen mit Passwort zu erlauben, sind Angaben in folgenden Konfigurationsdateien erforderlich:
short_open_tag = On
allow_call_time_pass_reference = Off
safe_mode = Off
expose_php = Off
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
enable_dl = On
file_uploads = On
allow_url_fopen = On
allow_url_include = Off


== Suchmaschinen  ==
* "xampp\apache\conf\httpd.conf"
 
* "xampp\apache\conf\extra\httpd-default.conf"
=== robots.txt ===
* für phpMyAdmin ohne XAMPP
** "xampp\phpMyAdmin\config.inc.php"
* für XAMPP
** "xampp\htdocs\dashboard\.htaccess"
** "xampp\security\dashboard.htpasswd"
 
==== Apache-Datei "httpd.conf" ====
Z.288ff und Z.520f
<pre>
<Files ".ht*">
  Require all denied
<Files>
...
# XAMPP settings
Include "conf/extra/httpd-xampp.conf"
</pre>
 
==== Apache-Datei "httpd-default.conf" ====
 
Z.45
<pre>AccessFileName .htaccess</pre>
 
==== XAMPP-Dashboard-Datei ".htaccess" ====
 
Datei "\xampp\dashboard\.htaccess"
<pre>
AuthType Basic
AuthName "XAMPP Dashboard"
AuthUserFile "../security/dashboard.htpasswd"
Require valid-user
</pre>


Damit Test-Wikis während der Erprobungsphase, das Repositorium und verschiedene Wiki-Unterverzeichnisse nicht von Suchmaschinen durchsucht werden, wird eine Datei "robots.txt" im Verzeichnis "htdocs" gespeichert.
==== XAMPP-Dashboard-Datei "htpasswd" ====
<br/>Damit kein Robot irgendetwas liest:
<pre>User-agent: *
Disallow:</pre>


Angaben nach dem Upgrade auf MW1.23 am 26.02.2016, damit Robots nur das jeweilige Hauptverzeichnis von SalzWiki und SaltWiki und sonst nichts durchsuchen:
Datei "\xampp\security\dashboard.htpasswd":
<pre>
<pre>
# robots.txt für Salzwiki und Saltwiki, damit Robots weder Unterverzeichnisse noch das Repositorium noch Test-Wikis durchsuchen
username:password
User-agent: *
</pre>
Disallow:/dashboard/
 
Disallow:/webalizer/
=== Verzeichniszugriff für bestimmte Rechner-IPs ===
Disallow:/xampp/
 
Disallow:/salzwiki/cache/
Um von einem Rechner aus, der sich in einem bestimmten Netz befindet oder per VPN mit einer bestimmten IP verbunden ist, per Browser die Verzeichnisse nicht nur mit "localhost" aufrufen zu können, müssen zusätzliche Angaben mit "Require ip ..." erfolgen; die Fehlermeldung für einen unzulässigen Aufruf wird mit "ErrorDocument ..." erzeugt.
Disallow:/salzwiki/docs/
 
Disallow:/salzwiki/extensions/
==== Verzeichniszugriff für IPs mit XAMPP ====
Disallow:/salzwiki/images/
 
Disallow:/salzwiki/includes/
Das XAMPP-Sicherheitskonzept ab XAMPP 1.8 erlaubt den Zugriff per Browser auf bestimmte Verzeichnisse wie "phpmyadmin" nur noch vom Server aus ("Require local").
Disallow:/salzwiki/languages/
Disallow:/salzwiki/maintenance/
Disallow:/salzwiki/mw-config/
Disallow:/salzwiki/resources/
Disallow:/salzwiki/serialized/
Disallow:/salzwiki/skins/
Disallow:/salzwiki/tests/
Disallow:/saltwiki/cache/
Disallow:/saltwiki/docs/
Disallow:/saltwiki/extensions/
Disallow:/saltwiki/images/
Disallow:/saltwiki/includes/
Disallow:/saltwiki/languages/
Disallow:/saltwiki/maintenance/
Disallow:/saltwiki/mw-config/
Disallow:/saltwiki/resources/
Disallow:/saltwiki/serialized/
Disallow:/saltwiki/skins/
Disallow:/saltwiki/tests/
Disallow:/repository/
Disallow:/salzwiki_draft/
Disallow:/saltwiki_draft/
Disallow:/repository_draft/
Disallow:/salz_salt_repo/
Disallow:/mediawiki_1_23_11/
</pre>


Im  jeweiligen Wiki-Hauptverzeichnis:
Beispiel XAMPP 5.6.14, Datei "xampp\apache\conf\extra\httpd-xampp.conf" Z.108ff
<pre>
<pre>
# Robots sollen keine Unterverzeichnisse durchsuchen
# New XAMPP security concept
User-agent: *
&lt;LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))"&gt;
Disallow:/cache/
  Require local
Disallow:/docs/
  Require ip 193.175.110
Disallow:/extensions/
  Require ip 10.104.5
Disallow:/images/
  Require ip 172.16.100.2
Disallow:/includes/
  ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
Disallow:/languages/
&lt;/LocationMatch&gt;
Disallow:/maintenance/
Disallow:/mw-config/
Disallow:/resources/
Disallow:/serialized/
Disallow:/skins/
Disallow:/tests/
</pre>
</pre>


=== Setzen von Keywords für den Head-Bereich eines Wikis ===
==== Verzeichniszugriff für IPs ohne XAMPP ====


Hierzu ist in der Datei "LocalSettings.php" die Funktion "efSetKeywords()" mit den entsprechenden Keywords einzufügen. Hier am Beispiel von SaltWiki. Diese sind jedoch nur bei Zugang über die IP-Adresse und nicht über den Frame von 1&1 sichtbar. Damit Keywords über den Frame sichtbar sind, sind diese für unseren Zugang bei 1&1 bei der Einrichtung der Website mit anzugeben. Dasselbe gilt für "description".
Beispiel ohne XAMPP, Datei "xampp\apache\conf\httpd.conf" am Ende:
 
<pre>
<pre>##Setzen von keywords
&lt;LocationMatch "^/(?i:(?:info|phpmyadmin))"&gt;
function efSetKeywords(){
  Require local
  global $wgOut;
  Require ip 193.175.110
  $wgOut->addKeyword( 'salt' );
   Require ip 10.104.5
  $wgOut->addKeyword( 'desalination' );
   Require ip 172.16.100.2
  $wgOut->addKeyword( 'salt decay' );    
&lt;/LocationMatch&gt;
  $wgOut->addKeyword( 'cultural heritage' );    
  $wgOut->addKeyword( 'salt damage' );
  $wgOut->addKeyword( 'conservation' );
}
</pre>
</pre>


== E-Mail-Versand  ==
=== Server-Software auf Fehlerseiten nicht anzeigen ===


Die HAWK-Outlook-Adressen können nicht für den Versand per SMTP als Absender verwendet werden, sondern nur als Zieladresse.
Standardmäßig werden auf den Fehlerseiten folgende Details des Webservers angezeigt:
* Webserver-Bezeichnung "Apache"
* Webserver-Version
* Betriebssystem-Art "Win32"
* OpenSSL-Version


Die Datei "localSettings.php" wurde in den Verzeichnissen
Um dies aus Sicherheitsgründen zu unterbinden, ist in der Datei "D:\xampp\apache\error\include\bottom.html" im span-Element für die Variable "SERVER_SOFTWARE" hinter dem öffnenden HTML-Kommentar ein Leerzeichen einzufügen:
<pre>
<span><!-- #echo var="SERVER_SOFTWARE" --></span>
</pre>
 
== Datenbank-Server ==


*salzwiki/
Der MySQL-Datenbank-Server ist als Dienst zu installieren, damit er nach Rechner-Neustarts durch Windows-Updates automatisch gestartet werden kann.
*repository/
*saltwiki/


folgendermaßen für E-Mail-Versand angepasst:
=== MySQL/MariaDB ohne XAMPP ===


'''Salzwiki/Repositorium'''
Nachdem die Kommandozeile als Administrator geöffnet wurde, den MySQL-Dienst installieren:
<pre>
<pre>
## E-Mail-Versand angepasst 15.01.2016 G. Werner
D:
$wgEmergencyContact = "salzwiki.fb@hawk-hhg.de";
cd xampp\mysql\bin
$wgPasswordSender = "service@salzwiki.de";
mysqld --install
$wgSMTP = array(
'host' =&gt; "smtp.1und1.de",
'IDHost' =&gt; "1und1.de",
'port' =&gt; "587",
'auth' =&gt; true,
'username' =&gt; "service@salzwiki.de",
'password' =&gt; "********"
);
$wgEnotifUserTalk = true; # UPO
$wgEnotifWatchlist = true; # UPO
$wgEmailAuthentication = true;
</pre>
</pre>


'''Saltwiki'''
==== Start und Stopp im Produktivbetrieb ====
 
Unter "Systemsteuerung => System und Sicherheit => Verwaltung => Dienste" prüfen, ob der Dienst "mysql" den Starttyp "Automatisch" aufweist, damit er nach einem Rechner-Neustart automatisch gestartet wird.
 
Um den mysql-Dienst zu starten oder anzuhalten, wird unter "Verwaltung => Dienste" nach Auswahl des Dienstes "mysql" entweder im Menü unter "Aktion" oder mit der rechten Maustaste im Kontextmenü der jeweilige Vorgang ausgewählt.
 
==== Start und Stopp im Testbetrieb ====
 
Für Testzwecke aus dem XAMPP-Paket folgende Dateien in das Verzeichnis "D:\xampp\" kopieren:
* mysql_start.bat
* mysql_stop.bat
 
Auf dem Desktop jeweils eine Verknüpfung zu den beiden bat-Dateien anlegen.
 
Der MySQL-Server kann per Batch-Datei oder Kommandozeile gestartet und angehalten werden:
<pre>
<pre>
## E-Mail-Versand angepasst 15.01.2016 G. Werner
D:
$wgEmergencyContact = "saltwiki.fb@hawk-hhg.de";
cd xampp\mysql\
$wgPasswordSender = "service@saltwiki.net";
bin\mysqld.exe --defaults-file=mysql\bin\my.ini
$wgSMTP = array(
 
'host' =&gt; "smtp.1und1.de",
D:
'IDHost' =&gt; "1und1.de",
cd xampp\mysql
'port' =&gt; "587",
bin\mysqld.exe -q
'auth' =&gt; true,
del data\%computername%.pid
'username' =&gt; "service@saltwiki.net",
'password' =&gt; "********"
);
$wgEnotifUserTalk = true; # UPO
$wgEnotifWatchlist = true; # UPO
$wgEmailAuthentication = true;
</pre>
</pre>


== Externe Links ==
== PHP ==
 
=== PHP-Versionen ===
 
==== PHP 7.2.2 ====
 
* Core-Erweiterung "Cite" erzeugt Fehler "Umcommitted DB writes"
* Core-Erweiterung "ImageMap" erzeugt Fehler "Fatal exception of type MWException"


Damit externe Links in einem neuen Fenster geöffnet werden, ist in die "localsettings.php" einzufügen:
==== PHP 7.1 ====


##Externe links erscheinen in einem neuen Fenster
Laut https://wiki.php.net/internals/windows/compiler soll PHP 7.1 zwar mit VC14 und VC15 funktionieren, doch wird dies nicht offiziell unterstützt.
$wgExternalLinkTarget = '_blank';


== Datenbank-Fehler ==
==== PHP 7.0 ====


Falls ein Hinweis "A database query error has occured" angezeigt wird, kann man sich weitere Angaben anzeigen lassen, indem man in der Datei "LocalSettings.php" unten einfügt:
Das Support-Ende für PHP 7.0 ist früher als für PHP 5.6.
<pre>
$wgShowSQLErrors = 1;
</pre>


== Versionshinweise ==
=== php.ini ===


=== Betriebssystem und Wiki-Serversysteme ===
==== Module ====


* <del>Beim Produktivserver bis 2017-01-04 mit Windows Server 2008 SP2 (Standard Edition) wird XAMPP 5.6.14.0 verwendet</del>
Folgende Module sind aktiviert:
* Beim Produktivserver ab 2017-01-04 mit Windows Server 2012 R2 Datacenter wird XAMPP 5.6.14.0 verwendet
* bz2
** XAMPP Control Center 3.2.1
* curl
** Apache 2.4.17
* gd2
** MariaDB 10.0.17 Server mit libmysql - mysqlnd5.0.11dev Client
* gettext
** PHP 5.6.14 für Windows und VC11 Visual C++ 2012 x86
* mbstring
** OpenSSL 1.0.2d
* exif ; Must be after mbstring
** phpMyAdmin 4.5.0.2
* mysql
* Beim Testserver ab 2017-01-04 mit Windows Server 2012R2 Datacenter wird auf XAMPP verzichtet und werden folgende Einzelsysteme aus dem XAMPP-Paket Version 5.6.30-0 eingerichtet:
* mysqli
** Apache 2.4.25 für Windows und VC11 von http://www.apachelounge.com, alternativ von http://www.apachehaus.com im Verzeichnis "D:\xampp\apache\"
* openssl
** MariaDB 10.0.17 Server mit libmysql - mysqlnd 5.0.11dev Client vom Produktivserver, ansonsten neuere Version von http://ftp.hosteurope.de/mirror/archive.mariadb.org/ oder https://downloads.mariadb.org/mariadb/+releases/ bzw. http://archive.mariadb.org/mariadb-10.0.17/
* pdo_mysql
** PHP 5.6.30 32Bit für Windows und VC11 von http://windows.php.net/downloads/releases/archives/ im Verzeichnis "D:\xampp\php\"
* pdo_sqlite
** OpenSSL 1.0.2j
* soap
** phpMyAdmin 4.6.5.2
* sockets
* sqlite3
* xmlrpc
* xsl
 
==== php-Konfiguration ====


=== Datenbanksystem ===  
engine = On
short_open_tag = On
allow_call_time_pass_reference = Off
safe_mode = Off
expose_php = Off
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
enable_dl = On
file_uploads = On
allow_url_fopen = On
allow_url_include = Off


* MySQL-Upgrade von Version 5.1 zu Version 5.6 ist nur möglich über Version 5.5
== phpMyAdmin ==
* XAMPP hat zuletzt in Version 1.8.2-6 die MySQL-Version 5.5.x, danach die Version 5.6
* XAMPP hat bis Version 5.5.28 bzw. 5.6.12 als Datenbanksystem MySQL, danach MariaDB
* XAMPP hat in Version 5.6.14.0 die MariaDB-Version 10.0.x, aber in Version 5.6.14.3 die MariaDB-Version 10.1.x


=== XAMPP ===
=== Fehler bei Konto-Erstellung ===


==== XAMPP 5.6.30 ====
In phpMyAdmin 4.6.5.2 ist ein Bug, der eine Fehlermeldung erzeugt, wenn versucht wird, ein neues Datenbank-Nutzungskonto zu erstellen, weil im Verzeichnis "D:\xampp\mysql\" die Unterverzeichnisse "lib\plugin\ fehlen:
* PHP 5.6.30 32Bit
<pre>
* VC11 MS Visual C++ 2012 redistributable x86 Update 4
SHOW PLUGINS SONAME LIKE '%_password_check%'
* <b>MariaDB 10.1</b>.21 Win32 (Server), libmysql - mysqlnd 5.0.11dev (Client)
MySQL meldet:
* Apache 2.4.25 Win32
#1018 - Verzeichnis von 'D:\xampp\mysql\lib\plugin\' nicht lesbar (Fehler: 2 "No such file or directory")
* phpMyAdmin 4.6.5.2, Zeichensatz MySQL-Verbindung utf8mb4_unicode_ci
</pre>
* OpenSSL 1.0.2j
* XAMPP Control Panel 3.2.2


==== XAMPP 5.6.14.3 ====
Die Lösung besteht darin, im Verzeichnis "D:\xampp\mysql\" die Unterverzeichnisse "lib\plugin\" zu erstellen.
* PHP 5.6.14 32Bit
* VC11 MS Visual C++ 2012 redistributable x86 Update 4
* <b>MariaDB 10.1</b>.8 Win32 (Server), libmysql - mysqlnd 5.0.11dev (Client)
* Apache 2.4.17 Win32
* phpMyAdmin 4.5.1, Zeichensatz MySQL-Verbindung utf8mb4_unicode_ci
* OpenSSL 1.0.2d
* XAMPP Control Panel 3.2.2


==== XAMPP 5.5.30/5.6.14.0 ====
==== phpMyAdmin-Datei "config.inc.php" ====
* PHP 5.5.30/5.6.14 32Bit + Pear, MS VC11 x86 32Bit ThreadSafe
* VC11 MS Visual C++ 2012 redistributable x86 Update 4
* <b>MariaDB 10.0</b>.17 Win32 (Server), libmysql - mysqlnd 5.0.11dev (Client)
* Apache 2.4.17 Win32
* phpMyAdmin 4.5.0.2, Zeichensatz MySQL-Verbindung utf8mb4_unicode_ci
* OpenSSL 1.0.2d
* XAMPP Control Panel 3.2.1


==== XAMPP 5.5.28/5.6.12 ====
Um die Anmeldung bei der Nutzung von "phpMyAdmin" per HTTP-Authentifizierung durchzuführen, sind folgende Angaben in der Konfigurationsdatei ab Z.18 erforderlich:
* PHP 5.5.28/5.6.12 + Pear, MS VC11 x86 32Bit ThreadSafe
<pre>
* MySQL 5.6.26-Community
/* Authentication type and info */
* Apache 2.4.16 Win32
#$cfg['Servers'][$i]['auth_type'] = 'config';
* phpMyAdmin 4.4.14
$cfg['Servers'][$i]['auth_type'] = 'http';
* openSSL 1.0.1i
#$cfg['Servers'][$i]['user'] = 'root';
#$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
</pre>


==== XAMPP 1.8.2-6 ====
Anmeldename und Passwort werden bei der HTTP-Anmeldung mit den Einträgen in der Tabelle "user" der Datenbank "mysql" verglichen.
* PHP 5.4.31, MS VC9
* MySQL 5.5.32-Community
* Apache 2.4.4 Win32
* phpMyAdmin 4.0.4
* openSSL 0.9.8y mit OpenSSL-Bug "Heartbleed"


==== XAMPP 1.8.0 ====
=== Test mit phpMyAdmin-Datei ".htaccess" ===
Neues Sicherheitskonzept: Zugriff per Browser auf Verzeichnisse wie "phpmyadmin" nur noch direkt vom Server aus ("Require local")


==== XAMPP 1.7.1 ====
Datei "\xampp\phpMyAdmin\.htaccess"
* PHP 5.2.9, MS Visual C++ 2008 redistributable x86 9.0...
<pre>
* MySQL 5.1.33-Community Client 5.0.51a
AuthType Basic
* Apache 2.2.11 Win32
AuthName "phpMyAdmin"
* phpMyAdmin 3.1.3.1
AuthUserFile "../security/phpmyadmin.htpasswd"
Require valid-user
</pre>
 
Datei "\xampp\security\dashboard.htpasswd":
<pre>
username:password
</pre>
 
== Statistik-Anwendung Piwik ==


=== MediaWiki ===
Zusätzlich zu "Piwik" ist die MW-Erweiterung [https://www.mediawiki.org/wiki/Extension:Piwik_Integration "Piwik Integration"] erforderlich oder muss der Code in der Datei "MonoBook.php" hinter dem Footer-Bereich mit dem "Piwik"-Code ergänzt werden.


==== MW Version 1.25 ====
Die Anwendung "Piwik" wird im Verzeichnis "xampp\htdocs\analytics\piwik\" zuerst auf dem Test-Server installiert.


* Skins
Die Administration von "Piwik" erfolgt im Browser über die Adresse "localhost/analytics/piwik/index.php".
** "Autodiscovery mechanism" entfällt
** Die Skin-Datei "MonoBookSW.php" anpassen an die neue Version, siehe https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery#Migration_guide
* Datei "LocalSettings.php" anpassen
** $wgDisableCounters entfällt; für Seitenbesuchszahlen ist die Erweiteerung "HitCounters" erforderlich
** Skin-Registrierung
** Erweiterungen-Registrierung
* Statistik Seitenaufrufe {{NUMBEROFVIEWS}} entfällt (https://www.mediawiki.org/wiki/Help:Magic_words/de#Statistik)


Skin-Registrierung
Die Datei "...\htdocs\robots.txt" ist zu ergänzen:
<pre>
<pre>
wfLoadSkin("MonoBook"); //statt require_once "$IP/skins/MonoBook.php";
Disallow:/analytics/
</pre>
</pre>


Erweiterungen-Registrierung
Die Apache-Konfiguration ist dahingehend anzupassen, dass die Verzeichnisse "analytics\" und "piwik\" nach dem Vorbild von "phpmyadmin\" nur lokal erreichbar sind.
<pre>
 
wfLoadExtension("Cite"); //statt require_once "$IP/extensions/Cite/Cite.php";
=== Installationshinweise ===
</pre>
 
Bei der Installation gibt es eine Warnung zur PHP-Konfiguration, wenn in der Datei "php.ini" nicht "always_populate_raw_post_data=-1" gesetzt ist. Dieser Parameter gilt als "deprecated" und entfällt mit PHP 7.0.0, weshalb sein Wert auf "-1" gesetzt werden soll.
 
Für die Installation per Browser muss JavaScript (JS) aktiviert sein oder muss mit dem Firefox-Plugin "Firebug" im HTML-Code bei select-Elementen die CSS-Definition "display:none;" entfernt werden. Ohne JS oder CSS-Anpassung fehlt
* bei der Datenbank-Konfiguration der Adapter
* bei der Website-Konfiguration die Zeitzone
 
Es wird empfohlen, für die "piwik"-Datenbank ein eigenes Nutzungskonto, das nur für diese Datenbank Berechtigungen hat, zu verwenden. Die Datenbank-Einrichtung von "Piwik" per Browser-Installation schlägt jedoch fehl, wenn das hierfür verwendete neue Benutzungskonto für "MySql" nicht existiert. Das Konto und die Datenbank sind deshalb vorab mit "phpMyAdmin" zu erstellen.
 
=== Konfiguration ===


==== MW Version 1.24 ====
Die Piwik-System-Konfigurationsdatei "config.ini.php" befindet sich im Verzeichnis "...\analytics\piwik\config\".


* Logo-Speicherort geändert von "skins/common/images/" zu "resources/assets/" bzw. "images/..."
==== Benutzungskonten ====
* Bisher mitgelieferte Skins sind nicht mehr enthalten; die jeweiligenSkins-php-Dateien und Ordner sind gegebenenfalls aus dem Verzeichnis "skins/" zu entfernen:
** CologneBlue.php, cologneblue
** Modern.php, modern
** MonoBook.php, monobook
** Vector.php, vector
* Datei "LocalSettings.php" eventuell an neue Skin-Registrierung anpassen
<pre>
require_once "$IP/skins/MonoBookSW.php"; //statt $wgDefaultSkin = "monobooksw";
</pre>
* Nicht mehr unterstützt wird "register_globals => Bei PHP vor Version 5.4 in der Datei "php.ini" angeben "register_globals=Off"
* Erweiterung "OggHandler" wird nicht mehr unterstützt


==== MW Version 1.23 ====
Standardmäßig gibt es folgende Benutzungskonten:
* [SuperUserName], Alias [...], Hauptadministrator WAHR
* anonymous, Alias anonymous, Ansicht deaktiviert (rot), Administrator N/A
** Kein Zugriff: "Für alle Websites anwenden" deaktiviert (rot)
** Kein Zugriff: "SalzWiki" bzw. "SaltWiki" bzw. "Repository" aktiviert (grün)


* Skins werden anders eingebunden
Zusätzlich zum Hauptadmin-Konto wird für die Ansicht der Statistiken und für die Erstellung von Statistik-Berichten ein Benutzungskonto für Beschäftigte des Hornemann Instituts eingerichtet, womit es folgende Konten gibt:
** Das jeweilige Skin-Unterverzeichnis sollte wie die php-Datei die Groß-Klein-Schreibweise berücksichtigen ("monobooksw/" => "MonoBookSW/")
** Kleinbuchstaben bei $wgDefaultSkin = "monobooksw"; in der Datei "LocalSettings.php"
** Die Skin-php-Datei, z. B. "MonoBookSW.php", ist nicht mehr im Verzeichnis "skins/", sondern im Unterverzeichnis, z. B. "skins/MonoBookSW/"
** Die Skin-Datei "MonoBookSW.php" anpassen an die neue Version, siehe www.mediawiki.org/wiki/Manual:Skin_autodiscovery#Migration_guide
* "Autodiscovery mechanism" für "Core Skins" gilt als "deprecated" und schreibt Warnungen in die Log-Dateien. Folgende Dateien und Ordner sind gegebenenfalls aus dem Verzeichnis "skins/" zu entfernen:
** Chick.php, chick
** Nostalgia.php, nostalgia
** Simple.php, simple
** Standard.php, standard
*  "The info page action, which provides useful statistics for any given page, has been improved and turned on by default."
* Bei "Spezialseiten" wird die "ISBN-Suche" unter "Daten und Werkzeuge" statt unter "Andere Spezialseiten" angezeigt.
* $wgPasswordSenderName wurde abgeschafft; der Name für die E-Mail-Adresse von $wgPasswordSender kann nur noch in der Seite "MediaWiki:Emailsender" angepasst werden


==== MW Version 1.21 ====
* Hauptadministration
* Statistiknutzung
* anonymous


* implementierte Erweiterungen
===== Konto für Hauptadministration =====
** Cite
** ImageMap
** TitleBlacklist
** SpamBlacklist
** Interwiki bzw. SpecialInterwiki u. a.
* Änderungen
** Die Funktion "wfLoadExtensionMessages()" existiert nicht  mehr, wird aber von BibManager REL1_23 verwendet und muss auskommentiert werden


==== MW Version 1.20 ====
Das Nutzungskonto "SW_piwik" für die Hauptadministration wird bei der Installation von "Piwik" erstellt.


* PHP 5.3.2 oder neuer ist erforderlich
Der <b>E-Mail-Versand</b> wird unter "Einstellungen => System => Allgemeine Einstellungen => E-Mail-Server-Einstellungen" konfiguriert und sieht in der Piwik-System-Konfigurationsdatei "...\piwik\config\config.ini.php" wie folgt aus, nachdem :
* Erweiterungen, die Elemente der neuen Version voraussetzen
<pre>
** ApprovedRevs
[mail]
** Cite u. a.
transport = "smtp"
port = "587"
host = "smtp.1und1.de"
type = "Login"
username = "service@salzwiki.de"
password = "***"
encryption = "ssl"
</pre>


==== MW Version 1.19 ====
Damit als Absender nicht "noreply@localhost" gesendet wird, muss folgende Zeile in der Konfigurationsdatei im Abschnitt "[mail]" hinzugefügt werden:
<pre>
defaultHostnameIfEmpty = "salzwiki.de"
</pre>


* $wgEnableCreativeCommonsRdf für "LocalSettings.php" wird nicht mehr unterstützt; stattdessen gibt es eine Erweiterung [http://www.mediawiki.org/wiki/Extension:CreativeCommonsRdf|"CreativeCommonsRdf"], die Beta-Status hat (2015-09-21).
===== Konto für Statistiknutzung =====


* In der revision-Tabelle ist eine neue Spalte "rev_sha1" hinzugekommen, die in der alten Verison vor einem Update hinzugefügt werden muss; siehe [http://www.mediawiki.org/wiki/Manual:FAQ|Mediawiki FAQ] Punkt 3.2, [http://www.mediawiki.org/wiki/Manual:Revision_table|Mediawiki Manual Revision_table] und http://www.mediawiki.org/wiki/Thread:Project:Support_desk/upgrade_problems:_1.11_--_1.21:<pre>ALTER TABLE /*$wgDBprefix*/revision ADD rev_sha1 varbinary(32) NOT NULL default '';</pre>
Mit dem Hauptadmin-Konto wird unter "Einstellungen => System => Benutzer" ein Konto "Hornemann" erstellt. Dabei ist darauf zu achten, dass oben bei "Zugriffsverwaltung" nicht nur eines der Wikis, sondern "Für alle Websites anwenden" ausgewählt ist.
 
Das Konto hat folgende Einstellungen:
* Benutzer Hornemann, Alias H.I.-SW-Statistik
* E-Mail webmaster@hornemann-institut.org
* Kein Zugriff deaktiviert (rot)
* Ansicht
** "Für alle Websites anwenden" aktiviert (grün), wird nach Auswahl einer Seite wie "SalzWiki" bei der Rückkehr deaktiviert (rot)
** "SalzWiki" bzw. "SaltWiki" bzw. "Repository" aktiviert (grün)
* Administrator deaktiviert (rot)
* Hauptadministrator deaktiviert (rot)


==== MW Version 1.18 ====
==== Statistik-Berichte ====


* MySQL 5.0.2 oder neuer ist erforderlich
Für jedes Wiki wird ein eigener Bericht jeweils vom Typ HTML und PDF erstellt:
* mehr Genderneutralität bei Sprachdateien
* SalzWiki
* implementierte Erweiterungen:
** HTML
** ConfirmEdit
** PDF
** ParserFunctions mit Control Structure Functions ohne Loops
* SaltWiki
** RenameUser
** HTML
** Nuke u. a.
** PDF
* Neue Erweiterungen
* Repository
** "Math", bisher Datei "\includes\math.php", siehe https://www.mediawiki.org/wiki/Texvc/de, verwendet "texvc", welches 3 Zusatzprogramme benötigt:
** HTML
*** ocaml
** PDF
*** LaTeX
*** dvipng
** "WikiEditor", bisher Datei "\includes\EditPage.php" bzw. JS-Erweiterung "Extra Edit Buttons (XEB)", siehe en.wikipedia.org/wiki/User:MarkS/Extra_edit_buttons und en.wikipedia.org/wiki/User:MarkS/extraeditbuttons.js


==== MW Version 1.17 ====
Bei dem Konto für die Statistiknutzung wird unter "Einstellungen => Persönlich => E-Mail-Berichte" festgelegt, welche Art von Bericht wann per E-Mail übermittelt wird.


* PHP 5.2.3 oder neuer ist erforderlich
* Website: SalzWiki|SaltWiki|Repository
* neuer Installationsvorgang
* Beschreibung: Monatlicher Statistikbericht
* Kategoriensortierung geändert
* Segment: Alle Besuche
* Interwiki-Verweise werden in gesonderten Tabellen gespeichert
* Zeitplan: Monatlich
* Standard-Skin "vector" statt "monobook"
* Uhrzeit: 1|2 (1 Uhr für HTML, 2 Uhr für PDF)
* neue Variable $wgPasswordSenderName (existiert nur bis Version 1.22)
* Versand via: E-Mail
* Berichtsformat: HTML|PDF
* Bericht senden an: An mich senden
* Anzeigeoptionen: Tabellen und Graphen für alle Berichte anzeigen
* Beinhaltete Statistiken
** Alle Websites: Dashboard aller Websites
** Verweise: Verweisart, Alle Verweise, Suchbegriffe, Suchmaschinen Websites, Soziale Netzwerke
** Besucher: Besucherüberblick, Benutzer, Gerätetyp, Gerätemodell, Gerätemarke, Bildschirmauflösungen, Betriebssystem-Versionen, Browser, Browser-Version, Land, Kontinent, Region, Browsersprache, Stadt, Besuchslänge, Seiten pro Besuch
** Aktionen: Aktionen - Kernmetriken, Seiten URL, Einstiegsseiten, Ausstiegsseiten, Ausgehende Verweise, Downloads


= SalzWiki  =
== Statistik-Anwendung Webalizer ==


== Datenbank mittels XAMPP und phpmyAdmin anlegen ==
Webalizer gibt es bei www.webalizer.org nicht für Windows, sondern nur als DOS-Quellcode, zuletzt in der Version 2.23-08 von 2013. Andere Varianten wie die der Firma "Stone Steps Inc." basieren auf Version 2.01-10. Die aktuellste Windows-Variante ist in XAMPP enthalten, beispielsweise in XAMPP 5.6.14 als Webalizer Version 2.23-04 vermutlich mit Stand März 2011.


Seit der Version 1.16.1 kann die jeweilige Datenbank statt mit phpMyAdmin während der Installation mittels Browser (/[wikiverzeichnis]/config/index.php) angelegt werden, sofern der Superuser-Account (Datenbank-Hauptadministrator) bekannt ist:
Installiert wird die XAMPP-Variante.


=== salzwiki ===
=== Log-Format ===
<pre>Database name: salzwiki
Benutzer: SW_sawi
Host: localhost
Global Rechte: all privileges
Grant: ja
database table prefix: sw_
</pre>


=== repository ===
Als Log-Format wird das Standardformat CLF ("NCSA Common Log Format" bzw. "NCSA Combined Log Format") für die Auswertung der Apache-Log-Datei "access.log" verwendet, siehe auch https://en.wikipedia.org/wiki/Common_Log_Format. Es enthält folgende Angaben:
<pre>Database name: repository
  * IP-Adresse des anfordernden Hosts
Benutzer: SW_repo
  * Ungenutzt für RFC-1413-Identität
Host: localhost
  * Nutzername aus einer HTTP-Authentifizierung, ansonsten "-"
Global Rechte: all privileges
  * Zeitstempel (Datum, Uhrzeit und UTC-Abweichung)
Grant: ja
  * Übermittlungsart, angeforderte Adresse und Übertragungsprotokoll mit Version, z. B. "GET /index.php HTTP/1.1"
database table prefix: sr_
  * HTTP-Statuscode
</pre>
  * Menge der gesendeten Daten in Byte, ansonsten "-" (bei Umleitungen usw.)
  * Ausgangsadresse des anfordernden Hosts
  * Systemangaben zum anfordernden Host wie Browser mit Version und Betriebssystem mit Version
  * Cookie


=== saltwiki ===
==== Common Log Format ====
<pre>Database name: saltwiki
 
Benutzer: SW_sawi
host rfc931 username date:time request statuscode bytes
Host: localhost
 
Global Rechte: all privileges
==== Combined Log Format ====
Grant: ja
 
database table prefix: sw_
host rfc931 username date:time request statuscode bytes referrer user_agent cookie
</pre>
 
=== Konfiguration ===
 
Für jedes Wiki wird eine eigene Statistik-Konfigurationsdatei erstellt:
* salzwiki.conf
* saltwiki.conf
* repository.conf


== Mediawiki Installieren  ==
In diesen Dateien wird jeweils festgelegt, welche Webserver-Log-Datei ausgewertet wird und in welchem Verzeichnis die Auswertung gespeichert wird.


*Für die jeweiligen Wikis einen entsprechenden Wiki- und Verzeichnisnamen festlegen: "salzwiki", "repository", "saltwiki".
Wenn bei der Apache-Webserver-Konfiguration jedes Wiki als virtueller Host eine eigene Log-Datei zugewiesen bekommen hat, können diese VHost-Log-Dateien ausgewertet werden, ansonsten muss die allgemeine Log-Datei ausgewertet werden:
*Die Dateien und Verzeichnisse aus der tar.gz-Datei in das jeweilige Wiki-Verzeichnis entpacken:
* allgemeine Log-Datei: "access.log"
<pre>"D:\xampp\htdocs\[wikiverzeichnisname]\"</pre>
* gesonderte VHost-Log-Dateien
*Nach Installationsanweisung das jeweilige Wiki installieren; hierzu im Browser die Adresse "D:\xampp\htdocs\[wikiverzeichnisname]\config\index.php" aufrufen.
** "access_salzwiki.log"
**Contact e-mail: service@salzwiki.hawk-hhg.de
** "access_saltwiki.log"
**Language: Je nach Wiki Deutsch oder English
** "access_repository.log"
**Copyright/license: Creative Commons
**Admin username: Hornemann
**Object caching: No
**E-Mail
***E-mail features: enabled
***User-to-user e-mail: enabled
***E-mail notification: enabled for discussion pages nad watchlists
***E-mail address authentication: enabled
**Datenbank
***Database type: MySQL
***Database host: localhost
***Database name: [wikiname]
***DB username: hschwarz (besser: hi_wiki_1)
***Superuser account: yes
***Superuser name: root
***Database table prefix: sw_ (SalzWiki, Saltwiki) bzw. sr_ (Repositorium)
***Storage Engine: InnoDB
***Database character set: MySQL 4.1/5.0 binary


=== Lizenz für das jeweilige Wiki  ===
Welches Wiki ausgewertet wird, erfolgt über die Angabe der Host-Namen mit "IgnoreSite" und "IncludeSite":
<pre>
# Internet-Adresse für Wiki:
IgnoreSite *
# für Seiten inkl. Mediadateien aus dem Repositorium
IncludeSite 193.175.110.91
# für Seiten ohne Mediadateien aus dem Repositorium
#IncludeSite 193.175.110.91/salzwiki/
#IncludeSite 193.175.110.91/saltwiki/
IncludeSite salzwiki.de
IncludeSite www.salzwiki.de
IncludeSite salzwiki.hawk-hhg.de
#IncludeSite saltwiki.net
#IncludeSite www.saltwiki.net
#IncludeSite saltwiki.hawk-hhg.de
#IncludeSite repository.hawk-hhg.de
</pre>


Die Lizenzkonfiguration in der Datei "LocalSettings.php" bearbeiten:
Die Auswertung für das jeweilige Wiki betrifft nur Aufrufe der index-Datei und der Dateien in den hexadezimal benannten Unterverzeichnissen im Verzeichnis "\wikiname\images\". Diese URLs werden folgendermaßen mit "IgnoreURL" und "IncludeURL" angegeben:
*Salzwiki
<pre>
<pre>
## For attaching licensing metadata to pages, and displaying an
# Pfad für Wiki
## appropriate copyright notice / icon. GNU Free Documentation
IgnoreURL  *
## License and Creative Commons licenses are supported so far.
IncludeURL /index.php*
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
IncludeURL /images/0/*
## Deutsch
IncludeURL /images/1/*
$wgRightsUrl = "http://creativecommons.org/licenses/by-nc-sa/3.0/de/";
IncludeURL /images/2/*
$wgRightsText = "Namensnennung-Nicht-kommerziell-Weitergabe unter gleichen Bedingungen 3.0 Deutschland";
IncludeURL /images/3/*
// bei MW 1.23
IncludeURL /images/4/*
$wgRightsIcon = "{$wgStylePath}/common/images/cc-by-nc-sa.png";
IncludeURL /images/5/*
# $wgRightsCode = "<nowiki>[</nowiki>license_code<nowiki>]</nowiki>"; # Not yet used
IncludeURL /images/6/*
</pre>
IncludeURL /images/7/*
*Saltwiki und Repositorium
IncludeURL /images/8/*
IncludeURL /images/9/*
IncludeURL /images/a/*
IncludeURL /images/b/*
IncludeURL /images/c/*
IncludeURL /images/d/*
IncludeURL /images/e/*
IncludeURL /images/f/*
IncludeURL /wikiname/index.php*
IncludeURL /wikiname/images/0/*
IncludeURL /wikiname/images/1/*
IncludeURL /wikiname/images/2/*
IncludeURL /wikiname/images/3/*
IncludeURL /wikiname/images/4/*
IncludeURL /wikiname/images/5/*
IncludeURL /wikiname/images/6/*
IncludeURL /wikiname/images/7/*
IncludeURL /wikiname/images/8/*
IncludeURL /wikiname/images/9/*
IncludeURL /wikiname/images/a/*
IncludeURL /wikiname/images/b/*
IncludeURL /wikiname/images/c/*
IncludeURL /wikiname/images/d/*
IncludeURL /wikiname/images/e/*
IncludeURL /wikiname/images/f/*
</pre>
 
Folgende Definitionen sind zusätzlich erforderlich:
<pre>
<pre>
## For attaching licensing metadata to pages, and displaying an
LogFile Pfadangabe/logdateiname
## appropriate copyright notice / icon. GNU Free Documentation
LogType clf
## License and Creative Commons licenses are supported so far.  
OutputDir Pfadangabe/wikiname
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
HistoryName wikiname.hist
## English und Repositorium
Incremental yes
$wgRightsUrl = "http://creativecommons.org/licenses/by-nc-sa/3.0/";
IncrementalName wikiname.current
$wgRightsText = "Attribution-Noncommercial-Share Alike 3.0 Unported";
ReportTitle Usage Statistics for
// bei MW 1.23
HostName wikiname
$wgRightsIcon = "{$wgStylePath}/common/images/cc-by-nc-sa.png";
HTMLExtension html
# $wgRightsCode = "<nowiki>[</nowiki>license_code<nowiki>]</nowiki>"; # Not yet used
PageType htm*
PageType php*
#UseHTTPS no
#DNSCache dns_cache.db
#DNSChildren 20
Quiet no
ReallyQuiet no
GMTTime no
VisitTimeout 1800
CountryGraph yes
GraphLegend yes
GraphLines 10
TopURLs 20
TopReferrers 20
TopAgents 10
TopCountries 50
TopSearch 20
AllSites no
AllURLs yes
AllReferrers yes
AllAgents yes
AllSearchStr yes
AllUsers no
#IndexAlias home.htm
#IndexAlias homepage.htm
DefaultIndex no
HideSite localhost
HideReferrer localhost/
HideReferrer 193.175.110.91/
HideReferrer salzwiki.de
HideReferrer www.salzwiki.de
HideReferrer salzwiki.hawk-hhg.de
HideReferrer Direct Request
 
HideURL *.css
HideURL *.ico
HideURL *.ICO
HideURL *.js
HideURL *.ra
HideURL robots.txt
HideURL api.php
HideURL load.php
HideURL opensearch_desc.php
HideURL /docs/
HideURL /extensinos/
HideURL /images/common/
HideURL /images/math/
HideURL /includes/
HideURL /languages/
HideURL /maintenance/
HideURL /mw-config/
HideURL /resources/
HideURL /serialized/
HideURL /skins/
HideURL /tests/
 
</pre>
</pre>


=== Style/Skin  ===
=== Dateien ===
 
Die nachfolgenden Informationen sind in der Datei "D:\xampp\webalizer\INFO_WikiStatistiken.txt" gespeichert.
 
Bis Ende Mai 2017 war eine einzige Log-Datei für alle Wikis beim Apache-Webserver konfiguriert.
Ab Ende Mai 2017 sind für die 3 Wikis eigene Log-Dateien beim Apache-Webserver konfiguriert.
 
2017-06-20: Die Log-Dateien des Apache-Webservers, access.log und access.old1.log, enthalten für Januar bis April 2017 identische Aufzeichnungen.
 
Für die Auswertung durch Webalizer wurden die großen Log-Dateien access.log und access.old1.log vom Apache-Log-Verzeichnis zu den Verzeichnissen "\webalizer\logs\access_20170612\" und "\webalizer\logs\access_old1_2016\" kopiert.
Anschließend wurden die großen Dateien mit "7-zip" in kleine Dateien für jeden Monat aufgeteilt. Hierzu wird mit "Hinzufügen" die Kompressionsstärke "Speichern" ausgewählt und "In Teildaten aufsplitten (Bytes)" verwendet. Dann werden die Inhalte der Teildateien so zusammengestellt, dass für jeden Monat eine Datei "access_YYYY_Monat00.log" vorhanden ist.
Für den Monat Mai 2017 wurde wegen der Umstellung auf Wiki-Log-Dateien jeweils die Datei "access_2017_Monat05.log" mit der Datei "access_2017_Monat05_02_wikiname.log" zur Datei "access_2017_Monat05_wikiname.log zusammengefügt".
Für die Monate von Juni 2017 bis einschließlich Dezember 2017 werden die Wiki-Log-Dateien wie die alten, großen Dateien in Teildateien für jeden Monat aufgeteilt, beispielsweise "access_YYYY_Monat00_wikiname.log".
Ab Januar 2018 werden die Wiki-Log-Dateien in Teildateien für jeden Monat nach dem Schema "wikiname_YYYY_Monat00.log" aufgeteilt.
 
Für die Statistiken bis einschließlich April 2017 wird in den Konfigurationsdateien der Wikis, "wikiname_YYYY_Monate.conf", die Monatsdatei "access_YYYY_Monat00.log", die aus der großen log-Datei stammt, angegeben.
Für die Statistiken ab Mai 2017 wird in den Konfigurationsdateien der Wikis, "wikiname_YYYY_Monate.conf", die Monatsdatei "access_YYYY_Monat00_wikiname.log", die aus den einzelnen Wiki-Log-Dateien stammt, angegeben.
 
Die Batch-Datei "webalizer_YYYY_Monate.bat" wird für jeden Monat nach Anpassung der conf-Dateien ausgeführt.
 
* Statistiken für 2018:
** Log-Dateien-Verzeichnis für Webalizer: \logs\access_2018\access_wikiname.log => wikiname_2018_Monat00.log
** Statistik-Verzeichnisse: \stats\wikiname\
** Konfigurationsdateien: wikiname_[2018_]monate.conf
** Batch-Datei: webalizer_[2018_]monate.bat
* Statistiken für 2017:
** Log-Dateien-Verzeichnis für Webalizer bis Juli: \logs\access_20170612\access_2017.log => access_2017_Monat00.log, access_wikiname.log => access_2017_Monat00_wikiname.log
** Log-Dateien-Verzeichnis für Webalizer ab August: \logs\access_20171231\access_wikiname_2017_Hj2.log => access_2017_Monat00_wikiname.log
** Statistik-Verzeichnisse: \stats_2017\wikiname\ => \stats_2017\wikiname\
** Konfigurationsdateien: wikiname_2017_monate.conf
** Batch-Datei: webalizer_2017_monate.bat
* Statistiken für 2016:
** Log-Dateien-Verzeichnis für Webalizer: \logs\access_old1_2016\access.old2016.log => access_2016_Monat00.log
** Statistik-Verzeichnisse: \stats_2016\wikiname\
** Konfigurationsdateien: wikiname_2016.conf
** Batch-Datei: webalizer_2016.bat


==== MW 1.23 LTS MonoBook ====
=== DNS-Cache ===


Das Design für das Salzwiki basiert wegen der Hintergrundgrafik und der links angeordneten Footer-Icons weiter auf dem Stil (Skin) "Monobook", obwohl der Stil seit MW 1.17 von "Vector" als Standardstil abgelöst wurde. Dazu wird die Original-Datei "MonoBook.php" wegen der veralteten Auto-discovery-Funktion, die "Monobook" bei MW 1.23 LTS noch hat, als Kopie namens "MonoBook_Original.php" im Verzeichnis "skins\monobook\" gespeichert.
Anhand der IPs – sowohl IPv4 als auch IPv6 – erfolgt eine Zuordnung von Domains und abgeleitet von den First-Level-Domains eine Zuordnung von Ländern. Die Zuordnungen werden standardmäßig in einer DNS-Cache-Datei namens "dnscache.db" zwischengespeichert.


In der Datei "LocalSettings.php" heißt die entsprechende Zuweisung dann <br> <nowiki>$wgDefaultSkin = "monobook";</nowiki>.
Der DNS-Zwischenspeicher wird mit folgenden Parametern festgelegt:
# DNSCache: Dateiname
# DNSChildren: Anzahl der Prozesse (1-100) für die DNS-Zuordnungen
# CacheIPs: IPs speichern, wenn keine Domain-Zuordnung möglich ist [yes|no]
# CacheTTL: Gültigkeitsdauer in Tagen (1-100) für jede zwischengespeicherten Adresse


Zusätzlich sind darunter folgende Zeilen erforderlich:
Bei der Konfiguration kann der Cache für IPs, die nicht in Domainnamen aufgelöst werden können, aktiviert werden, wenn dies häufig vorkommt, damit bei der nächsten Auswertung nicht noch einmal eine Auflösung versucht wird:
<pre>
<pre>
  // CC-Icon rechts unten für "MonoBook" angepasst 2015-09-28:
CacheIPs yes
  $wgFooterIcon_copyright['copyright'] = array(
</pre>
    "src" => $wgRightsIcon, // Icon
 
    "url" => $wgRightsUrl,
== Suchmaschinen  ==
    "alt" => $wgRightsText,
 
    //"height" => "", // Icon-Höhe
=== robots.txt ===
    //"width" => "" // Icon-Breite
 
  );
Damit Test-Wikis während der Erprobungsphase, das Repositorium und verschiedene Wiki-Unterverzeichnisse nicht von Suchmaschinen durchsucht werden, wird eine Datei "robots.txt" im Verzeichnis "htdocs" gespeichert.
  unset($wgFooterIcons['copyright']);
<br/>Damit kein Robot irgendetwas liest:
  $wgFooterIcons_r['poweredby'] = array_merge($wgFooterIcon_copyright,$wgFooterIcons['poweredby']);
<pre>User-agent: *
  // für "MonoBook" und "Vector" ergänzt
Disallow:</pre>  
  ## FOOTER-Icons links, wobei der erste Schlüssel zu <li id="footer-...ico"> verarbeitet wird
  $wgFooterIcons_l['copyright']['hornemanninstitut'] = array(
    "src" => "$wgScriptPath/images/common/HI.png", // Icon
    "url" => "http://www.hornemann-institut.de",
    "alt" => "Hornemann Institut",
    //"height" => "", // Icon-Höhe
    //"width" => "" // Icon-Breite
  );
  $wgFooterIcons_l['copyright']['hawk'] = array(
    "src" => "$wgScriptPath/images/common/hawk.png", // Icon
    "url" => "http://www.hawk-hhg.de",
    "alt" => "HAWK HHG",
    //"height" => "", // Icon-Höhe
    //"width" => "" // Icon-Breite
  );
  $wgFooterIcons_l['copyright']['dfg'] = array(
    "src" => "$wgScriptPath/images/common/DFG.jpg", // Icon
    "url" => "http://www.dfg.de",
    "alt" => "DFG",
    //"height" => "", // Icon-Höhe
    //"width" => "" // Icon-Breite
  );
  // für "Vector"
  #$wgFooterIcons_r = $wgFooterIcons;
  unset($wgFooterIcons);
  $wgFooterIcons = array_merge($wgFooterIcons_l, $wgFooterIcons_r);
</pre>


==== MW 1.23 LTS Vector ====
Angaben nach dem Upgrade auf MW1.23 am 26.02.2016, damit der "Riddler"-Robot (hohe Zugriffszahlen) gar nichts und andere Robots nur das jeweilige Hauptverzeichnis von SalzWiki und SaltWiki und sonst nichts durchsuchen:
<pre>
# robots.txt für Salzwiki und Saltwiki, damit Robots weder Unterverzeichnisse noch das Repositorium noch Test-Wikis durchsuchen
User-agent: Riddler
Disallow:/


Bei der Verwendung von "Vector" wird die Original-Datei "skins\Vector.php" wegen der veralteten Auto-discovery-Funktion, die "Vector" bei MW 1.23 LTS noch hat, als Kopie namens "Vector_Original.php" im Verzeichnis "skins\vector\" gespeichert.
User-agent: *
Disallow:/dashboard/
Disallow:/webalizer/
Disallow:/xampp/
Disallow:/salzwiki/cache/
Disallow:/salzwiki/docs/
Disallow:/salzwiki/extensions/
Disallow:/salzwiki/images/
Disallow:/salzwiki/includes/
Disallow:/salzwiki/languages/
Disallow:/salzwiki/maintenance/
Disallow:/salzwiki/mw-config/
Disallow:/salzwiki/resources/
Disallow:/salzwiki/serialized/
Disallow:/salzwiki/skins/
Disallow:/salzwiki/tests/
Disallow:/saltwiki/cache/
Disallow:/saltwiki/docs/
Disallow:/saltwiki/extensions/
Disallow:/saltwiki/images/
Disallow:/saltwiki/includes/
Disallow:/saltwiki/languages/
Disallow:/saltwiki/maintenance/
Disallow:/saltwiki/mw-config/
Disallow:/saltwiki/resources/
Disallow:/saltwiki/serialized/
Disallow:/saltwiki/skins/
Disallow:/saltwiki/tests/
Disallow:/repository/
Disallow:/salzwiki_draft/
Disallow:/saltwiki_draft/
Disallow:/repository_draft/
Disallow:/salz_salt_repo/
Disallow:/mediawiki_1_23_11/
</pre>


In der Datei "LocalSettings.php" heißt die entsprechende Zuweisung dann <br> <nowiki>$wgDefaultSkin = "vector";</nowiki>.
Im  jeweiligen Wiki-Hauptverzeichnis:
<pre>
# Robots sollen keine Unterverzeichnisse durchsuchen
User-agent: Riddler
Disallow:/


Im Verzeichnis "vector/components/footer.less" wird für die eigenen Icons im Footer unten links die Definition von "#footer-icons" kopiert und umbenannt in "#footer-icons-left" und folgendermaßen angepasst:
User-agent: *
<pre>
Disallow:/cache/
/* SalzWiki eingefügt 2015-09-28 */
Disallow:/docs/
#footer-icons-left {
Disallow:/extensions/
  float: left;
Disallow:/images/
  li {
Disallow:/includes/
    float: left;
Disallow:/languages/
    margin-right: 0.5em;
Disallow:/maintenance/
    line-height: 2em;
Disallow:/mw-config/
    text-align: left;
Disallow:/resources/
  }
Disallow:/serialized/
}
Disallow:/skins/
Disallow:/tests/
</pre>
</pre>


Im Verzeichnis "vector/images/" wird die Datei "headbg.jpg" für ein eigenes Hintergrundbild eingefügt.
=== Setzen von Keywords für den Head-Bereich eines Wikis ===
 
Hierzu ist in der Datei "LocalSettings.php" die Funktion "efSetKeywords()" mit den entsprechenden Keywords einzufügen. Hier am Beispiel von SaltWiki. Diese sind jedoch nur bei Zugang über die IP-Adresse und nicht über den Frame von 1&1 sichtbar. Damit Keywords über den Frame sichtbar sind, sind diese für unseren Zugang bei 1&1 bei der Einrichtung der Website mit anzugeben. Dasselbe gilt für "description".


Im Verzeichnis "vector/components/common.less" wird für das Hintergrundbild "body" folgendermaßen angepasst:
<pre>##Setzen von keywords
<pre>
function efSetKeywords(){
body {
  global $wgOut;
  /* SalzWiki eingefügt 2015-09-28 */
  $wgOut->addKeyword( 'salt' );
   background: #F9F9F4 url("headbg.jpg");
  $wgOut->addKeyword( 'desalination' );
  /*background-color: @menu-background-color*/
  $wgOut->addKeyword( 'salt decay' );    
  $wgOut->addKeyword( 'cultural heritage' );  
  $wgOut->addKeyword( 'salt damage' );
  $wgOut->addKeyword( 'conservation' );
}
}
</pre>
</pre>


==== HAWK-Design ====
== E-Mail-Versand  ==


Für Anpassungen der StyleSheets an das HAWK-Design siehe [[Adm:HAWK-Design]].
Die HAWK-Outlook-Adressen können nicht für den Versand per SMTP als Absender verwendet werden, sondern nur als Zieladresse.
 
Die Datei "localSettings.php" wurde in den Verzeichnissen
 
*salzwiki/
*repository/
*saltwiki/


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


Die Datei für das Logo links oben ist hochzuladen und in der Datei "LocalSettings.php" zuzuweisen:
'''Salzwiki/Repositorium'''
*Salzwiki
<pre>
<pre>
##Logo MW1.23
## E-Mail-Versand angepasst 15.01.2016 G. Werner
$wgLogo = $wgScriptPath."/images/common/Logo_Salz.png";
$wgEmergencyContact = "salzwiki.fb@hawk-hhg.de";
</pre>
$wgPasswordSender = "service@salzwiki.de";  
*Saltwiki
$wgSMTP = array(
<pre>
'host' =&gt; "smtp.1und1.de",
##Logo MW1.23
'IDHost' =&gt; "1und1.de",
$wgLogo = $wgScriptPath."/images/common/Logo_Salt.png";
'port' =&gt; "587",
</pre>
'auth' =&gt; true,
*Repositorium
'username' =&gt; "service@salzwiki.de",
<pre>
'password' =&gt; "********"
##Logo MW1.23
);
$wgLogo = $wgScriptPath."/images/common/Logo_Repo.png";
$wgEnotifUserTalk = true; # UPO
$wgEnotifWatchlist = true; # UPO
$wgEmailAuthentication = true;
</pre>
</pre>


=== Fußzeile "Footer" anpassen ===
'''Saltwiki'''
 
<pre>
==== Logos mit Verlinkung und Footerlinks anpassen MW 1.23 ====
## E-Mail-Versand angepasst 15.01.2016 G. Werner
$wgEmergencyContact = "saltwiki.fb@hawk-hhg.de";
$wgPasswordSender = "service@saltwiki.net";
$wgSMTP = array(
'host' =&gt; "smtp.1und1.de",
'IDHost' =&gt; "1und1.de",
'port' =&gt; "587",
'auth' =&gt; true,
'username' =&gt; "service@saltwiki.net",
'password' =&gt; "********"
);
$wgEnotifUserTalk = true; # UPO
$wgEnotifWatchlist = true; # UPO
$wgEmailAuthentication = true;
</pre>
 
== Externe Links ==


* Grafiken wie die Logos "HI.png", "HAWK.png" und <del>"DFG.jpg"</del> "SIK.png" im Verzeichnis "[wikiverzeichnisname]/images/common/" speichern.
Damit externe Links in einem neuen Fenster geöffnet werden, ist in die "localsettings.php" einzufügen:
* [[#LocalSettings.php anpassen|LocalSettings.php anpassen]]
* [[#MonoBook.php anpassen (Wiki-Code)|MonoBook.php anpassen (Wiki-Code)]]


===== LocalSettings.php anpassen =====
##Externe links erscheinen in einem neuen Fenster
$wgExternalLinkTarget = '_blank';


Änderungen in der Datei "LocalSettings.php" <del>"MonoBookSW.php": Zeile 141ff</del>:
== Datenbank-Fehler ==


Die Anzeige der Texte von "lastmodified", "Anzahl der Seitenabrufe" und "CC-Lizenz" kann wie folgt unterbunden werden. Hierbei wird "Anzahl der Seitenabrufe" in der Datei "LocalSettings.php" festgelegt:
Falls ein Hinweis "A database query error has occured" angezeigt wird, kann man sich weitere Angaben anzeigen lassen, indem man in der Datei "LocalSettings.php" unten einfügt:
<pre>
<pre>
$wgDisableCounters = true;
$wgShowSQLErrors = 1;
</pre>
</pre>


<pre>
== Versionshinweise ==
#### Beginn FOOTER ab Version MW1.23
 
// CC-Icon rechts unten für "MonoBook" angepasst 2015-09-28:
=== Betriebssystem und Wiki-Serversysteme ===
$wgFooterIcon_copyright['copyright'] = array(
 
  "src" => $wgRightsIcon, // Icon
* <del>Beim Produktivserver bis 2017-01-04 mit Windows Server 2008 SP2 (Standard Edition) wird XAMPP 5.6.14.0 verwendet</del>
  "url" => $wgRightsUrl,
* Beim Produktivserver ab 2017-01-04 mit Windows Server 2012 R2 Datacenter wird XAMPP 5.6.14.0 verwendet
  "alt" => $wgRightsText,
** XAMPP Control Center 3.2.1
  //"height" => "", // Icon-Höhe
** Apache 2.4.17
  //"width" => "" // Icon-Breite
** MariaDB 10.0.17 Server mit libmysql - mysqlnd5.0.11dev Client
);
** PHP 5.6.14 für Windows und VC11 Visual C++ 2012 x86
unset($wgFooterIcons['copyright']);
** OpenSSL 1.0.2d
$wgFooterIcons_r['poweredby'] = array_merge($wgFooterIcon_copyright,$wgFooterIcons['poweredby']);
** phpMyAdmin 4.5.0.2
// für "MonoBook" und "Vector" ergänzt
* Beim Testserver ab 2017-01-04 mit Windows Server 2012R2 Datacenter wird auf XAMPP verzichtet und werden folgende Einzelsysteme aus dem XAMPP-Paket Version 5.6.30-0 eingerichtet:
## FOOTER-Icons links, wobei der erste Schlüssel zu <li id="footer-...ico"> verarbeitet wird
** Apache 2.4.25 für Windows und VC11 von http://www.apachelounge.com, alternativ von http://www.apachehaus.com im Verzeichnis "D:\xampp\apache\"
$wgFooterIcons_l['copyright']['hornemanninstitut'] = array(
** MariaDB 10.0.17 Server mit libmysql - mysqlnd 5.0.11dev Client vom Produktivserver, ansonsten neuere Version von http://ftp.hosteurope.de/mirror/archive.mariadb.org/ oder https://downloads.mariadb.org/mariadb/+releases/ bzw. http://archive.mariadb.org/mariadb-10.0.17/
  "src" => "$wgScriptPath/images/common/HI.png", // Icon
** PHP 5.6.30 32Bit für Windows und VC11 von http://windows.php.net/downloads/releases/archives/ im Verzeichnis "D:\xampp\php\"
  "url" => "http://www.hornemann-institut.de",
** OpenSSL 1.0.2j
  "alt" => "Hornemann Institut",
** phpMyAdmin 4.6.5.2
  //"height" => "", // Icon-Höhe
 
  //"width" => "" // Icon-Breite
=== Datenbanksystem ===
);
 
$wgFooterIcons_l['copyright']['hawk'] = array(
* MySQL-Upgrade von Version 5.1 zu Version 5.6 ist nur möglich über Version 5.5
  "src" => "$wgScriptPath/images/common/hawk.png", // Icon
* XAMPP hat zuletzt in Version 1.8.2-6 die MySQL-Version 5.5.x, danach die Version 5.6
  "url" => "http://www.hawk-hhg.de",
* XAMPP hat bis Version 5.5.28 bzw. 5.6.12 als Datenbanksystem MySQL, danach MariaDB
  "alt" => "HAWK HHG",
* XAMPP hat in Version 5.6.14.0 die MariaDB-Version 10.0.x, aber in Version 5.6.14.3 die MariaDB-Version 10.1.x
  //"height" => "", // Icon-Höhe
 
  //"width" => "" // Icon-Breite
=== XAMPP ===
);
 
$wgFooterIcons_l['copyright']['sik'] = array(
==== XAMPP 5.6.30 ====
  "src" => "$wgScriptPath/images/common/SIK.png", // Icon
 
  "url" => "http://http://www.salze-kulturgut.de",
* PHP 5.6.30 32Bit
  "alt" => "SIK",
* VC11 MS Visual C++ 2012 redistributable x86 Update 4
  "height" => "30px", // Icon-Höhe
* <b>MariaDB 10.1</b>.21 Win32 (Server), libmysql - mysqlnd 5.0.11dev (Client)
  "width" => "30px" // Icon-Breite
* Apache 2.4.25 Win32
);
* phpMyAdmin 4.6.5.2, Zeichensatz MySQL-Verbindung utf8mb4_unicode_ci
// für "Vector"
* OpenSSL 1.0.2j
#$wgFooterIcons_r = $wgFooterIcons;
* XAMPP Control Panel 3.2.2
unset($wgFooterIcons);
$wgFooterIcons = array_merge($wgFooterIcons_l, $wgFooterIcons_r);
#### Ende FOOTER ab Version MW1.23
</pre>


===== MonoBook.php anpassen (Wiki-Code) =====
In phpMyAdmin 4.6.5.2 ist ein Bug, der eine Fehlermeldung erzeugt, wenn versucht wird, ein neues Datenbank-Nutzungskonto zu erstellen. Die Lösung besteht darin, im Verzeichnis "D:\xampp\mysql\" die Unterverzeichnisse "lib\plugin\" zu erstellen.


Da die Datei "[wikiname]\skins\MonoBook.php" bearbeitet werden muss, wird im Verzeichnis "[wikiname]\skins\monobook" eine Kopie der Datei als "MonoBook_original.php" gespeichert und von der geänderten Datei als Backup für Wiki-Updates ebenfalls im Verzeichnis "\monobook" eine Kopie als "MonoBookSW.php" gespeichert.
==== XAMPP 5.6.14.3 ====
* PHP 5.6.14 32Bit
* VC11 MS Visual C++ 2012 redistributable x86 Update 4
* <b>MariaDB 10.1</b>.8 Win32 (Server), libmysql - mysqlnd 5.0.11dev (Client)
* Apache 2.4.17 Win32
* phpMyAdmin 4.5.1, Zeichensatz MySQL-Verbindung utf8mb4_unicode_ci
* OpenSSL 1.0.2d
* XAMPP Control Panel 3.2.2


In der Datei "MonoBook.php" werden die Texte von "lastmodified" und "CC-Lizenz" sowie der Verweis zu "Über" bzw. "About" durch eigenen Code unter Zeile 154 herausgefiltert:
==== XAMPP 5.5.30/5.6.14.0 ====
<pre>
* PHP 5.5.30/5.6.14 32Bit + Pear, MS VC11 x86 32Bit ThreadSafe
<?php
* VC11 MS Visual C++ 2012 redistributable x86 Update 4
      foreach ( $validFooterLinks as $aLink ) { ?>
* <b>MariaDB 10.0</b>.17 Win32 (Server), libmysql - mysqlnd 5.0.11dev (Client)
        <?php if($aLink!=="lastmod" && $aLink!=="copyright" && $aLink!=="about"){ /*eingefügt für HAWK HHG 2015-12-07 u. 2016-03-29*/ ?>
* Apache 2.4.17 Win32
    <li id="<?php echo $aLink ?>"><?php $this->html( $aLink ) ?>
* phpMyAdmin 4.5.0.2, Zeichensatz MySQL-Verbindung utf8mb4_unicode_ci
<?php  } /*eingefügt für HAWK HHG 2015-12-07*/
* OpenSSL 1.0.2d
      }
* XAMPP Control Panel 3.2.1
?>
</pre>
Original:
<pre>
<?php
      foreach ( $validFooterLinks as $aLink ) { ?>
    <li id="<?php echo $aLink ?>"><?php $this->html( $aLink ) ?>
<?php
      }
?>
</pre>


===== CSS-Anpassungen als Alternative =====
==== XAMPP 5.5.28/5.6.12 ====
* PHP 5.5.28/5.6.12 + Pear, MS VC11 x86 32Bit ThreadSafe
* MySQL 5.6.26-Community
* Apache 2.4.16 Win32
* phpMyAdmin 4.4.14
* openSSL 1.0.1i


Alternativ kann in der Datei "\skins\monobook\main.css" unterhalb der Angaben für den Footerbereich in Zeile 550 die Anzeige verhindert werden, wobei der HTML-Quelltext für die Listenelemente aber trotzdem erzeugt wird:
==== XAMPP 1.8.2-6 ====
<pre>
* PHP 5.4.31, MS VC9
/* eingefügt für HAWK HHG 2015-12-07 */
* MySQL 5.5.32-Community
#f-list #lastmod, #f-list #copyright {
* Apache 2.4.4 Win32
  display:none;
* phpMyAdmin 4.0.4
}
* openSSL 0.9.8y mit OpenSSL-Bug "Heartbleed"
</pre>


===== Footer-Elemente rechts =====
==== XAMPP 1.8.0 ====
Neues Sicherheitskonzept: Zugriff per Browser auf Verzeichnisse wie "phpmyadmin" nur noch direkt vom Server aus ("Require local")


Die Variable $wgFooterIcons kann nur für Icons rechts unten im Footer erweitert werden. Der Footer-Container besteht aus folgenden Bereichen:
==== XAMPP 1.7.1 ====
* ul id="footer-info" (oberer Footer-Bereich)
* PHP 5.2.9, MS Visual C++ 2008 redistributable x86 9.0...
  * li id="footer-info-lastmod"
* MySQL 5.1.33-Community Client 5.0.51a
  * li id="footer-info-copyright"
* Apache 2.2.11 Win32
* ul id="footer-places" (unterer Footer-Bereich links)
* phpMyAdmin 3.1.3.1
  * ul id="footer-places-privacy"
  * ul id="footer-places-about"
  * ul id="footer-places-disclaimer"
* ul id="footer-icons" (unterer Footer-Bereich rechts)
  * ul id="footer-copyrightico"
  * ul id="footer-poweredbyico"


===== $wgHooks entfällt =====
=== MediaWiki ===


Nicht mehr erforderlich: Anpassungen mit $wgHooks in der Datei "LocalSettings.php" für neue Footer-Verweise, siehe auch https://www.mediawiki.org/wiki/Manual:Footer:
Informationen zu
<pre>
* Versionszyklen inkl. LTS: https://www.mediawiki.org/wiki/Version_lifecycle
$wgHooks['SkinTemplateOutputPageBeforeExec'][] = 'lfDatenschutz';
* Systemabhängigkeiten: https://www.mediawiki.org/wiki/Compatibility
function lfDatenschutz($sk, &$tpl){
* Versionsänderungen:
  $tpl->set('Datenschutz', $sk->footerLink('Datenschutz', 'Salzwiki:Datenschutz'));
** entfallen oder veraltet: https://www.mediawiki.org/wiki/Category:MediaWiki_Deprecated_or_obsolete_features
  $tpl->data['footerlinks']['places'][] = 'Datenschutz';
** Erweiterungen
  return true;
*** integrierte Erweiterungen: https://www.mediawiki.org/wiki/Comparison_of_extensions_in_distributions
}
*** nicht mehr kompatible Erweiterungen: https://phabricator/wikimedia.org/T110291
$wgHooks['SkinTemplateOutputPageBeforeExec'][] = 'lfProjektverbund';
function lfProjektverbund($sk, &$tpl){
  $tpl->set('Projektverbund', $sk->footerLink('Projektverbund', 'Projektverbund'));
  $tpl->data['footerlinks']['places'][] = 'Projektverbund';
  return true;
}
$wgHooks['SkinTemplateOutputPageBeforeExec'][] = 'lfImpressum';
function lfImpressum($sk, &$tpl){
  $tpl->set('Impressum', $sk->footerLink('Impressum', 'Salzwiki:Impressum'));
  $tpl->data['footerlinks']['places'][] = 'Impressum';
  return true;
}</pre>


==== "Forschungsverbund"/"Projektverbund" statt "Über [Wiki-Name]" ====
==== MW Version 1.30 ====


Damit im "Footer" statt auf die Seite "Über SalzWiki" auf die Seite <del>"Forschungsverbund"</del> "Projektverbund" bzw. "Research Network" verlinkt wird, sind Änderungen an "Aboutsite" und "Aboutpage" vorzunehmen. Hierzu entweder über "Spezialseiten->Systemdaten und Werkzeuge->MediaWiki-Systemtexte" gehen oder folgende Adressen eingeben:
* Hooks
<pre>
** $wgExceptionHooks['MWException'][] entfällt
"[Wiki-Verzeichnis]/index.php?title=MediaWiki:Aboutsite/de[-formal|-at|-ch]&action=edit"
bzw.
"[Wiki-Verzeichnis]/index.php?title=MediaWiki:Aboutpage/de&action=edit"
</pre>
*Link-Text in "aboutsite" bearbeiten:
<pre>Projektverbund
<!--Über {{SITENAME}}-->
</pre>
*Seitenname, zu dem verlinkt wird, in "aboutpage" bearbeiten:
<pre>Project:Über
</pre>
ersetzen durch
<pre>Forschungsverbund
</pre>


Diese Änderungen müssen auf allen Sprach-Subpages für Aboutsite und Aboutpage - nämlich für "de", "de-formal", "de-at" und "de-ch" - durchgeführt werden, da die Änderungen an den Seiten "Aboutpage" und "Aboutsite" sich nur bei den Standard-Sprachversion wie "de" auswirken, jedoch nicht z. B. bei "de-formal". Deshalb wurden als auszuwählende Sprachen "de-formal", "de-at" und "de-ch" vorerst deaktiviert in der Datei [wikiverzeichnisname]\languages\Names.php
==== MW Version 1.27 ====
Wenn ein User in den Profileinstellungen die Sprache abweichend von der Festlegung "de-formal" in der Datei "LocalSettings.php" auf "de" einstellt, funktioniert eventuell "Forschungsverbund" erst, nachdem "English" oder eine andere nicht-deutsche Sprache eingestellt wurde.


<pre>
* Datei "LocalSettings.php" anpassen
'de' => 'Deutsch', # German ("Du")
** $wgScriptExtension entfällt
##'de-at' => 'Österreichisches Deutsch', # Austrian German
* Skins-Element
##'de-ch' => 'Schweizer Hochdeutsch', # Swiss Standard German
** $wgCopyrightIcon wird ersetzt durch $wgFooterIcons['copyright']['copyright']
##'de-formal' => 'Deutsch (Sie-Form)', # German - formal address ("Sie")
* Core-Variablen
</pre>
** $wgSessionHandler gilt als veraltet


Um im "Footer" den Hyperlink "Forschungsverbund" statt "Projektverbund" angezeigt zu  bekommmen, wird in der Skin-Datei der Code angepasst.
==== MW Version 1.26 ====
* MW 1.23 Datei "monobook.php"


MW 1.23
* Plugins
<pre>
** AuthPlugin mit $wgAuth gilt als veraltet und soll ab MW 1.27 ersetzt werden durch die Frameworks AuthManager und SessionManager, siehe auch https://www.mediawiki.org/wiki/Manual:SessionManager_and_AuthManager/Updating_tips
???
</pre>


=== Favicon ===
==== MW Version 1.25 ====


Damit in der Browser-Adresszeile ein Favicon dargestellt wird, ist eine Datei "salzwiki.ico" in das jeweilige Wiki-Verzeichnis hochzuladen und folgender Eintrag in der jeweiligen Datei "LocalSettings.php" vorzunehmen:
* Skins
<pre>$wgFavicon = "/[wikiverzeichnisname]/salzwiki.ico";</pre>
** "Autodiscovery mechanism" entfällt
** Die Skin-Datei "MonoBookSW.php" anpassen an die neue Version, siehe https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery#Migration_guide
* Datei "LocalSettings.php" anpassen
** $wgDisableCounters entfällt; für Seitenbesuchszahlen ist die Erweiteerung "HitCounters" erforderlich
** Skin-Registrierung
** Erweiterungen-Registrierung
* Statistik Seitenaufrufe {{NUMBEROFVIEWS}} entfällt (https://www.mediawiki.org/wiki/Help:Magic_words/de#Statistik)


=== Darstellung in einem Frame ===
Skin-Registrierung
<pre>
wfLoadSkin("MonoBook"); //statt require_once "$IP/skins/MonoBook.php";
</pre>


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.
Erweiterungen-Registrierung
<pre>
wfLoadExtension("Cite"); //statt require_once "$IP/extensions/Cite/Cite.php";
</pre>


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.
==== MW Version 1.24 ====


Dies ist zu umgehen, d.h. es tritt keine Fehlermeldung auf, wenn man in den localsetting.php einfügt:
* Logo-Speicherort geändert von "skins/common/images/" zu "resources/assets/" bzw. "images/..."
* Bisher mitgelieferte Skins sind nicht mehr enthalten; die jeweiligenSkins-php-Dateien und Ordner sind gegebenenfalls aus dem Verzeichnis "skins/" zu entfernen:
** CologneBlue.php, cologneblue
** Modern.php, modern
** MonoBook.php, monobook
** Vector.php, vector
* Datei "LocalSettings.php" eventuell an neue Skin-Registrierung anpassen
<pre>
<pre>
$wgEditPageFrameOptions = 'false';  
require_once "$IP/skins/MonoBookSW.php"; //statt $wgDefaultSkin = "monobooksw";
</pre>
</pre>
* Nicht mehr unterstützt wird "register_globals => Bei PHP vor Version 5.4 in der Datei "php.ini" angeben "register_globals=Off"
* Erweiterung "OggHandler" wird nicht mehr unterstützt


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
==== MW Version 1.23 ====


<pre>
* Skins werden anders eingebunden
* The X-Frame-Options header to send on pages sensitive to clickjacking
** Das jeweilige Skin-Unterverzeichnis sollte wie die php-Datei die Groß-Klein-Schreibweise berücksichtigen ("monobooksw/" => "MonoBookSW/")
* attacks, such as edit pages. This prevents those pages from being displayed
** Kleinbuchstaben bei $wgDefaultSkin = "monobooksw"; in der Datei "LocalSettings.php"
* in a frame or iframe. The options are:
** Die Skin-php-Datei, z. B. "MonoBookSW.php", ist nicht mehr im Verzeichnis "skins/", sondern im Unterverzeichnis, z. B. "skins/MonoBookSW/"
*
** Die Skin-Datei "MonoBookSW.php" anpassen an die neue Version, siehe www.mediawiki.org/wiki/Manual:Skin_autodiscovery#Migration_guide
*   - 'DENY': Do not allow framing. This is recommended for most wikis.
* "Autodiscovery mechanism" für "Core Skins" gilt als "deprecated" und schreibt Warnungen in die Log-Dateien. Folgende Dateien und Ordner sind gegebenenfalls aus dem Verzeichnis "skins/" zu entfernen:
*
** Chick.php, chick
*   - 'SAMEORIGIN': Allow framing by pages on the same domain. This can be used
** Nostalgia.php, nostalgia
*         to allow framing within a trusted domain. This is insecure if there
** Simple.php, simple
*         is a page on the same domain which allows framing of arbitrary URLs.
** Standard.php, standard
*
* "The info page action, which provides useful statistics for any given page, has been improved and turned on by default."
*   - false: Allow all framing. This opens up the wiki to XSS attacks and thus
* Bei "Spezialseiten" wird die "ISBN-Suche" unter "Daten und Werkzeuge" statt unter "Andere Spezialseiten" angezeigt.
*         full compromise of local user accounts. Private wikis behind a
* $wgPasswordSenderName wurde abgeschafft; der Name für die E-Mail-Adresse von $wgPasswordSender kann nur noch in der Seite "MediaWiki:Emailsender" angepasst werden
*         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.  
</pre>


== Wiki-Konfiguration ==
==== MW Version 1.21 ====


Die Konfiguration eines Wikis erfolgt hauptsächlich mit PHP-Variablen in der Datei "xampp\htdocs\[wikiname]\LocalSettings.php".
* implementierte Erweiterungen
** Cite
** ImageMap
** TitleBlacklist
** SpamBlacklist
** Interwiki bzw. SpecialInterwiki u. a.
* Änderungen
** Die Funktion "wfLoadExtensionMessages()" existiert nicht  mehr, wird aber von BibManager REL1_23 verwendet und muss auskommentiert werden


=== Spracheinstellungen ===
==== MW Version 1.20 ====


==== Standardsprache ====
* PHP 5.3.2 oder neuer ist erforderlich
* Erweiterungen, die Elemente der neuen Version voraussetzen
** ApprovedRevs
** Cite u. a.


Die Standardsprache wird in der Datei "LocalSettings.php" festgelegt, kann von den Usern in den Profileinstellungen aber nach den persönnlichen Bedürfnissen angepasst werden.
==== MW Version 1.19 ====


* Salzwiki: $wgLanguageCode = "de-formal";
* $wgEnableCreativeCommonsRdf für "LocalSettings.php" wird nicht mehr unterstützt; stattdessen gibt es eine Erweiterung [http://www.mediawiki.org/wiki/Extension:CreativeCommonsRdf|"CreativeCommonsRdf"], die Beta-Status hat (2015-09-21).
* Saltwiki: $wgLanguageCode = "en";
 
* Repositorium: $wgLanguageCode = "en";
* In der revision-Tabelle ist eine neue Spalte "rev_sha1" hinzugekommen, die in der alten Verison vor einem Update hinzugefügt werden muss; siehe [http://www.mediawiki.org/wiki/Manual:FAQ|Mediawiki FAQ] Punkt 3.2, [http://www.mediawiki.org/wiki/Manual:Revision_table|Mediawiki Manual Revision_table] und http://www.mediawiki.org/wiki/Thread:Project:Support_desk/upgrade_problems:_1.11_--_1.21:<pre>ALTER TABLE /*$wgDBprefix*/revision ADD rev_sha1 varbinary(32) NOT NULL default '';</pre>
 
==== MW Version 1.18 ====
 
* MySQL 5.0.2 oder neuer ist erforderlich
* mehr Genderneutralität bei Sprachdateien
* Neue "Hooks"
** BaseTemplateToolbox
* implementierte Erweiterungen
** ConfirmEdit
** ParserFunctions mit Control Structure Functions ohne Loops
** RenameUser
** Nuke u. a.
* Neue Erweiterungen
** "Math", bisher Datei "\includes\math.php", siehe https://www.mediawiki.org/wiki/Texvc/de, verwendet "texvc", welches 3 Zusatzprogramme benötigt:
*** ocaml
*** LaTeX
*** dvipng
** "WikiEditor", bisher Datei "\includes\EditPage.php" bzw. JS-Erweiterung "Extra Edit Buttons (XEB)", siehe en.wikipedia.org/wiki/User:MarkS/Extra_edit_buttons und en.wikipedia.org/wiki/User:MarkS/extraeditbuttons.js
 
==== MW Version 1.17 ====
 
* PHP 5.2.3 oder neuer ist erforderlich
* neuer Installationsvorgang
* Kategoriensortierung geändert
* Interwiki-Verweise werden in gesonderten Tabellen gespeichert
* Standard-Skin "vector" statt "monobook"
* neue Variable $wgPasswordSenderName (existiert nur bis Version 1.22)
 
= SalzWiki SaltWiki Repository  =
 
== Anpassungen an Systemdateien ==
 
Verzeichnisse und Dateien im jeweiligen Wiki:
* includes
** EditPage.php
** HttpFunctions.php
** <del>Skin.php</del> für 2 Varianten des linken Menüs
** <del>SkinTemplate.php</del> für Werkzeuge ohne Datei-Upload
** SkinTemplate.php</del> für Werkzeuge ohne Spezialseiten
** <del>specialpage\SpecialPageFactory.php</del> für Werkzeuge ohne Spezialseiten
* languages
** i18n\de-formal.json für Text bei Kontaktformular
* skins
** <del>MonoBook.php</del> für Footer-Elemente und eingeschränkte Sichtbarkeit von Werkzeugen
** monobook\main.css für allgemeine Farben und für Farben in bestimmten Seitenbereichen
 
== Upgrade vorhandener Wikis ==


==== de-formal korrigieren (Wiki-Code) ====
# neue Wiki-Version 1.31 entpacken nach "D:\noxampp\[wikiname]"
# Erweiterungen
## Erweiterungen für aktuelle Version herunterladen
## aktuelle Erweiterungen entpacken nach "D:\noxampp\[wikiname]\extensions"
# Datei "LocalSettings.php" umbenennen zu "LocalSettings_original_131.php"
# Dateien vom alten Server zum neuen Server kopieren
## ...\[wikiname]\images inkl. eigenem Unterverzeichnis "commons\"
## ...\[wikiname]\LocalSettings.php
# Wiki-Datenbanken
## Datenbankdaten auf dem alten Server sichern
## Datenbankdaten vom alten zum neuen Server kopieren
## Datenbankdaten auf dem neuen Server wiederherstellen
# Wiki-Anpassungen
## Datei "LocalSettings.php" vergleichen mit Angaben in "LocalSettings_original_131.php" und anpassen
## Datei "...\[wikiname]\maintenance\runJobs.php" mit php.exe auf der Admin-Kommandozeile ausführen
## Datei "...\[wikiname]\maintenance\upgrade.php" mit php.exe auf der Admin-Kommandozeile ausführen


Die Datei "[wikiname]\languages\i18n\de-formal.json" wird wegen einer Du-Form ergänzt. Zuvor ist die Datei als Kopie "de-formal_original.json" zu speichern. Nach der Korrektur ist für Wiki-Updates eine Kopie als "de-formalSW.json" zu speichern.
=== Datenbanken sichern ===


Für die Sie-Form wird aus der Datei "de.json" von Zeile 1759 "emailccme" mit Du-Form verwendet: "Sende eine Kopie der E-Mail an mich"; deshalb ist in der Datei "de-formal.json" in Zeile 216f zwischen "emailpagetext" und "emailccsubject" einzufügen:
Kommandozeile als Administrator öffnen und folgenden Befehl eingeben:
<pre>
<pre>
"emailccme": "Eine Kopie der E-Mail an mich senden",
D:
cd xampp\mysql\bin
mysqldump -uroot -p --databases db_wikiname > D:\Backup_193.175.110.91\Laufwerk_D\Backups
mysqldump --user=root --password --databases db_wikiname > D:\Backup_193.175.110.91\Laufwerk_D\Backups\db_wikiname_MW1.16_MariaDBv10.0.17_yyyymmdd.sql
</pre>
</pre>


=== Zugangsberechtigungen  ===
=== Datenbanken wiederherstellen ===


==== Gruppen für Berechtigungen ====
Kommandozeile als Administrator öffnen und folgenden Befehl eingeben:
<pre>
D:
cd xampp\mysql\bin
mysql -uroot -p --execute="source D:\Backups\db_wikiname_MW1.16_MariaDBv10.0.17_yyyymmdd.sql" --force
mysql --user=root --password --execute="source D:\Backups\db_wikiname_MW1.16_MariaDBv10.0.17_yyyymmdd.sql" --force
</pre>


* Administratoren = Chef-Redakteure für Accounts erstellen/sperren, Systemtexte bearbeiten, Wiki-Inhalte verschieben, löschen, importieren etc.
== Datenbank mittels XAMPP und phpmyAdmin anlegen ==
* autor = Autor/in für Wiki-Inhalte
* Benutzer = nur Diskussionsseiten
* Bots (Systemgruppe)
* Bürokraten = Rechtevergabe, Account-Vereinigung
* Editor (saltwiki, repository) = Wiki-Inhalte-Kontrolle
* Redakteur (salzwiki) = siehe Editor
* Sicherheit = Seitensperre für Spezialseiten und gesperrte Seiten bei deaktiviertem JavaScript
* Salzwiki, HAWK etc. = Gruppen im Repository
* sysop = Hauptadministrator


==== Spezial-Seiten verbergen bzw. verstecken (Wiki-Code) ====
Seit der Version 1.16.1 kann die jeweilige Datenbank statt mit phpMyAdmin während der Installation mittels Browser (/[wikiverzeichnis]/config/index.php) angelegt werden, sofern der Superuser-Account (Datenbank-Hauptadministrator) bekannt ist:


Spezialseiten, die nur mit besonderen Berechtigungen verfügbar sind, werden nach Anmeldung bei einem Konto mit besonderen Berechtigungen auf der Seite "Spezialseiten" per CSS fett-formatiert dargestellt:
=== salzwiki ===
<pre>
<pre>Database name: salzwiki
<li class="mw-specialpagerestricted">...
Benutzer: SW_sawi
Host: localhost
Global Rechte: all privileges
Grant: ja
database table prefix: sw_
</pre>
</pre>


Für Berechtigungen von Spezialseiten siehe auch https://www.mediawiki.org/wiki/Manual:Special_pages/de#Seitenzugriff_beschr.C3.A4nken
=== repository ===
<del>http://phlow.net/magazin/netzkultur/technik/445-mediawiki-spezialseiten-vor-unerlaubtem-zugriff-sperren</del> (2015-12-04 nicht mehr vorhanden)
<pre>Database name: repository
 
Benutzer: SW_repo
Datei "LocalSettings:php"
Host: localhost
<pre>
Global Rechte: all privileges
##Benutzergruppe um zu verhindern, dass Seiten der Specialpages
Grant: ja
##von jedem anderen außer Bürokraten und Admin und Sicherheit
database table prefix: sr_
##aufgerufen werden können. Risos 08.02.2012
$wgGroupPermissions['Sicherheit']['read'] = true;
$wgGroupPermissions['Sicherheit']['Sicherheit'] = true;
</pre>
</pre>


===== MW 1.23 =====
=== saltwiki ===
 
<pre>Database name: saltwiki
Wiki-Code anders als in MW 1.16:
Benutzer: SW_sawi
*Datei "includes\specialpage\SpecialPageFactory.php" statt Datei "includes\SpecialPage.php"
Host: localhost
*Variable "private static $list" statt "static public $mList"
Global Rechte: all privileges
*Assoziative Array-Elemente haben geänderte Werte, die nicht mehr in Arrays, sondern nur noch als Text-Strings angegeben sind
Grant: ja
**Bereich "Media reports and uploads" ab Zeile 114
database table prefix: sw_
**Bereich "Unlisted / redirects" in Zeile 171
 
<pre>
// Media reports and uploads
'Listfiles' => 'SpecialListFiles,
'Filepath' => 'SpecialFilePath',
...
// Unlisted / redirects
'Specialpages' => 'SpecialSpecialpages',
...
</pre>
Eventuell  muss die Datei "\includes\SkinTemplate.php" bei der Funktion "buildNavUrls()" in den Zeilen 1247 und 1262 angepasst werden - siehe http://nullraffer.de/wiki/index.php?title=Mediawiki_absichern:
<pre>
global $wgUploadNavigationUrl;
global $wgUser; // eingefügt 2015-12-04 für HAWK HHG
...
// Bedingung eingefügt 2015-12-04 für HAWK HHG
if(!$wgUser->isAnon()){
  $nav_urls['specialpages'] = array( 'href' => self::makeSpecialUrl( 'Upload' ) );
}
...
</pre>
</pre>


==== Vergabe von Nutzerrechten durch den Hauptadministrator (sysop) ====
== Mediawiki Installieren  ==


Damit die unten beschriebenen Rechtevergaben umgesetzt werden können, erhält der Sysop zunächst den Zugang zu den SpecialPages, um auch nach Änderung der Datei "SpecialPage.php" Zugriff auf die Spezialseiten zu haben. Folgende Zeile ist in "LocalSettings.php" einzufügen:
*Für die jeweiligen Wikis einen entsprechenden Wiki- und Verzeichnisnamen festlegen: "salzwiki", "repository", "saltwiki".
<pre>$wgGroupPermissions['sysop']['restrictusers'] = true; ##HJschwarz 22.02.2011, Ersteinstellung für "restrictusers" zum Einstellen der Rechte
*Die Dateien und Verzeichnisse aus der tar.gz-Datei in das jeweilige Wiki-Verzeichnis entpacken:
</pre>
<pre>"D:\xampp\htdocs\[wikiverzeichnisname]\"</pre>
 
*Nach Installationsanweisung das jeweilige Wiki installieren; hierzu im Browser die Adresse "D:\xampp\htdocs\[wikiverzeichnisname]\mw-config\index.php" aufrufen.
Anschließend über SpecialPages->UserRightsManagement->[Username] die Rechte erweitern und alle Gruppen aktivieren.
**Contact e-mail: service@salzwiki.hawk-hhg.de
**Language: Je nach Wiki Deutsch oder English
**Copyright/license: Creative Commons
**Admin username: Hornemann
**Object caching: No
**E-Mail
***E-mail features: enabled
***User-to-user e-mail: enabled
***E-mail notification: enabled for discussion pages nad watchlists
***E-mail address authentication: enabled
**Datenbank
***Database type: MySQL
***Database host: localhost
***Database name: [wikiname]
***DB username: SW_sawi (SalzWiki, SaltWiki) bzw. SW_repo (Repositorium) <del>hi_wiki_1</del>
***Superuser account: yes
***Superuser name: root
***Database table prefix: sw_ (SalzWiki, Saltwiki) bzw. sr_ (Repositorium)
***Storage Engine: InnoDB
***Database character set: MySQL 4.1/5.0 binary
**Wiki
***SalzWiki bzw. SaltWiki bzw. Repository
***Projektraum entspricht Namen des Wikis
***Benutzername: Hornemann
***E-Mail-Adresse: salzwiki@hornemann-institut.de
**Optionen
***ausschließlich berechtigte Bearbeiter (SalzWiki, SaltWiki) bzw. geschlossenes Wiki (Repository)


=== Lizenz für das jeweilige Wiki  ===


==== Nutzerrechte bis zum Freischalten von Saltwiki ====
Verwendet werden Creative-Commons-Lizenzen. Für SalzWiki wird die deutsche Variante, für SaltWiki und Repository wird die Standard-Variante vom Typ "cc-by-nc-sa" – Version 3.0 (Stand 2017-07-21) – eingesetzt.


Kein "normaler" Nutzer kann Seiten in SaltWiki lesen:
Da die Grafiken unter "\skins\images\common\cc-..." keine Unterscheidung nach Versionsnummer und Länderversion anbieten, werden die Grafiken von "Creative Commons" heruntergeladen, umbenannt und gespeichert unter "[wikiname]\images\common\":
* https://i.creativecommons.org/l/by-nc-sa/3.0/de/88x31.png => CC_BY_NC_SA_3.0_de_88x31.png
* https://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png => CC_BY_NC_SA_3.0_en_88x31.png


$wgGroupPermissions['*']['read'] =false;
Die Lizenzkonfiguration erfolgt in der Datei "LocalSettings.php":
*Salzwiki
<pre>
## 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.
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
## Deutsch
$wgRightsUrl = "https://creativecommons.org/licenses/by-nc-sa/3.0/de/";
$wgRightsText = "Namensnennung-Nicht-kommerziell-Weitergabe unter gleichen Bedingungen 3.0 Deutschland";
// bei MW 1.23
#$wgRightsIcon = "https://i.creativecommons.org/l/by-nc-sa/3.0/de/88x31.png";
#$wgRightsIcon = "{$wgStylePath}/common/images/cc-by-nc-sa.png";
$wgRightsIcon = $wgScriptPath."/common/images/CC_BY_NC_SA_3.0_de_88x31.png";
# $wgRightsCode = "<nowiki>[</nowiki>license_code<nowiki>]</nowiki>"; # Not yet used
</pre>
*Saltwiki und Repositorium
<pre>
## 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.
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
## English und Repositorium
$wgRightsUrl = "https://creativecommons.org/licenses/by-nc-sa/3.0/";
$wgRightsText = "Attribution-Noncommercial-Share Alike 3.0 Unported";
// bei MW 1.23
#$wgRightsIcon = "https://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png";
#$wgRightsIcon = "{$wgStylePath}/common/images/cc-by-nc-sa.png";
$wgRightsIcon = $wgScriptPath."/common/images/CC_BY_NC_SA_3.0_en_88x31.png";
# $wgRightsCode = "<nowiki>[</nowiki>license_code<nowiki>]</nowiki>"; # Not yet used
</pre>


Folgende Seiten werden durch $wgWhitelistRead dennoch für alle zum Lesen freigegegben:
=== Style/Skin  ===


$wgWhitelistRead = array("Main_Page", "Saltwiki:About", "Saltwiki:General disclaimer", "Saltwiki:Privacy policy");
==== MW 1.23 LTS MonoBook ====


==== Benutzer-Rechte in SalzWiki und SaltWiki  ====
Das Design für das Salzwiki basiert wegen der Hintergrundgrafik und der links angeordneten Footer-Icons weiter auf dem Stil (Skin) "Monobook", obwohl der Stil seit MW 1.17 von "Vector" als Standardstil abgelöst wurde. Dazu wird die Original-Datei "MonoBook.php" wegen der veralteten Auto-discovery-Funktion, die "Monobook" bei MW 1.23 LTS noch hat, als Kopie namens "MonoBook_Original.php" im Verzeichnis "skins\monobook\" gespeichert.


Die aktuelle Benutzerrechteschema ist:
In der Datei "LocalSettings.php" heißt die entsprechende Zuweisung dann <br> <nowiki>$wgDefaultSkin = "monobook";</nowiki>.


<pre># alle duerfen '''nur''' lesen
Zusätzlich sind darunter folgende Zeilen erforderlich:
$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;
</pre>
 
==== Spezialseiten dürfen nur AutorInnen lesen (Wiki-Code) ====
 
Diese Änderungen dienen dazu, dass nur Autoren die SpecialPages lesen dürfen und keine normalen Nutzer oder angemeldeten Nutzer.
 
'''Achtung: Muss bei MW 1.16 in "includes/SpecialPage.php" nach jedem mediawiki-Update auf Vorhandensein überprüft werden!''' Siehe [[#Spezial-Seiten verbergen bzw. verstecken (Wiki-Code)|Spezial-Seiten verbergen bzw. verstecken (Wiki-Code)]]
 
in LocalSettings.php einfügen:
<pre>
<pre>
$wgGroupPermissions['autor']['restrictusers'] = true;
  // CC-Icon rechts unten für "MonoBook" angepasst 2015-09-28:
</pre>
  $wgFooterIcon_copyright['copyright'] = array(
und folgende Zeile wieder auskommentieren:
    "src" => $wgRightsIcon, // Icon
<pre>$wgGroupPermissions['sysop']['restrictusers'] = true;
    "url" => $wgRightsUrl,
</pre>
    "alt" => $wgRightsText,
 
    //"height" => "", // Icon-Höhe
=== Weiterleitungen ===
    //"width" => "" // Icon-Breite
 
  );
Für einige Seiten werden Weiterleitungen eingerichtet. Für eine Übersicht der bestehenden Weiterleitungen siehe bei den Spezialseiten http://193.175.110.91/[wikiverzeichnis]/index.php/Spezial:Weiterleitungen bzw. http://193.175.110.91/[wikiverzeichnis]/index.php/Special:ListRedirects:
  unset($wgFooterIcons['copyright']);
 
  $wgFooterIcons_r['poweredby'] = array_merge($wgFooterIcon_copyright,$wgFooterIcons['poweredby']);
Für die Navigation links (Sidebar), den Footer-Bereich und dergleichen gibt es folgende Weiterleitungen:
  // für "MonoBook" und "Vector" ergänzt
*SalzWiki
  ## FOOTER-Icons links, wobei der erste Schlüssel zu <li id="footer-...ico"> verarbeitet wird
**Aktuelles => Startseite#Aktuelles
  $wgFooterIcons_l['copyright']['hornemanninstitut'] = array(
**Bibliographie => Special:BibMangerList
    "src" => "$wgScriptPath/images/common/HI.png", // Icon
**Forschungsverbund => Informationen zum DFG-Projekt#Projektverbund
    "url" => "http://www.hornemann-institut.de",
**Hauptseite => Startseite
    "alt" => "Hornemann Institut",
**Projektverbund => Informationen zum DFG-Projekt#Projektverbund
    //"height" => "", // Icon-Höhe
**Willkommen im SalzWiki => Informationen zum DFG-Projekt
    //"width" => "" // Icon-Breite
**Über => Informationen zum DFG-Projekt
  );
**Über SalzWiki => Informationen zum DFG-Projekt
  $wgFooterIcons_l['copyright']['hawk'] = array(
**Über Salzwiki => Informationen zum DFG-Projekt
    "src" => "$wgScriptPath/images/common/hawk.png", // Icon
**Diskussion:Hauptseite => Diskussion:Startseite
    "url" => "http://www.hawk-hhg.de",
**Diskussion:Willkommen im SalzWiki => Diskussion:Informationen zum DFG-Projekt
    "alt" => "HAWK HHG",
**Salzwiki:Forschungsverbund => Informationen zum DFG-Projekt#Projektverbund
    //"height" => "", // Icon-Höhe
**Salzwiki:Portal => Informationen zum DFG-Projekt
    //"width" => "" // Icon-Breite
**Salzwiki:Projektverbund => Informationen zum DFG-Projekt#Projektverbund
  );
**Salzwiki Diskussion:Portal => Diskussion:Informationen zum DFG-Projekt
  $wgFooterIcons_l['copyright']['dfg'] = array(
**Hilfe:Variables => Help:Magic words
    "src" => "$wgScriptPath/images/common/DFG.jpg", // Icon
**Adm:ToDo-Liste => Salzwiki:ToDo-Liste
    "url" => "http://www.dfg.de",
*SaltWiki
    "alt" => "DFG",
**Literature and Data => Literature and Programs
    //"height" => "", // Icon-Höhe
**News => Home
    //"width" => "" // Icon-Breite
**Project Network => About the project#Research Network
  );
**Research Network => About the project#Research Network
  // für "Vector"
**Welcome to SaltWiki => About the project
  #$wgFooterIcons_r = $wgFooterIcons;
**Talk:Welcome to SaltWiki => Talk:About the project
  unset($wgFooterIcons);
**Saltwiki:Portal => Home
  $wgFooterIcons = array_merge($wgFooterIcons_l, $wgFooterIcons_r);
**Saltwiki:Research Network => About the project#Research Network
</pre>
**Help:Tex/de => Help:TeX/de
**Help:Variables => Help:Magic words
*Repository
**Hauptseite => Repository
**Main Page => Repository
**Main Page/de => Repository
**Repository:About => VRE/Repository


=== Sidebar anpassen (Wiki-Code, JS) ===
==== MW 1.23 LTS Vector ====


==== Logo-Hyperlink ====
Bei der Verwendung von "Vector" wird die Original-Datei "skins\Vector.php" wegen der veralteten Auto-discovery-Funktion, die "Vector" bei MW 1.23 LTS noch hat, als Kopie namens "Vector_Original.php" im Verzeichnis "skins\vector\" gespeichert.


Die Seite, die beim Klick auf das Logo aufgerufen werden soll, wird in der Seite "MediaWiki:Mainpage" angegeben.
In der Datei "LocalSettings.php" heißt die entsprechende Zuweisung dann <br> <nowiki>$wgDefaultSkin = "vector";</nowiki>.


==== Navigation links mit 2 Varianten ====
Im Verzeichnis "vector/components/footer.less" wird für die eigenen Icons im Footer unten links die Definition von "#footer-icons" kopiert und umbenannt in "#footer-icons-left" und folgendermaßen angepasst:
<pre>
/* SalzWiki eingefügt 2015-09-28 */
#footer-icons-left {
  float: left;
  li {
    float: left;
    margin-right: 0.5em;
    line-height: 2em;
    text-align: left;
  }
}
</pre>


Es gibt zwei Varianten; die Standardvariante für angemeldete Standard-User und die Autor-Variante für AutorInnen, AdministratorInnen und ForscherInnen. Nicht-angemeldete User können Wiki-Seiten nur ansehen.
Im Verzeichnis "vector/images/" wird die Datei "headbg.jpg" für ein eigenes Hintergrundbild eingefügt.


====Navigation links Standard-Variante====
Im Verzeichnis "vector/components/common.less" wird für das Hintergrundbild "body" folgendermaßen angepasst:
<pre>
body {
  /* SalzWiki eingefügt 2015-09-28 */
  background: #F9F9F4 url("headbg.jpg");
  /*background-color: @menu-background-color*/
}
</pre>


Die '''Standardvariante''' ist zu erreichen über:<br/>http://193.175.110.91/[wikiverzeichnis]/index.php/MediaWiki:Sidebar
==== HAWK-Design ====


<pre>&lt;!-- Salzwiki --&gt;
Für Anpassungen der StyleSheets an das HAWK-Design siehe [[Adm:HAWK-Design]].
*navigation
**Mainpage|Startseite
<del>**Salzwiki:Portal|SalzWiki:Portal</del>
<!--**Informationen zum DFG-Projekt|SalzWiki-Portal-->
<!--**Aktuelles|Aktuelles-->
Special:BibManager_Overview|Bibliographie
**Glossar|Glossar
<!--**Autorenanmeldung|Autorenanmedlung-->
**Redaktion SalzWiki|Redaktion
**Autoren/innen_von_SalzWiki|Autor/inn/en
**recentchanges-url|Recentchanges
**special:contact|Kontakt
**Hilfe:Contents/de|Hilfe


*SEARCH
=== Logo  ===
<!--*Umfrage-->
<!--**http://www.worktogether51.net/gc/wsl.php?I=Y4TTY7YTOTTYT47TTUTTBT4NTTYT4BT40 |Ihre Meinung zu SalzWiki-->


*TOOLBOX
Die Datei für das Logo links oben ist hochzuladen und in der Datei "LocalSettings.php" zuzuweisen:
 
*Salzwiki
*andere Sprachen
<pre>
**http://www.saltwiki.net/|English
##Logo MW1.23
$wgLogo = $wgScriptPath."/images/common/Logo_Salz.png";
</pre>
</pre>
*Saltwiki
<pre>
##Logo MW1.23
$wgLogo = $wgScriptPath."/images/common/Logo_Salt.png";
</pre>
*Repositorium
<pre>
##Logo MW1.23
$wgLogo = $wgScriptPath."/images/common/Logo_Repo.png";
</pre>
=== Fußzeile "Footer" anpassen ===


<pre>&lt;-- Repositorium --&gt;
Um "Footer"-Verweise auszublenden und anzupassen sowie eigene Logos mit Verlinkung einzufügen, sind folgende Schritte notwendig:
*Navigation
* Grafiken wie die Logos "HI.png", "HAWK.png" und <del>"DFG.jpg"</del> "SIK.png" im Verzeichnis "[wikiverzeichnisname]/images/common/" speichern.
**Hauptseite|Home
* Seite "MediaWiki:Disclaimers" anpassen
 
* [[#LocalSettings.php anpassen|LocalSettings.php anpassen]]
*Other Wikis
* [[#MonoBook.php nicht mehr anpassen (Wiki-Code)|<del>MonoBook.php anpassen (Wiki-Code)</del>]]
**http://www.salzwiki.de|SalzWiki
**http://www.saltwiki.net|SaltWiki
</pre>


<pre>&lt;-- Saltwiki --&gt;
==== LocalSettings.php anpassen ====
* navigation
** mainpage|Home
<!--** portal-url|SaltWiki-Portal-->
<!--** About_the_project|SaltWiki Portal-->
<!--** News|News-->
** Special:BibManager_Overview|Bibliography|Literature
** Glossary|Glossary
** Editorial Board|Editorial Board
** Authors in SaltWiki|Authors
** Special:Contact|Contact
** Help:Contents|Help


* SEARCH
Änderungen in der Datei "LocalSettings.php" <del>"MonoBookSW.php": Zeile 141ff</del>:


* TOOLBOX
===== Ausblendung des Besuche-Zählers =====


*Languages
Die Anzeige der Texte von "Anzahl der Seitenabrufe" wird bei MW1.23 wie folgt unterbunden:
**http://www.salzwiki.de/|German
<pre>
$wgDisableCounters = true;
</pre>
</pre>


====Navigation links Autor-Variante====
===== Anpassung für Logos links und rechts =====


Die '''Autor-Variante''' muss durch Erstellung einer neuen Seite (Adminrechte erforderlich) erfolgen:
Die Logos und Verweise links für "Hornemann Institut", "HAWK" und "SIK" sowie rechts für "CC-Lizenz" und "Powered by MediaWiki" werden wie folgt festgelegt:  
*Erst folgende Adresse im Browser eingeben:<br/>http://193.175.110.91/[wikiverzeichnis]/index.php/MediaWiki:Autor_sidebar
<pre>
*Danach mit Karteikarte "Erstellen" folgenden Quelltext eingeben:
#### Beginn FOOTER ab Version MW1.23
 
// CC-Icon rechts unten für "MonoBook" angepasst 2015-09-28:
<pre>&lt;!-- Salzwiki --&gt;
$wgFooterIcon_copyright['copyright'] = array(
*Navigation
  "src" => $wgRightsIcon, // Icon
**Mainpage|Startseite
  "url" => $wgRightsUrl,
<del>**SalzWiki:Portal|SalzWiki:Portal</del>
  "alt" => $wgRightsText,
<!--**Informationen zum DFG-Projekt|SalzWiki-Portal-->
  //"height" => "", // Icon-Höhe
<!--**Aktuelles|Aktuelles-->
  //"width" => "" // Icon-Breite
**http://193.175.110.91/repository/index.php/Main_Page |Repositorium
);
**Spezial:Bibliographieeinträge_verwalten|Bibliographie
unset($wgFooterIcons['copyright']);
**Glossar|Glossar
$wgFooterIcons_r['poweredby'] = array_merge($wgFooterIcon_copyright,$wgFooterIcons['poweredby']);
**Redaktion_SalzWiki|Redaktion
// für "MonoBook" und "Vector" ergänzt
**Autoren/innen von SalzWiki|Autor/inn/en
## FOOTER-Icons links, wobei der erste Schlüssel zu <li id="footer-...ico"> verarbeitet wird
**recentchanges-url|recentchanges
$wgFooterIcons_l['copyright']['hornemanninstitut'] = array(
**special:contact|Kontakt
  "src" => "$wgScriptPath/images/common/HI.png", // Icon
**help:contents/de|help
  "url" => "http://www.hornemann-institut.de",
<!--
  "alt" => "Hornemann Institut",
*Umfrage
  //"height" => "", // Icon-Höhe
**http://www.worktogether51.net/gc/wsl.php?I=Y4TTY7YTOTTYT47TTUTTBT4NTTYT4BT40ON84RMK758E |Ihre Meinung als Autor zu SalzWiki
  //"width" => "" // Icon-Breite
**http://www.worktogether51.net/gc/wsl.php?I=Y4TTY7YTOTTYT47TTUTTBT4NTTYT4BT40 |Ihre Meinung als Nutzer zu SalzWiki -->
);
 
$wgFooterIcons_l['copyright']['hawk'] = array(
* Autor/inn/en-Seiten
  "src" => "$wgScriptPath/images/common/hawk.png", // Icon
**Autoren|Richtlinien/Übersichten
  "url" => "http://www.hawk-hhg.de",
**Nutzungsrechte|Nutzungsrechte
  "alt" => "HAWK HHG",
**Review|Review
  //"height" => "", // Icon-Höhe
**Kategorie|Kategorienbaum
  //"width" => "" // Icon-Breite
**Vorlagen|Vorlagen
);
<!--**sandkasten|Sandbox-->
$wgFooterIcons_l['copyright']['sik'] = array(
  "src" => "$wgScriptPath/images/common/SIK.png", // Icon
  "url" => "http://http://www.salze-kulturgut.de",
  "alt" => "SIK",
  "height" => "30px", // Icon-Höhe
  "width" => "30px" // Icon-Breite
);
// für "Vector"
#$wgFooterIcons_r = $wgFooterIcons;
unset($wgFooterIcons);
$wgFooterIcons = array_merge($wgFooterIcons_l, $wgFooterIcons_r);
#### Ende FOOTER ab Version MW1.23
</pre>
 
===== Anpassung mittlerer Fußzeilen-Elemente =====


*SEARCH
Die Änderung von "Über [Wiki-Name]" zu "Forschungsverbund"/"Projektverbund" findet nicht mehr statt. Stattdessen muss "Disclaimer" durch "Impressum" ersetzt werden und wird "about" weggelassen.


*TOOLBOX
Die Anzeige der Texte von "lastmodified", "about" und "CC-Lizenz" im mittleren Bereich kann mit einem "Hook" wie folgt unterbunden werden:
<pre>
#### Beginn mittlerer FOOTER ab Version MW1.23
// Elemente verbergen
$wgHooks['SkinTemplateOutputPageBeforeExec'] = 'lfHide';
function lfHide( $skin, &$template ) {
  $template->set( "lastmod", "");
  $template->set( "copyright", "");
  $template->set( "about", "");
  return true;
};
// "Haftungsausschluss" wird auf der Seite "MediaWiki:Disclaimers" durch "Impressum" ersetzt
// Datenschutz ist bei MW1.31 mit "privacy" standardmäßig enthalten
// Projektverbund soll nicht mehr im Fußbereich erscheinen
#### Ende mittlerer FOOTER ab Version MW1.23
</pre>


*Andere Sprachen
Für neue, geänderte und ausgeblendete Footer-Verweise, siehe auch https://www.mediawiki.org/wiki/Manual:Footer. Nicht mehr erforderliche Festlegungen:
**http://www.saltwiki.net/ |English
<pre>
// "Haftungsausschluss" wird auf der Seite "MediaWiki:Disclaimers" durch "Impressum" ersetzt
#$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function ($sk, &$tpl){
#  $tpl->set('impressum', $sk->footerLink('impressum', 'Impressum'));
#  $tpl->data['footerlinks']['places'][] = 'impressum';
#  return true;
#}
// Datenschutz ist bei MW1.23 standardmäßig enthalten
#$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function ($sk, &$tpl){
#  $tpl->set('datenschutz', $sk->footerLink('datenschutz', 'Datenschutz'));
#  $tpl->data['footerlinks']['places'][] = 'datenschutz';
#  return true;
#}
// Projektverbund soll nicht mehr im Fußbereich erscheinen
#$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function ($sk, &$tpl){
#  $tpl->set('projektverbund', $sk->footerLink('projektverbund', 'Projektverbund'));
#  $tpl->data['footerlinks']['places'][] = 'projektverbund';
#  return true;
#}
</pre>
</pre>


Angeblich können auch nicht erwünschte "Footer"-Seiten ausgeblendet werden, indem im Namensraum "MediaWiki:..." der enthaltene Text durch einen Bindestrich ersetzt wird, siehe https://www.mediawiki.org/wiki/Manual:Footer#Customizing_the_Built-in_items letzte Zeile. Dann müsste aber bei der entsprechenden Seite für jede Sprache die Änderung erfolgen.
Ursprüngliche Texte für "de-formal":


<pre>&lt;-- Saltwiki --&gt;
* "MediaWiki:About": Über
*Navigation
* "MediaWiki:Copyright": Der Inhalt ist verfügbar unter der Lizenz $1, sofern nicht anders angegeben.
**Mainpage|Home
* "MediaWiki:Lastmodifiedat": Diese Seite wurde zuletzt am $1 um $2 Uhr bearbeitet.
<!--**Saltwiki:Community_portal|SaltWiki:Portal-->
 
<!--**About_the_Project|SaltWiki Portal-->
==== MonoBook.php nicht mehr anpassen (Wiki-Code) ====
<!--**News|News-->
**http://193.175.110.91/repository/index.php/Main_Page |Repository
**Special:BibManager_Overview|Bibliography
**Glossary|Glossary
**Editorial_Board|Editorial Board
**Authors in Saltwiki|Authors
**recentchanges-url|recentchanges
**Special:Contact|Contact
**Help:Contents|Help
<!--**Helppage|help-->


* Author Pages
Wenn die Datei "[wikiname]\skins\MonoBook.php" bearbeitet wird, ist im Verzeichnis "[wikiname]\skins\monobook" eine Kopie der Datei als "MonoBook_original.php" uz speichern und von der geänderten Datei als Backup für Wiki-Updates ebenfalls im Verzeichnis "\monobook" eine Kopie als "MonoBookSW.php" zu speichern.
**Authors_Page|Guidelines
**Rights|Rights
**Review|Review
**categories|Category tree
**Templates|Templates
<!--**sandbox|Sandbox-->


*SEARCH
Wird kein "Hook" in der Datei "LocalSettings.php" verwendet, können in der Datei "MonoBook.php" die Texte von "lastmodified" und "CC-Lizenz" sowie der Verweis zu "Über" bzw. "About" durch eigenen Code unter Zeile 154 herausgefiltert werden:
<pre>
<?php
      foreach ( $validFooterLinks as $aLink ) { ?>
        <?php if($aLink!=="lastmod" && $aLink!=="copyright" && $aLink!=="about"){ /*eingefügt für HAWK HHG 2015-12-07 u. 2016-03-29*/ ?>
    <li id="<?php echo $aLink ?>"><?php $this->html( $aLink ) ?>
<?php  } /*eingefügt für HAWK HHG 2015-12-07*/
      }
?>
</pre>
Original:
<pre>
<?php
      foreach ( $validFooterLinks as $aLink ) { ?>
    <li id="<?php echo $aLink ?>"><?php $this->html( $aLink ) ?>
<?php
      }
?>
</pre>


*TOOLBOX
==== CSS-Anpassungen als Alternative (Wiki-Code) ====


*Languages
Alternativ kann in der Datei "\skins\monobook\main.css" unterhalb der Angaben für den Footerbereich in Zeile 550 die Anzeige verhindert werden, wobei der HTML-Quelltext für die Listenelemente aber trotzdem erzeugt wird:
**http://www.salzwiki.de/ |German
<pre>
/* eingefügt für HAWK HHG 2015-12-07 */
#f-list #lastmod, #f-list #copyright {
  display:none;
}
</pre>
</pre>


==== HTML-Footer-Elemente ====


<pre>&lt;-- Repositorium --&gt;
Bei MW1.17 bis 1.23 kann die Variable $wgFooterIcons für Icons links und rechts unten im Footer erweitert werden.
*Navigation
Wie bei MW1.16 gibt es auch noch die Variable $wgCopyrightIcon, mit der nur der Bereich rechts unten im Footer angepasst werden kann.
<!--*Research Environment-->
 
**Mainpage|Home
Bei MW1.23 besteht der Footer-Container aus folgenden Bereichen:
<!--**Repository Portal|Repository Portal-->
* div id="footer"
**News|News
** div id="f-copyrightico" (unterer Footer-Bereich links)
**Projekte|Projects
** div id="f-poweredbyico" (unterer Footer-Bereich rechts)
**Communication|Communication
** ul id="f-list" (oberer=mittlerer Footer-Bereich)
**Publications|Publication
*** li id="lastmod"
*** li id="viewcount"
*** li id="copyright"
*** li id="privacy"
*** li id="about"
*** li id="disclaimer"


*  
Bei MW1.16 bestand der Footer-Container aus folgenden Bereichen:
**Special:BibManager_Overview|Bibliography
* ul id="footer-info" (oberer Footer-Bereich)
**terminology|Glossary
** li id="footer-info-lastmod"
**Category:Author|Authors' Contents
** li id="footer-info-copyright"
**recentchanges-url|Recent changes
* ul id="footer-places" (unterer Footer-Bereich links)
**Special:Contact|Contact
** ul id="footer-places-privacy"
**Help:Contents|Help
** ul id="footer-places-about"
** ul id="footer-places-disclaimer"
* ul id="footer-icons" (unterer Footer-Bereich rechts)
** ul id="footer-copyrightico"
** ul id="footer-poweredbyico"


* author pages
==== "Forschungsverbund"/"Projektverbund" statt "Über [Wiki-Name]" ====
**Rights|Rights
**Kategorienbaum|Category tree
 
* other wikis
**Vorlagen|Templates
**http://www.salzwiki.de/ |SalzWiki
**http://www.saltwiki.net/ |SaltWiki
 
*SEARCH
 
*TOOLBOX
 
*LANGUAGES


Damit im "Footer" statt auf die Seite "Über SalzWiki" auf die Seite <del>"Forschungsverbund"</del> "Projektverbund" bzw. "Research Network" verlinkt wird, sind Änderungen an "Aboutsite" und "Aboutpage" vorzunehmen. Hierzu entweder über "Spezialseiten->Systemdaten und Werkzeuge->MediaWiki-Systemtexte" gehen oder folgende Adressen eingeben:
<pre>
"[Wiki-Verzeichnis]/index.php?title=MediaWiki:Aboutsite/de[-formal|-at|-ch]&action=edit"
bzw.
"[Wiki-Verzeichnis]/index.php?title=MediaWiki:Aboutpage/de&action=edit"
</pre>
*Link-Text in "aboutsite" bearbeiten:
<pre>Projektverbund
<!--Über {{SITENAME}}-->
</pre>
*Seitenname, zu dem verlinkt wird, in "aboutpage" bearbeiten:
<pre>Project:Über
</pre>
ersetzen durch
<pre>Forschungsverbund
</pre>
</pre>


====Navigationsbereich mit Nutzungsrechten versehen (Wiki-Code)====
Diese Änderungen müssen auf allen Sprach-Subpages für Aboutsite und Aboutpage - nämlich für "de", "de-formal", "de-at" und "de-ch" - durchgeführt werden, da die Änderungen an den Seiten "Aboutpage" und "Aboutsite" sich nur bei den Standard-Sprachversion wie "de" auswirken, jedoch nicht z. B. bei "de-formal". Deshalb wurden als auszuwählende Sprachen "de-formal", "de-at" und "de-ch" vorerst deaktiviert in der Datei [wikiverzeichnisname]\languages\Names.php
Wenn ein User in den Profileinstellungen die Sprache abweichend von der Festlegung "de-formal" in der Datei "LocalSettings.php" auf "de" einstellt, funktioniert eventuell "Forschungsverbund" erst, nachdem "English" oder eine andere nicht-deutsche Sprache eingestellt wurde.


Um die Navigation links ("Sidebar") anzupassen wurden Änderungen an den Dateien "includes\Skin.php" und "skins\MonoBook.php" vorgenommen.
<pre>
'de' => 'Deutsch', # German ("Du")
##'de-at' => 'Österreichisches Deutsch', # Austrian German
##'de-ch' => 'Schweizer Hochdeutsch', # Swiss Standard German
##'de-formal' => 'Deutsch (Sie-Form)', # German - formal address ("Sie")
</pre>


=== Sidebar-Einschränkung (Wiki-Code) ===
Um im "Footer" den Hyperlink "Forschungsverbund" statt "Projektverbund" angezeigt zu  bekommmen, wird in der Skin-Datei der Code angepasst.
* MW 1.23 Datei "MonoBook.php"


In der Datei "includes\Skin.php" in der Funktion "function buildSidebar()" in der zweiten Zeile die globale Variable "$wgUser" hinzufügen, um später die Gruppenrechte abfragen zu können:
<pre>
 
<?php foreach ($validFooterLinks as $aLink) { ?>
<pre><!--MW1.23, Z.1249-->
...
global $wgMemc, $wgEnableSidebarCache, $wgSidebarCacheExpiry, $wgUser;
<?php } ?>
</pre>
</pre>


Nach der Zeile mit "$bar = array();" (MW1.23 Z.1263, MW1.16 Z.2085) folgende Zeile auskommentieren:
=== Favicon ===
<pre>#$this->addToSidebar( $bar, 'sidebar' );</pre>
und folgenden Code einfügen:
<pre>
  $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' ) );
    $this->addToSidebar( $bar, 'autor_sidebar' );
  } else {
    //$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );
    $this->addToSidebar( $bar, 'sidebar' );
  }
</pre>
Die Zeile "$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );"  muss auskommentiert oder gelöscht werden.


Nun gibt es zwei Sidebars die man unterschiedlich "bestücken" kann.
Damit in der Browser-Adresszeile ein Favicon dargestellt wird, ist eine Datei "salzwiki.ico" in das jeweilige Wiki-Verzeichnis hochzuladen und folgender Eintrag in der jeweiligen Datei "LocalSettings.php" vorzunehmen:
<pre>$wgFavicon = "/[wikiverzeichnisname]/salzwiki.ico";</pre>


Sollte es danach '''PHP-Warnungen''' wie "Warning: Call-time pass-by-reference has been deprecated ..." geben, gibt es folgende vorübergehende '''Notlösung''':
=== Darstellung in einem Frame ===
In der Datei "php.ini" in Zeile 165 "allow_call_time_pass_reference = On" statt "Off" setzen.
'''Diese Möglichkeit gilt als veraltet und wird in Zukunft nicht mehr von PHP unterstützt werden, so dass der oben beschriebene Code der Funktion dann geändert werden muss!'''


ACHTUNG: Wenn das Mediawiki aktualisiert wird, muss die Änderung in der Datei "Skin.php" wieder eingefügt werden, um die Funktionalität zu erhalten!
Diese Funktionalität war nötig, solange die Wikis über die IP durch Frame-"Weiterleitung" bei "1&1" erreichbar waren. Sie wurde im ersten Halbjahr 2017 überflüssig nach Änderung des DNS-Eintrags auf die HAWK-IP bei "1&1" im Rahmen der Umstellung auf HTTPS und Server-Zertifikate.
Deshalb ist von der geänderten Datei "Skin.php" zusätzlich eine Kopie "SkinSW.php" im Verzeichnis "includes" zu speichern.


=== Werkzeuge/Toolbox (Wiki-Code) ===
Seit MW 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 Sidebar im Bereich "Werkzeuge" wird mit einem Eingriff in den Wiki-Code bei "skins/MonoBook.php" für alle Gruppen außer "autor", "admin" und "forschung" manipuliert. Hierzu wird in der Funktion "toolbox()" Z.254ff die Variable "global $wgUser;" eingefügt und bei "foreach" die Z.262 bei "$this->makeListItem" mit einer Bedingung versehen:
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:
<pre>
<pre>
function toolbox();
$wgEditPageFrameOptions = 'false';  
  global $wgUser; // Für HAWK HHG
  $groups = $wgUser->getEffecitveGroups(); // Für HAWK HHG
  ...
  foreach ( $this->getToolbox() as $key => $tbitem ) {
    // Für HAWK HHG: Alle Werkzeuge für die Gruppen autor, Administrators und forschung, sonst nur Werkzeug "Druckversion"
    if(in_array("autor", $groups) || in_array("Administrators", $groups) || in_array("forschung", $groups) || $key==="print"){
      <?php echo $this->makeListItem( $key, $tbitem); ?>
    }
  }
</pre>
</pre>


'''Achtung: Code-Anpassung muss in "skins/MonoBook.php" nach jedem mediawiki-Update auf Vorhandensein und Funktion überprüft werden!'''
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


==== Werkzeuge-Schlüsselwörter ====
<pre>
* 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.
</pre>


* Links auf diese Seite: key = whatlinkshere
== Wiki-Konfiguration ==
* Änderungen an verlinkten Seiten: key = recentchangeslinked
* Datei hochladen: key = upload
* Spezialseiten: key = specialpages
* Druckversion: key = print
* Permanenter Link: key = permalink
* Seiteninformationen: key = info


==== sichtbare Toolbox-Menüpunkte ====
Die Konfiguration eines Wikis erfolgt hauptsächlich mit PHP-Variablen in der Datei "xampp\htdocs\[wikiname]\LocalSettings.php".


* SalzWiki, Repositorium: alle Gruppen und User
Z.23ff bei Verwendung der Domain-Adressen mit HTTP oder HTTPS
** Druckversion
<pre>
...
$wgSitename = "Salzwiki"; # "Salzwiki" "Saltwiki" "Repository"
...
$wgScriptPath = ""; # "/salzwiki" "/saltwiki" "/repository"
$wgScriptExtension = ".php";
...
## The protocol and server name to use in fully-qualified URLs
if($_SERVER['HTTPS']==="on" OR !empty($_SERVER['HTTPS'])){$protokoll = "https";}
else{$protokoll = "http";}
$wgServer = $protokoll."://".$_SERVER['SERVER_NAME'];
...
</pre>


* SaltWiki: alle Gruppen und User
Z.23ff bei Verwendung der IP-Adresse
** Printable version
<pre>
 
...
==== ausgeblendete Toolbox-Menüpunkte ====
$wgSitename = "Salzwiki"; # "Salzwiki" "Saltwiki" "Repository"
...
$wgScriptPath = "/salzwiki"; # "/salzwiki" "/saltwiki" "/repository"
$wgScriptExtension = ".php";
...
## The protocol and server name to use in fully-qualified URLs
$wgServer = "http://".$_SERVER['SERVER_NAME'];
...
</pre>


* SalzWiki: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
=== Spracheinstellungen ===
** "Links auf diese Seite" (Special:WhatLinksHere/Main_Page)
** "Änderungen an verlinkten Seiten" (Spezial:%C3%84nderungen_an_verlinkten_Seiten)
** "Hochladen" (Special:Upload)
** "Spezialseiten" (Special:SpecialPages)
** "Permanenter Link" (Main_page&oldid=921)
** "Seiteninformationen" ([Seitentitel]&action=info])


* SaltWiki: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
==== Standardsprache ====
** "What links here" (Special:WhatLinksHere/Main_Page)
** "Related changes" (Special:RecentChangesLinked)
** "Hochladen" (Special:Upload)
** "Spezialseiten" (Special:SpecialPages)
** "Permanent link" (Main_page&oldid=921)
** "Page information" ([Seitentitel]&action=info])


* Repository: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
Die Standardsprache wird in der Datei "LocalSettings.php" festgelegt, kann von den Usern in den Profileinstellungen aber nach den persönnlichen Bedürfnissen angepasst werden.
** "Links auf diese Seite" (Special:WhatLinksHere/Main_Page)
** "Änderungen an verlinkten Seiten" (Spezial:%C3%84nderungen_an_verlinkten_Seiten)
** "Datei Hochladen" (Special:Upload)
** "Spezialseiten" (Spezial:Spezialseiten)
** "Permanent link" (Main_page&oldid=9522)
** "Seiteninformationen" ([Seitentitel]&action=info])


=== Überschrift der Hauptseite/Mainpage ändern ===
* Salzwiki: $wgLanguageCode = "de-formal";
Die Überschrift ist auf der Systemseite "Mediawiki:Mainpage" eingetragen und muss dort geändert werden.
* Saltwiki: $wgLanguageCode = "en";
Die Überschrift, die per Voreinstellung Main Page (Hauptseite in der deutschen Übersetzung) heißt, ist in die entsprechende Titelzeile zu ändern.
* Repositorium: $wgLanguageCode = "en";


=== Repositorium-Dateien im SalzWiki ===
==== de-formal korrigieren (Wiki-Code) ====


==== Hochladen von Dateien  ====
Die Datei "[wikiname]\languages\i18n\de-formal.json" wird wegen einer Du-Form ergänzt. Zuvor ist die Datei als Kopie "de-formal_original.json" zu speichern. Nach der Korrektur ist für Wiki-Updates eine Kopie als "de-formalSW.json" zu speichern.


Das Hochladen von Dateien geschieht immer in das Repositorium.
Für die Sie-Form wird aus der Datei "de.json" von Zeile 1759 "emailccme" mit Du-Form verwendet: "Sende eine Kopie der E-Mail an mich"; deshalb ist in der Datei "de-formal.json" in Zeile 216f zwischen "emailpagetext" und "emailccsubject" einzufügen:
 
Hierzu sind folgende Änderungen in der Datei "LocalSettings.php" des SalzWikis vorzunehmen:
<pre>
<pre>
$wgUploadNavigationUrl = "/repository/index.php/Special:Upload";
"emailccme": "Eine Kopie der E-Mail an mich senden",
$wgEnableUploads      = false;  ##damit kein Upload in SalzWiki möglich ist
</pre>
</pre>


Zudem sind folgende Änderungen in der Datei "LocalSettings.php" des Repositoriums vorzunehmen:
=== Zugangsberechtigungen  ===
<pre>
 
$wgEnableUploads      = true;
==== Gruppen für Berechtigungen ====
## Erlaubte Dateitypen
 
$wgFileExtensions = array('avi','bib','doc','docx','gif','jpeg','jpg','mov','mpeg','odt','ods','oga','ogg','ogv',
* Administratoren = Chef-Redakteure für Accounts erstellen/sperren, Systemtexte bearbeiten, Wiki-Inhalte verschieben, löschen, importieren etc.
'pdf','png','svg','tif','tiff','txt','xls','xlsx','xml');
* autor = Autor/in für Wiki-Inhalte
* Benutzer = nur Diskussionsseiten
* Bots (Systemgruppe)
* Bürokraten = Rechtevergabe, Account-Vereinigung
* Editor (saltwiki, repository) = Wiki-Inhalte-Kontrolle
* Redakteur (salzwiki) = siehe Editor
* Sicherheit = Seitensperre für Spezialseiten und gesperrte Seiten bei deaktiviertem JavaScript
* Salzwiki, HAWK etc. = Gruppen im Repository
* sysop = Hauptadministrator
 
==== Vergabe von Nutzerrechten durch den Hauptadministrator (sysop) ====
 
Damit die unten beschriebenen Rechtevergaben umgesetzt werden können, erhält "sysop" zunächst den Zugang zu den SpecialPages, um auch nach Änderung der Datei "SpecialPage.php" Zugriff auf die Spezialseiten zu haben. Folgende Zeile ist in "LocalSettings.php" einzufügen:
##HJschwarz 22.02.2011, Ersteinstellung für "restrictusers" zum Einstellen der Rechte
<pre>$wgGroupPermissions['sysop']['restrictusers'] = true;
</pre>
</pre>


==== Übergreifende Suche im SalzWiki und Repositorium ====
Anschließend über SpecialPages->UserRightsManagement->[Username] die Rechte erweitern und alle Gruppen aktivieren.


Für den Zugriff vom SalzWiki auf das Repositorium mittels "http" durch anonyme User ist in der Datei "LocalSettings.php" des SalzWikis folgender Code hinzuzufügen:
==== Nutzerrechte bis zum Freischalten von Saltwiki ====
<pre>
$wgFetchCommonsDescriptions  = true;
</pre>


Findet das Salzwiki eine Datei oder ein Bild nicht im eigenen Wiki, schaut es mit Hilfe von Shared-Einstellungen automatisch im Repositorium nach und sucht dort. Dazu wurde in der Datei "LocalSettings.php" des SalzWikis folgender Code hinzugefügt:  
Kein "normaler" Nutzer kann Seiten in SaltWiki lesen:
<pre>
<pre>
$wgUseSharedUploads = true;
$wgGroupPermissions['*']['read'] = false;
$wgSharedUploadPath = "/repository/images";
#$wgSharedUploadPath = 'http://193.175.110.91/repository/images;
$wgSharedUploadDirectory = "D:/xampp/htdocs/repository/images";
$wgHashedSharedUploadDirectory = true;
$wgSharedUploadDBname = "repository";
$wgSharedUploadDBprefix  = "sr_";
$wgRepositoryBaseUrl = 'http://193.175.110.91/repository/index.php/Datei:';
#$wgRepositoryBaseUrl = 'http://193.175.110.91/repository/index.php/file:';
#wenn auf ein englischsprachiges Repositorium verwiesen wird, ist "Datei" durch "file" zu ersetzen,
#damit die Metadaten auch ausgelesen werden können.
</pre>
</pre>


==== Metadaten aus Repositoriumsdateien im SalzWiki sichtbar ====
Als Ausnahme werden mit $wgWhitelistRead alle im Array genannten Seiten dennoch für alle zum Lesen freigegegben, beispielsweise die Startseite und die Anmeldeseite.


Da alle Dateien wie z.B Fotos im Repositorium liegen, muss vom SalzWiki aus der Zugriff nicht nur auf die Dateien, sondern auch auf die dazugehörigen Metadaten erfolgen. Dazu ist nicht nur
==== Benutzer-Rechte in allen 3 Wikis  ====
<br/>$wgFetchCommonsDescriptions  = true;<br/>
erforderlich, sondern auch eine Änderung in der PHP-Konfigurationsdatei "php.ini" in Zeile 523:
<pre>allow_url_fopen = On</pre>
So kann fopen() ausgeführt werden, um Beschreibungsdaten vom Repositorium zu holen.


==== Zugriff auf ein geschütztes Repository (Wiki-Code) ====
Das Benutzerrechteschema sieht folgendermaßen aus:


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. '''Nach jedem mediawiki-Update muss die Datei "includes/httpFunctions.php" auf Änderungen überprüft werden!'''
<pre>
// Salzwiki (auskommentiert)
#$wgWhitelistRead = arry(":Hauptseite", "Spezial:Userlogin", "Salzwiki:Impressum", "General_disclaimer");
// Saltwiki
#$wgWhitelistRead = arry("Welcome_to_SaltWiki", "Saltwiki:About", "Saltwiki:General disclaimer", "Saltwiki:Privacy policy");
// Repository
#$wgWhitelistRead = arry(":home", "Spezial:Userlogin");
// Salzwiki/Saltwiki
$wgWhitelistedit = "talk";
// Salzwiki/Saltwiki
$wgGroupPermissions['Sysadmin']['editadmin'] = true;
# alle duerfen lesen, alle dürfen nicht editieren
$wgGroupPermissions['*']['read']          = true;
$wgGroupPermissions['*']['edit']          = false;
$wgGroupPermissions['*']['createpage']    = false;
$wgGroupPermissions['*']['createaccount'] = false; // Salzwiki: true, Saltwiki/Repository: false
$wgGroupPermissions['*']['createtalk']    = false;
$wgGroupPermissions['*']['writeapi']      = false;
$wgGroupPermissions['*']['restrictusers'] = false; // Salzwiki/Saltwiki: false, Repository: auskommentiert


*Zunächst ist die Datei "httpFunctions.php" im Verzeichnis includes von SalzWiki zu modifizieren. Dazu wird von der Datei eine Kopie "httpFunctions_original.php" gespeichert. Danach wird folgender Code eingefügt:
# Benutzer duerfen: lesen, Diskussionsseiten erstellen
**für die Mediawiki-Version '''16.0''':
$wgGroupPermissions['user']['read']            = true; // Salzwiki/Saltwiki: true, Repository: false
<pre>
$wgGroupPermissions['user']['createtalk']      = true; // Salzwiki/Saltwiki: true, Repository: false
--- HttpFunctions.php 2010-06-09 05:49:34.000000000 +0200
$wgGroupPermissions['user']['move']           = false;
+++ HttpFunctions_new.php 2010-11-22 17:09:33.000000000 +0100
$wgGroupPermissions['user']['move-rootuserpages'] = false;
@@ -744,7 +744,7 @@
$wgGroupPermissions['user']['move-subpages']  = false;
$this->curlOptions[CURLOPT_CUSTOMREQUEST] = $this->method;
$wgGroupPermissions['user']['edit']            = true;
}
$wgGroupPermissions['user']['createpage']      = false;
$wgGroupPermissions['user']['upload']          = false;
  $this->curlOptions[CURLOPT_HTTPHEADER] = $this->getHeaderList();
$wgGroupPermissions['user']['reupload']        = false;
$wgGroupPermissions['user']['reupload-shared'] = false;
$curlHandle = curl_init( $this->url );
$wgGroupPermissions['user']['minoredit']      = false;
if ( !curl_setopt_array( $curlHandle, $this->curlOptions ) ) {
$wgGroupPermissions['user']['purge']          = false;
@@ -755,14 +755,97 @@
$wgGroupPermissions['user']['writeapi']        = false;
/* Continue the processing. If it were in curl_setopt_array, processing would have halted on its entry */
$wgGroupPermissions['user']['restrictusers']  = false;
}
#$wgGroupPermissions['user']['sendemail']      = false; Repository: false, Salzwiki/Saltwiki: fehlt
 
- if ( false === curl_exec( $curlHandle ) ) {
# Spezialgruppe Autor
- $code = curl_error( $curlHandle );
$wgGroupPermissions['autor']['emailconfirmed'] = true;
-
$wgGroupPermissions['autor']['createpage'] = true;
- if ( isset( self::$curlMessageMap[$code] ) ) {
$wgGroupPermissions['autor']['createaccount'] = false; // Salzwiki: true, Saltwiki: false, Repository: auskommentiert
- $this->status->fatal( self::$curlMessageMap[$code] );
$wgGroupPermissions['autor']['createtalk'] = true;
- } else {
$wgGroupPermissions['autor']['edit'] = true;
- $this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) );
$wgGroupPermissions['autor']['protect'] = true; // Salzwiki/Saltwiki: true, Repository: auskommentiert
- }
$wgGroupPermissions['autor']['editprotected'] = true; // Salzwiki/Saltwiki: true, Repository: auskommentiert
- } else {
$wgGroupPermissions['autor']['read'] = true;
- $this->headerList = explode("\r\n", $this->headerText);
$wgGroupPermissions['autor']['upload'] = true;
- }
$wgGroupPermissions['autor']['move'] = true;
-
$wgGroupPermissions['autor']['restrictusers'] = true; // Spezialseiten lesen
- curl_close( $curlHandle );
 
-
# Spezialgruppe Redakteur (Salzwiki) bzw. Editor (Saltwiki/Repository)
+ /*
$wgGroupPermissions['Redakteur']['emailconfirmed'] = true;
+ *  START:
$wgGroupPermissions['Redakteur']['createpage'] = true;
+ *  Add code to access restricted repositories.
$wgGroupPermissions['Redakteur']['createtalk'] = true;
+ *  Add the following line in the LocalSettings.php
$wgGroupPermissions['Redakteur']['edit'] = true;
+ * $wgAuthenticatedRepository = true;
$wgGroupPermissions['Redakteur']['protect'] = true;
+ * $wgAuthenticatedRepositoryUser = 'WikiSysop';
$wgGroupPermissions['Redakteur']['editprotected'] = true;
+ * $wgAuthenticatedRepositoryPassword = 'dev2010wer';
$wgGroupPermissions['Redakteur']['read'] = true;
+ * $wgShowAuthenticatedRepositoryError = true;
$wgGroupPermissions['Redakteur']['upload'] = true;
+ */
$wgGroupPermissions['Redakteur']['patrol'] = true;
+
$wgGroupPermissions['Redakteur']['move'] = true;
+    global $wgAuthenticatedRepository, $wgAuthenticatedRepositoryUser, $wgAuthenticatedRepositoryPassword, $wgShowAuthenticatedRepositoryError;
$wgGroupPermissions['Redakteur']['createaccount'] = true;
+    $error = true;
$wgGroupPermissions['Redakteur']['movefile'] = true;
+    $text = '';
$wgGroupPermissions['Redakteur']['deletedtext'] = true;
+    $token2 = array();
$wgGroupPermissions['Redakteur']['deletedhistory'] = true;
+
$wgGroupPermissions['Redakteur']['noratelimit'] = true;
+ /* run the code only if the user activate is in the LocalSettings.php*/
$wgGroupPermissions['Redakteur']['undelete'] = true;
+    if ( $wgAuthenticatedRepository ) {
$wgGroupPermissions['Redakteur']['restrictusers'] = true; // Salzwiki/Saltwiki: true, Repository: false
+      require_once 'extensions/Snoopy-1.2.4/Snoopy.class.php';
$wgGroupPermissions['Redakteur']['skipcaptcha'] = true;
+      $index = '';
$wgGroupPermissions['Redakteur']['approverevisions'] = true;
+      $login = '';
 
+     
##Benutzergruppe um zu verhindern, dass Seiten der Specialpages
+      /* Get all relevat url informations */
##von jedem anderen außer Bürokraten und Admin und Sicherheit
+      /* URL: http://localhost/mediawiki/mediawiki-repository/index.php/File:MediawikiExampleImageFlower.jpg?action=render&uselang=en */
##aufgerufen werden können. Risos 08.02.2012
+      $wikiPath = "";
$wgGroupPermissions['Sicherheit']['read'] = true;
+      if (!preg_match('/(.*)\/index.php\/(.*)\?(.*)/', $this->url, $matches)) {
$wgGroupPermissions['Sicherheit']['Sicherheit'] = true;
+          echo "nicht gefunden";
 
+      } else {
# Prevent new user registrations except by sysops
+          $wikiPath = $matches[1];
$wgWhitelistAccount = array( "user" => 0, "sysop" => 1, "developer" => 1 );
+   /* If the url contains special characters, when these characters must be convert */
#$wgGroupPermissions['sysop']['createaccount'] = false; // Salzwiki: fehlt, Saltwiki: false, Repository: auskommentiert
+   $title = rawurldecode($matches[2]);
 
+      }
## Freischalten der Spezialseiten
+     
$wgGroupPermissions['sysop']['restrictusers'] = true;
+      $apiPath = "$wikiPath/api.php";
## Special Pages nur für Autoren lesbar
+      $indexPath = "$wikiPath/index.php";
##$wgNamespaceProtection[NS_spezial] = array( 'spezial-read');
+
##$wgGroupPermissions['autor']['spezial-read'] = true;
+      $snoopy = new Snoopy;
 
+      /* Start request to get an token */
#$wgGroupPermissions['emailconfirmed']['emailconfirmed'] = true;
+      $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword, 'format' => 'php');
</pre>
+      if(!$snoopy->submit($apiPath, $request_vars))
 
+      $this->status->fatal("Snoopy error: {$snoopy->error}");
==== Benutzer-Rechte in Repository  ====
+     
 
+      // We're only really interested in the cookies
Das für das Repositorium erweiterte Benutzerrechteschema enthält folgende Angaben:
+      $snoopy->setcookies();
 
+      $token = unserialize($snoopy->results);
<pre>
+     
# Repository
+      /* Use the Token to login */
##---------------------------------------------------------------------------------
+      if ( $token['login']['result'] == 'NeedToken') {
# Spezialgruppe HAWK eingefügt HSChwarz 4.10.2011
+      $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword,  'lgtoken' => $token['login']['token'], 'format' => 'php');
$wgGroupPermissions['HAWK']['emailconfirmed'] = true;
+      if(!$snoopy->submit($apiPath, $request_vars))
$wgGroupPermissions['HAWK']['createpage'] = true;
$this->status->fatal("Snoopy error: {$snoopy->error}");
$wgGroupPermissions['HAWK']['createtalk'] = true;
+      $token2 = unserialize($snoopy->results);
$wgGroupPermissions['HAWK']['edit'] = true;
+      }
$wgGroupPermissions['HAWK']['read'] = true;
+      else if ( ($token['login']['result'] == 'NoName') ) {
$wgGroupPermissions['HAWK']['move'] = true;
+        wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" );
$wgGroupPermissions['HAWK']['restrictusers'] = false;
+        if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>";
## Anlegen von Rechteschema für Projekte
+      }
# Spezialgruppe SalzWiki eingefügt HSChwarz 27.07.2010
+           
$wgGroupPermissions['SalzWiki']['emailconfirmed'] = true;
+      /* If the login was successful, get the Information from the File Description */
$wgGroupPermissions['SalzWiki']['createpage'] = true;
+      if ( ($token2['login']['result'] == 'Success') or ($token['login']['result'] == 'Success') ) {
$wgGroupPermissions['SalzWiki']['createtalk'] = true;
+      $request_vars = array('action' => 'render', 'title'=> $title, 'lgtoken' => $token['login']['token'], 'format' => 'php');
$wgGroupPermissions['SalzWiki']['edit'] = true;
+      if(!$snoopy->submit($indexPath, $request_vars))
$wgGroupPermissions['SalzWiki']['read'] = true;
$this->status->fatal("Snoopy error: {$snoopy->error}");
$wgGroupPermissions['SalzWiki']['move'] = true;
+      $this->content = $snoopy->results;
$wgGroupPermissions['SalzWiki']['restrictusers'] = false;
+      }
# Spezialgruppe SIP eingefügt HSChwarz 27.07.2010
+      else if ( ($token2['login']['result'] == 'WrongPass') or ($token2['login']['result'] == 'WrongPluginPass') or ($token2['login']['result'] == 'EmptyPass') ) {
$wgGroupPermissions['SIP']['emailconfirmed'] = true;
+        wfDebug( __METHOD__ . ": Wrong or no Password for wgAuthenticatedRepositoryPassword in the LocalSetting." );
$wgGroupPermissions['SIP']['createpage'] = true;
+        if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no Password for <i>wgAuthenticatedRepositoryPassword</i> in the LocalSetting.<br/>";
$wgGroupPermissions['SIP']['createtalk'] = true;
+      }
$wgGroupPermissions['SIP']['edit'] = true;
+      else if ( ($token2['login']['result'] == 'NotExists') ) {
$wgGroupPermissions['SIP']['read'] = true;
+        wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" );
$wgGroupPermissions['SIP']['move'] = true;
+        if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>";
$wgGroupPermissions['SIP']['restrictusers'] = false;
+      }
 
+      $this->headerList = explode("\r\n", $this->headerText);    
## Erweiterung ApprovedRevs nicht zusammen mit "AccessControl" einsetzbar
+    }
#$wgGroupPermissions['sysop']['approverevisions'] = true;
+    else
#$wgGroupPermissions['*']['viewlinktolatest'] = false;
+    {   
#$wgGroupPermissions['autor']['viewlinktolatest'] = true; // Salzwiki/Saltwiki: true, Repository: auskommentiert
+ /*
#$wgGroupPermissions['sysop']['viewlinktolatest'] = true;
+ *  START: Original Code - now in a if statement
 
+ */
## BibManager-Berechtigungen eingefügt 2016-02-23
+
$wgGroupPermissions['*']['bibmanagercreate'] = false;
+  if ( false === curl_exec( $curlHandle ) ) {
$wgGroupPermissions['*']['bibmanageredit'] = false;
$code = curl_error( $curlHandle );
$wgGroupPermissions['*']['bibmanagerdelete'] = false;
$wgGroupPermissions['autor']['bibmanager'create] = true;
+  if ( isset( self::$curlMessageMap[$code] ) ) {
$wgGroupPermissions['autor']['bibmanageredit'] = true;
$this->status->fatal( self::$curlMessageMap[$code] );
#$wgGroupPermissions['autor']['bibmanagerdelete'] = true;
+  } else {
$wgGroupPermissions['Redakteur']['bibmanager'create] = true;
$this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) );
$wgGroupPermissions['Redakteur']['bibmanageredit'] = true;
+  }
$wgGroupPermissions['Redakteur']['bibmanagerdelete'] = true;
+  } else {
$wgGroupPermissions['sysop']['bibmanager'create] = true;
+  $this->headerList = explode("\r\n", $this->headerText);
$wgGroupPermissions['sysop']['bibmanageredit'] = true;
+  }
$wgGroupPermissions['sysop']['bibmanagerdelete'] = true;
+  curl_close( $curlHandle );
/*
## Salzwiki/Saltwiki: Erweiterung ConfirmEdit
+ /*
#captcha Hschwarz 12.01.2010
+ * END: Original Code - now in a if statement
$wgGroupPermissions['*']['skipcaptcha'] = false;
+ */
$wgGroupPermissions['user']['skipcaptcha'] = false;
+  }
$wgGroupPermissions['autor']['skipcaptcha'create] = true;
+ /*
$wgGroupPermissions['autoconfirmed']['skipcaptcha'] = false;
+ *  END: Add code to access restricted repositories
#$wgGroupPermissions['bot']['skipcaptcha'] = true; // registered bots
+ */
$wgGroupPermissions['sysop']['skipcaptcha'] = true;
*/
$this->parseHeader();
## to allow interwiki-linking
$this->setStatus();
$wgGroupPermissions['*']['interwiki'] = false;
return $this->status;
$wgGroupPermissions['sysop']['interwiki'] = true;
}
</pre>
}
 
==== Spezial-Seiten ====
class PhpHttpRequest extends HttpRequest {
 
</pre>
Für die Spezialseiten gibt es die Berechtigungsgruppe "Sicherheit" mit entsprechender Konfiguration in der Datei "LocalSettings.php".
Es wurden hauptsächlich Anpassungen gemacht, die den Text zurückgeben, sowie an der Abarbeitung von Fehlern. <br/>Für das korrekte Bearbeiten von Sonderzeichen in der url wurde rawurldecode() hinzugefügt.
 
===== Spezial-Seiten mit Sonderrechten =====
 
Spezialseiten, die nur mit besonderen Berechtigungen verfügbar sind, werden nach Anmeldung bei einem Konto mit besonderen Berechtigungen auf der Seite "Spezialseiten" per CSS fett-formatiert dargestellt:
<pre>
<li class="mw-specialpagerestricted">...
</pre>
 
===== Spezial-Seiten verbergen =====
 
Werden die Spezial-Seiten in der linken Menüleiste verborgen - siehe [[#Sidebar-Einschr.C3.A4nkung|Sidebar-Einschränkung]] - sind sie dennoch über die Adresszeile des Browsers erreichbar, beispielsweise mit "https://wikiname.tld/index.php/Spezial:Spezialseiten".
 
Um derartige Seitenaufrufe zu unterbinden sind in der Datei "LocalSettings.php" Berechtigungen festzulegen.
 
===== Spezialseiten mit Gruppenberechtigung =====
 
Es sollen nur Mitglieder bestimmter Gruppen die Spezialseiten im Namensraum "NS_SPECIAL" lesen dürfen, aber nicht unangemeldete Gäste oder Mitglieder anderer Gruppen. Gruppen mit Leserecht:
* Administratoren
* autor
* Redakteur
* Sicherheit
* sysop
 
Für Berechtigungen von Spezialseiten siehe auch
* https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgNamespaceProtection
* <del>https://www.mediawiki.org/wiki/Manual:Special_pages/de#Seitenzugriff_beschr.C3.A4nken</del> (2018-11-06 nicht mehr vorhanden)
* <del>http://phlow.net/magazin/netzkultur/technik/445-mediawiki-spezialseiten-vor-unerlaubtem-zugriff-sperren</del> (2015-12-04 nicht mehr vorhanden)
 
In der Datei "LocalSettings.php" wird am Ende des Blocks "Namensräume" ein "Hook" namens "SpecialPage_initList" eingefügt. Der "Hook" wird in der Datei "SpecialPagesFactory.php" in der Funktion "getPageList()" ausgeführt. Verarbeitet werden die Angaben aus der Variablen $coreList.
 
Damit alle, die nicht Mitglied der berechtigten Gruppen sind, bestimmte Spezialseiten dennoch aufrufen können, wird Folgendes in der Datei "LocalSettings.php" eingegeben:
<pre>
$wgHooks['SpecialPage_initList'][] = 'groupspecificSpecialpages';
function groupspecificSpecialpages(&$aSpecialPages){
  global $wgUser;
  $groups = $wgUser->getEffectiveGroups();
  if($wgUser->isAnon() || ( !in_array("sysop", $groups)
    && !in_array("autor", $groups) && !in_array("Administratoren", $groups)
    && !in_array("Redakteur", $groups) && !in_array("Editor", $groups)
    && !in_array("forschung", $groups)
  ) ){
    $aSpecialPages = array(
      "Specialpages" => "SpecialSpecialpages",
      "UserLogin" => "SpecialUserLogin",
      "UserLogout" => "SpecialUserLogout", // Seite nach der Abmeldung
      "CreateAccount" => "SpecialCreateAccount", // für Registrierung
      "Contact" => "SpecialContact", // Letzte Änderung im Menü links
      "Recentchanges" => "SpecialRecentChanges", // Kontaktseite im Menü links
      "BibManager" => "BibManager", // Bibliographie im Menü links
    );
  }
}
</pre>
 
===== Anpassungen in vorigen MW-Versionen (Wiki-Code) =====
 
Festlegungen in der Datei "LocalSettings.php" wirkten bei Aufruf der Spezialseiten in der Browser-Adresszeile nicht, unter anderem, weil
* sich $wgNamespaceProtection nur auf "edit" und nicht auf "read" anwenden lässt
* der Namensraum mit "NS_SPECIAL" statt mit "NS_spezial" angegeben werden muss
* die Nutzungsfunktion "spezial-read" dem System nicht bekannt ist
Die unwirksame Konfiguration:
<pre>
## Freischalten der Spezialseiten
$wgGroupPermissions['sysop']['restrictusers'] = true;
## SpecialPages nur für Autoren lesbar
$wgNamespaceProtection[NS_spezial] = array('spezial-read');
$wgGroupPermissions['autor']['spezial-read'] = true;
</pre>
 
'''Achtung: Bei MW1.23 sind keine Anpassungen in der Datei "[wikiname]\includes\skins\SkinTemplate.php" vorzunehmen!''' Erfolgen dennoch Änderungen siehe auch http://nullraffer.de/wiki/index.php?title=Mediawiki_absichern.
 
Bei MW1.16 waren die Anpassungen im Wiki-Code der Datei "SpecialPage.php" sowie in der Konfigurationsdatei erforderlich.
Bei MW1.31/1.27/1.23 heißt die Datei "SpecialPageFactory.php" statt "SpecialPage.php". Die gleichnamige Klasse mit der Funktion "getRestrictedPages(...)" gilt ab MW1.32 als veraltet.
 
'''Achtung: Bei MW 1.23 ist der Wiki-Code anders als bei MW 1.16!''' Wiki-Code bei MW 1.23 im Vergleich zu MW 1.16:
 
*Datei "includes\specialpage\SpecialPageFactory.php" statt Datei "includes\SpecialPage.php"
*Variable "private static $list" statt "static public $mList"
*Assoziative Array-Elemente haben geänderte Werte, die nicht mehr in Arrays, sondern nur noch als Text-Strings angegeben sind
**Bereich "Media reports and uploads" ab Zeile 114
**Bereich "Unlisted / redirects" in Zeile 171
 
<pre>
// Media reports and uploads
'Listfiles' => 'SpecialListFiles,
'Filepath' => 'SpecialFilePath',
...
// Unlisted / redirects
'Specialpages' => 'SpecialSpecialpages',
...
</pre>
 
=== Weiterleitungen ===
 
Für einige Seiten werden Weiterleitungen eingerichtet. Für eine Übersicht der bestehenden Weiterleitungen siehe bei den Spezialseiten http://193.175.110.91/[wikiverzeichnis]/index.php/Spezial:Weiterleitungen bzw. http://193.175.110.91/[wikiverzeichnis]/index.php/Special:ListRedirects:
 
Für die Navigation links (Sidebar), den Footer-Bereich und dergleichen gibt es folgende Weiterleitungen:
*SalzWiki
**Aktuelles => Startseite#Aktuelles
**Bibliographie => Special:BibMangerList
**Forschungsverbund => Informationen zum DFG-Projekt#Projektverbund
**Hauptseite => Startseite
**Projektverbund => Informationen zum DFG-Projekt#Projektverbund
**Willkommen im SalzWiki => Informationen zum DFG-Projekt
**Über => Informationen zum DFG-Projekt
**Über SalzWiki => Informationen zum DFG-Projekt
**Über Salzwiki => Informationen zum DFG-Projekt
**Diskussion:Hauptseite => Diskussion:Startseite
**Diskussion:Willkommen im SalzWiki => Diskussion:Informationen zum DFG-Projekt
**Salzwiki:Forschungsverbund => Informationen zum DFG-Projekt#Projektverbund
**Salzwiki:Portal => Informationen zum DFG-Projekt
**Salzwiki:Projektverbund => Informationen zum DFG-Projekt#Projektverbund
**Salzwiki Diskussion:Portal => Diskussion:Informationen zum DFG-Projekt
**Hilfe:Variables => Help:Magic words
**Adm:ToDo-Liste => Salzwiki:ToDo-Liste
*SaltWiki
**Literature and Data => Literature and Programs
**News => Home
**Project Network => About the project#Research Network
**Research Network => About the project#Research Network
**Welcome to SaltWiki => About the project
**Talk:Welcome to SaltWiki => Talk:About the project
**Saltwiki:Portal => Home
**Saltwiki:Research Network => About the project#Research Network
**Help:Tex/de => Help:TeX/de
**Help:Variables => Help:Magic words
*Repository
**Hauptseite => Repository
**Main Page => Repository
**Main Page/de => Repository
**Repository:About => VRE/Repository


*Die geänderte Datei "httpFunctions.php" als Sicherung für Mediawiki-Updates kopieren und speichern als "httpFunctions_sw.php".
=== Sidebar anpassen ===


*Die Erweiterung "Snoopy-1.2.4" von "http://sourceforge.net/projects/snoopy/" herunterladen, zip-Dateien auspacken und die Erweiterung in das Verzeichnis "extensions" des SalzWikis bzw. Saltwikis kopieren.
==== Logo-Hyperlink ====


*Das Modul "curl" muss beim Apache-Webserver aktiviert sein; dazu kommentiert man in der Datei "D:\xampp\php\php.ini" die folgende Zeile ein:
Die Seite, die beim Klick auf das Logo aufgerufen werden soll, wird in der Seite "MediaWiki:Mainpage" angegeben.
<pre>extension=php_curl.dll </pre>
Den Apache-Dienst über das XAMPP-Control-Panel neu starten, damit die Änderungen wirksam werden.


*Der Zugriff auf das Repositorium wird gesperrt durch folgenden Eintrag in der Datei "LocalSettings.php" des Repositoriums:
==== Navigation links mit 2 Varianten ====
<pre>$wgGroupPermissions['*']['read'] = false;</pre>


*Um den Zugriff auf das geschützte Repositorium durchführen zu können, ist folgende Konfiguration der Datei "LocalSettings.php" des Salzwikis bzw. Saltwikis vorzunehmen:
Es gibt zwei Varianten:
<pre>
* die Standard-Variante für
$wgAuthenticatedRepository = true;
** nicht-angemeldete Gäste, welche Wiki-Seiten nur ansehen können
$wgAuthenticatedRepositoryUser = 'WikiSysop';
** angemeldete Standard-User
$wgAuthenticatedRepositoryPassword = 'xxx';
* die Autor-Variante für
$wgShowAuthenticatedRepositoryError = false;
** Autor/inn/en
</pre>
** Administrator/inn/en
$wgAuthenticatedRepository - aktiviert den Zugriff auf ein gesichertes Repository. Wenn dies nicht notwendig ist, bitte abstellen, da die Funktion zusätzliche Abfragen schickt, was die Zugriffe bei hoher Last verlangsamen kann.
** Forscher/innen
<br>$wgShowAuthenticatedRepositoryError - Gibt Fehlermeldungen in die Log Dateien. Für den Live Betrieb bitte abstellen.


*Konfiguration für das allgemeine Salzwiki, um die Daten aus der Datenbank zu holen. Folgende Zeilen in die Datei "LocalSettings.php" des Salzwikis bzw. Saltwikis einfügen:
===== Navigation links Standard-Variante =====
<pre>
$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
);
</pre>


=== Vorlagen  ===
Die '''Standard-Variante''' ist zu erreichen über:<br/><del>http://193.175.110.91/[wikiverzeichnis]/index.php/MediaWiki:Sidebar</del> <br/>https://[wiki-domain]/index.php/MediaWiki:Sidebar


Vorlagen = Templates finden sich beispielhaft auf der Seite [[Vorlagen]] dargestellt.
<pre>&lt;!-- Salzwiki --&gt;
*navigation
**Mainpage|Startseite
<del>**Salzwiki:Portal|SalzWiki:Portal</del>
<!--**Informationen zum DFG-Projekt|SalzWiki-Portal-->
<!--**Aktuelles|Aktuelles-->
Special:BibManager_Overview|Bibliographie
**Glossar|Glossar
<!--**Autorenanmeldung|Autorenanmedlung-->
**Redaktion SalzWiki|Redaktion
**Autoren/innen_von_SalzWiki|Autor/inn/en
**recentchanges-url|Recentchanges
**special:contact|Kontakt
**Hilfe:Contents/de|Hilfe


Die einzelnen Vorlagen sind im Namensraum "Vorlage" bzw. "Template" zu finden. Für jede Vorlage ist eine eigene Wiki-Seite zu erstellen, um diese Vorlage dann im Wiki mit <nowiki>{{Vorlagenname}}</nowiki> verwenden zu können.
*SEARCH
Die Vorlage ist anschließend auf der Seite "Vorlagen" beispielhaft aufzuführen.
<!--*Umfrage-->
Die vorhandene Vorlage "Languages" wird ersetzt durch eine eigene Vorlage.
<!--**http://www.worktogether51.net/gc/wsl.php?I=Y4TTY7YTOTTYT47TTUTTBT4NTTYT4BT40 |Ihre Meinung zu SalzWiki-->


*'''Vorlagen für SalzWiki und Saltwiki'''
*TOOLBOX
**Infobox_Salz bzw. Infobox_Salt
**MetadatenFoto_upload (wird im Artikel Vorlagen/Templates verwendet)
*'''Vorlagen für das Repositorium'''
**MetadatenFoto_upload
**MetadatenDaten_upload
**MetadatenLiteratur_upload
**MetadatenProben_upload
**MetadatenText_upload
**Untersuchungsmethoden
*'''Lizenzvorlagen''': Eine neue Kategorie "Kategorie:Lizenzenvorlagen" erstellen mit folgenden Vorlagen:
**CC-by-nc-nd,CC-by-nc-nd/de
**CC-by-nc-sa,CC-by-nc-sa/de
**PD
**PD Help Page, PD Help Page/de, PD Help Page/fr
** GFDL,GFDL/de (nur im Repositorium)


Alle anderen Vorlagen wurden beim Einbinden der Hilfeseiten bzw. Extensions eingestellt.
*andere Sprachen
**https://www.saltwiki.net/|English
</pre>


=== Lizenzen-Auswahl im Upload-Formular ===
<pre>&lt;-- Repositorium --&gt;
*Navigation
**Hauptseite|Home


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:
*Other Wikis
 
**https://www.salzwiki.de/|SalzWiki
<pre>
**https://www.saltwiki.net/|SaltWiki
*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)
</pre>
</pre>


=== Editor (JavaScript) ===
<pre>&lt;-- Saltwiki --&gt;
 
* navigation
'''Achtung: Alle üblichen Editoren zur Bearbeitung von Seiteninhalten funktionieren nur mit JavaScript.''' Dies gilt auch für die Erweiterung [[#WikiEditor_.28JavaScript.29|WikiEditor]].
** mainpage|Home
<!--** portal-url|SaltWiki-Portal-->
<!--** About_the_project|SaltWiki Portal-->
<!--** News|News-->
** Special:BibManager_Overview|Bibliography|Literature
** Glossary|Glossary
** Editorial Board|Editorial Board
** Authors in SaltWiki|Authors
** Special:Contact|Contact
** Help:Contents|Help


==== Standard-Editor (Wiki-Code, JS) ====
* SEARCH


'''Achtung: Funktioniert nur bei Browsern mit aktiviertem JavaScript und muss in den 3 nachfolgend genannten Dateien und dem Grafiken-Verzeichnis nach jedem MediaWiki-Update auf Vorhandensein und Änderungen überprüft werden!'''
* TOOLBOX


Folgende Dateien werden  vom Standard-Editor verwendet:
*Languages
* "/includes/EditPage.php"
**https://www.salzwiki.de/|German
* Symbole/Grafiken: "skins/common/images/..."
</pre>
* "/languages/i18n/..."
 
Vorhanden sind folgende Funktionen:
* bold, italic
* link (wiki), ext. link
* headline size 2
* file embedded, media
* nowiki, signatur
* horizontal line


Das Schaltflächen-Symbol für Weiterleitungen ist bei MW 1.23 im Gegensatz zu MW 1.16 nicht vorhanden und wird für die Salz-Wikis auch nicht mehr durch Anpassungen hinzugefügt.
===== Navigation links Autor-Variante =====


Das Schaltflächen-Symbol für mathematische Formeln wird von der Erweiterung "Math" hinzugefügt, u. a. in folgenden Dateien:
Die '''Autor-Variante''' muss durch Erstellung einer neuen Seite (Adminrechte erforderlich) erfolgen:
* "/extensions/Math/Math.hooks.php" für die Modul-Aktivierung von "math.editbuttons"
*Erst folgende Adresse im Browser eingeben:<br/><del>http://193.175.110.91/[wikiverzeichnis]/index.php/MediaWiki:Autor_sidebar</del><br/>https://[wiki-domain]/index.php/MediaWiki:Autor_sidebar
* "/extensions/Math/modules/ext.math.editbuttons.js"
*Danach mit Karteikarte "Erstellen" folgenden Quelltext eingeben:
* "/extensions/Math/i18n/de.json" für Texte zur Schaltfläche


Ergänzt werden sollen folgende Funktionen (siehe "Anpassungen" weiter unten):
<pre>&lt;!-- Salzwiki --&gt;
* Zeilenumbruch
*Navigation
* Durchgestrichen
**Mainpage|Startseite
* Hoch gestellt
<del>**SalzWiki:Portal|SalzWiki:Portal</del>
* Tief gestellt
<!--**Informationen zum DFG-Projekt|SalzWiki-Portal-->
* Zitat
<!--**Aktuelles|Aktuelles-->
* Fußnoten-Verweis
<!--**http://193.175.110.91/repository/index.php/Main_Page |Repositorium-->
* Versteckter Kommentar
**https://repository.hawk-hhg.de/ |Repositorium
* Tabelle einfügen
**Spezial:Bibliographieeinträge_verwalten|Bibliographie
**Glossar|Glossar
**Redaktion_SalzWiki|Redaktion
**Autoren/innen von SalzWiki|Autor/inn/en
**recentchanges-url|recentchanges
**special:contact|Kontakt
**help:contents/de|help
<!--
*Umfrage
**http://www.worktogether51.net/gc/wsl.php?I=Y4TTY7YTOTTYT47TTUTTBT4NTTYT4BT40ON84RMK758E |Ihre Meinung als Autor zu SalzWiki
**http://www.worktogether51.net/gc/wsl.php?I=Y4TTY7YTOTTYT47TTUTTBT4NTTYT4BT40 |Ihre Meinung als Nutzer zu SalzWiki -->
 
* Autor/inn/en-Seiten
**Autoren|Richtlinien/Übersichten
**Nutzungsrechte|Nutzungsrechte
**Review|Review
**Kategorie|Kategorienbaum
**Vorlagen|Vorlagen
<!--**sandkasten|Sandbox-->
 
*SEARCH


===== Anpassungen =====
*TOOLBOX


Für Anpassungen siehe auch https://www.mediawiki.org/wiki/Manual:Custom_edit_buttons#Classic_edit_toolbar
*Andere Sprachen
**https://www.saltwiki.net/ |English
</pre>


* neues Unterverzeichnis "/editor_default_sw/" für Grafiken der Schaltflächen
* neue Einträge in den Sprachdateien im Verzeichnis "/languages/i18n/"
* Code-Anpassungen in der Core-Datei "EditPage.php"


Es wird ein neues Unterverzeichnis "editor_default_sw" im Verzeichnis "/skins/common/images/" erstellt, da vom Wiki-Code für den Editor aus diesem Verzeichnis die Grafiken geholt werden. In das neu erstellte Verzeichnis werden folgende Grafiken aus der älteren Wiki-Installation oder von https://commons.wikimedia.org/wiki/Mediawiki_edit_toolbar kopiert und gespeichert:
<pre>&lt;-- Saltwiki --&gt;
* "Button_Bibliogryphy.png" umbenennen zu "Button_bibliography.png"
*Navigation
* "Button_blockquote.png"
**Mainpage|Home
* "Button_enter.png"
<!--**Saltwiki:Community_portal|SaltWiki:Portal-->
* "Button_hide_comment.png" umbenennen zu "Button_hidden_comment.png"
<!--**About_the_Project|SaltWiki Portal-->
* "Button_insert_table.png"
<!--**News|News-->
* "Button_lower_letter.png" umbennen zu "Button_sub_letter.png"
<!--**http://193.175.110.91/repository/index.php/Main_Page |Repository-->
* "Button_redirect.png"
**https://repository.hawk-hhg.de/ |Repository
* "Button_reflink.png"
**Special:BibManager_Overview|Bibliography
* <del>"Button_small.png"</del>
**Glossary|Glossary
* "Button_strike.png"
**Editorial_Board|Editorial Board
* "Button_upper_letter.png" umbenennen zu "Button_sup_letter.png"
**Authors in Saltwiki|Authors
**recentchanges-url|recentchanges
**Special:Contact|Contact
**Help:Contents|Help
<!--**Helppage|help-->
 
* Author Pages
**Authors_Page|Guidelines
**Rights|Rights
**Review|Review
**categories|Category tree
**Templates|Templates
<!--**sandbox|Sandbox-->
 
*SEARCH
 
*TOOLBOX
 
*Languages
**https://www.salzwiki.de/ |German
</pre>




de.json Z.626 unter "hr_tip" wie folgt ergänzen und anschließend eine Kopie der Datei als "de_SW.json" speichern:
<pre>&lt;-- Repositorium --&gt;
<pre>
*Navigation
"enter_tip": "Zeilenumbruch",
<!--*Research Environment-->
"strike_sample": "durchgestrichener Text",
**Mainpage|Home
"strike_tip": "Durchgestrichen",
<!--**Repository Portal|Repository Portal-->
"sup_letter_sample": "hoch gestellter Text",
**News|News
"sup_letter_tip": "Hoch gestellt",
**Projekte|Projects
"sub_letter_sample": "tief gestellter Text",
**Communication|Communication
"sub_letter_tip": "Tief gestellt",
**Publications|Publication
"blockquote_sample": "Zitat",
 
"blockquote_tip": "Zitierter Text",
*
"reflink_sample": "Fußnoten-Text",
**Special:BibManager_Overview|Bibliography
"reflink_tip": "Fußnoten-Verweis",
**terminology|Glossary
"hidden_comment_sample": "Kommentar",
**Category:Author|Authors' Contents
"hidden_comment_tip": "Versteckter Kommentar",
**recentchanges-url|Recent changes
"insert_table_sample": "! Kopf1\n! Kopf2\n! Kopf3\n|-\n| Reihe1 Spalte1\n| Reihe1 Spalte2\n| Reihe1 Spalte3\n|-\n| Reihe2 Spalte1\n| Reihe2 Spalte2\n| Reihe2 Spalte3",
**Special:Contact|Contact
"insert_table_tip": "Tabelle einfügen (Tabellenkopf, 3 Spalten, 2 Reihen)",
**Help:Contents|Help
"redirect_sample": "Seitenname",
 
"redirect_tip": "Weiterleitung",
* author pages
"bibliography_sample": "Nachname:2017",
**Rights|Rights
"bibliography_tip": "Literaturzitat einfügen",
**Kategorienbaum|Category tree
 
* other wikis
**Vorlagen|Templates
**https://www.salzwiki.de/ |SalzWiki
**https://www.saltwiki.net/ |SaltWiki
 
*SEARCH
 
*TOOLBOX
 
*LANGUAGES
 
</pre>
</pre>


en.json Z.593 unter "hr_tip" wie folgt ergänzen und anschließend eine Kopie derDatei als "en_SW.json" speichern:
==== Navigationsbereich mit Einschränkungen versehen ====
 
Um die linke Navigationsleiste abhängig von der Gruppenzugehörigkeit in der Menüauswahl zu beschränken werden folgende "Hooks" statt Änderungen am Wiki-Code verwendet:
* Sidebar-Variante: "SkinBuildSidebar", siehe [[#Sidebar-Einschr.C3.A4nkung|Sidebar-Einschränkung]]
* Werkzeuge-Auswahl: "BaseTemplateToolbox", siehe [[#Werkzeuge.2FToolbox|Werkzeuge/Toolbox]]
 
Änderungen am Wiki-Code der Datei "[wikiname]\includes\Skin.php" für die zu verwendende Sidebar-Variante sind nicht mehr erforderlich, da mit dem "Hook" die Auswahl für die Menü-Variante je nach Gruppenzugehörigkeit festgelegt werden kann.
 
Änderungen am Wiki-Code der Datei "[wikiname]\skins\MonoBook\MonoBookTemplate.php" für den Umfang der Werkzeuge sind nicht mehr erforderlich, da mit dem "Hook" die Einschränkungen bei den Werkzeugen je nach Gruppenzugehörigkeit festgelegt werden können.
 
=== Sidebar-Einschränkung ===
 
Mit den nachfolgend beschriebenen Änderungen gibt es zwei Sidebar-Varianten (Menü-Varianten links). Welche Variante angezeigt wird, richtet sich dabei nach der Gruppen-Zugehörigkeit.
 
Bei MW1.31/1.27/1.23 können die Änderungen mit einem "Hook" in der Datei "LocalSettings.php" vorgenommen werden und sind für alle Layouts ("Skins") gültig, während bei MW1.16 Wiki-Code in der Datei "Skin.php" des jeweiligen Layouts angepasst wurde und sich nur auf den jeweiligen "Skin" auswirkte.
 
==== Sidebar-Anpassungen mit "Hook" ====
 
Der "Hook" für die Auswahl der Sidebar-Variante heißt "SkinBuildSidebar" und steht seit MW1.14 zur Verfügung.
 
In der Datei "LocalSettings.php" wird oberhalb der Anpassungen für die "Toolbox" (Werkzeuge) folgender Code eingefügt:
<pre>
<pre>
"enter_tip": "Line break",
#### Beginn SIDEBAR je nach Gruppenzugehörigkeit
"strike_sample": "Strike-through text",
$wgHooks['SkinBuildSidebar'] = 'groupspecificSidebar';
"strike_tip": "Strike",
function groupspecificSidebar( $skin, &$sidebar ) {
"sup_letter_sample": "Superscript text",
  global $wgUser;
"sup_letter_tip": "Superscript",
  $groups = $wgUser->getEffectiveGroups();
"sub_letter_sample": "Subscript text",
  $sidebar = array();
"sub_letter_tip": "Subscript",
  if (in_array("autor", $groups) || in_array("Administrator", $groups) || in_array("forschung", $groups)) {
"blockquote_sample": "Block quote",
    $skin->addToSidebar($sidebar, 'autor_sidebar');
"blockquote_tip": "Quoted text",
  }
"reflink_sample": "Footnote text",
  else{
"reflink_tip": "footnote reference",
    $skin->addToSidebar($sidebar, 'sidebar');
"hidden_comment_sample": "Comment",
  }
"hidden_comment_tip": "Hidden comment",
  return true;
"insert_table_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",
};
"insert_table_tip": "Insert table (table head, 3 columns, 2 rows)",
#### Ende SIDEBAR je nach Gruppenzugehörigkeit
"redirect_sample": "Page name",
"redirect_tip": "Redirect",
"bibliography_sample": "Surname:2017",
"bibliography_tip": "Insert literature blockquote",
</pre>
</pre>


==== Sidebar-Anpassungen ohne "Hook" (Wiki-Code) ====
ACHTUNG: Wenn Mediawiki aktualisiert wird, muss die Änderung in der Datei "Skin.php" wieder eingefügt werden, um die Funktionalität zu erhalten!
Deshalb ist von der geänderten Datei "Skin.php" zusätzlich eine Kopie "Skin_SW.php" im Verzeichnis "includes" zu speichern.
In der Datei "includes\Skin.php" in der Funktion "function buildSidebar()" in der zweiten Zeile die globale Variable "$wgUser" mit Kommentar hinzufügen, um später die Gruppenrechte abfragen zu können:
<pre><!--MW1.23, Z.1249-->
global $wgMemc, $wgEnableSidebarCache, $wgSidebarCacheExpiry, $wgUser; // for HAWK HHG $wgUser added
</pre>


Nachfolgenden Code in der Datei "/includes/EditPage.php" bei der Array-Variablen "$Toolarray" (ab Zeile 3385) am Ende einfügen (Z. 3475); hierbei das erste Komma nicht vergessen.
Nach der Zeile mit "$bar = array();" (MW1.23 Z.1263, MW1.16 Z.2085) folgende Zeile auskommentieren:
<pre>
<pre>
,
#$this->addToSidebar( $bar, 'sidebar' ); // changed for HAWK HHG 2015-12-22
array(
</pre>
  'image' => "editor_default_sw/Button_enter.png",
und folgenden Code einfügen:
  'id'    => 'mw-editbutton-enter',
<pre>
  'open'  => '<br />',
// new for HAWK HHG 2015-12-22
  'close'  => '',
$groups = $wgUser->getEffectiveGroups();
  'sample' => '',
## add here admin support
  'tip'    => wfMessage( 'enter_tip' )->text()
if (in_array("autor", $groups) || in_array("Administrators", $groups) || in_array("forschung", $groups)) {
),
   //$lines = explode( "\n", wfMsgForContent( 'autor_sidebar' ) );
array(
   $this->addToSidebar( $bar, 'autor_sidebar' );
  'image'  => "editor_default_sw/Button_strike.png",
} else {
  'id'    => 'mw-editbutton-strike',
   //$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );
  'open'  => '<s>',
   $this->addToSidebar( $bar, 'sidebar' );
   'close'  => '</s>',
}
  'sample' => wfMessage( 'strike_sample' )->text(),
</pre>
   'tip'    => wfMessage( 'strike_tip' )->text()
 
),
Die Zeile "$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );"  muss auskommentiert oder gelöscht werden. Die explode-Funktion wird als Wiki-Code in "addToSidebarPlain(...)" verwendet.
array(
 
   'image'  => "editor_default_sw/Button_sup_letter.png",
Nun gibt es zwei Sidebars die man unterschiedlich "bestücken" kann.
  'id'     => 'mw-editbutton-sup-letter',
 
   'open'  => '<sup>',
Sollte es danach '''PHP-Warnungen''' wie "Warning: Call-time pass-by-reference has been deprecated ..." geben, gibt es folgende vorübergehende '''Notlösung''':
  'close'  => '</sup>',
In der Datei "php.ini" in Zeile 165 "allow_call_time_pass_reference = On" statt "Off" setzen.
  'sample' => wfMessage( 'sup_letter_sample' )->text(),
'''Diese Möglichkeit gilt als veraltet und wird in Zukunft nicht mehr von PHP unterstützt werden, so dass der oben beschriebene Code der Funktion dann geändert werden muss!'''
  'tip'    => wfMessage( 'sup_letter_tip' )->text()
 
),
=== Werkzeuge/Toolbox ===
array(
 
  'image' => "editor_default_sw/Button_sub_letter.png",
Änderungen an der Datei "skins\MonoBook\MonoBookTemplate.php" sind bei MW1.31/1.27/1.23 nicht mehr erforderlich, da mit einem "Hook" namens "BaseTemplateToolbox" die Einschränkungen bei den Werkzeugen je nach Gruppenzugehörigkeit in der Datei "LocalSettings.php festgelegt werden können.
  'id'     => 'mw-editbutton-sub-letter',
 
  'open'   => '<sub>',
Anpassungen mittels "Hook" in der Datei "LocalSettings.php" wirken sich auf alle "Skins" aus, wohingegen sich Anpassungen in der Datei "MonoBookTemplate.php" nur auf das Layout "MonoBook" auswirken, wenn nicht in der Datei "[wikiname]\includes\skins\SkinTemplate.php" Änderungen entsprechend denen für die Spezialseiten erfolgen.
  'close' => '</sub>',
 
  'sample' => wfMessage( 'sub_letter_sample' )->text(),
==== Werkzeuge-Anpassung mit "Hook" ====
  'tip'    => wfMessage( 'sub_letter_tip' )->text()
 
),
Der verwendete "Hook" für den Umfang der zur Verfügung stehenden Werkzeuge heißt "BaseTemplateToolbox" und steht seit MW1.18 zur Verfügung.
array(
 
  'image'  => "editor_default/Button_redirect.png",
In der Datei " in LocalSettings.php" ist folgender Code einzufügen:
  'id'    => 'mw-editbutton-redirect',
<pre>
  'open'  => "#REDIRECT[[",
#### Beginn TOOLBOX je nach Gruppenzugehörigkeit nur 'print' oder alles
  'close'  => ']]',
$wgHooks['BaseTemplateToolbox'][] = 'groupspecificToolbox';
  'sample' => wfMessage( 'redirect_sample' )->text(),
function groupspecificToolbox( BaseTemplate $baseTemplate, array &$toolbox ) {
  'tip'    => wfMessage( 'redirect_tip' )->text(),
   global $wgUser;
  'key'    => 'F'
   $groups = $wgUser->getEffectiveGroups();
),
   if (!in_array("autor", $groups) && !in_array("Administrator", $groups) && !in_array("forschung", $groups)) {
array(
     foreach($toolbox as $k => $v_array){
  'image'  => "editor_default_sw/Button_reflink.png",
      if($k!=="print" && isset($toolbox[$k])){
  'id'    => 'mw-editbutton-reflink',
        unset($toolbox[$k]);
  'open'   => '<ref>',
      }
   'close'  => '</ref>',
    }
   'sample' => wfMessage( 'reflink_sample' )->text(),
  }
   'tip'    => wfMessage( 'reflink_tip' )->text()
   return true;
),
}
array(
#### Ende TOOLBOX je nach Gruppenzugehörigkeit nur 'print' oder alles
  'image'  => "editor_default_sw/Button_blockquote.png",
</pre>
  'id'     => 'mw-editbutton-blockquote',
 
  'open'  => '<blockquote>'."\n",
==== Werkzeuge-Anpassungen ohne "Hook" (Wiki-Code) ====
  'close'  => "\n".'</blockquote>',
 
  'sample' => wfMessage( 'blockquote_sample' )->text(),
Die Sidebar im Bereich "Werkzeuge" wird mit einem Eingriff in den Wiki-Code bei "skins/MonoBook.php" für alle Gruppen außer "autor", "admin" und "forschung" manipuliert. Hierzu wird in der Funktion "toolbox()" Z.254ff die Variable "global $wgUser;" eingefügt und bei "foreach" die Z.262 bei "$this->makeListItem" mit einer Bedingung versehen:
  'tip'    => wfMessage( 'blockquote_tip' )->text()
 
),
<pre>
array(
function toolbox();
   'image' => "editor_default_sw/Button_Bibliography.png",
   global $wgUser; // Für HAWK HHG
  'id'    => 'mw-editbutton-bibliography',
   $groups = $wgUser->getEffecitveGroups(); // Für HAWK HHG
  'open'  => '<bib id="',
   ...
  'close'  => '"/>',
   foreach ( $this->getToolbox() as $key => $tbitem ) {
  'sample' => wfMessage( 'bibliography_sample' )->text(),
    // Für HAWK HHG: Alle Werkzeuge für die Gruppen autor, Administrators und forschung, sonst nur Werkzeug "Druckversion"
  'tip'    => wfMessage( 'bibliography_tip' )->text()
    if(in_array("autor", $groups) || in_array("Administrators", $groups) || in_array("forschung", $groups) || $key==="print"){
),
      <?php echo $this->makeListItem( $key, $tbitem); ?>
array(
    }
   'image'  => "editor_default_sw/Button_hidden_comment.png",
  }
   'id'    => 'mw-editbutton-hidden-comment',
</pre>
  'open'  => '<!-- ',
   'close'  => ' -->',
   'sample' => wfMessage( 'hidden_comment_sample' )->text(),
  'tip'    => wfMessage( 'hidden_comment_tip' )->text()
),
array(
  'image'  => "editor_default_sw/Button_insert_table.png",
  'id'    => 'mw-editbutton-insert-table',
  'open'  => '{| class="wikitable"'."\n".'|-'."\n",
  'close'  => "\n".'|}',
  'sample' => wfMessage( 'insert_table_sample' )->text(),
  'tip'    => wfMessage( 'insert_table_tip' )->text()
)
</pre>


Die Texte für "tip" und "sample" befinden sich in den json-Sprachdateien im Verzeichnis "/includes/i18n/".
'''Achtung: Code-Anpassung muss in "skins/MonoBook.php" nach jedem mediawiki-Update auf Vorhandensein und Funktion überprüft werden!'''
 
ACHTUNG: Nach jedem mediawiki-Update muss überprüft werden, ob die vorgenommene Änderung in der Datei "EditPage.php" noch existiert und funktioniert. Deshalb ist im Verzeichnis "/includes/" von der Datei eine Kopie namens "EditPage_SW.php" zu speichern.
 
==== Erweiterung WikiEditor oder alter Standard-Editor ??? ====


Beispiel für einzufügenden HTML-Kommentar in Datei ??? ("ext.wikiEditor.js"? oder "ext.wikiEditor.toolbar.js"? im Verzeichnis "/extensions/WikiEditor/modules/"?):
Eventuell  muss auch die Datei "\includes\SkinTemplate.php" bei der Funktion "buildNavUrls()" in den Zeilen 1247 und 1262 angepasst werden, um Datei-Uploads auszublenden - siehe http://nullraffer.de/wiki/index.php?title=Mediawiki_absichern:
<pre>
<pre>
if(mw.toolbar){
global $wgUploadNavigationUrl;
  mw.toolbar.addButton({
global $wgUser; // eingefügt 2015-12-04 für HAWK HHG
    imageFile: '//upload.wikimedia.org/wikipedia/en/3/34/Button_hide_comment.png',
...
    speedTip: 'Comment visible only for editors',
// Bedingung eingefügt 2015-12-04 für HAWK HHG
    tagOpen: '<!-- ',
if(!$wgUser->isAnon()){
    tagClose: ' -->',
  $nav_urls['specialpages'] = array( 'href' => self::makeSpecialUrl( 'Upload' ) );
    sampleText: 'Insert comment here',
    imageId: 'button-comment'
  });
}
}
...
</pre>
</pre>


=== Namensräume ===
==== Werkzeuge-Schlüsselwörter ====


==== Übersicht der vorhandenen Namensräume ====
* Links auf diese Seite: key = whatlinkshere
* Änderungen an verlinkten Seiten: key = recentchangeslinked
* Datei hochladen: key = upload
* Spezialseiten: key = specialpages
* Druckversion: key = print
* Permanenter Link: key = permalink
* Seiteninformationen: key = info


Eine Übersicht sowohl der MediaWiki-Namensräume als auch der selbst erstellten Namensräume wird aufgelistet durch Eingabe folgender Adresse:
==== sichtbare Toolbox-Menüpunkte ====
<br/>localhost/[wikiname]/api.php?action=query&meta=siteinfo&siprop=namespaces


==== Einrichten von Namensräumen  ====
* SalzWiki, Repositorium: alle Gruppen und User
** Druckversion


Es werden folgende Namensräume eingerichtet:
* SaltWiki: alle Gruppen und User
# "ADM" bzw. "Access": "ADM" bei Salzwiki und Saltwiki, "Access" bei Repository) für Dokumente der Administratoren, den nur diese bearbeiten können,
** Printable version
# "Bearbeitung": nur bei Saltwiki zum erstmaligen Erstellen von Dokumenten, die kein Leser sehen soll
# "Literature": für die Bibliographie - Achtung: Bei der Zuweisung in $wgExtraNamespaces ist ein Leerzeichen vor "_talk"!
# "SalzeImPorenraum": nur bei Repository
# "RBKLuebeck": nur bei Repository - Achtung: Ursprüngliche Konstante "RBK-Luebeck" mit Bindestrich erzeugt bei MW 1.23 eine Fehlermeldung und Bindestrich ist auch nicht bei $wgExtraNamespaces enthalten


Leerzeichen und Bindestriche sind für selbst definierte Namensräume (custom namespaces) nicht zulässig, siehe https://www.mediawiki.org/wiki/Manual:Using_custom_namespaces
==== ausgeblendete Toolbox-Menüpunkte ====


Salzwiki
* SalzWiki: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
<pre>
** "Links auf diese Seite" (Special:WhatLinksHere/Main_Page)
# Einrichten der Namensräume Adm, Bearbeitung und Literature
** "Änderungen an verlinkten Seiten" (Spezial:%C3%84nderungen_an_verlinkten_Seiten)
define("NS_ADM", 100);
** "Hochladen" (Special:Upload)
define("NS_ADM_TALK", 101);
** "Spezialseiten" (Special:SpecialPages)
#define("NS_Bearbeitung", 120);
** "Permanenter Link" (Main_page&oldid=921)
#define("NS_Bearbeitung_TALK", 121);
** "Seiteninformationen" ([Seitentitel]&action=info])
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 Helpnamespace
$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;
</pre>


Saltwiki
* SaltWiki: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
<pre>
** "What links here" (Special:WhatLinksHere/Main_Page)
# Einrichten der Namensräume Adm, Bearbeitung und Literature
** "Related changes" (Special:RecentChangesLinked)
define("NS_ADM", 100);
** "Hochladen" (Special:Upload)
define("NS_ADM_TALK", 101);
** "Spezialseiten" (Special:SpecialPages)
define("NS_Bearbeitung", 120);
** "Permanent link" (Main_page&oldid=921)
define("NS_Bearbeitung_TALK", 121);
** "Page information" ([Seitentitel]&action=info])
define("NS_Literature", 110);
 
define("NS_Literature_TALK", 111);
* Repository: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
# Create namespaces
** "Links auf diese Seite" (Special:WhatLinksHere/Main_Page)
$wgExtraNamespaces = array(
** "Änderungen an verlinkten Seiten" (Spezial:%C3%84nderungen_an_verlinkten_Seiten)
NS_ADM => 'Adm',
** "Datei Hochladen" (Special:Upload)
NS_ADM_TALK => 'Adm_talk',
** "Spezialseiten" (Spezial:Spezialseiten)
NS_Bearbeitung => 'Bearbeitung',
** "Permanent link" (Main_page&oldid=9522)
NS_Bearbeitung_TALK => 'Bearbeitung_talk',
** "Seiteninformationen" ([Seitentitel]&action=info])
NS_Literature => 'Literature',
 
NS_Literature_TALK => 'Literature _talk'
=== Überschrift der Hauptseite/Mainpage ändern ===
);
Die Überschrift ist auf der Systemseite "Mediawiki:Mainpage" eingetragen und muss dort geändert werden.
Die Überschrift, die per Voreinstellung Main Page (Hauptseite in der deutschen Übersetzung) heißt, ist in die entsprechende Titelzeile zu ändern.


$wgNamespacesWithSubpages[NS_HELP] = true;          #subpages enabled for the Helpnamespace
=== Repositorium-Dateien im SalzWiki ===
$wgNamespaceProtection[NS_ADM] = array( 'editadm' ); #permission "editadmin" required to edit the Adm namespace
$wgNamespacesWithSubpages[NS_ADM] = true;            #subpages enabled for the ADM namespace
$wgGroupPermissions['Sysadmin']['editadm'] = true;
</pre>


Repository
Für das wiki-übergreifende Hochladen und Anzeigen von Media-Dateien sind in der Datei "LocalSettings.php" folgende Variablen anzupassen:
<pre>
* $wgUploadNavigationUrl
# Einrichten der Namensräume Adm, Bearbeitung und Literature
* $wgSharedUploadPath
define("NS_Access", 100);
* $wgRepositoryBaseUrl
define("NS_Access_TALK", 101);
 
#define("NS_Bearbeitung", 120);
{| class="wikitable"
#define("NS_Bearbeitung_TALK", 121);
|-
define("NS_Literature", 110);
|rowspan="2"|Logo
define("NS_Literature_TALK", 111);
|colspan="3" style="text-align:right;"|Wiki-Header-Leiste
# Create namespaces
|-
$wgExtraNamespaces = array(
|Datei
NS_Access => 'Access',
|Diskussion
NS_Access_TALK => 'Access_talk',
|auf einem gemeinsam genutzten Medienarchiv ansehen '''$wgRepositoryBaseUrl'''
#NS_Bearbeitung => 'Bearbeitung',
|-
#NS_Bearbeitung_TALK => 'Bearbeitung_talk',
|rowspan="4"|Navigation
NS_Literature => 'Literature',
<br/>Suche
NS_Literature_TALK => 'Literature _talk'
<br/><br/>Werkzeuge
);
<br/>&nbsp;Datei hochladen
<br/>&nbsp;'''$wgUploadNavigatonUrl'''
|colspan="3"|Abschnitt "Datei"
* bei vorhandener Quelle:
** Datei-Verweis: '''$wgSharedUploadPath'''
** Dateibeschreibungsseite-Verweis: '''$wgRepositoryBaseUrl'''
* bei nicht gefundener Quelle
** moved-Verweis: '''$wgRepositoryBaseUrl'''
|-
|colspan="3"|Abschnitte aus anderem Wiki mittels '''$wgRepositoryBaseUrl'''
* "Metadaten"
* "Summary"
* "Licensing" aus Vorlage im anderen Wiki mit relativem Pfad im Verweis für Icons
|-
|colspan="3"|Abschnitt "Dateiversionen" mit Verweis zu "Version vom": '''$wgSharedUploadPath'''
|-
|colspan="3"|Abschnitt "Dateiverwendung" mit Datei-Verweis: '''$wgRepositoryBaseUrl'''
|-
|colspan="4" style="text-align:center;"| Wiki-Footer-Leiste
|}
 
==== Hochladen von Dateien  ====
 
Das Hochladen von Dateien geschieht immer in das Repositorium. Hierfür sind Anpassungen in der Konfigurationsdatei erforderlich.


##Anlegen von Namensräumen für Projekte
===== Konfigurationsdatei anpassen =====
define('NS_SalzeImPorenraum', 1010);
define('NS_SalzeImPorenraum_TALK', 1011);
$wgExtraNamespaces[NS_SalzeImPorenraum] = 'SIPP';
$wgExtraNamespaces[NS_SalzeImPorenraum_TALK] = 'SIPP_talk';
#define('NS_RBK-Luebeck', 1020); //Achtung: Bindestrich darf nicht sein und ist auch nicht bei $wgExtraNamespaces enthalten
#define('NS_RBK-Luebeck_TALK', 1021);  //Achtung: Bindestrich darf nicht sein und ist auch nicht bei $wgExtraNamespaces enthalten
define('NS_RBKLuebeck', 1021);
define('NS_RBKLuebeck_TALK', 1021);
$wgExtraNamespaces[NS_RBKLuebeck] = 'Rbkl';
$wgExtraNamespaces[NS_RBKLuebeck_TALK] = 'Rbkl_talk';


#$wgNamespacesWithSubpages[NS_HELP] = true;           #subpages enabled for the Helpnamespace
Für das Hochladen ins Repositorium über "Werkzeuge => Datei hochladen" bzw. "tools => Upload file" sind folgende Änderungen in der Datei "LocalSettings.php" des SalzWikis bzw. SaltWikis vorzunehmen, siehe auch https://www.mediawiki.org/wiki/Manual:$wgUploadNavigationUrl:
#$wgNamespaceProtection[NS_ADM] = array( 'editadm' ); #permission "editadmin" required to edit the Adm namespace
<pre>
#$wgNamespacesWithSubpages[NS_ADM] = true;           #subpages enabled for the ADM namespace
## für $wgUploadNavigationUrl, $wgSharedUploadPath und $wgRepositoryBaseUrl
#$wgGroupPermissions['Sysadmin']['editadm'] = true;
## bei Verwendung einer IP-Adresse statt Domain-Adresse
#$url_repository = "/repository/";
## bei Verwendung von Domain-Adresse statt IP-Adresse ohne Protokoll wg. Inhalten bei "https"
$url_repository = "repository.hawk-hhg.de/";
...
## relative IP-Adresse "..._draft"
#$wgUploadNavigationUrl = "/repository_draft/index.php/Special:Upload";
#$wgUploadNavigationUrl = $url_repository."index.php/Special:Upload";
## bei Verwendung von Domain-Adresse statt IP-Adresse mit Protokoll
$wgUploadNavigationUrl = $protokoll."://".$url_repository."index.php/Special:Upload";
$wgEnableUploads      = false;  ##damit kein Upload in SalzWiki bzw. SaltWiki möglich ist
</pre>
</pre>


=== Software-Installationen ===
Zudem sind folgende Änderungen in der Datei "LocalSettings.php" des Repositoriums vorzunehmen:
<pre>
$wgEnableUploads      = true;
## Erlaubte Dateitypen
$wgFileExtensions = array('avi','bib','doc','docx','gif','jpeg','jpg','mov','mpeg','odt','ods','oga','ogg','ogv',
'pdf','png','svg','tif','tiff','txt','xls','xlsx','xml');
</pre>


==== Programme unter Systemsteuerung Windows Server 2012 R2 ====
===== Text der Upload-Spezialseite =====


Für MediaWiki 1.23.11 LTS
Es gibt folgende MW-Seiten für den Text der Seite "Special:Upload":
* MediaWiki:Uploadtext (Standard "en")
* MediaWiki:Uploadtext/de
* MediaWiki:Uploadtext/de-formal
* MediaWiki:Uploadtext/[Sprachenkürzel] (andere Sprachen)


* GPL Ghostscript 9.10
In den Textdefinitionen unter "...\[wikiname]\languages\i18n\" gibt es ebenfalls Texte für die Uploadseite, welche scheinbar nicht verwendet werden; diese Texte befinden sich in den json-Dateien im Element "uploadtext":
* ImageMagick 6.9.3-8 Q16 (32-bit) (2016-04-10)
* en.json Z.1286
* Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.6161
* de.json Z.1290
* Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148
* de-formal.json Z.176
* Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.6161
 
* Microsoft Visual C++ 2012 Redistributable (x86) - 11.0.61030 Update 4
==== Übergreifende Darstellung ====
* MikTeX 2.9


==== Programme unter Systemsteuerung Windows Server 2008 32 Bit ====
Für den Zugriff vom SalzWiki bzw. SaltWiki auf Dateien und deren Seiten im Repositorium mittels "http" bzw. "https" durch anonyme User sind Anpassungen wie nachfolgend beschrieben erforderlich.


Für MediaWiki 1.23.11 LTS und 1.16
Da alle Dateien wie z.B Fotos mit den dazugehörigen Metadaten und Lizenzhinweisen im Repositorium liegen, muss vom SalzWiki aus der Zugriff nicht nur auf die Dateien, sondern auch auf die dazugehörigen Metadaten und Lizenzhinweise erfolgen.


* GPL GhostScript 8.70
Bei Seiten-Aufrufen mit https wird die Seite aus dem Repositorium mit den Metadaten, der Zusammenfassung und den Lizenzhinweisen ignoriert.
* ImageMagick 6.5.9-0 Q16 (2010-01-01)
* Microsoft .Net Framework 3.5 Language Pack SP1 - DEU
* Microsoft .Net Framework 3.5 SP1
* Microsoft .Net Framework 4.5.2
* Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148
* Microsoft Visual C++ 2012 Redistributable (x86) - 11.0.61030 Update 4
* MikTeX 2.8
* MSXML 4.0 SP2 (KB954430)
* MSXML 4.0 SP2 (KB973688)
* OggVideoTools Ogg Video Tools
* XAMPP 1.7.1


== Extensions  ==
Anzupassende Dateien:
* Konfigurationsdatei "LocalSettings.php" des SalzWikis bzw. SaltWikis
* PHP-Konfigurationsdatei "php.ini"


Welche Erweiterungen in welcher Distribution enthalten sind, erfährt man auf der Seite https://www.mediawiki.org/wiki/Comparison_of_extensions_in_distributions
===== Wiki-Konfigurationsdatei =====


Findet das Salzwiki eine Datei oder ein Bild nicht im eigenen Wiki, schaut es mit Hilfe von Shared-Einstellungen automatisch im Repositorium nach und sucht dort. Wird auf ein englischsprachiges Repositorium verwiesen, ist in der Wiki-Konfigurationsdatei "Datei:" durch "File:" zu ersetzen, damit die Metadaten ausgelesen werden können.


=== AccessControl  ===
====== Zusammenhang zwischen Variablen und Darstellung ======


==== Verwendungszweck ====
* $wgSharedUploadPath
** Abschnitt "Datei": Verweis zur Datei
* $wgRepositoryBaseUrl
** Karteikartenreiter "Auf einem gemeinsam genutzten Medienarchiv ansehen" bzw. "View on a shared repository"
** Abschnitt "Datei": Verweis zur Dateibeschreibungsseite, anderenfalls Verweis "moved"
** Abschnitt "Dateiversionen": Verweis zur "Version vom"
** Abschnitt "Dateiverwendung": Verweis zur Ursprungsdatei der erzeugten Duplikatdatei
** Zusätzliche Inhalte (Metadata, Summary, Licencing) der Datei-Seite im Repositorium benötigen "http" als Base-URL-Protokoll


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.
====== Anpassungen in der Konfigurationsdatei ======


Der Zugang auf eine Seite wird durch Eingabe einer Nutzergruppe (Beispiel: "parole") erlaubt, die vorher z.B. in "LocalSettings.php" definiert wird:
<pre>
<pre>$wgGroupPermissions['parole']['read'] = true;</pre>
## Zugriff auf das Repositorium
Damit nur Mitglieder der Gruppe "parole" Zugang zu einer Seite erhalten, wird auf der jeweiligen Seite oben folgende Zeile eingegeben (siehe dazu auch http://www.mediawiki.org/wiki/Extension:AccessControl):
$wgFetchCommonsDescriptions  = true;
<pre><accesscontrol>parole</accesscontrol></pre>
## für $wgUploadNavigationUrl, $wgSharedUploadPath und $wgRepositoryBaseUrl
## bei Verwendung von IP-Adresse statt Domain-Adresse
#$url_repository = "/repository/";
## bei Verwendung von Domain-Adresse statt IP-Adresse ohne Protokoll wg. Inhalten bei "https"
$url_repository = "repository.hawk-hhg.de/";
...
## shared uploads: Das Laden der Daten erfolgt immer aus dem Repositorium
## Damit automatisch im Repository nach "Dateien" gesucht wird:
$wgUseSharedUploads = true;
## bei Verwendung von IP-Adresse statt Domain-Adresse
#$wgSharedUploadPath = "/repository/images";
#$wgSharedUploadPath = $url_repository."images";
## bei Verwendung von Domain-Adresse statt IP-Adresse mit Protokoll
$wgSharedUploadPath = $protokoll."://".$url_repository."images";
$wgSharedUploadDirectory = "D:/xampp/htdocs/repository/images";
$wgHashedSharedUploadDirectory = true;
$wgSharedUploadDBname = "repository";
$wgSharedUploadDBprefix  = "sr_";
## IP-Adresse mit Protokoll "http" wg. fehlendem Serverzertifikat
#$wgRepositoryBaseUrl = 'http://193.175.110.91/repository/index.php/Datei:'; 
#$wgRepositoryBaseUrl = 'http://'.$_SERVER['SERVER_NAME'].'/repository/index.php/File:';
#$wgRepositoryBaseUrl = 'http://'.$_SERVER['SERVER_ADDR'].'/repository/index.php/File:';
## Domain-Adresse mit Protokoll "http" bei "https"-Aufruf wg. Seiteninhalten mit CC-Icons u. Ä., 2018-02-06
#$wgRepositoryBaseUrl = "http://".$url_repository."index.php/Datei:";
$wgRepositoryBaseUrl = "http://".$url_repository."index.php/File:";
## Verwendung der Klasse ForeignDBRepo
$wgForeignFileRepos[] = array(
'class' => 'ForeignDBRepo',
'name' => '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
);
</pre>


==== AccessControl v2.4 fehlerhaft bei MW 1.23 ====
===== PHP-Konfigurationsdatei =====


Für  MW 1.23 wurde versucht, AccessControl v2.5 zu verwenden. Der Download enthält aber nicht wie in Aussicht gestellt Version 2.5, sondern Version v2.4, bei welcher in der Datei "changelog.txt" nur Änderungen bis v2.3 aufgelistet sind. Die Version 2.4 hat mehrere Fehler:
Die Funktion "fopen()" muss ausgeführt werden können, um Beschreibungsdaten wie Metadaten und Zusammenfassungen sowie Lizenzhinweise vom Repositorium zu holen. Hierfür muss in der PHP-Konfigurationsdatei "php.ini" in Zeile 523 folgende Einstellung vorhanden sein:
* Z.21: "$wgAccessControlRedirect = true;" fehlt
<pre>allow_url_fopen = On</pre>
* Z.136: in Funktion getTemplatePage() ist ein Rückgabewert auskommentiert
* Z.173: php-Warnung, weil "isset($allow)" fehlt
* Z.225: php-Warnung, weil "isset($rights)" fehlt
* Z.202, Z.210: in Funktion fromTemplates() wird dieselbe Funktion evtl. endlos aufgerufen
* Z.284: in Funktion allRightsTag() wird die Funktion fromTemplates() aufgerufen, die wiederum evtl. die Funktion allRightsTag() in Z.213, Z.218 und Z.220 endlos aufruft
* Funktion doRedirect() ist im Vergleich zu v2.5 anders


==== AccessControl v2.5 für MW 1.23 ====
===== Grafiken für Lizenz =====


Siehe auch https://www.mediawiki.org/wiki/Extension:AccessControl
Die Grafiken für die CC-Lizenz werden im Repositorium in der Vorlage "CC-by-nc-nd" verwendet und haben eine interne Adresse. Diese Lizenz-Grafiken werden bei Aufrufen mit "http" und "https" nur im Repositorium, aber nicht im SalzWiki bzw. SaltWiki angezeigt, wenn das Repositorium mit einer Domain-Adresse statt mit einer IP-Adresse konfiguriert ist. Ein Änderung in der Interwiki-Tabelle von "ja" zu "nein" bei "lokales Wiki" bewirkt nichts.


Für die Gruppe "autor" wird standardmäßig beispielsweise die Seite "Autor" nach einer Liste mit Kontonamen durchsucht, wobei unterschieden wird zwischen "write"-Berechtigung und durch das Suffix "(ro)", was "readonly" bedeutet, "read"-Berechtigung.
Für Seiten im SalzWiki und SaltWiki, die Media-Dateien des Repositoriums verwenden, sind für http-/https-Aufrufe deshalb folgende Unterverzeichnisse und Dateien aus dem Repositorium in die beiden anderen Wikis zu kopieren:
* [wikiverzeichnis]\images\thumb\
** 0\07\Pict-nd.png\30px-Pict-nd.png
** 1\1f\Pict-nc.png\30px-Pict-nc.png
** d\d6\Pict-by.png\30px-Pict-by.png


Da eine Vielzahl Benutzungskonten zur Gruppe "autor" gehört und die Seite "Autor" in SalzWiki anderweitig verwendet wird, muss die Gruppenzugehörigkeit mit der Zuordnung in der MW-Datenbank überprüft werden und der Code der Erweiterung in der Funktion "makeGroupArray(...)" angepasst werden.
==== MediaWiki-Datei anpassen (Wiki-Code) ====


===== Installationshinweise =====
Die nachfolgend beschriebene Vorgehensweise erlaubt es, auf ein für den normalen User gesperrtes Wiki wie das Repositorium zuzugreifen und die Metadaten der Abbildungen/Dateien auszulesen und in SalzWiki widerzugeben. '''Nach jedem mediawiki-Update muss die Datei "includes/httpFunctions.php" auf Änderungen überprüft werden!'''
 
Achtung: Version 2.5 ist nicht zum Herunterladen bei REL1.23, sondern erst bei REL1.24 verfügbar.


* Die Extension wird als (REL1.24 oder) REL1.26 heruntergeladen und nach dem Extrahieren in das Verzeichnis "extensions" kopiert.
*Zunächst ist die Datei "httpFunctions.php" im Verzeichnis includes von SalzWiki sowohl für https als auch für die Erweiterung "Snoopy" zu modifizieren, siehe https://phabricator.wikimedia.org/T27563. Dazu wird von der Datei eine Kopie "httpFunctions_original.php" gespeichert; danach wird folgender Code angepasst:
** v2.5 "...REL1.26...", Datei "version": 2016-01-09T22:48:53 1a2ce27 [verwendet]
**für die Mediawiki-Version '''1.23''':
** v2.5 "...REL1.24...", Datei "version": 2016-01-09T22:48:53 c7e1e54 [nicht verwendet]
** v2.4 "...REL1.23...", Datei "version": 2015-06-16T21:00:32 befc02e [nicht verwendet]
* Einfügen in Datei "LocalSettings.php":  
<pre>
<pre>
require_once("$IP/extensions/AccessControl/AccessControl.php");
--- HttpFunctions.php 2010-06-09 05:49:34.000000000 +0200
$wgUseMediaWikiGroups = true;
+++ HttpFunctions_sw.php 2018-01-29
</pre>
@@ -131,1 +131,1 @@
 
- if ( preg_match( '!^http://([\w.-]+)[/:].*$!' ) ) {
===== Code-Probleme und deren Lösungen =====
+ if ( preg_match( '!^http://([\w.-]+)[/:].*$!' ) || preg_match( '!^https://([\w.-]+)[/:].*$!' ) ) {
 
@@ -790,11 +790,97 @@
'''undefinierte Variablen'''
- $curlRes = curl_exec( $curlHandle );
 
- if ( curl_errno ($curlHandle ) == CURLE_OPERATION_TIMEOUTED ) {
PHP erzeugt evtl. eine Meldung "Notice: Undefined variable: allow ... on line 174". Es fehlt bei $allow die Abfrage "isset(...)".
- $this->status->fatal( 'http_timed_out', $this->url );
 
- } elseif ($curlRes === false ) {
Die Datei "AccessControl.php" ist zur Verhinderung von php-Warnungen wie folgt zu bearbeiten:<br/>
- $this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) );
In Zeile 174 "if(is_array($allow)){" mit "isset($allow) &&" ergänzen:
- } else {
<pre>
- $this->headerList = explode( "\r\n", $this->headerText );
if(isset($allow) && is_array($allow)){
- }
</pre>
-
 
- curl_close( $curlHandle );
'''Gruppenzugehörigkeit mit Datenbank statt Gruppen-Seite prüfen'''
-
 
+ /*  Neuer Code für "Snoopy" ungeprüft bei MW1.23 übernommen von MW1.16
Die Überprüfung der Gruppenberechtigung darf nicht mit einer Seite für die Gruppe mit Kontenliste, sondern muss mit den Angaben in der Wiki-Datenbank ausgeführt werden
+ *  START:
* Datei "LocalSettings.php" mit "$wgUseMediaWikiGroups" ergänzen
+ *  Add code to access restricted repositories.
* Datei "\extensions\AccessControl\AccessControl.php" in der Funktion "makeGroupArray(...)" anpassen
+ *  Add the following line in the LocalSettings.php
 
+ * $wgAuthenticatedRepository = true;
 
+ * $wgAuthenticatedRepositoryUser = 'WikiSysop';
Datei "LocalSettings.php":
+ * $wgAuthenticatedRepositoryPassword = 'dev2010wer';
<pre>
+ * $wgShowAuthenticatedRepositoryError = true;
require_once("$IP/extensions/AccessControl/AccessControl.php");
+ */
$wgUseMediaWikiGroups = true;
+
</pre>
+    global $wgAuthenticatedRepository, $wgAuthenticatedRepositoryUser, $wgAuthenticatedRepositoryPassword, $wgShowAuthenticatedRepositoryError;
 
+    $error = true;
Datei "AccessControl.php" Z.89ff:
+    $text = '';
<pre>
+    $token2 = array();
function makeGroupArray( $accesslist ) {
+
  ...
+ /* run the code only if the user activate is in the LocalSettings.php*/
  $usersreadonly = Array();
+    if ( $wgAuthenticatedRepository ) {
  // für HAWK HHG eingefügt 2016-05-17
+      require_once 'extensions/Snoopy-1.2.4/Snoopy.class.php';
  // users of group from wiki database
+      $index = '';
  global $wgUseMediaWikiGroups, $wgUser;
+      $login = '';
  if($wgUseMediaWikiGroups === true){
+     
    if( in_array($accesslist, $wgUser->getGroups()) ){
+      /* Get all relevat url informations */
      $userswrite[] = $wgUser->getName();
+      /* URL: http://localhost/mediawiki/mediawiki-repository/index.php/File:MediawikiExampleImageFlower.jpg?action=render&uselang=en */
    }
+      $wikiPath = "";
    return array($userswrite, $usersreadonly);
+      if (!preg_match('/(.*)\/index.php\/(.*)\?(.*)/', $this->url, $matches)) {
  }
+          echo "nicht gefunden";
  // users from group-page with list of users and their rights for writing or reading
+      } else {
  $users = getUsersFromPages( $accesslist );
+          $wikiPath = $matches[1];
  ...
+   /* If the url contains special characters, when these characters must be convert */
}
+   $title = rawurldecode($matches[2]);
</pre>
+      }
 
+     
'''Timeout durch Template-Name im Template-Text'''
+      $apiPath = "$wikiPath/api.php";
 
+      $indexPath = "$wikiPath/index.php";
Weitere Probleme mit Script-Timeout wie bei AccessControl v2.4:
+
* Z.206, Z.214: in Funktion fromTemplates() wird dieselbe Funktion evtl. endlos aufgerufen
+      $snoopy = new Snoopy;
* Z.290: in Funktion allRightsTag() wird die Funktion fromTemplates() aufgerufen, die wiederum evtl. die Funktion allRightsTag() in Z.217, Z.222 und Z.224 endlos aufruft
+      /* Start request to get an token */
 
+      $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword, 'format' => 'php');
Timeout-Ursache sind in den Templates "Ynotice" und "Baustelle" die noinclude-Bereiche, in denen der Template-Name erneut auftaucht. Der erste Buchstabe muss entweder kleingeschrieben werden oder - besser - durch Hexadezimal-HTML-Zeichen ersetzt werden:
+      if(!$snoopy->submit($apiPath, $request_vars))
 
+      $this->status->fatal("Snoopy error: {$snoopy->error}");
<pre>
+     
<nowiki>
+      // We're only really interested in the cookies
&lt;noinclude&gt;
+      $snoopy->setcookies();
=== Beispielvorlage ===
+      $token = unserialize($snoopy->results);
{{&amp;#98;notice|text=
+     
}}
+      /* Use the Token to login */
&lt;/noinclude&gt;
+      if ( $token['login']['result'] == 'NeedToken') {
 
+      $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword,  'lgtoken' => $token['login']['token'], 'format' => 'php');
&lt;noinclude&gt;
+      if(!$snoopy->submit($apiPath, $request_vars))
=== Beispielvorlage ===
+  $this->status->fatal("Snoopy error: {$snoopy->error}");
{{&amp;#66;austelle}}
+      $token2 = unserialize($snoopy->results);
&lt;/noinclude&gt;
+      }
</nowiki>
+      else if ( ($token['login']['result'] == 'NoName') ) {
</pre>
+        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/>";
 
+      }
'''Verarbeitung von Rückgabewert NULL'''
+           
 
+      /* If the login was successful, get the Information from the File Description */
In den Funktionen "getTemplatePage(...)" Z.130ff und "getUsersFromPages(...)" Z.144ff muss wie bei der Funktion "getContentPage(...)" für die Verwendung der Methode "getNativeData()" der Wert, der sich zuvor aus der Methode "getContent()" ergibt, auf "NULL" überprüft werden.
+      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;
}
}


**für die Mediawiki-Version '''16.0''':
<pre>
<pre>
function getTemplatePage( $template ) {
--- HttpFunctions.php 2010-06-09 05:49:34.000000000 +0200
  ...
+++ HttpFunctions_new.php 2010-11-22 17:09:33.000000000 +0100
  if ( method_exists('WikiPage', 'getContent' ) ){
@@ -758,14 +758,97 @@
    // für HAWK HHG angepasst 2016-05-17
- if ( false === curl_exec( $curlHandle ) ) {
    #$contentPage = new WikiPage( $gt );
- $code = curl_error( $curlHandle );
    #return $contentPage->getContent()->getNativeData();
-
    $contentPage = WikiPage::factory( $gt );
- if ( isset( self::$curlMessageMap[$code] ) ) {
    $contentPageContent = $contentPage->getContent( Revision::RAW )
- $this->status->fatal( self::$curlMessageMap[$code] );
    if ( $contentPageContent != NULL ){
- } else {
      return ContentHandler::getContentText( $contentPageContent );
- $this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) );
    }
- }
  } else {
- } else {
    // create Article and get the content
- $this->headerList = explode("\r\n", $this->headerText);
    $contentPage = new Article( $gt, 0 );
- }
    return $contentPage->fetchContent( 0 );
-
  }
- curl_close( $curlHandle );
}
-
 
+ /*
function getUsersFromPages( $group ) {
+ *  START:
  ...
+ *  Add code to access restricted repositories.  
  if ( method_exists('WikiPage', 'getContent' ) ){
+ *  Add the following line in the LocalSettings.php
    // für HAWK HHG angepasst 2016-05-17
+ * $wgAuthenticatedRepository = true;
    #$groupPage = new WikiPage( $gt );
+ * $wgAuthenticatedRepositoryUser = 'WikiSysop';
    #$allowedUsers = $groupPage->getContent()->getNativeData();
+ * $wgAuthenticatedRepositoryPassword = 'dev2010wer';
    $groupPage = WikiPage::factory( $gt );
+ * $wgShowAuthenticatedRepositoryError = true;
    $groupContent = $groupPage->getContent( Revision::RAW )
+ */
    if ( $groupContent != NULL ){
+
      $allowedUsers = ContentHandler::getContentText( $groupContent );
+    global $wgAuthenticatedRepository, $wgAuthenticatedRepositoryUser, $wgAuthenticatedRepositoryPassword, $wgShowAuthenticatedRepositoryError;
    }
+    $error = true;
  } else {
+    $text = '';
    // create Article and get the content
+    $token2 = array();
    $groupPage = new Article( $gt, 0 );
+
    $allowedUsers = $groupPage->fetchContent( 0 );
+ /* 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';
</pre>
+      $index = '';
 
+      $login = '';
 
+     
'''weitere Fehlerquellen'''
+      /* Get all relevat url informations */
 
+      /* URL: http://localhost/mediawiki/mediawiki-repository/index.php/File:MediawikiExampleImageFlower.jpg?action=render&uselang=en */
Abhilfe schaffen folgende Änderungen von https://www.mediawiki.org/wiki/Extension_talk:AccessControl#Selected_fixes_against_2.5:
+      $wikiPath = "";
<pre>
+      if (!preg_match('/(.*)\/index.php\/(.*)\?(.*)/', $this->url, $matches)) {
//function makeGroupArray(...)
+          echo "nicht gefunden";
//Z.94
+      } else {
$usersreadonly[] = (string)$user;   #$usersreadonly[] = $user;
+          $wikiPath = $matches[1];
//Z.97
+   /* If the url contains special characters, when these characters must be convert */
$userswrite[] = (string)$user;   #$userswrite[] = $user;
+   $title = rawurldecode($matches[2]);
 
+      }
//function getUsersFromPages(...)
+     
//Z.150
+      $apiPath = "$wikiPath/api.php";
$gt = $Title->newFromText( $group );   #$gt = $Title->makeTitle( 0, $group );
+      $indexPath = "$wikiPath/index.php";
 
+
//function fromTemplates(...)
+      $snoopy = new Snoopy;
//Z.231
+      /* Start request to get an token */
if ( $wgUser->isAnon() ) {   #if ( $wgUser->mID === 0 ) {
+      $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword, 'format' => 'php');
//Z.236
+      if(!$snoopy->submit($apiPath, $request_vars))
if ( in_array( 'sysop', $wgUser->getGroups(), true) ) {    #if ( in_array( 'sysop', $wgUser->mGroups, true) ) {
+      $this->status->fatal("Snoopy error: {$snoopy->error}");
//Z.244
+     
if ( ! in_array( $wgUser->getName(), $users[0], true) ) {   #if ( ! in_array( $wgUser->mName, $users[0], true) ) {
+      // We're only really interested in the cookies
//Z.255
+      $snoopy->setcookies();
if ( ! in_array( $wgUser->getName(), $users[1], true) ) {    #if ( ! in_array( $wgUser->mName, $users[1], true) ) {
+      $token = unserialize($snoopy->results);
 
+     
// function allRightTags(...)
+      /* Use the Token to login */
//Z.285
+      if ( $token['login']['result'] == 'NeedToken') {  
$gt = $Title->newFromText( $redirecttarget );   #$gt = $Title->makeTitle( 0, $redirecttarget );
+      $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword, 'lgtoken' => $token['login']['token'], 'format' => 'php');
 
+      if(!$snoopy->submit($apiPath, $request_vars))
//function hookUserCan(...)
$this->status->fatal("Snoopy error: {$snoopy->error}");
//Z.322
+      $token2 = unserialize($snoopy->results);
if ( $wgUser->isAnon() ) {    #if ( $wgUser->mID === 0 ) {
+      }
//Z.338
+      else if ( ($token['login']['result'] == 'NoName') ) {
if ( $wgUser->isAnon() ) {    #if ( $wgUser->mID === 0 ) {
+        wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" );
//Z.351
+        if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>";
if ( in_array( $wgUser->getName(), $users[0], true) ) {    #if ( in_array( $wgUser->mName, $users[0], true) ) {
+      }
//Z.364
+           
if ( in_array( $wgUser->getName(), $users[1], true) ) {    #if ( in_array( $wgUser->mName, $users[1], true) ) {
+      /* If the login was successful, get the Information from the File Description */
</pre>
+      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))
'''Funktion "fromTemplates"'''
+  $this->status->fatal("Snoopy error: {$snoopy->error}");
 
+      $this->content = $snoopy->results;
Bei der Funktion "fromTemplates($string)" bei Z.219ff hat möglicherweise die Variable $rights den Wert NULL, weil sie die verschachtelteten Funktionen "allRightTags( getContentPage( 10, $templatepage) )" mit dem Namensraum 10 (ID für Templates) und mit dem Inhalt anstatt mit dem Seitentitel verwendet:
+      }
<pre>
+      else if ( ($token2['login']['result'] == 'WrongPass') or ($token2['login']['result'] == 'WrongPluginPass') or ($token2['login']['result'] == 'EmptyPass') ) {
} elseif ( ctype_alnum( substr( $templatepage, 0, 1 ) )) {
+        wfDebug( __METHOD__ . ": Wrong or no Password for wgAuthenticatedRepositoryPassword in the LocalSetting." );
  // für HAWK HHG angepasst 2016-05-17
+        if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no Password for <i>wgAuthenticatedRepositoryPassword</i> in the LocalSetting.<br/>";
  $context = new RequestContext();
+      }
  $gt2 = $context->getTitle();
+      else if ( ($token2['login']['result'] == 'NotExists') ) {
  // The check of included template
+        wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" );
  if (strpos( $tempatepage, '|' ) > 0) {
+        if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>";
    $templatename = substr( $templatepage, 0, strpos( $templatepage, '|' ) );
+      }
    #$rights = allRightTags( getContentPage( 10, $templatename ) );
+      $this->headerList = explode("\r\n", $this->headerText);    
    $rights = allRightTags( getContentPage( $gt2->getNamespace(), $templatename ) );
+    }
  } else {
+    else
    #$rights = allRightTags( getContentPage( 10, $templatepage ) );
+    {   
    $rights = allRightTags( getContentPage( $gt2->getNamespace(), $gt2->getFullText() ) );
+ /*
  }
+ *  START: Original Code - now in a if statement
}
+ */
</pre>
+
 
if ( false === curl_exec( $curlHandle ) ) {
===== Lösungsversuche ohne Erfolg =====
$code = curl_error( $curlHandle );
 
+  
'''Funktion "getContentPage(...)"'''
if ( isset( self::$curlMessageMap[$code] ) ) {
 
+  $this->status->fatal( self::$curlMessageMap[$code] );
Fehlversuch Z. 121ff hinzufügen von "else{...}"
+  } else {
<pre>
$this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) );
if ( method_exists( 'WikiPage', 'getContent' ) ) {
+  }
$contentPage = WikiPage::factory( $gt ); #$contentPage = new WikiPage( $gt );
+  } else {
  if ( $contentPage->getContent (Revision::RAW) != NULL ) {
$this->headerList = explode("\r\n", $this->headerText);
  ...
+  }
}
+  curl_close( $curlHandle );
// für HAWK HHG nicht eingefügt 2016-05-10 wegen Endlosscript
else{
+ /*
  $context = new RequestContext();
+ *  END: Original Code - now in a if statement
  $gt2 = $context->getTitle();
+ */
  $contentArticle = new Article( $gt2, $namespace);
+  }
  if($contentArticle->getPage()->getContent() != NULL){
+ /*
  return $contentArticle->getPage()->getContent(Revision::RAW)->getNativeData()
+ *  END: Add code to access restricted repositories
  }
+ */
}
} else {
$this->parseHeader();
// create Article and get the content
$this->setStatus();
...
return $this->status;
}
}
}
class PhpHttpRequest extends HttpRequest {
</pre>
</pre>
Es wurden hauptsächlich Anpassungen gemacht, die den Text zurückgeben, sowie an der Abarbeitung von Fehlern. <br/>Für das korrekte Bearbeiten von Sonderzeichen in der url wurde rawurldecode() hinzugefügt.


==== Einrichten einer Nutzungsgruppe ====
*Die geänderte Datei "httpFunctions.php" als Sicherung für Mediawiki-Updates kopieren und speichern als "httpFunctions_sw.php".


Eine Gruppe von Usern, die alleine Zugang auf bestimmte Seiten haben soll, wird z. b. beim Repositorium im Namensrauam "ACCESS" wie unten eingerichtet.
*Die Erweiterung "Snoopy-1.2.4" von "http://sourceforge.net/projects/snoopy/" herunterladen, zip-Dateien auspacken und die Erweiterung in das Verzeichnis "extensions" des SalzWikis bzw. Saltwikis kopieren.


:Speichern der Liste auf der Seite Access:SIP
*Das Modul "curl" muss beim Apache-Webserver aktiviert sein; dazu kommentiert man in der Datei "D:\xampp\php\php.ini" die folgende Zeile ein:
<nowiki><accesscontrol>Access:SIP</accesscontrol></nowiki># Schutz der eigenen Seite
<pre>extension=php_curl.dll </pre>
*Hschwarz                                                # einfache Liste der User
Den Apache-Dienst über das XAMPP-Control-Panel neu starten, damit die Änderungen wirksam werden.
*HJuling
*MSteiger
*SLaue
*SBrueggerhoff
*Testuser


=== Approved_Revs ===
*Der Zugriff auf das Repositorium wird gesperrt durch folgenden Eintrag in der Datei "LocalSettings.php" des Repositoriums:
<pre>$wgGroupPermissions['*']['read'] = false;</pre>


Mit dieser Erweiterung können Revisionen (Versionen einer SalzWiki-Seite) bestätigt oder abgelehnt werden.
*Um den Zugriff auf das geschützte Repositorium durchführen zu können, ist folgende Konfiguration der Datei "LocalSettings.php" des Salzwikis bzw. Saltwikis vorzunehmen:
<pre>
$wgAuthenticatedRepository = true;
$wgAuthenticatedRepositoryUser = 'WikiSysop';
$wgAuthenticatedRepositoryPassword = 'xxx';
$wgShowAuthenticatedRepositoryError = false;
</pre>
$wgAuthenticatedRepository - aktiviert den Zugriff auf ein gesichertes Repository. Wenn dies nicht notwendig ist, bitte abstellen, da die Funktion zusätzliche Abfragen schickt, was die Zugriffe bei hoher Last verlangsamen kann.
<br>$wgShowAuthenticatedRepositoryError - Gibt Fehlermeldungen in die Log Dateien. Für den Live Betrieb bitte abstellen.


'''Installation der Erweiterung "Approved_Revs"'''
=== Vorlagen  ===


* Die Erweiterung wird mit der Version 0.7.0 REL1.23 2015-06-16T21:01:12 513cff5 heruntergeladen und nach dem Extrahieren in das Extensions-Verzeichnis des jeweiligen Wikis kopiert.
Vorlagen = Templates finden sich beispielhaft auf der Seite [[Vorlagen]] dargestellt.  


* Es muss bei einem neuen Wiki eine Datenbank-Tabelle mit dem Präfix "sw_" (SalzWiki, SaltWiki) bzw. "sr_" (Repository) und dem Namen "approved_revs" angelegt werden. Hierzu gibt es zwei Möglichkeiten:
Die einzelnen Vorlagen sind im Namensraum "Vorlage" bzw. "Template" zu finden. Für jede Vorlage ist eine eigene Wiki-Seite zu erstellen, um diese Vorlage dann im Wiki mit <nowiki>{{Vorlagenname}}</nowiki> verwenden zu können.
**Das Skript "update.php" von "MediaWiki's/maintenance" benutzen oder
Die Vorlage ist anschließend auf der Seite "Vorlagen" beispielhaft aufzuführen.
**Mittels "phpMyAdmin" in der Datenbank die Tabelle mit den beiden SQL-Befehlen, die in der Datei "ApprovedRevs.sql" der Erweiterung zu finden sind, erstellen.
Die vorhandene Vorlage "Languages" wird ersetzt durch eine eigene Vorlage.


* Konfiguration von den Approved_Revs in der LocalSettings.php
Für Vorlagen mit Beispieltexten unter Verwendung des Vorlagennamens im "noinclude"-Bereich siehe weiter unten bei [[#Code-Probleme und deren Lösungen|Code-Probleme und deren Lösungen]], Abschnitt "Timeout durch Template-Name im Template-Text" – betrifft insbesondere die Erweiterung "AccessControl".


<pre>// SalzWiki
*'''Vorlagen für SalzWiki'''
require_once( "$IP/extensions/ApprovedRevs/ApprovedRevs.php" );
**FreeForTranslation
*'''Vorlagen für SalzWiki und Saltwiki'''
**Infobox_Salz bzw. Infobox_Salt
**MetadatenFoto_upload (wird im Artikel Vorlagen/Templates verwendet)
*'''Vorlagen für das Repositorium'''
**MetadatenFoto_upload
**MetadatenDaten_upload
**MetadatenLiteratur_upload
**MetadatenProben_upload
**MetadatenText_upload
**Untersuchungsmethoden
*'''Lizenzvorlagen''': Eine neue Kategorie "Kategorie:Lizenzenvorlagen" erstellen mit folgenden Vorlagen:
**CC-by-nc-nd,CC-by-nc-nd/de
**CC-by-nc-sa,CC-by-nc-sa/de
**PD
**PD Help Page, PD Help Page/de, PD Help Page/fr
** GFDL,GFDL/de (nur im Repositorium)


$wgGroupPermissions['Redakteur']['approverevisions'] = true;
Alle anderen Vorlagen wurden beim Einbinden der Hilfeseiten bzw. Extensions eingestellt.
$wgGroupPermissions['sysop']['approverevisions'] = true;
$wgGroupPermissions['autor']['viewlinktolatest'] = true;
$wgGroupPermissions['*']['viewlinktolatest'] = false;
$wgGroupPermissions['sysop']['viewlinktolatest'] = true;
</pre>
<pre>// SaltWiki
require_once( "$IP/extensions/ApprovedRevs/ApprovedRevs.php" );


$wgGroupPermissions['Editor']['approverevisions'] = true;
=== Lizenzen-Auswahl im Upload-Formular ===
$wgGroupPermissions['sysop']['approverevisions'] = true;
$wgGroupPermissions['autor']['viewlinktolatest'] = true;
$wgGroupPermissions['*']['viewlinktolatest'] = false;
$wgGroupPermissions['sysop']['viewlinktolatest'] = true;
</pre>
<pre>// Repository
require_once( "$IP/extensions/ApprovedRevs/ApprovedRevs.php" );


$wgGroupPermissions['Editor']['approverevisions'] = true;
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:
$wgGroupPermissions['sysop']['approverevisions'] = true;
#$wgGroupPermissions['autor']['viewlinktolatest'] = true;
$wgGroupPermissions['*']['viewlinktolatest'] = false;
$wgGroupPermissions['sysop']['viewlinktolatest'] = true;
</pre>


[[Datei:Approved _Revs-1.jpg|thumb|800px|center]]
<pre>
*Free licenses:           <!-- Lizenztyp -->
**PD|PD: public domain    <!--einzelne Lizenz-->
**GNU|GFDL: GNU Free Documentation License


'''Funktionsweise'''
*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)
</pre>


Man kann Revisionen bestätigen - oder wieder ablehnen. Die bestätigte Version wird allen Usern angezeigt.
=== Editor (JavaScript) ===
*Aktivierung von Approved_Revs, z.B. alle Autoren können Seiten als geprüft markieren
<pre>$wgGroupPermissions['autor']['approverevisions'] = true;</pre>


*Für alle wird der Approved_Revs Link deaktiviert.
'''Achtung: Alle üblichen Editoren zur Bearbeitung von Seiteninhalten funktionieren nur mit JavaScript.''' Dies gilt auch für die Erweiterung [[#WikiEditor_.28JavaScript.29|WikiEditor]].
<pre>$wgGroupPermissions['*']['viewlinktolatest'] = false;</pre>


*Für alle Autoren werden diese wieder eingeblendet
==== Standard-Editor (Wiki-Code, JS) ====
<pre>$wgGroupPermissions['autor']['viewlinktolatest'] = true;
$wgGroupPermissions['sysops']['viewlinktolatest'] = true;</pre>


Diejenigen, die das Recht "viewlinktolatest" haben, sehen einen Link unter dem Titel des Artikels, um zur aktuellsten Version zu
'''Achtung: Funktioniert nur bei Browsern mit aktiviertem JavaScript und muss in den 3 nachfolgend genannten Dateien und dem Grafiken-Verzeichnis nach jedem MediaWiki-Update auf Vorhandensein und Änderungen überprüft werden!'''
kommen.<br>
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!
Folgende Dateien werden  vom Standard-Editor verwendet:
* "/includes/EditPage.php"
* Symbole/Grafiken: "skins/common/images/..."
* "/languages/i18n/..."


'''Ausblenden von der History''' (wurde nicht aktiviert)
Vorhanden sind folgende Funktionen:
* bold, italic
* link (wiki), ext. link
* headline size 2
* file embedded, media
* nowiki, signatur
* horizontal line


Wenn nur die Autoren, Redakteure und Admins die History sehen sollen ist Folgendes in der Datei "LocalSettings.php" zu ergänzen:
Das Schaltflächen-Symbol für Weiterleitungen ist bei MW 1.23 im Gegensatz zu MW 1.16 nicht vorhanden und wird für die Salz-Wikis auch nicht mehr durch Anpassungen hinzugefügt.
<pre>
## 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;
}
</pre>


=== Bibliography  ===
Das Schaltflächen-Symbol für mathematische Formeln wird von der Erweiterung "Math" hinzugefügt, u. a. in folgenden Dateien:
* "/extensions/Math/Math.hooks.php" für die Modul-Aktivierung von "math.editbuttons"
* "/extensions/Math/modules/ext.math.editbuttons.js"
* "/extensions/Math/i18n/de.json" für Texte zur Schaltfläche


Die Extension Bibliography wurde durch die Erweiterung BibManager ersetzt. Siehe hierzu unter "Erweiterungen -  BibManager".
Ergänzt werden sollen folgende Funktionen (siehe "Anpassungen" weiter unten):
 
* Zeilenumbruch
 
* Durchgestrichen
=== BibManager===
* Hoch gestellt
* Tief gestellt
* Zitat
* Fußnoten-Verweis
* Versteckter Kommentar
* Tabelle einfügen


Die Erweiterung "BibManager" wird zur Erstellung und Verwaltung der Literaturhinweise bzw. zum Einbinden der Zitate in Artikel benutzt und verwendet den Namensraum "NS_CITATION" ("Cit") mit der Nummer 800 sowie "NS_CITATION_TALK" ("Cit_talk") mit der Nummer 801.
===== Anpassungen =====


Die Erweiterung besteht aus
Für Anpassungen siehe auch https://www.mediawiki.org/wiki/Manual:Custom_edit_buttons#Classic_edit_toolbar
* der Grunderweiterung "BibManager"
* und den von "HalloWelt" für die HAWK HHG programmierten Zusatzerweiterungen
** [[#SaltWiki_2|"SaltWiki"]]
** [[#SaltWikiUpload|"SaltWikiUpload"]]


Mit der Erweiterung [[#SaltWiki_2|"SaltWiki"]] können im SalzWiki/SaltWiki/Repository weitere Felder, die nicht im original "BibTeX" spezifiziert sind, wie DOI und Fulltext, verwendet werden.
* neues Unterverzeichnis "/editor_default_sw/" für Grafiken der Schaltflächen
* neue Einträge in den Sprachdateien im Verzeichnis "/languages/i18n/"
* Code-Anpassungen in der Core-Datei "EditPage.php"


Die Erweiterung [[#SaltWikiUpload|"SaltWikiUpload"]] soll im Repositorium das Hochladen von Dateien mit BibTex-Angaben erleichtern, doch wird bei MW1.23LTS nur das MW-Standard-Upload-Formular angezeigt.
Es wird ein neues Unterverzeichnis "editor_default_sw" im Verzeichnis "/skins/common/images/" erstellt, da vom Wiki-Code für den Editor aus diesem Verzeichnis die Grafiken geholt werden. In das neu erstellte Verzeichnis werden folgende Grafiken aus der älteren Wiki-Installation oder von https://commons.wikimedia.org/wiki/Mediawiki_edit_toolbar kopiert und gespeichert:
* "Button_Bibliogryphy.png" umbenennen zu "Button_bibliography.png"
* "Button_blockquote.png"
* "Button_enter.png"
* "Button_hide_comment.png" umbenennen zu "Button_hidden_comment.png"
* "Button_insert_table.png"
* "Button_lower_letter.png" umbennen zu "Button_sub_letter.png"
* "Button_redirect.png"
* "Button_reflink.png"
* <del>"Button_small.png"</del>
* "Button_strike.png"
* "Button_upper_letter.png" umbenennen zu "Button_sup_letter.png"


==== Versionen ====


Für MediaWiki 1.23 LTS wird wegen diverser Probleme bei der BibManager-Version v1.1.0 die Version 1.23 REL1.26 2015-11-17T01:01:50 d824ce8 installiert.
de.json Z.626 unter "hr_tip" wie folgt ergänzen und anschließend eine Kopie der Datei als "de_SW.json" speichern:
* BibManager
<pre>
** v1.23.0 master 2016-01-15T07:01:22 951b12f
"enter_tip": "Zeilenumbruch",
** v1.23.0 REL1.26 2015-11-17T01:01:50 d824ce8 verwenden bei MW1.23LTS
"strike_sample": "durchgestrichener Text",
** v1.1.0 REL1.23 2015-06-16T21:02:02 6218f71 (angeboten für MW 1.22+)
"strike_tip": "Durchgestrichen",
** v1 (verwendet bei MW1.16)
"sup_letter_sample": "hoch gestellter Text",
* SaltWiki
"sup_letter_tip": "Hoch gestellt",
** SaltWiki mit Datum 2012-05-25 verwenden bei MW1.23LTS
"sub_letter_sample": "tief gestellter Text",
** SaltWiki mit Datum 2012-01-20 (verwendet bei MW1.16)
"sub_letter_tip": "Tief gestellt",
* SaltWikiUpload
"blockquote_sample": "Zitat",
** SaltWikiUpload mit Datum 2012-01-25 verwenden bei MW1.23LTS Repository
"blockquote_tip": "Zitierter Text",
** SaltWikiUpload mit Datum 2012-01-11 (verwendet bei MW1.16 Repository)
"reflink_sample": "Fußnoten-Text",
"reflink_tip": "Fußnoten-Verweis",
"hidden_comment_sample": "Kommentar",
"hidden_comment_tip": "Versteckter Kommentar",
"insert_table_sample": "! Kopf1\n! Kopf2\n! Kopf3\n|-\n| Reihe1 Spalte1\n| Reihe1 Spalte2\n| Reihe1 Spalte3\n|-\n| Reihe2 Spalte1\n| Reihe2 Spalte2\n| Reihe2 Spalte3",
"insert_table_tip": "Tabelle einfügen (Tabellenkopf, 3 Spalten, 2 Reihen)",
"redirect_sample": "Seitenname",
"redirect_tip": "Weiterleitung",
"bibliography_sample": "Nachname:2017",
"bibliography_tip": "Literaturzitat einfügen",
</pre>


==== Installation ====
en.json Z.593 unter "hr_tip" wie folgt ergänzen und anschließend eine Kopie derDatei als "en_SW.json" speichern:
 
Bei der Installation werden die Erweiterungen in folgende Ordner kopiert:
* "\extensions\BibManager\"
* "\extensions\SaltWiki\"
* "\extensions\SaltWikiUpload\"
 
In der Datei "LocalSettings.php" wird Folgendes eingefügt:
<pre>
<pre>
## Namensräume
"enter_tip": "Line break",
...
"strike_sample": "Strike-through text",
// für Erweiterung BibManager
"strike_tip": "Strike",
define("NS_CITATION", 800);
"sup_letter_sample": "Superscript text",
define("NS_CITATION_TALK", 801);
"sup_letter_tip": "Superscript",
$wgExtraNamespaces[NS_CITATION] = 'Cit';
"sub_letter_sample": "Subscript text",
$wgExtraNamespaces[NS_CITATION_TALK] = 'Cit_talk';
"sub_letter_tip": "Subscript",
...
"blockquote_sample": "Block quote",
## EXTENSIONS
"blockquote_tip": "Quoted text",
...
"reflink_sample": "Footnote text",
require_once('extensions/BibManager/BibManager.php');
"reflink_tip": "footnote reference",
require_once('extensions/SaltWiki/SaltWiki.php' );
"hidden_comment_sample": "Comment",
  #nur im Repositorium:
"hidden_comment_tip": "Hidden comment",
  require_once('extensions/SaltWikiUpload/SaltWikiUpload.php' );
"insert_table_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",
  ...
"insert_table_tip": "Insert table (table head, 3 columns, 2 rows)",
## Einstellungen
"redirect_sample": "Page name",
...
"redirect_tip": "Redirect",
## Erweiterung BibManager
"bibliography_sample": "Surname:2017",
# Namensraum berücksichtigen
"bibliography_tip": "Insert literature blockquote",
$wgBibManagerCitationArticleNamespace = NS_CITATION;
</pre>
# BibManager-Anpassung an die gewünschte Zitierweise
 
$wgBibManagerCitationFormats = array (
 
   '-' => '%author%: %title%, %year% %url%, %doi%.',
Nachfolgenden Code in der Datei "/includes/EditPage.php" bei der Array-Variablen "$Toolarray" (ab Zeile 3385) am Ende einfügen (Z. 3475); hierbei das erste Komma nicht vergessen.
   'article' => '%author% (%year%): %title%. <em>%journal%</em>, <b>%volume%</b> (%number%), %pages%, %url%, %doi%.',
<pre>
   'book' => '%editor% %author% (%year%): <em>%title%, %edition%, %publisher%, %address%, %pages%</em>, %url%., %doi%',
  ,
   'booklet' => '%title% %url%, %doi%.',
  array(
   'conference' => '%author% (%year%): %title%. %booktitle% %url%, %doi%.',
  'image=> "editor_default_sw/Button_enter.png",
   'inbook' => '%author% (%year%): <em>%title%. In: %editor%: %edition%, %publisher%, %address%, %pages%</em> %url%, %doi%.',
  'id'    => 'mw-editbutton-enter',
   'incollection' => '%author% (%year%): %title%. In: %editor%: %booktitle%, <em>%publisher%</em>, %pages%, %url%, %doi%.',
  'open'  => '<br />',
   'inproceedings' => '%author% (%year%): %title%. In: %editor%: %booktitle%,<em>%publisher%</em>, %pages%, %url%, %doi%.',
  'close'  => '',
   'manual' => '%title% %url%, %doi%.',
  'sample' => '',
   'mastersthesis' => '%author% (%year%): %title%, %type%, %school%, %address%, %url%, %doi%.',
  'tip'    => wfMessage( 'enter_tip' )->text()
   'misc' => '%author% (%year%): %title%, %howpublished%, %pages% %url%, %doi%.',
),
   'phdthesis' => '%author% (%year%): %title%. %type%, %school%, %url%, %doi%.',
array(
   'proceedings' => '%editor% (%year%): %title%,<em> %publisher%</em>, %url%, %doi%.',
   'image'  => "editor_default_sw/Button_strike.png",
   'techreport' => '%author% (%year%): %title%. %institution% %url%, %doi%.',
  'id'     => 'mw-editbutton-strike',
   'unpublished' => '%author% (%year%): %title%. %note%, %url%, %doi%.'
   'open'   => '<s>',
);
  'close'  => '</s>',
</pre>
  'sample' => wfMessage( 'strike_sample' )->text(),
 
  'tip'    => wfMessage( 'strike_tip' )->text()
===== BibManager v1.23 REL1_26 und v1.23 master =====
),
 
array(
* Fehler bei "Edit" mit Fehlermeldung zu bereits vorhandenem Schlüssel
  'image'  => "editor_default_sw/Button_sup_letter.png",
* Fehler bei "Delete" wegen fehlender Datensatzkennung
  'id'    => 'mw-editbutton-sup-letter',
* Bei "Verwalten" fehlen rechts die Icons für "Edit" und "Delete" sowie die Trennung zwischen beiden Texten: css-Datei fehlt im head-Bereich
   'open'   => '<sup>',
* In der Datei "\extensions\BibManager\includes\BibManagerHooks.php" ist in der Funktion "getIcons(...)" der Pfad 2-mal hart-codiert statt mit einer Variablen angegeben:<pre>... htmlspecialchars( $wgScriptPath . '/extensions/BibManager/resources/images/[pencil.png|book.png]' );</pre>
  'close'  => '</sup>',
 
   'sample' => wfMessage( 'sup_letter_sample' )->text(),
===== BibManager v1.1.0 REL1_23 =====
   'tip'   => wfMessage( 'sup_letter_tip' )->text()
 
),
* Fehler bei "Create", "Edit" und "Delete" wegen fehlender Datensatzkennung.
array(
* In der Datei "\extensions\BibManager\includes\BibManagerHooks.php" ist in der Funktion "onBeforePageDisplay(...)" der Pfad zur Erweiterung 3-mal hart-codiert statt mit einer Variablen angegeben: <pre>... htmlspecialchars( $wgScriptPath . '/extensions/BibManager/client/[BibManagerCommon.css|BibManagerEdit.js|BibManagerList.js]' );</pre>
  'image'  => "editor_default_sw/Button_sub_letter.png",
*Für ebenfalls hart-codierte Pfadangaben in der Funktion "getIcons(...)" siehe [[#BibManager 1.23 REL1_26 und 1.23 master]]
  'id'    => 'mw-editbutton-sub-letter',
 
   'open'   => '<sub>',
==== Spezialseiten-Gruppe ====
  'close'  => '</sub>',
 
   'sample' => wfMessage( 'sub_letter_sample' )->text(),
Verfügbarkeit in Abhängigkeit vom Status
   'tip'   => wfMessage( 'sub_letter_tip' )->text()
* Ohne Anmeldung sollen nur die Verweise zu "Bibliographien anzeigen: Autoren" und "Bibliographien verwalten" sichtbar sein. Bei "Bibliographien verwalten" sind dann die Funktionen "Edit" und "Delete" nicht vorhanden, sondern nur "Export".
),
* Nach Anmeldung sind auch die Funktionen "Bibliographieeintrag anlegen" und "Bibliographien importieren" verfügbar.
array(
 
  'image'  => "editor_default/Button_redirect.png",
Von den zu ändernden Dateien bzw. Verzeichnissen ist nach den Anpassungen jeweils eine Kopie mit dem Suffix "SW" im Dateinamen bzw. Verzeichnisnamen zu speichern, um nach Updates von MediaWiki oder Erweiterungen die Änderungen übernehmen zu können.
  'id'    => 'mw-editbutton-redirect',
 
  'open'   => "#REDIRECT[[",
Es sollte eine Datei "\i18n\qqq.json" mit folgendem Code erstellt werden:
   'close' => ']]',
<pre>
   'sample' => wfMessage( 'redirect_sample' )->text(),
{
  'tip'    => wfMessage( 'redirect_tip' )->text(),
  "@metadata": {
   'key'   => 'F'
    "authors": []
),
  },
array(
   "bibmanager": "BibManager",
  'image'  => "editor_default_sw/Button_reflink.png",
   "bibmanager-desc": "{{desc}}"
   'id'     => 'mw-editbutton-reflink',
}
   'open'   => '<ref>',
  'close'  => '</ref>',
   'sample' => wfMessage( 'reflink_sample' )->text(),
   'tip'   => wfMessage( 'reflink_tip' )->text()
),
array(
  'image'  => "editor_default_sw/Button_blockquote.png",
  'id'    => 'mw-editbutton-blockquote',
  'open'  => '<blockquote>'."\n",
  'close'  => "\n".'</blockquote>',
  'sample' => wfMessage( 'blockquote_sample' )->text(),
  'tip'    => wfMessage( 'blockquote_tip' )->text()
),
array(
  'image'  => "editor_default_sw/Button_Bibliography.png",
  'id'    => 'mw-editbutton-bibliography',
  'open'  => '<bib id="',
  'close'  => '"/>',
  'sample' => wfMessage( 'bibliography_sample' )->text(),
  'tip'    => wfMessage( 'bibliography_tip' )->text()
),
array(
  'image'  => "editor_default_sw/Button_hidden_comment.png",
  'id'    => 'mw-editbutton-hidden-comment',
  'open'  => '<!-- ',
  'close'  => ' -->',
  'sample' => wfMessage( 'hidden_comment_sample' )->text(),
  'tip'    => wfMessage( 'hidden_comment_tip' )->text()
),
array(
  'image'  => "editor_default_sw/Button_insert_table.png",
  'id'    => 'mw-editbutton-insert-table',
  'open'  => '{| class="wikitable"'."\n".'|-'."\n",
  'close'  => "\n".'|}',
   'sample' => wfMessage( 'insert_table_sample' )->text(),
   'tip'    => wfMessage( 'insert_table_tip' )->text()
)
</pre>
</pre>


===== BibManager v1.23.0 REL1.26 Datei-Anpassungen =====
Die Texte für "tip" und "sample" befinden sich in den json-Sprachdateien im Verzeichnis "/includes/i18n/".


* \i18n\ => \i18nSW\
ACHTUNG: Nach jedem mediawiki-Update muss überprüft werden, ob die vorgenommene Änderung in der Datei "EditPage.php" noch existiert und funktioniert. Deshalb ist im Verzeichnis "/includes/" von der Datei eine Kopie namens "EditPage_SW.php" zu speichern.
** de.json
** de-formal.json
** en.json
** qqq.json
* \includes\
** BibManagerHooks.php => BibManagerHooksSW.php
** BibManagerPagerList.php =>BibManagerPagerListSW.php
* \includes\specials\
** SpecialBibManagerDelete.php => SpecialBibManagerDeleteSW.php
** SpecialBibManagerEdit.php => SpecialBibManagerEditSW.php
* \resources\ext.bibManager.css =ext.bibManagerSW.css>


===== BibManager v1.1.0 REL1.23 Datei-Anpassungen =====
==== Erweiterung WikiEditor oder alter Standard-Editor ??? ====


* BibManager.php => BibManagerSW.php
Beispiel für einzufügenden HTML-Kommentar in Datei ??? ("ext.wikiEditor.js"? oder "ext.wikiEditor.toolbar.js"? im Verzeichnis "/extensions/WikiEditor/modules/"?):
* <del>BibManager.alias.php => BibManager.aliasSW.php</del>
* \i18n\ => \i18nSW\
** de.json
** de-formal.json
** en.json
** qqq.json
* \specialpages\ => \specialpagesSW\
** BibManagerCreate_body.php
** BibManagerDelete_body.php
** BibManagerEdit_body.php
** BibManagerExport_body.php
** BibManagerImport_body.php
** BibManagerList_body.php
** BibManagerListAuthors_body.php
 
Die Spezialseiten-Gruppe "BibManager" und die darin angezeigten Spezialseiten werden in der Datei "\extensions\BibManager\i18n\[Sprache].json" festgelegt; siehe https://www.mediawiki.org/wiki/Manual:Special_pages#The_localisation_file. Die Einbindung funktioniert mit MW1.23 fehlerhaft: Entweder werden die Seiten nicht angezeigt (Schlüssel mit Großbuchstaben wie bisher) oder werden die Seiten nicht gefunden (Schlüssel insgesamt in Kleinbuchstaben).
 
In den Zeilen 5 und 13 der json-Sprachdateien wäre der Array-Schlüssel von "BibManager" in Kleinbuchstaben zu ändern:
<pre>
<pre>
...
if(mw.toolbar){
  "specialpages-group-bibmanager": "BibManager",
  mw.toolbar.addButton({
...
    imageFile: '//upload.wikimedia.org/wikipedia/en/3/34/Button_hide_comment.png',
   "bibmanager": "BibManager",
    speedTip: 'Comment visible only for editors',
...
    tagOpen: '<!-- ',
    tagClose: ' -->',
    sampleText: 'Insert comment here',
    imageId: 'button-comment'
   });
}
</pre>
</pre>


Die Variable $wgSpecialPageGroups in der Datei "BibManager.php" gilt als "deprecated" seit MW 1.21 (https://gerrit.wikimedia.org/r/#/c/220819/3) und kann auskommentiert werden, wenn im Verzeichnis "\specialpages\" in den jeweiligen Dateien "BibManager..._body.php" am Ende der Klasse folgende Funktion eingefügt wird (https://www.mediawiki.org/wiki/Manual:Special_pages => Special page group):
=== Namensräume ===
<pre>
  protected function getGroupName(){
    return 'bibmanager';
  }
</pre>


'''Systemnachrichten für Gruppe prüfen'''
==== Übersicht der vorhandenen Namensräume ====


Ob die Gruppe "BibManager" in den Systemnachrichten auftaucht, lässt sich durch Aufruf der MediaWiki-Systemnachrichten bei den Spezialseiten überprüfen, indem als Präfixfilter "Specialpages-group" angegeben wird. Dann sollte bei den Ergebnissen der Name "specialpages-group-bibmanager" mit dem Text "BibManager" aufgelistet werden.
Eine Übersicht sowohl der MediaWiki-Namensräume als auch der selbst erstellten Namensräume wird aufgelistet durch Eingabe folgender Adresse:
<br/>localhost/[wikiname]/api.php?action=query&meta=siteinfo&siprop=namespaces


'''Einschränkungen für Darstellung in der Spezialseiten-Gruppe überprüfen'''
==== Einrichten von Namensräumen  ====


Wenn die BibManager-Spezialseiten nicht angezeigt werden, folgendes prüfen:
Es werden folgende Namensräume eingerichtet:
* In den Dateien "BibManager.php" oder "LocalSettings.php" die Gruppenberechtigung ändern:
# "ADM" bzw. "Access": "ADM" bei Salzwiki und Saltwiki, "Access" bei Repository) für Dokumente der Administratoren, den nur diese bearbeiten können,
** Bibliographien anlegen: $wgGroupPermissions['sysop']['bibmanagercreate'] => $wgGroupPermissions['*']['bibmanagercreate']
# "Bearbeitung": nur bei Saltwiki zum erstmaligen Erstellen von Dokumenten, die kein Leser sehen soll
** Bibliographien importieren: $wgGroupPermissions['sysop']['bibmanageredit'] => $wgGroupPermissions['*']['bibmanageredit']
# "Literature": für die Bibliographie - Achtung: Bei der Zuweisung in $wgExtraNamespaces ist ein Leerzeichen vor "_talk"!
* Beim Klassen-Konstruktor "parent::__construct('...', '...')" den 2. Parameter (Kleinbuchstaben) für $restriction weggelassen in folgenden Dateien:  
# "SalzeImPorenraum": nur bei Repository
** "\specialpages\BibManagerCreate_body.php" in Zeile 6
# "RBKLuebeck": nur bei Repository - Achtung: Ursprüngliche Konstante "RBK-Luebeck" mit Bindestrich erzeugt bei MW 1.23 eine Fehlermeldung und Bindestrich ist auch nicht bei $wgExtraNamespaces enthalten
** "\specialpages\BibManagerImport_body.php" in Zeile 6


==== Fehler korrigieren ====
Leerzeichen und Bindestriche sind für selbst definierte Namensräume (custom namespaces) nicht zulässig, siehe https://www.mediawiki.org/wiki/Manual:Using_custom_namespaces


===== Fehler beim Speichern nach Bearbeitung =====
Salzwiki
 
Der bearbeitete Datensatz kann nicht gespeichert werden, weil die Prüfung des Bearbeitungsmodus fehlerhaft ist und der Datensatz wie ein Neueintrag auf einen bereits vorhandenen Zitatschlüssel überprüft wird.
 
In der Datei "\extensions\BibManager\includes\specials\SpecialBibManagerEdit.php" muss in der Funktion "execute(...)" in Zeile 69 "bm_edit_mode" zu "wpbm_edit_mode" geändert werden:
<pre>
<pre>
$editMode = $wgRequest->getBool( 'wpbm_edit_mode' ); #$editMode = $wgRequest->getBool( 'bm_edit_mode' ); für HAWK HHG geändert 2016-02-16
# Einrichten der Namensräume 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 Helpnamespace
$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;
</pre>
</pre>


Anschließend ist eine Kopie der Datei mit dem Suffix "SW" zu speichern.
Saltwiki
 
===== Fehler bei Löschvorgang =====
 
Der Datensatz kann wegen fehlender Angaben nach der Löschbestätigung nicht gelöscht werden:
* Element "bm_bibtexCitation" existiert nicht im Formular, sondern "wpbm_bibtexCitation"
* Element "bm_delete" existiert nicht im Formular, sondern "wpbm_delete"
* $deleteSubmit ist immer falsch, weil String (Zeichenkette) mit Boolean (Wahrheitswert) verglichen wird
 
In der Datei "\extensions\BibManager\includes\specials\SpecialBibManagerDelete.php" folgende Anpassungen vornehmen:
* Bei Array "$formDescriptor" einen Namen für das Formularfeld "bm_delete" vorgeben
* Bei Array "$formDescriptor" einen Namen für das Formularfeld "bm_bibtexCitation" vorgeben
* In Funktion "formSubmit(...)" bei der Prüfung von "$formdata['bm_delete']" Umwandlung von Boolean in String einfügen
 
<pre>
<pre>
//Z.59ff
# Einrichten der Namensräume Adm, Bearbeitung und Literature
$formDescriptor = array (
define("NS_ADM", 100);
  'bm_delete' = array (
define("NS_ADM_TALK", 101);
    'class' => 'HTMLHiddenField';
define("NS_Bearbeitung", 120);
    'default' => true,
define("NS_Bearbeitung_TALK", 121);
    'name' => 'bm_delete', // für HAWK HHG eingefügt 2016-02-09
define("NS_Literature", 110);
  )
define("NS_Literature_TALK", 111);
  'bm_bibtexCitation' = array (
# Create namespaces
    'class' => 'HTMLHiddenField';
$wgExtraNamespaces = array(
    'default' => $citation,
NS_ADM => 'Adm',
    'name' => 'bm_bibtexCitation', // für HAWK HHG eingefügt 2016-02-09
NS_ADM_TALK => 'Adm_talk',
  )
NS_Bearbeitung => 'Bearbeitung',
NS_Bearbeitung_TALK => 'Bearbeitung_talk',
NS_Literature => 'Literature',
NS_Literature_TALK => 'Literature _talk'
);
);
//Z.89
 
if ( empty( $formData['bm_delete'] ) || $formData['bm_delete'] !== (string)true ) // für HAWK HHG ergänzt mit (string) 2016-02-09
$wgNamespacesWithSubpages[NS_HELP] = true;          #subpages enabled for the Helpnamespace
$wgNamespaceProtection[NS_ADM] = array( 'editadm' ); #permission "editadmin" required to edit the Adm namespace
$wgNamespacesWithSubpages[NS_ADM] = true;            #subpages enabled for the ADM namespace
$wgGroupPermissions['Sysadmin']['editadm'] = true;
</pre>
</pre>


===== Falscher Text nach Löschvorgang =====
Repository
 
Nachdem ein Eintrag gelöscht wurde, erscheint "Ihre Daten wurden erfolgreich gespeichert!" (auch schon in MW1.16).
 
In der Datei "\extensions\BibManager\includes\specials\SpecialBibManagerDelete.php" in der Funktion "formSubmit(...)" wird in Z.94 fälschlicherweise "bm_success_save-complete" verwendet. Da es kein Text-Element "bm_success_delete" gibt, muss es in den Dateien "\i18n\[en|de|de-formal].json" für "en", "de" und "de-formal" in der Zeile nach "bm_success_save-complete" ergänzt werden, damit es in der Datei "BibManagerDelete_body.php" verwendet werden kann.
 
Nach den Anpassungen ist die Delete-Datei als Kopie mit dem Suffix "SW" im Verzeichnis "specials" und das Verzeichnis "i18n" als Kopie "i18nSW" zu speichern.
 
<pre>
<pre>
//de.json Z.135f
# Einrichten der Namensräume Adm, Bearbeitung und Literature
  "bm_success_save-complete": "<div class=\"successbox\"><strong>Deine Daten wurden erfolgreich gespeichert!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
define("NS_Access", 100);
  "bm_success_delete": "<div class=\"successbox\"><strong>Die Daten wurden erfolgreich gelöscht!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
define("NS_Access_TALK", 101);
 
#define("NS_Bearbeitung", 120);
//de-formal.json Z.135f
#define("NS_Bearbeitung_TALK", 121);
  "bm_success_save-complete": "<div class=\"successbox\"><strong>Ihre Daten wurden erfolgreich gespeichert!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
define("NS_Literature", 110);
  "bm_success_delete": "<div class=\"successbox\"><strong>Die Daten wurden erfolgreich gelöscht!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
define("NS_Literature_TALK", 111);
# Create namespaces
$wgExtraNamespaces = array(
NS_Access => 'Access',
NS_Access_TALK => 'Access_talk',
#NS_Bearbeitung => 'Bearbeitung',
#NS_Bearbeitung_TALK => 'Bearbeitung_talk',
NS_Literature => 'Literature',
NS_Literature_TALK => 'Literature _talk'
);


//en.json Z.135f
##Anlegen von Namensräumen für Projekte
  "bm_success_save-complete": "<div class=\"successbox\"><strong>Your data was successfully saved!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
define('NS_SalzeImPorenraum', 1010);
  "bm_success_delete": "<div class=\"successbox\"><strong>The data were successfully deleted!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
define('NS_SalzeImPorenraum_TALK', 1011);
</pre>
$wgExtraNamespaces[NS_SalzeImPorenraum] = 'SIPP';
$wgExtraNamespaces[NS_SalzeImPorenraum_TALK] = 'SIPP_talk';
#define('NS_RBK-Luebeck', 1020); //Achtung: Bindestrich darf nicht sein und ist auch nicht bei $wgExtraNamespaces enthalten
#define('NS_RBK-Luebeck_TALK', 1021);  //Achtung: Bindestrich darf nicht sein und ist auch nicht bei $wgExtraNamespaces enthalten
define('NS_RBKLuebeck', 1021);
define('NS_RBKLuebeck_TALK', 1021);
$wgExtraNamespaces[NS_RBKLuebeck] = 'Rbkl';
$wgExtraNamespaces[NS_RBKLuebeck_TALK] = 'Rbkl_talk';


<pre>
#$wgNamespacesWithSubpages[NS_HELP] = true;            #subpages enabled for the Helpnamespace
//SpecialBibManagerDelete.php Z.92ff
#$wgNamespaceProtection[NS_ADM] = array( 'editadm' ); #permission "editadmin" required to edit the Adm namespace
// für HAWK HHG geändert zu "delete"-Text statt "save-complete" 2016-02-15
#$wgNamespacesWithSubpages[NS_ADM] = true;            #subpages enabled for the ADM namespace
if ( $result === true ) {
#$wgGroupPermissions['Sysadmin']['editadm'] = true;
  $wgOut->addHtml( wfMessage( 'bm_success_delete') ); #wfMsg( 'bm_success_save-complete') für HAWK HHG korrigiert 2016-02-08
  ...
}
</pre>
</pre>


Außerdem kann in der Datei "SpecialBibManagerDelete.php" wie in Z.94 die Funktion "wfMsg()" ersetzt werden durch "wfMessage()" in den Zeilen 24, 29, 35, 43, 54, 71.
== Extensions  ==


===== Fehler im HTML-Code korrigieren =====
Welche Erweiterungen in welcher Distribution enthalten sind, erfährt man auf der Seite https://www.mediawiki.org/wiki/Comparison_of_extensions_in_distributions


Bei der BibManager-Übesicht wird für jede Tabellenzeile ein <tr> statt eines </tr> erzeugt (auch schon in MW1.16). Im Verzeichnis "BibManager\includes\" in der Datei "bibManagerPagerList.php" in Zeile 133 den fehlenden Schrägstrich einfügen:
<pre>
  $tablerow[] = '</tr>'; // Schrägstrich für schließendes Tag eingefügt 2012-09-17 G. Werner
</pre>


===== Fehlende Icons bei Verweisen rechts für "edit" und "delete" =====
=== AccessControl  ===


In der BibManager-Übersicht sind rechts Text-Hyperlinks ohne Abstand für "edit" und "delete" anstatt Icons; es sind in folgenden Dateien Anpassungen vorzunehmen:
==== Verwendungszweck ====
* "\extensions\BibManager\includes\BibManagerHooks.php"
* "\extensions\BibManager\resources\ext.bibManager.css"
* "\extensions\BibManager\includes\BibManagerPagerList.php"


Nach den Anpassungen ist jeweils eine Kopie der Datei mit dem Suffix "SW" zu speichern.
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.


Bei "BibManagerHooks.php" ist in Funktion "onBeforePageDisplay(...)" am Anfang, vor Zeile 29 (Eindbindung der JS-Module), die Einbindung der css-Datei einzufügen:
Der Zugang auf eine Seite wird durch Eingabe einer Nutzergruppe (Beispiel: "parole") erlaubt, die vorher z.B. in "LocalSettings.php" definiert wird:
<pre>
<pre>$wgGroupPermissions['parole']['read'] = true;</pre>
  // für HAWK HHG eingefügt 2016-02-12
Damit nur Mitglieder der Gruppe "parole" Zugang zu einer Seite erhalten, wird auf der jeweiligen Seite oben folgende Zeile eingegeben (siehe dazu auch http://www.mediawiki.org/wiki/Extension:AccessControl):
  $out->addModuleStyles( 'ext.bibManager.styles' );
<pre><accesscontrol>parole</accesscontrol></pre>
</pre>


Bei "ext.bibManager.css" in Zeile 96 einen Kommentar einfügen und zwischen "width: 16px;" und "text-indent: 9999px;", Z.99f, eine neue Zeile "height: 15px;" einfügen
==== AccessControl v2.4 fehlerhaft bei MW 1.23 ====
<pre>
/* für HAWK HHG wg. nicht sichtbarer Icons, die bei BibManager v1 ohne "overflow:hidden" sehr weit rechts waren, geändert 2016-02-15 */
#bm_table a.icon {
  ...
  height: 15 px; /*text-indent: 9999px;*/
  ...
}
</pre>


Bei "BibManagerPagerList.php" in Funktion "formatRow(...)" in den Zeilen 104, 108, 117 und 120 die "wfMsg"-Funktionen ersetzen durch "wfMessage"-Funktionen:
Für  MW 1.23 wurde versucht, AccessControl v2.5 zu verwenden. Der Download enthält aber nicht wie in Aussicht gestellt Version 2.5, sondern Version v2.4, bei welcher in der Datei "changelog.txt" nur Änderungen bis v2.3 aufgelistet sind. Die Version 2.4 hat mehrere Fehler:
<pre>
* Z.21: "$wgAccessControlRedirect = true;" fehlt
if ($wgUser->isAllowed('bibmanageredit')){
* Z.136: in Funktion getTemplatePage() ist ein Rückgabewert auskommentiert
  // für HAWK HHG "wfMsg()" zu "wfMessage()" geändert 2016-02-15
* Z.173: php-Warnung, weil "isset($allow)" fehlt
  $editLink = Linker::link(
* Z.225: php-Warnung, weil "isset($rights)" fehlt
    SpecialPage::getTitleFor( 'BibManagerEdit' ),
* Z.202, Z.210: in Funktion fromTemplates() wird dieselbe Funktion evtl. endlos aufgerufen
    wfMessage( 'bm_list_table_edit' ), /*wfMsg( 'bm_list_table_edit' )*/
* Z.284: in Funktion allRightsTag() wird die Funktion fromTemplates() aufgerufen, die wiederum evtl. die Funktion allRightsTag() in Z.213, Z.218 und Z.220 endlos aufruft
    array (
* Funktion doRedirect() ist im Vergleich zu v2.5 anders
      'class' => 'icon edit',
 
      'title' => wfMessage( 'bm_list_table_edit' ) /*wfMsg( 'bm_list_table_edit' )*/
==== AccessControl v2.5 für MW 1.23 ====
    ),
    $specialPageQuery
  );
}


if ($wgUser->isAllowed('bibmanagerdelete')){
Siehe auch https://www.mediawiki.org/wiki/Extension:AccessControl
  $deleteLink = Linker::link(
    SpecialPage::getTitleFor( 'BibManagerDelete' ),
    wfMessage( 'bm_list_table_delete' ),
    array (
      ...
    ),
    $specialPageQuery
  );
}
</pre>


Für die Gruppe "autor" wird standardmäßig beispielsweise die Seite "Autor" nach einer Liste mit Kontonamen durchsucht, wobei unterschieden wird zwischen "write"-Berechtigung und durch das Suffix "(ro)", was "readonly" bedeutet, "read"-Berechtigung.


===== Fehlendes Icon "Link zum Volltext" bei Detailseite =====
Da eine Vielzahl Benutzungskonten zur Gruppe "autor" gehört und die Seite "Autor" in SalzWiki anderweitig verwendet wird, muss die Gruppenzugehörigkeit mit der Zuordnung in der MW-Datenbank überprüft werden und der Code der Erweiterung in der Funktion "makeGroupArray(...)" angepasst werden.


Auf der Detailseite eines Bibliographieeintrags wird rechts statt des Icons der Alternativtext "Link zum Volltext" bzw. "Fulltext link" angezeigt; es ist folgende Datei anzupassen:
===== Installationshinweise =====
* "\extensions\SaltWiki\SaltWiki.php"


Nach den Anpassungen ist jeweils eine Kopie der Datei mit dem Suffix "_SW" zu speichern.
Achtung: Version 2.5 ist nicht zum Herunterladen bei REL1.23, sondern erst bei REL1.24 verfügbar.


Bei "SaltWiki.php" ist in der Funktion "sw_onBibManagerGetIcons(...)" vor Zeile 160 ein Kommentar einzufügen und in Zeile 161 der Pfad von "client" zu "resources" anzupassen:
* Die Extension wird als (REL1.24 oder) REL1.26 heruntergeladen und nach dem Extrahieren in das Verzeichnis "extensions" kopiert.
<pre>
** v2.5 "...REL1.26...", Datei "version": 2016-01-09T22:48:53 1a2ce27 [verwendet]
function sw_onBibManagerGetIcons ( $entry, &$icons) {
** v2.5 "...REL1.24...", Datei "version": 2016-01-09T22:48:53 c7e1e54 [nicht verwendet]
...
** v2.4 "...REL1.23...", Datei "version": 2015-06-16T21:00:32 befc02e [nicht verwendet]
// für HAWK HHG und MW1.23LTS Pfad von "client" zu "resources" angepasst 2016-06-14
* Einfügen in Datei "LocalSettings.php":
$icons['fulltext'] = array (
<pre>
  'src' = $wgScriptPath . '/extensions/BibManager/resources/images/' . $icon,
require_once("$IP/extensions/AccessControl/AccessControl.php");
  ...
$wgUseMediaWikiGroups = true;
);
...
}
</pre>
</pre>


===== In BibManager v1.1.0 Fehler bei SpecialPageAliases =====
===== Code-Probleme und deren Lösungen =====
 
'''undefinierte Variablen'''


In der Datei "BibManager.alias.php" müssen die Array-Schlüssel von $specialPageAliases wie z. B. 'BibManagerCreate' für die jeweilige Sprache in Kleinbuchstaben angegeben werden, damit die BibManager-Seiten bei den Spezialseiten aufgelistet werden, allerdings werden die Seiten dann nicht mehr gefunden, wenn man auf die Verweise klickt.
PHP erzeugt evtl. eine Meldung "Notice: Undefined variable: allow ... on line 174". Es fehlt bei $allow die Abfrage "isset(...)".


Einzige Lösung scheint zu sein, in der Datei "BibManager.php" die Zeile 66 auszukommentieren:
Die Datei "AccessControl.php" ist zur Verhinderung von php-Warnungen wie folgt zu bearbeiten:<br/>
In Zeile 174 "if(is_array($allow)){" mit "isset($allow) &&" ergänzen:
<pre>
<pre>
#$wgExtensionMessagesFiles['BibManagerAlias'] = $dir . 'BibManager.alias.php'; // Fehlfunktion in MW 1.23
if(isset($allow) && is_array($allow)){
</pre>
</pre>


===== In BibManager v1.1.0 fehlerhafte Funktionen auskommentieren bzw. ändern =====
'''Gruppenzugehörigkeit mit Datenbank statt Gruppen-Seite prüfen'''
 
Die Überprüfung der Gruppenberechtigung darf nicht mit einer Seite für die Gruppe mit Kontenliste, sondern muss mit den Angaben in der Wiki-Datenbank ausgeführt werden
* Datei "LocalSettings.php" mit "$wgUseMediaWikiGroups" ergänzen
* Datei "\extensions\AccessControl\AccessControl.php" in der Funktion "makeGroupArray(...)" anpassen


BibManager v1.1.0 (REL1.23) verwendet in mehreren Dateien die Funktion "wfLoadExtensionMessages()", die seit MW 1.21 nicht mehr existiert, so dass die Zeile in folgenden Dateien auskommentiert werden muss:
*"\specialpages\BibManagerCreate_body.php" in Zeile 7
*"\specialpages\BibManagerEdit_body.php" in Zeile 7
*"\specialpages\BibManagerDelete_body.php" in Zeile 7
*"\specialpages\BibManagerList_body.php" in Zeile 7
*"\specialpages\BibManagerListAuthors_body.php" in Zeile 7


BibManager v1.1.0 (REL1.23) verwendet in der Datei "\specialpages\BibManagerList_body.php" in den Zeilen 25 und 29 die Methode "SpecialPageFactory::getPage('...')->getDescription()", die einen Fehler "Call to a member function getDescription() on null" verursacht, weil "getPage('...') als Ergebnis NULL hat und "getDescription()" nicht darauf angewendet werden kann. Ursache ist der Name bei "getPage('...')", der mit dem Alias ersetzt werden muss. Der Alias der Sprachvarianten befindet sich in der Datei "\BibManager\BibManager.alias.php". Um den Alias für "getPage('...')" zu erhalten, wird die Methode "SpecialPageFactory::getLocalNameFor('...')" benötigt:
Datei "LocalSettings.php":
<pre>
<pre>
// $linkDescription eingefügt und $createLink angepasst 2015-12-01 G. Werner für HAWK HHG
require_once("$IP/extensions/AccessControl/AccessControl.php");
$linkDescription = array();
$wgUseMediaWikiGroups = true;
if(SpecialPageFactory::getPage(SpecialPageFactory::getLocalNameFor('BibManagerCreate'))===NULL){
  $linkDescription['Create'] = NULL;
}
else{
  $linkDescription['Create'] = SpecialPageFactory::getPage(SpecialPageFactory::getLocalNameFor('BibManagerCreate'))->getDescription();
}
if(SpecialPageFactory::getPage(SpecialPageFactory::getLocalNameFor('BibManagerImport'))===NULL){
  $linkDescription['Import'] = NULL;
}
else{
  $linkDescription['Import'] = SpecialPageFactory::getPage(SpecialPageFactory::getLocalNameFor('BibManagerImport'))->getDescription();
}
$createLink = Linker::link(
  SpecialPage::getTitleFor('BibManagerCreate'),
  /*SpecialPageFactory::getPage('BibManagerCreate')->getDescription()*/
  $linkDescription['Create']
);
$importLink = Linker::link(
  SpecialPage::getTitleFor('BibManagerImport'),
  /*SpecialPageFactory::getPage('BibManagerImport')->getDescription()*/
  $linkDescription['BibManagerImport']
);
</pre>
</pre>


===== In BibManager v1.1.0 Fehler bei neuem Eintrag und Eintragsbearbeitung =====
Datei "AccessControl.php" Z.89ff:
 
Der Fehler bei einem Neueintrag in BibManager v1.1.0 REL1.23 2015-06-16 resultiert aus der Weiterleitung zur Datei für Bearbeitungen "specialpages\BibManagerEdit_body.php".
 
In der Datei "specialpages\BibManagerCreate_body.php" kann in der Funktion "execute()" das Array "$formDescriptor" zwischen "id" und "options" um die Angabe eines Namens ergänzt werden, damit das Formularfeld "bm_select_type" nicht "wpbm_select_type" heißt:
<pre>
<pre>
//Z.26ff
function makeGroupArray( $accesslist ) {
$formDescriptor = array (
  ...
   'bm_select_type' => array (
  $usersreadonly = Array();
    'class' => 'HTMLSelectField',
  // für HAWK HHG eingefügt 2016-05-17
     ...
  // users of group from wiki database
     'id' => '',
  global $wgUseMediaWikiGroups, $wgUser;
    'name' => 'bm_select_type',
   if($wgUseMediaWikiGroups === true){
    'options' => ...
    if( in_array($accesslist, $wgUser->getGroups()) ){
  )
      $userswrite[] = $wgUser->getName();
)
     }
     return array($userswrite, $usersreadonly);
  }
  // users from group-page with list of users and their rights for writing or reading
  $users = getUsersFromPages( $accesslist );
  ...
}
</pre>
</pre>


==== BibManager-Berechtigungen ====
'''Timeout durch Template-Name im Template-Text'''


'''Rechte-Vergabe für BibManager'''
Weitere Probleme mit Script-Timeout wie bei AccessControl v2.4:
* Z.206, Z.214: in Funktion fromTemplates() wird dieselbe Funktion evtl. endlos aufgerufen
* Z.290: in Funktion allRightsTag() wird die Funktion fromTemplates() aufgerufen, die wiederum evtl. die Funktion allRightsTag() in Z.217, Z.222 und Z.224 endlos aufruft


In der Datei "LocalSettings.php" werden zwischen "include_once(...)" und dem Array für die Zitierweise folgende Berechtigungen definiert, wobei im deutschen Salzwiki "Redakteur" statt "Editor" anzugeben ist:
Timeout-Ursache sind in den Templates "Ynotice", "Baustelle" und "FreeForTranslation" die noinclude-Bereiche, in denen der Template-Name erneut auftaucht. Der erste Buchstabe muss entweder kleingeschrieben werden oder - besser - durch Hexadezimal-HTML-Zeichen ersetzt werden:


## Berechtigungen eingefügt 2012-05-11
<pre>
$wgGroupPermissions['*']['bibmanagercreate'] = false;
<nowiki>
$wgGroupPermissions['*']['bibmanageredit'] = false;
&lt;noinclude&gt;
$wgGroupPermissions['*']['bibmanagerdelete'] = false;
=== Beispielvorlage ===
$wgGroupPermissions['autor']['bibmanagercreate'] = true;
{{&amp;#98;notice|text=
$wgGroupPermissions['autor']['bibmanageredit'] = true;
}}
#$wgGroupPermissions['autor']['bibmanagerdelete'] = false;
&lt;/noinclude&gt;
$wgGroupPermissions['Redakteur|Editor']['bibmanagercreate'] = true;
$wgGroupPermissions['Redakteur|Editor']['bibmanageredit'] = true;
$wgGroupPermissions['Redakteur|Editor']['bibmanagerdelete'] = true;
$wgGroupPermissions['sysop']['bibmanagercreate'] = true;
$wgGroupPermissions['sysop']['bibmanageredit'] = true;
$wgGroupPermissions['sysop']['bibmanagerdelete'] = true;


'''Entfernen der Löschen- und Editier-Buttons ohne Rechte-Vergabe'''
&lt;noinclude&gt;
=== Beispielvorlage ===
{{&amp;#66;austelle}}
&lt;/noinclude&gt;


Das Entfernen der Schaltflächen funktionierte bis April 2012 auf nachfolgend beschriebene Weise, solange es noch kein Rechte-Management für den BibManager gab.
&lt;noinclude&gt;
=== Beispielvorlage ===
{{&amp;#70;reeForTranslation}}
&lt;/noinclude&gt;
</nowiki>
</pre>


In der Datei BibManager/includes/BibManagerPagerList.php werden in den Zeilen 57ff dazu die Variablen "$editLink" und "$deleteLink" entfernt.


Mit ein wenig PHP-Kenntnissen kann man auch die Anzeige des Links schaltbar machen:
'''Verarbeitung von Rückgabewert NULL'''


  $tablerow = array ( );
In den Funktionen "getTemplatePage(...)" Z.130ff und "getUsersFromPages(...)" Z.144ff muss wie bei der Funktion "getContentPage(...)" für die Verwendung der Methode "getNativeData()" der Wert, der sich zuvor aus der Methode "getContent()" ergibt, auf "NULL" überprüft werden.
  $tablerow[] = '<tr>';
  $tablerow[] = '  <td style="vertical-align:top;">' . $citationLink . '</td>';
  $tablerow[] = '  <td>' . $format . '</td>';
  #$tablerow[] = '  <td style="text-align:center;">' . $editLink . $deleteLink . '</td>';
  if($_REQUEST['showDelete'] == 1){$tablerow[] = '  <td style="text-align:center;">' . $editLink . $deleteLink . '</td>';}
  else{$tablerow[] = '  <td style="text-align:center;">' . $editLink . '</td>';}
  $tablerow[] = '  <td style="text-align:center;">' . $exportLink . '</td>';
  $tablerow[] = '<tr>';
 
So würde der Link nur angezeigt werden, wenn in der Url "&showDelete=1" vorkommt.
 
Wenn die Löschen-Funktion vollständig deaktiviert und nicht nur den Link versteckt werden soll, müssen in der Datei BibManager/BibManager.php folgende Zeilen auskommentiert werden:


  $wgAutoloadClasses['BibManagerDelete'] = $dir . 'specialpages/BibManagerDelete_body.php';
  $wgSpecialPages['BibManagerDelete'] = 'BibManagerDelete';
==== Anleitung anpassen und installieren ====
Die von halloWelt! gelieferte Datei "manual.xml" enthält alle 4 Anleitungen: Benutzerhandbuch, User manual, Administrationshandbuch und Admin manual, die jeweils durch die <page>-Elemente gegliedert sind.
* Für das SalzWiki ist nur der <page>-Bereich "BibManager:Benutzerhandbuch" für den Import relevant, so dass eine Kopie der Datei unter "bibmanager_manual_user_de.xml" gespeichert wird und in dieser Datei die 3 anderen <page>-Bereiche entfernt werden.
* Für das SaltWiki und das Repositorium ist jeweils nur der <page>-Bereich "BibManager:User manual" für den Import relevant, so dass eine Kopie der Datei unter "bibmanager_manual_user_en.xml" gespeichert wird und in dieser Datei die 3 anderen <page>-Bereiche entfernt werden.
* Der Bilder-Import für das Handbuch findet nur im Repositorium statt.
==== Anleitung anpassen ====
Im <title>-Element nach <page> ist jeweils "HalloWelt:" vor "BibManager:..." zu entfernen:
<pre>
<pre>
<page>
function getTemplatePage( $template ) {
<title>HalloWelt:BibManager:...</title>
  ...
</pre>
  if ( method_exists('WikiPage', 'getContent' ) ){
Ebenso ist der Teil "Project:" vor "BibManager:..." in den Admin-Anleitungen am Ende des <text>-Elementes zu entfernen:
    // für HAWK HHG angepasst 2016-05-17
<pre>
    #$contentPage = new WikiPage( $gt );
  [[Project:BibManager:...]]
    #return $contentPage->getContent()->getNativeData();
   [[Project:BibManager:...]]</text>
    $contentPage = WikiPage::factory( $gt );
   </revision>
    $contentPageContent = $contentPage->getContent( Revision::RAW )
</page>
    if ( $contentPageContent != NULL ){
      return ContentHandler::getContentText( $contentPageContent );
    }
  } else {
    // create Article and get the content
    $contentPage = new Article( $gt, 0 );
    return $contentPage->fetchContent( 0 );
  }
}
 
function getUsersFromPages( $group ) {
  ...
  if ( method_exists('WikiPage', 'getContent' ) ){
    // für HAWK HHG angepasst 2016-05-17
    #$groupPage = new WikiPage( $gt );
    #$allowedUsers = $groupPage->getContent()->getNativeData();
    $groupPage = WikiPage::factory( $gt );
    $groupContent = $groupPage->getContent( Revision::RAW )
    if ( $groupContent != NULL ){
      $allowedUsers = ContentHandler::getContentText( $groupContent );
    }
   } else {
    // create Article and get the content
    $groupPage = new Article( $gt, 0 );
    $allowedUsers = $groupPage->fetchContent( 0 );
   }
}
</pre>
</pre>


==== Anleitung im Wiki installieren ====


* Die angepasste xml-Datei über "Spezialseiten->Import" ins Wiki laden.
'''weitere Fehlerquellen'''
* Anschließend sind die Bilder für das [[Project:BibManager:...]] im Repositorium mittels DOS-Konsole und PHP hochzuladen, um sie ins Wiki zu bringen:
 
Abhilfe schaffen folgende Änderungen von https://www.mediawiki.org/wiki/Extension_talk:AccessControl#Selected_fixes_against_2.5:
<pre>
<pre>
D:\
//function makeGroupArray(...)
xampp\php\php.exe xampp\htdocs\saltwiki\maintenance\importImages.php xampp\htdocs\saltwiki\images_en
//Z.94
</pre>
$usersreadonly[] = (string)$user;  #$usersreadonly[] = $user;
//Z.97
$userswrite[] = (string)$user;  #$userswrite[] = $user;


=== CategoryTree ===
//function getUsersFromPages(...)
//Z.150
$gt = $Title->newFromText( $group );    #$gt = $Title->makeTitle( 0, $group );


Die Extension dient zur Darstellung der Kategorienbäzme, damit schnell den Artikeln und Dokumenten die richtigen Kategorien zugewiesen werden können.
//function fromTemplates(...)
//Z.231
if ( $wgUser->isAnon() ) {    #if ( $wgUser->mID === 0 ) {
//Z.236
if ( in_array( 'sysop', $wgUser->getGroups(), true) ) {    #if ( in_array( 'sysop', $wgUser->mGroups, true) ) {
//Z.244
if ( ! in_array( $wgUser->getName(), $users[0], true) ) {    #if ( ! in_array( $wgUser->mName, $users[0], true) ) {
//Z.255
if ( ! in_array( $wgUser->getName(), $users[1], true) ) {    #if ( ! in_array( $wgUser->mName, $users[1], true) ) {


* Extension unter http://www.mediawiki.org/wiki/Categorytree herunterladen und in den Extensionsordner kopieren.
// function allRightTags(...)
* In den Localsettinge eingefügen.
//Z.285
$gt = $Title->newFromText( $redirecttarget );    #$gt = $Title->makeTitle( 0, $redirecttarget );


<pre>
//function hookUserCan(...)
$wgUseAjax = true; ##muss von false auf true geändert werden, falls noch nicht geschehen
//Z.322
require_once("{$IP}/extensions/CategoryTree/CategoryTree.php");
if ( $wgUser->isAnon() ) {    #if ( $wgUser->mID === 0 ) {
</pre>
//Z.338
 
if ( $wgUser->isAnon() ) {    #if ( $wgUser->mID === 0 ) {
=== CharacterEscapes, LOParserFunctions, ControlStructureFunctions  ===
//Z.351
 
if ( in_array( $wgUser->getName(), $users[0], true) ) {    #if ( in_array( $wgUser->mName, $users[0], true) ) {
Notwendig für #if: und #switch-Anweisungen (z. B. beim Einsetzen des Seitentitels im Kopf von Vorlage:Infobox_Salz und bei den Hilfe-Seiten.
//Z.364
"ControlStructureFunctions" soll laut "mediawiki.org" nur bis Version 1.12 erforderlich und danach im Wiki-Code integriert sein, was aber scheinbar nicht zutrifft.<br>
if ( in_array( $wgUser->getName(), $users[1], true) ) {    #if ( in_array( $wgUser->mName, $users[1], true) ) {
Alternativ zu "LOParserFunctions" und "ControlStructureFunctions" kann möglicherweise auch die Erweiterung "ParserFunctions" (http://www.mediawiki.org/wiki/Help:ParserFunctions) in Kombination mit der Erweiterung "Loop" (http://www.mediawiki.org/wiki/Help:Loop) verwendet werden, wobei Folgendes zu berücksichtigen ist:
<pre>
Don't These Parser Functions Already Exist?
Yes and no. The ParserFunctions extension has
#if, #ifeq, #ifexpr, #switch, and #ifexist,
and Loop Functions extension has
#for and #foreach.
The limitation of all those parser functions is
that wiki markup is parsed before any parameters are passed to the underlying function.
These functions bypass that limitation through character escapes (see below),
and allow wiki markup to be parsed after the parameters have been passed.
</pre>
</pre>


*Extensions unter http://www.mediawiki.org/wiki/Extension:Character_Escapes, http://www.mediawiki.org/wiki/Extension:LO_Parser_Functions und http://www.mediawiki.org/wiki/Extension:Control_Structure_Functions/ControlStructureFunctions.php herunterladen und in den Ordner "extensions" kopieren.
**'''Extension CharacterEscapes'''
***Im Verzeichnis "extensions" ein Unterverzeichnis "CharacterEscapes" und darin eine Datei "CharacterEscapes.php" anlegen.
***In der Datei das Quelltext-Beispiel von http://www.mediawiki.org/wiki/Extension:Character_Escapes einfügen.
**'''LOParserFunctions'''
***Im Verzeichnis "extensions" ein Unterverzeichnis "LOParserFunctions" und darin eine Datei "LOParserFunctions.php" und eine Datei "LOParserFunctions.i18n.php" anlegen.
***In den Dateien die Quelltext-Beispiele von http://www.mediawiki.org/wiki/Extension:LO_Parser_Functions einfügen und jeweils die fehlenden php-Tags "?>" am Ende ergänzen.
***In das Verzeichnis die Datei "expr.php" von http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/ParserFunctions/Expr.php?revision=25357 kopieren
**'''Extension ControlStructureFunctions'''
***Im Verzeichnis "extensions" ein Unterverzeichnis "ControlStructureFunctions" und darin eine Datei "ControlStructureFunctions.php" und eine Datei "ControlStructureFunctions.i18n.php" anlegen.
***In den Dateien die Quelltext-Beispiele von "http://www.mediawiki.org/wiki/Extension:Control_Structure_Functions" einfügen und jeweils die fehlenden php-Tags "?>" am Ende ergänzen.


*Erweiterungen in Datei "LocalSettings.php" eingefügen.
'''Funktion "fromTemplates"'''
<pre>##Extension CharacterEscapes fuer Helppages
require_once("extensions/CharacterEscapes/CharacterEscapes.php");


##Extension LOParserFunctions  fuer Helppages
Bei der Funktion "fromTemplates($string)" bei Z.219ff hat möglicherweise die Variable $rights den Wert NULL, weil sie die verschachtelteten Funktionen "allRightTags( getContentPage( 10, $templatepage) )" mit dem Namensraum 10 (ID für Templates) und mit dem Inhalt anstatt mit dem Seitentitel verwendet:
require_once( "extensions/LOParserFunctions/LOParserFunctions.php" );
<pre>
 
} elseif ( ctype_alnum( substr( $templatepage, 0, 1 ) )) {
##Extension  ControlStructureFunctions fuer Helppages
  // für HAWK HHG angepasst 2016-05-17
# require_once( "extensions/ControlStructureFunctions/ControlStructureFunctions.php" );
  $context = new RequestContext();
  $gt2 = $context->getTitle();
  // The check of included template
  if (strpos( $tempatepage, '|' ) > 0) {
    $templatename = substr( $templatepage, 0, strpos( $templatepage, '|' ) );
    #$rights = allRightTags( getContentPage( 10, $templatename ) );
    $rights = allRightTags( getContentPage( $gt2->getNamespace(), $templatename ) );
  } else {
    #$rights = allRightTags( getContentPage( 10, $templatepage ) );
    $rights = allRightTags( getContentPage( $gt2->getNamespace(), $gt2->getFullText() ) );
  }
}
</pre>
</pre>


=== CharInsert ===
===== Lösungsversuche ohne Erfolg =====


Diese Extension dient dazu Editierhilfen zum Einfügen von Spezialzeichen und Formatierungshilfen zur Verfügung zu stellen.Diese Hilfe wird im Bearbeitungsmodus und beim UpLoad-Formular zur Verfügung gestellt. Diese Erweiterung wurde Testweise installiert und dann wieder deaktiviert.
'''Funktion "getContentPage(...)"'''


Die Extension wird bei http://www.mediawiki.org/wiki/Extension:CharInsert heruntergeladen und in ...Extensions/CharInsert extrahiert.
Fehlversuch Z. 121ff hinzufügen von "else{...}"
<pre>
if ( method_exists( 'WikiPage', 'getContent' ) ) {
$contentPage = WikiPage::factory( $gt ); #$contentPage = new WikiPage( $gt );
if ( $contentPage->getContent (Revision::RAW) != NULL ) {
  ...
}
// für HAWK HHG nicht eingefügt 2016-05-10 wegen Endlosscript
else{
  $context = new RequestContext();
  $gt2 = $context->getTitle();
  $contentArticle = new Article( $gt2, $namespace);
  if($contentArticle->getPage()->getContent() != NULL){
  return $contentArticle->getPage()->getContent(Revision::RAW)->getNativeData()
  }
}
} else {
// create Article and get the content
...
}
</pre>


In die localsettings ist einzufügen:
==== Einrichten einer Nutzungsgruppe ====


require_once("$IP/extensions/CharInsert/CharInsert.php");
Eine Gruppe von Usern, die alleine Zugang auf bestimmte Seiten haben soll, wird z. b. beim Repositorium im Namensrauam "ACCESS" wie unten eingerichtet.


In Mediawiki:Edittools werden die entsprechenden Zeichen bzw. Hilfen mit
:Speichern der Liste auf der Seite Access:SIP
  <pre><charinsert> .. </charinsert> </pre>
  <nowiki><accesscontrol>Access:SIP</accesscontrol></nowiki># Schutz der eigenen Seite
*Hschwarz                                                # einfache Liste der User
*HJuling
*MSteiger
*SLaue
*SBrueggerhoff
*Testuser


eingefügt.
=== ApprovedRevs ===


=== Cite  ===
==== Einschränkung ====


Dient zum Erstellen von Fußnoten in SalzWiki Artikeln.
Diese Erweiterung kann nicht verwendet werden, wenn die Erweiterung "AccessControl" verwendet wird; siehe https://www.mediawiki.org/wiki/Extension:ApprovedRevs.


*Extension unter http://www.mediawiki.org/wiki/Cite herunterladen.
==== Verwendungszweck ====
*Extrahieren der Dateien nach extensions/Cite
*In den Localsettings eingefügen


<pre>
Mit dieser Erweiterung können Revisionen (Versionen einer SalzWiki-Seite) bestätigt oder abgelehnt werden. Die bestätigte Version wird allen Usern angezeigt.
require_once("$IP/extensions/Cite/Cite.php");
</pre>


Siehe näheres zum Einfügen von Fußnoten unter http://193.175.110.91/salzwiki/index.php/Autor#Fu.C3.9Fnoten.
[[Datei:Approved _Revs-1.jpg|thumb|800px|center]]


=== ConfirmEdit ===
==== Installation der Erweiterung "ApprovedRevs" ====


Registrierte Nutzer dürfen auf die Diskussionseiten schreiben. Damit dies etwas sicherer vonstatten geht, wird mit ConfirmEdit ein Captcha eingeführt ('''bisher nur bei Salzwiki und Saltwiki, nicht bei Repositorium''').
* Die Erweiterung wird mit der Version 0.7.0 REL1.23 2015-06-16T21:01:12 513cff5 heruntergeladen und nach dem Extrahieren in das Extensions-Verzeichnis des jeweiligen Wikis kopiert.
 
* Es muss bei einem neuen Wiki eine Datenbank-Tabelle mit dem Präfix "sw_" (SalzWiki, SaltWiki) bzw. "sr_" (Repository) und dem Namen "approved_revs" angelegt werden. Hierzu gibt es zwei Möglichkeiten:
*Dateien unter http://www.mediawiki.org/wiki/Confirmedit herunterladen und unter "extensions\ConfirmEdit\" speichern.
** Das Skript "update.php" von "MediaWiki's/maintenance" benutzen oder
*In der Datei "LocalSettings.php" einfügen:
** Mittels "phpMyAdmin" in der Datenbank die Tabelle mit den beiden SQL-Befehlen, die in der Datei "ApprovedRevs.sql" der Erweiterung zu finden sind, erstellen.
<pre>
* Die Erweiterung in der Datei "LocalSettings.php" aktivieren
require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
<pre>// SalzWiki, SaltWiki, Repository
require_once( "$IP/extensions/ApprovedRevs/ApprovedRevs.php" );
</pre>
</pre>


=== ContactPage - Kontaktseite (Wiki-Code de-Formal) ===
==== Konfiguration von "ApprovedRevs" ====


Für Mitteilungen allgemeiner Art wird eine Kontaktformular-Seite eingesetzt, die im Repositorium nur nach Anmeldung zur Verfügung steht. Bei Versand einer Kopie an eine im Formular eingetragene E-Mail-Adresse steht im Betreff: "Kopie Ihrer Nachricht an Hornemann (von [Ihr Name])"
Diejenigen, die das Recht "viewlinktolatest" haben, sehen einen Hyperlink unter dem Titel des Artikels, um zur aktuellen unbestätigten Version zu kommen.


Für das Kontaktformular muss als Empfangsadresse ein bestehendes Wiki-Konto angegeben werden und muss als E-Mail-Absender wegen Authentifizierung beim Versand die Angabe von $wgPasswordSender übernommen werden:
Diejenigen, die das Recht "approverevisions" haben, können in der History (Versionen-Übersicht) eine Version "bestätigen" oder "ablehnen".
<pre>$wgContactConfig['default'] = array(
'RecipientUser' => 'Hornemann', //'WikiUser' // Must be a valid account //vormals $wgContactUser
...
'SenderEmail' => null, // Defaults to $wgPasswordSender, may be changed as required
...);
</pre>
Im jeweiligen Wiki-Konto "Hornemann" wird als E-Mail-Adresse "service@salzwiki.de" bzw. "service@saltwiki.net" angegeben. Es kann auch "salzwiki.fb@hawk-hhg.de" bzw. "saltwiki.fb@hawk-hhg.de" angegeben werden.


Für das Formular wird die Erweiterung "ContactPage" benutzt. Die Sie-Form der Wiki-Übersetzungsdatei ist um einen Eintrag zu ergänzen.
Damit nur Admins und Mitglieder der Gruppen "Redakteur"/"Editor" eine Version bestätigen bzw. ablehnen können und zusätzlich Mitglieder der Gruppe "autor" den Verweis zur aktuellen unbestätigten Version zur Verfügung gestellt bekommen, sind in der Datei "LocalSettings.php" folgende Angaben erforderlich:


Das Absenden des Kontaktformulars wird bei Nutzung ohne Anmeldung zum Verhindern von Spam über ein Captcha abgesichert. Hierfür sind bei der Erweiterung für MW 1.23 (REL1_23) Anpassungen am Code der Dateien "ContactPage_body.php", "\i18n\de.json" und "\i18n\en.json" sowie "\i18n\qqq.json" erforderlich.
<pre>// SalzWiki
$wgGroupPermissions['Redakteur']['approverevisions'] = true;
$wgGroupPermissions['sysop']['approverevisions'] = true;
$wgGroupPermissions['autor']['viewlinktolatest'] = true;
$wgGroupPermissions['*']['viewlinktolatest'] = false;
$wgGroupPermissions['sysop']['viewlinktolatest'] = true;
</pre>
<pre>// SaltWiki
$wgGroupPermissions['Editor']['approverevisions'] = true;
$wgGroupPermissions['sysop']['approverevisions'] = true;
$wgGroupPermissions['autor']['viewlinktolatest'] = true;
$wgGroupPermissions['*']['viewlinktolatest'] = false;
$wgGroupPermissions['sysop']['viewlinktolatest'] = true;
</pre>
<pre>// Repository
$wgGroupPermissions['Editor']['approverevisions'] = true;
$wgGroupPermissions['sysop']['approverevisions'] = true;
#$wgGroupPermissions['autor']['viewlinktolatest'] = true;
$wgGroupPermissions['*']['viewlinktolatest'] = false;
$wgGroupPermissions['sysop']['viewlinktolatest'] = true;
</pre>
 
Beispiele:
* damit z. B. alle Mitglieder der Gruppe "autor" Seiten als geprüft markieren können
<pre>$wgGroupPermissions['autor']['approverevisions'] = true;</pre>
 
* um den ApprovedRevs-Hyperlink standardmäßig zu deaktivieren
<pre>$wgGroupPermissions['*']['viewlinktolatest'] = false;</pre>


*Dateien unter http://www.mediawiki.org/wiki/Extension:ContactPage bzw. <b>für MW 1.23</b> unter https://git.wikimedia.org/zip/?r=mediawiki/extensions/ContactPage&h=daa666dec4793a2ce9675dbb8b6c365d105e8986&format=zip herunterladen und die Dateien unter "Extensions/ContactPage" speichern.
* um den ApprovedRevs-Hyperlink allen Admins und Mitgliedern der Gruppe "autor" zur Verfügung zu stellen
*Für MediaWiki 1.23 in den Übersetzungsdateien "de.json", "en.json" und "qqq.json" Zeilen einfügen (siehe weiter unten)
<pre>$wgGroupPermissions['autor']['viewlinktolatest'] = true;
*In der Wiki-Systemtexte-Datei vor "'emailccsubject '=> '...'" das Array-Element "'emailccme' => 'Sende eine Kopie der E-Mail an mich'," einfügen und an Sie-Form anpassen: "Eine Kopie der E-Mail an mich senden"
$wgGroupPermissions['sysops']['viewlinktolatest'] = true;</pre>
**Für MediaWiki 1.23 im Verzeichnis "[wikiverzeichnis]\languages\i18n\" aus der Datei "de.json" aus Zeile 1759 in Datei "de-formal.json" in Zeile 217 einfügen
*Erweiterung mit Variablenzuweisungen in der Datei "LocalSettings.php" einfügen


ACHTUNG: Nach jedem mediawiki-Update muss überprüft werden, ob die vorgenommene Änderung in den Sprachdateien noch existiert. Deshalb ist von den Dateien jeweils eine Kopie "...SW.json" bzw. "...SW.php" zu speichern:
=== Bibliography  ===
* MW1.23
** "[wikiverzeichnis]\languages\i18n\de.json"
** "...\extensions\ContactPage\i18n\de.json", "...de-formal.json", "...en.json" und "...qqq.json"


==== MW 1.23 Code-Anpassungen ====
Die Extension Bibliography wurde durch die Erweiterung BibManager ersetzt. Siehe hierzu unter "Erweiterungen - BibManager".


Zur Code-Anpassung siehe auch https://gerrit.wikimedia.org/r/#/c/156052/


In der Datei "\extensions\ContactPage\i18n\qqq.json" Ergänzung bei "authors" hinter "Shirayuki" sowie in Zeile 25 am Ende ein Komma und darunter  eine Zeile für "contactpage-captcha-error" einfügen:
=== BibManager===
<pre>
 
{
Die Erweiterung "BibManager" wird zur Erstellung und Verwaltung der Literaturhinweise bzw. zum Einbinden der Zitate in Artikel benutzt und verwendet den Namensraum "NS_CITATION" ("Cit") mit der Nummer 800 sowie "NS_CITATION_TALK" ("Cit_talk") mit der Nummer 801.
  "metadata": {
    "authors": [
      ...
      "Shirayuki",
      "Gunnar Werner HAWK HHG"
    ]
  },
  ...
  "contactpage-usermailererror": "...",
  "contactpage-captcha-error": "Error message displayed when ehter was a CAPTCHA error (i.e. the user failed to enter the correct CAPTCHA, or didn't enter one at all, etc.)"
}
</pre>


In der Datei "\extensions\ContactPage\i18n\en.json" Ergänzung bei "authors" hinter "Reedy" sowie in Zeile 20 am Ende ein Komma einfügen und darunter eine Zeile für "contactpage-captcha-error" einfügen:
Die Erweiterung besteht aus
<pre>
* der Grunderweiterung "BibManager"
{
* und den von "HalloWelt" für die HAWK HHG programmierten Zusatzerweiterungen
  "metadata": {
** [[#SaltWiki_2|"SaltWiki"]]
    "authors": [
** [[#SaltWikiUpload|"SaltWikiUpload"]]
      ...
      "Umherirrender",
      "Gunnar Werner HAWK HHG"
    ]
  },
  ...
  "contactpage-usermailererror": "Mail object returned error:",
  "contactpage-captcha-error": "CAPTCHA error"
}
</pre>


In der Datei "\extensions\ContactPage\i18n\de.json" Ergänzung bei "authors" hinter "Umherirrender", außerdem die Menüleisten-Bezeichnung "Kontaktseite" sowie Captcha-Texte einfügen:
Mit der Erweiterung [[#SaltWiki_2|"SaltWiki"]] können im SalzWiki/SaltWiki/Repository weitere Felder, die nicht im original "BibTeX" spezifiziert sind, wie DOI und Fulltext, verwendet werden.
<pre>
 
{
Die Erweiterung [[#SaltWikiUpload|"SaltWikiUpload"]] soll im Repositorium das Hochladen von Dateien mit BibTex-Angaben erleichtern, doch wird bei MW1.23LTS nur das MW-Standard-Upload-Formular angezeigt.
  "metadata": {
 
    "authors": [
==== Versionen ====
      ...
 
      "Umherirrender",
Für MediaWiki 1.23 LTS wird wegen diverser Probleme bei der BibManager-Version v1.1.0 die Version 1.23 REL1.26 2015-11-17T01:01:50 d824ce8 installiert.
      "Gunnar Werner HAWK HHG"
 
    ]
* BibManager
  },
** v1.23.0 master 2016-01-15T07:01:22 951b12f
  "contact": "Kontaktseite",
** v1.23.0 REL1.26 2015-11-17T01:01:50 d824ce8 verwenden bei MW1.23LTS
  ...
** v1.1.0 REL1.23 2015-06-16T21:02:02 6218f71 (angeboten für MW 1.22+)
  "contactpage-captcha": "Um die Nachricht senden zu können, bitte das Captcha lösen ([[Special:Captcha/help|weitere Informationen]])",
** v1 (verwendet bei MW1.16)
  "contactpage-captcha-error": "Captcha-Fehlfunktion",
* SaltWiki
  "contactpage-captcha-failed": "Captcha-Test nicht bestanden! ([[Special:Captcha/help|weitere Informationen]])"
** SaltWiki mit Datum 2012-05-25 verwenden bei MW1.23LTS
}
** SaltWiki mit Datum 2012-01-20 (verwendet bei MW1.16)
</pre>
* SaltWikiUpload
** SaltWikiUpload mit Datum 2012-01-25 verwenden bei MW1.23LTS Repository
** SaltWikiUpload mit Datum 2012-01-11 (verwendet bei MW1.16 Repository)
 
BibManager-Versionsangaben befinden sich in folgenden Dateien:
* version: REL1.26 2015-11-17T01:01:50
* BibManager.php: 1.23.0
* BibManager.i18n.php: compatibility back to MediaWiki 1.17
 
==== Installation ====
 
Bei der Installation werden die Erweiterungen in folgende Ordner kopiert:
* "\extensions\BibManager\"
* "\extensions\SaltWiki\"
* "\extensions\SaltWikiUpload\"


Datei "ContactPage_body.php" vor Zeile 185 und nach Zeile 217+11 (228), vor Zeile 341+11+1 (353), nach Zeile 393+11+1+6 (411):
In der Datei "LocalSettings.php" wird Folgendes eingefügt:
<pre>
<pre>
## Namensräume
...
...
// Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
// für Erweiterung BibManager
if ( $this->useCaptcha() ) {
define("NS_CITATION", 800);
  $formItems['Captcha'] = array(
define("NS_CITATION_TALK", 801);
    'label-message' => 'captcha-label',
$wgExtraNamespaces[NS_CITATION] = 'Cit';
    'type' => 'info',
$wgExtraNamespaces[NS_CITATION_TALK] = 'Cit_talk';
    'default' => $this->getCaptcha(),
...
    'raw' => true,
## EXTENSIONS
  );
}
 
$form = new HTMLForm( $formItems, $this->getContext(), "contactpage-{$this->formType}" );
...
...
public function processInput( $formData ) {
require_once('extensions/BibManager/BibManager.php');
  global $wgUserEmailUseReplyTo, $wgPasswordSender;
require_once('extensions/SaltWiki/SaltWiki.php' );
  global $wgCaptcha; // Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
#nur im Repositorium:
require_once('extensions/SaltWikiUpload/SaltWikiUpload.php' );
...
## Einstellungen
...
...
// Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
## Erweiterung BibManager
if ( $this->useCaptcha() && !$wgCaptcha->passCaptcha() ) {
# Namensraum berücksichtigen
   // TODO proper i18n message
$wgBibManagerCitationArticleNamespace = NS_CITATION;
  return wfMessage( 'contactpage-captcha-error' )->plain();
# BibManager-Anpassung an die gewünschte Zitierweise
}
$wgBibManagerCitationFormats = array (
// Stolen from Special:EmailUser
  '-' => '%author%: %title%, %year% %url%, %doi%.',
$error = '';
  'article' => '%author% (%year%): %title%. <em>%journal%</em>, <b>%volume%</b> (%number%), %pages%, %url%, %doi%.',
...
   'book' => '%editor% %author% (%year%): <em>%title%, %edition%, %publisher%, %address%, %pages%</em>, %url%., %doi%',
   private static function getYesOrNoMsg( $value ) {
  'booklet' => '%title% %url%, %doi%.',
    return wfMessage( $value ? 'htmlform-yes' : 'htmlform-no' )->inContentLanguage()->text();
  'conference' => '%author% (%year%): %title%. %booktitle% %url%, %doi%.',
  }
   'inbook' => '%author% (%year%): <em>%title%. In: %editor%: %edition%, %publisher%, %address%, %pages%</em> %url%, %doi%.',
  // Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
  'incollection' => '%author% (%year%): %title%. In: %editor%: %booktitle%, <em>%publisher%</em>, %pages%, %url%, %doi%.',
   /**
  'inproceedings' => '%author% (%year%): %title%. In: %editor%: %booktitle%,<em>%publisher%</em>, %pages%, %url%, %doi%.',
   * @return boolean True if CAPTCHA should be used, false otherwise
   'manual' => '%title% %url%, %doi%.',
   */
   'mastersthesis' => '%author% (%year%): %title%, %type%, %school%, %address%, %url%, %doi%.',
   private function useCaptcha() {
   'misc' => '%author% (%year%): %title%, %howpublished%, %pages% %url%, %doi%.',
    global $wgCaptchaClass, $wgCaptchaTriggers;
   'phdthesis' => '%author% (%year%): %title%. %type%, %school%, %url%, %doi%.',
  'proceedings' => '%editor% (%year%): %title%,<em> %publisher%</em>, %url%, %doi%.',
    return $wgCaptchaClass &&
  'techreport' => '%author% (%year%): %title%. %institution% %url%, %doi%.',
      isset( $wgCaptchaTriggers['contactpage'] ) &&
  'unpublished' => '%author% (%year%): %title%. %note%, %url%, %doi%.'
      $wgCaptchaTriggers['contactpage'] &&
);
      !$this->getUser()->isAllowed( 'skipcaptcha' );
</pre>
  }
 
  // Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
===== BibManager v1.23 REL1_26 und v1.23 master =====
  /**
 
  * @return string CAPTCHA form HTML
* Fehler bei "Edit" mit Fehlermeldung zu bereits vorhandenem Schlüssel
  */
* Fehler bei "Delete" wegen fehlender Datensatzkennung
  private function getCaptcha() {
* Bei "Verwalten" fehlen rechts die Icons für "Edit" und "Delete" sowie die Trennung zwischen beiden Texten: css-Datei fehlt im head-Bereich
    // NOTE: make sure we have a session. May be required for CAPTCHAs to work.
* In der Datei "\extensions\BibManager\includes\BibManagerHooks.php" ist in der Funktion "getIcons(...)" der Pfad 2-mal hart-codiert statt mit einer Variablen angegeben:<pre>... htmlspecialchars( $wgScriptPath . '/extensions/BibManager/resources/images/[pencil.png|book.png]' );</pre>
    wfSetupSession();
 
===== BibManager v1.1.0 REL1_23 =====
    $captcha = ConfirmEditHooks::getInstance();
 
    $captcha->trigger = 'contactpage';
* Fehler bei "Create", "Edit" und "Delete" wegen fehlender Datensatzkennung.
    $captcha->action = 'contact';
* In der Datei "\extensions\BibManager\includes\BibManagerHooks.php" ist in der Funktion "onBeforePageDisplay(...)" der Pfad zur Erweiterung 3-mal hart-codiert statt mit einer Variablen angegeben: <pre>... htmlspecialchars( $wgScriptPath . '/extensions/BibManager/client/[BibManagerCommon.css|BibManagerEdit.js|BibManagerList.js]' );</pre>
*Für ebenfalls hart-codierte Pfadangaben in der Funktion "getIcons(...)" siehe [[#BibManager 1.23 REL1_26 und 1.23 master]]
    return '<div class="captcha">' .
 
      $captcha->getForm() .
==== Spezialseiten-Gruppe ====
      "</div>\n";
 
   }
Verfügbarkeit in Abhängigkeit vom Status
* Ohne Anmeldung sollen nur die Verweise zu "Bibliographien anzeigen: Autoren" und "Bibliographien verwalten" sichtbar sein. Bei "Bibliographien verwalten" sind dann die Funktionen "Edit" und "Delete" nicht vorhanden, sondern nur "Export".
* Nach Anmeldung sind auch die Funktionen "Bibliographieeintrag anlegen" und "Bibliographien importieren" verfügbar.
 
Von den zu ändernden Dateien bzw. Verzeichnissen ist nach den Anpassungen jeweils eine Kopie mit dem Suffix "SW" im Dateinamen bzw. Verzeichnisnamen zu speichern, um nach Updates von MediaWiki oder Erweiterungen die Änderungen übernehmen zu können.
 
Es sollte eine Datei "\i18n\qqq.json" mit folgendem Code erstellt werden:
<pre>
{
  "@metadata": {
    "authors": []
  },
  "bibmanager": "BibManager",
   "bibmanager-desc": "{{desc}}"
}
}
</pre>
</pre>


==== LocalSettings.php ====
===== BibManager v1.23.0 REL1.26 Datei-Anpassungen =====
<pre>
 
// Version 2.2 für MediaWiki 1.25
* \i18n\ => \i18nSW\
#wfLoadExtension("ContactPage.php");
** de.json
// Version 2.2 für MediaWiki 1.23
** de-formal.json
require_once( "$IP/extensions/ContactPage/ContactPage.php" );
** en.json
$wgContactConfig['default'] = array(
** qqq.json
  'RecipientUser' => 'Hornemann', //'WikiUser' // Must be the name of a valid account //vormals $wgContactUser
* \includes\
  'SenderName'=> 'Kontaktformular ' . $wgSitename, //"Contact Form " // "Contact Form on" needs to be translated //vormals $wgContactSenderName
** BibManagerHooks.php => BibManagerHooksSW.php
  'SenderEmail'=> null // Defaults to $wgPasswordSender, may be changed as required
** BibManagerPagerList.php =>BibManagerPagerListSW.php
  'RequireDetails'=> true, // Whether users will be required to supply a name and an email address on Special:Contact
* \includes\specials\
  'IncludeIP'=> false, // Whether the form will include a checkbox offering to put the IP address of the submitter in the subject line
** SpecialBibManagerDelete.php => SpecialBibManagerDeleteSW.php
  'AdditonalFields'=> array(
** SpecialBibManagerEdit.php => SpecialBibManagerEditSW.php
    'Text'=> array(
* \resources\ext.bibManager.css =ext.bibManagerSW.css>
      'label-message'=> 'E-Mail-Nachricht', //'e-mail-message' //'emailmessage',
      'type'=> 'textarea',
      'rows'=> 20,
      'cols'=> 80,
      'required' => true, //Pflichtfeld
    ),
  ),
  // Added in MW 1.26
  #'DisplayFormat' => 'table', // See HTMLForm documentation for available values.
  #'RLModules' => array(), // Resource loader modules to add to the form display page.
  #'RLStyleModules' => array(), // Resource loader CSS modules to add to the form display page.
);
</pre>


=== CreativeCommonsRdf ===
===== BibManager v1.1.0 REL1.23 Datei-Anpassungen =====


Die Erweiterung soll ab MW-Version 1.19 die Variable "$wgEnableCreativeCommonsRdf" in der Datei "LocalSettings.php" ersetzen, hat aber noch Beta-Status (2015-09-21). Die 3 Dateien der Erweiterung können heruntergeladen werden bei https://www.mediawiki.org/wiki/Extension:CreativeCommonsRdf
* BibManager.php => BibManagerSW.php
 
* <del>BibManager.alias.php => BibManager.aliasSW.php</del>
=== DynamicPageList ===
* \i18n\ => \i18nSW\
 
** de.json
Es gibt 3 Erweiterungen mit der Bezeichnung "DynamicPageList", wobei die erste mit dem Alias "Intersection" nicht verwendet wird (siehe auch https://www.mediawiki.org/wiki/Extension:DPL).
** de-formal.json
** en.json
** qqq.json
* \specialpages\ => \specialpagesSW\
** BibManagerCreate_body.php
** BibManagerDelete_body.php
** BibManagerEdit_body.php
** BibManagerExport_body.php
** BibManagerImport_body.php
** BibManagerList_body.php
** BibManagerListAuthors_body.php


==== MediaWiki 1.23 ====
Die Spezialseiten-Gruppe "BibManager" und die darin angezeigten Spezialseiten werden in der Datei "\extensions\BibManager\i18n\[Sprache].json" festgelegt; siehe https://www.mediawiki.org/wiki/Manual:Special_pages#The_localisation_file. Die Einbindung funktioniert mit MW1.23 fehlerhaft: Entweder werden die Seiten nicht angezeigt (Schlüssel mit Großbuchstaben wie bisher) oder werden die Seiten nicht gefunden (Schlüssel insgesamt in Kleinbuchstaben).
* Für MW 1.23 wird die Erweiterung "DynamicPageList" mit dem Alias "DynamicPageList3" von https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:DynamicPageList3 heruntergeladen und nach dem Extrahieren in das Verzeichnis "extensions" des jeweiligen Wikis extrahiert.
* Einfügen in LocalSettings:  
<pre>include("$IP/extensions/DynamicPageList3/DynamicPageList.php");</pre>


In den Zeilen 5 und 13 der json-Sprachdateien wäre der Array-Schlüssel von "BibManager" in Kleinbuchstaben zu ändern:
<pre>
...
  "specialpages-group-bibmanager": "BibManager",
...
  "bibmanager": "BibManager",
...
</pre>


=== Inline SVG Extension ===
Die Variable $wgSpecialPageGroups in der Datei "BibManager.php" gilt als "deprecated" seit MW 1.21 (https://gerrit.wikimedia.org/r/#/c/220819/3) und kann auskommentiert werden, wenn im Verzeichnis "\specialpages\" in den jeweiligen Dateien "BibManager..._body.php" am Ende der Klasse folgende Funktion eingefügt wird (https://www.mediawiki.org/wiki/Manual:Special_pages => Special page group):
<pre>
  protected function getGroupName(){
    return 'bibmanager';
  }
</pre>


Diese Erweiterung wird ab Mediawiki 1.23 nicht mehr verwendet, weil die üblichen Browser inzwischen SVG-Elemente darstellen können.
===== Systemnachrichten für Gruppe prüfen =====


Die php-Datei "SVGtag.php" sorgt dafür, dass Inline-SVG-Code im Upload-Verzeichnis gespeichert und in einem "iframe" geladen wird. Dies ist erforderlich für ältere Browser, insbesondere für Internet Explorer bis einschließlich Version 8.
Ob die Gruppe "BibManager" in den Systemnachrichten auftaucht, lässt sich durch Aufruf der MediaWiki-Systemnachrichten, die sich bei den Spezialseiten in der Rubrik "Daten und Werkzeuge" befinden, überprüfen, indem als Präfixfilter "Specialpages-group" angegeben wird. Dann sollte bei den Ergebnissen der Name "specialpages-group-bibmanager" mit dem Text "BibManager" aufgelistet werden.
 
* Extension unter http://www.mediawiki.org/wiki/Extension:Inline_SVG_extension herunterladen.
* Datei in das Verzeichnis "extensions" kopieren
* In der Datei "LocalSettings.php" einfügen:
<pre>require_once("$IP/extensions/SVGtag.php");</pre>


=== JavaScript ===
===== Einschränkungen für Darstellung in der Spezialseiten-Gruppe überprüfen =====


Entfällt bei MW 1.23.11 LTS und wird ersetzt durch eine Anpassung in der Datei "skins\MonoBook.php".
Wenn die BibManager-Spezialseiten nicht angezeigt werden, folgendes prüfen:
* In den Dateien "BibManager.php" oder "LocalSettings.php" die Gruppenberechtigung ändern:
** Bibliographien anlegen: $wgGroupPermissions['sysop']['bibmanagercreate'] => $wgGroupPermissions['*']['bibmanagercreate']
** Bibliographien importieren: $wgGroupPermissions['sysop']['bibmanageredit'] => $wgGroupPermissions['*']['bibmanageredit']
* Beim Klassen-Konstruktor "parent::__construct('...', '...')" den 2. Parameter (Kleinbuchstaben) für $restriction weggelassen in folgenden Dateien:
** "\specialpages\BibManagerCreate_body.php" in Zeile 6
** "\specialpages\BibManagerImport_body.php" in Zeile 6


Die Erweiterung hat den Status "unmaintained" (Stand 2015-09-15); die Version 3.0.8 (2012-02-15) kann wegen einer ungültigen Internetadresse nicht heruntergeladen werden, doch gibt es auf der Internetseite https://www.organicdesign.co.nz/Extension:Javascript den Hinweis, dass die Erweiterung obsolet ist, seitdem MediaWiki den ResourceLoader bereitstellt, siehe https://www.mediawiki.org/wiki/ResourceLoader.
==== Fehler korrigieren ====


Diese Erweiterung diente zusammen mit der von S. Reher gelieferten Datei "customizeSidebar.js" dazu, den Navigationsbereich "Werkzeuge" in der Sidebar entsprechend dem Anmeldestatus zu manipulieren - siehe hierzu [[#Sidebar_anpassen_.28Wiki-Code.2C_JS.29|Sidebar anpassen]]. Dies funktionierte allerdings nur, wenn beim Browser JavaScript aktiviert war.
===== Fehler beim Speichern nach Bearbeitung =====


==== sichtbare Toolbox-Menüpunkte ====
Der bearbeitete Datensatz kann nicht gespeichert werden, weil die Prüfung des Bearbeitungsmodus fehlerhaft ist und der Datensatz wie ein Neueintrag auf einen bereits vorhandenen Zitatschlüssel überprüft wird.


* SalzWiki: alle Gruppen und User
In der Datei "\extensions\BibManager\includes\specials\SpecialBibManagerEdit.php" muss in der Funktion "execute(...)" in Zeile 69 "bm_edit_mode" zu "wpbm_edit_mode" geändert werden:
** Druckversion
<pre>
$editMode = $wgRequest->getBool( 'wpbm_edit_mode' ); #$editMode = $wgRequest->getBool( 'bm_edit_mode' ); für HAWK HHG geändert 2016-02-16
</pre>


* SaltWiki: alle Gruppen und User
Anschließend ist eine Kopie der Datei mit dem Suffix "SW" zu speichern.
** Printable version


* Repository: alle Gruppen und User
===== Fehler bei Löschvorgang =====
** Printable version


==== ausgeblendete Toolbox-Menüpunkte ====
Der Datensatz kann wegen fehlender Angaben nach der Löschbestätigung nicht gelöscht werden:
* Element "bm_bibtexCitation" existiert nicht im Formular, sondern "wpbm_bibtexCitation"
* Element "bm_delete" existiert nicht im Formular, sondern "wpbm_delete"
* $deleteSubmit ist immer falsch, weil String (Zeichenkette) mit Boolean (Wahrheitswert) verglichen wird


* SalzWiki: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
In der Datei "\extensions\BibManager\includes\specials\SpecialBibManagerDelete.php" folgende Anpassungen vornehmen:
** "Links auf diese Seite" (Special:WhatLinksHere/Main_Page)
* Bei Array "$formDescriptor" einen Namen für das Formularfeld "bm_delete" vorgeben
** "Änderungen an verlinkten Seiten" (Spezial:%C3%84nderungen_an_verlinkten_Seiten)
* Bei Array "$formDescriptor" einen Namen für das Formularfeld "bm_bibtexCitation" vorgeben
** "Hochladen" (Special:Upload)
* In Funktion "formSubmit(...)" bei der Prüfung von "$formdata['bm_delete']" Umwandlung von Boolean in String einfügen
** "Spezialseiten" (Special:SpecialPages)
** "Permanenter Link" (Main_page&oldid=921)
** "Seiteninformationen" ([Seitentitel]&action=info])


* SaltWiki: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
<pre>
** "What links here" (Special:WhatLinksHere/Main_Page)
//Z.59ff
** "Related changes" (Special:RecentChangesLinked)
$formDescriptor = array (
** "Hochladen" (Special:Upload)
  'bm_delete' = array (
** "Spezialseiten" (Special:SpecialPages)
    'class' => 'HTMLHiddenField';
** "Permanent link" (Main_page&oldid=921)
    'default' => true,
** "Page information" ([Seitentitel]&action=info])
    'name' => 'bm_delete', // für HAWK HHG eingefügt 2016-02-09
  )
  'bm_bibtexCitation' = array (
    'class' => 'HTMLHiddenField';
    'default' => $citation,
    'name' => 'bm_bibtexCitation', // für HAWK HHG eingefügt 2016-02-09
  )
);
//Z.89
if ( empty( $formData['bm_delete'] ) || $formData['bm_delete'] !== (string)true ) // für HAWK HHG ergänzt mit (string) 2016-02-09
</pre>


* Repository: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
===== Falscher Text nach Löschvorgang =====
** "Links auf diese Seite" (Special:WhatLinksHere/Main_Page)
** "Änderungen an verlinkten Seiten" (Spezial:%C3%84nderungen_an_verlinkten_Seiten)
** "Datei Hochladen" (Special:Upload)
** "Spezialseiten" (Spezial:Spezialseiten)
** "Permanent link" (Main_page&oldid=9522)
** "Seiteninformationen" ([Seitentitel]&action=info])


=== Math (Wiki-Code) ===
Nachdem ein Eintrag gelöscht wurde, erscheint "Ihre Daten wurden erfolgreich gespeichert!" (auch schon in MW1.16).


"Math" kann heruntergeladen werden von https://www.mediawiki.org/wiki/Extension:Math/de. Es ist inzwischen eine Erweiterung; bei MW1.16 wurde hingegen die Datei "[wikiname]\includes\Math.php" angepasst.
In der Datei "\extensions\BibManager\includes\specials\SpecialBibManagerDelete.php" in der Funktion "formSubmit(...)" wird in Z.94 fälschlicherweise "bm_success_save-complete" verwendet. Da es kein Text-Element "bm_success_delete" gibt, muss es in den Dateien "\i18n\[en|de|de-formal].json" für "en", "de" und "de-formal" in der Zeile nach "bm_success_save-complete" ergänzt werden, damit es in der Datei "BibManagerDelete_body.php" verwendet werden kann.


Die Erweiterung "Math" ist für die Darstellung von Formeln erforderlich und nutzt standardmäßig "texvc" (TeX validator and converter), wobei das mitgelieferte "texvc" nur unter Linux genutzt werden kann und für Windows erst kompiliert werden muss und problembehaftet ist.
Nach den Anpassungen ist die Delete-Datei als Kopie mit dem Suffix "SW" im Verzeichnis "specials" und das Verzeichnis "i18n" als Kopie "i18nSW" zu speichern.
 
Somit scheidet "texvc" unter Windows aus. Stattdessen muss für die Nutzung von GhostScript, ImageMagick und MikTeX wie bei MW1.16 der Wiki-Code angepasst und die Klasse "LatexRender" in der Datei "Math_SW.php" mit Anpassungen als Klasse "MathLatexRender" weiterverwendet werden. Der Quelltext von "LatexRender" für alte MediaWikiVersionen wie MW1.16 steht zur Verfügung bei "https://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Windows/math.php".


Getestet werden kann die Erweiterung "Math" über die Kommandozeile:
<pre>
<pre>
D:
//de.json Z.135f
cd xampp\htdocs\[wikiname]
  "bm_success_save-complete": "<div class=\"successbox\"><strong>Deine Daten wurden erfolgreich gespeichert!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
D:\xampp\php\php.exe tests\phpunit\phpunit.php extensions\Math\tests\
  "bm_success_delete": "<div class=\"successbox\"><strong>Die Daten wurden erfolgreich gelöscht!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
 
//de-formal.json Z.135f
  "bm_success_save-complete": "<div class=\"successbox\"><strong>Ihre Daten wurden erfolgreich gespeichert!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
  "bm_success_delete": "<div class=\"successbox\"><strong>Die Daten wurden erfolgreich gelöscht!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
 
//en.json Z.135f
  "bm_success_save-complete": "<div class=\"successbox\"><strong>Your data was successfully saved!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
  "bm_success_delete": "<div class=\"successbox\"><strong>The data were successfully deleted!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
</pre>
</pre>


Zur Installation und Konfiguration von GhostScript, ImageMagick und MikTeX siehe [[#Eingabe_von_Formeln_mittels_Tex_.28Wiki-Code.29| Eingabe_von_Formeln_mittels_Tex_(Wiki-Code)]]
<pre>
//SpecialBibManagerDelete.php Z.92ff
// für HAWK HHG geändert zu "delete"-Text statt "save-complete" 2016-02-15
if ( $result === true ) {
  $wgOut->addHtml( wfMessage( 'bm_success_delete') ); #wfMsg( 'bm_success_save-complete') für HAWK HHG korrigiert 2016-02-08
  ...
}
</pre>


==== Symbol im Editor ====
Außerdem kann in der Datei "SpecialBibManagerDelete.php" wie in Z.94 die Funktion "wfMsg()" ersetzt werden durch "wfMessage()" in den Zeilen 24, 29, 35, 43, 54, 71.


Bei Verwendung des einfachen Standard-Editors wird diesem automatisch ein Symbol für "Math" mit den entsprechenden Funktionen hinzugefügt.
===== Fehler im HTML-Code korrigieren =====


Bei Verwendung der Erweiterung "WikiEditor" muss die Editor-Erweiterung angepasst werden, um das "Math"-Symbol mit den Bearbeitungsfunktionen nutzen zu können.
Bei der BibManager-Übesicht wird für jede Tabellenzeile ein <tr> statt eines </tr> erzeugt (auch schon in MW1.16). Im Verzeichnis "BibManager\includes\" in der Datei "bibManagerPagerList.php" in Zeile 133 den fehlenden Schrägstrich einfügen:
<pre>
  $tablerow[] = '</tr>'; // Schrägstrich für schließendes Tag eingefügt 2012-09-17 G. Werner
</pre>


==== Installation "Math" ====
===== Fehlende Icons bei Verweisen rechts für "edit" und "delete" =====


* Die heruntergeladene Erweiterung entpacken in das Verzeichnis "extensions\"
In der BibManager-Übersicht sind rechts Text-Hyperlinks ohne Abstand für "edit" und "delete" anstatt Icons; es sind in folgenden Dateien Anpassungen vorzunehmen:
* Die Dateien "Math.php" und "MathRenderer.php" umbenennen in "Math_original.php" und "MathRenderer_original.php"; davon Kopien "Math.php" und "MathRenderer.php" erstellen und die Kopien wie nachfolgend beschrieben anpassen
* "\extensions\BibManager\includes\BibManagerHooks.php"
* Die Erweiterung in der Datei "LocalSettings.php" einbinden<pre>require_once "$IP/extensions/Math/Math.php";</pre>
* "\extensions\BibManager\resources\ext.bibManager.css"
* Existenz der Datenbanktabelle "math" überprüfen, ansonsten erstellen
* "\extensions\BibManager\includes\BibManagerPagerList.php"
** entweder SQL-Befehl für MySQL/MariaDB aus der Datei "\extensions\Math\db\math.sql" mit phpMyAdmin ausführen
** oder per Kommandozeile eine Aktualisierung ausführen, aber nur wenn die Tabelle noch nicht exisitiert: <pre>D:\xampp\php\php.exe D:\xampp\htdocs\[wikiname]\maintenance\update.php</pre>


==== ImageMagick und MikTeX für Math statt Texvc ====
Nach den Anpassungen ist jeweils eine Kopie der Datei mit dem Suffix "SW" zu speichern.


Bei MW1.23 soll zwar "Math" ohne "ImageMagick" verwendet werden (siehe https://www.mediawiki.org/Manual:Running_MediaWiki_on_Windows#ImageMagick), doch funktioniert dies nicht mit "texvc" unter Windows. Deshalb wird in der Datei "LocalSettings.php" weiterhin "ImageMagick" mit "true" aktiviert statt mit "false" deaktiviert und außerdem "Texvc" für die Datei "Math.hooks.php" deaktiviert:
Bei "BibManagerHooks.php" ist in Funktion "onBeforePageDisplay(...)" am Anfang, vor Zeile 29 (Eindbindung der JS-Module), die Einbindung der css-Datei einzufügen:
<pre>
<pre>
$wgUseImageMagick = true;
  // für HAWK HHG eingefügt 2016-02-12
#ImageMagick
  $out->addModuleStyles( 'ext.bibManager.styles' );
$wgImageMagickConvertCommand = 'D:\texmf\imagick\convert.exe';
$wgImageMagickIdentifyCommand = 'D:\texmf\imagick\identify.exe';
#TeX
$wgLaTexCommand = 'D:\texmf\miktex\bin\latex.exe';
$wgDvipsCommand = 'D:\texmf\miktex\bin\dvips.exe';
$wgSVGConverter = 'ImageMagick';
$wgSVGConverters = array(
  'ImageMagick' => '"D:\texmf\imagick\convert.exe" -background white $input PNG:$output',
);
require_once "$IP/extensions/Math/Math.php";
$wgMathDisableTexFilter = true; // in Math.hooks.php
</pre>
</pre>


===== Anpassungen "Math.php" und "MathRenderer.php" (Wiki-Code) =====
Bei "ext.bibManager.css" in Zeile 96 einen Kommentar einfügen und zwischen "width: 16px;" und "text-indent: 9999px;", Z.99f, eine neue Zeile "height: 15px;" einfügen
* in der Datei "Math.php" zwischen Z.191 und Z.192 die Klasse "LatexRender" hinzufügen
<pre>
: <pre>#$wgAutoloadClasses['MathLatexRender.php'] // für HAWK HHG eingefügt 2016-04-25</pre>
/* für HAWK HHG wg. nicht sichtbarer Icons, die bei BibManager v1 ohne "overflow:hidden" sehr weit rechts waren, geändert 2016-02-15 */
* in der Datei "MathRenderer.php" bei der Funktion "getRenderer(...)" in Z.122f bei "default:"
#bm_table a.icon {
: <code>
  ...
: default: // für HAWK HHG angepasst 2016-04-25
  height: 15 px; /*text-indent: 9999px;*/
: $renderer = new MathLatexRender( $tex, $params ); #$renderer = new MathTexvc( $tex, $params );
  ...
: </code>
}
* von den beiden Dateien eine Sicherungskopie "Math_SW.php" und "MathRender_SW.php" vorsorglich für Änderungen durch Wiki-Updates speichern
</pre>


===== Anpassungen Klasse "LatexRender" =====
Bei "BibManagerPagerList.php" in Funktion "formatRow(...)" in den Zeilen 104, 108, 117 und 120 die "wfMsg"-Funktionen ersetzen durch "wfMessage"-Funktionen:
 
<pre>
In der alten Datei "Math.php" bzw. "Math_SW.php" waren 2 Klassen, nämlich die Klasse "MathRenderer" und die Klasse "LatexRender" enthalten, wobei "MathRenderer" im Vergleich zum Original nur rudimentär vorhanden war, um ein Objekt der Klasse, "LatexRender" zu erzeugen.
if ($wgUser->isAllowed('bibmanageredit')){
  // für HAWK HHG "wfMsg()" zu "wfMessage()" geändert 2016-02-15
  $editLink = Linker::link(
    SpecialPage::getTitleFor( 'BibManagerEdit' ),
    wfMessage( 'bm_list_table_edit' ), /*wfMsg( 'bm_list_table_edit' )*/
    array (
      'class' => 'icon edit',
      'title' => wfMessage( 'bm_list_table_edit' ) /*wfMsg( 'bm_list_table_edit' )*/
    ),
    $specialPageQuery
  );
}


Aus diesen beiden Klassen wird für MW1.23 die Klasse "MathLatexRender" als Sub-Klasse der Klasse "MathRenderer" aus der Erweiterung "Math.
if ($wgUser->isAllowed('bibmanagerdelete')){
  $deleteLink = Linker::link(
    SpecialPage::getTitleFor( 'BibManagerDelete' ),
    wfMessage( 'bm_list_table_delete' ),
    array (
      ...
    ),
    $specialPageQuery
  );
}
</pre>


Anstatt der Klasse "MathRenderer" unterhalb der Klasse "LatexRender" wird nun in der Klasse "LatexRender" die Funktion "renderMath()" durch Umbenennung und Anpassung als Konstruktor-Funktion "__constructor(...)" verwendet, wobei die Konstruktor-Funktion auch die Funktion "LatexRender(...)", die bisher zur Initialisierung als Konstruktor diente, ersetzt.


Hinzu kommt eine neue Funktion "render()", die durch die Definition in der Datei "MathRenderer.php" erforderlich ist.
===== Fehlendes Icon "Link zum Volltext" bei Detailseite =====


Zudem werden die Variablen $url und $text als Klassen-Variablen definiert.
Auf der Detailseite eines Bibliographieeintrags wird rechts statt des Icons der Alternativtext "Link zum Volltext" bzw. "Fulltext link" angezeigt; es ist folgende Datei anzupassen:
* "\extensions\SaltWiki\SaltWiki.php"


Außerdem wird in der Funktion "cleanTemporaryDirectory()" eine Ergänzung vorgenommen, damit vor dem Löschen der Dateien deren Existenz überprüft wird, um Warnungen zu vermeiden.
Nach den Anpassungen ist jeweils eine Kopie der Datei mit dem Suffix "_SW" zu speichern.
 
Zusätzlich werden für neuere PHP-Versionen bei "htmlentities(...)" die Parameter für XHTML und UTF-8 hinzugefügt.


Bei "SaltWiki.php" ist in der Funktion "sw_onBibManagerGetIcons(...)" vor Zeile 160 ein Kommentar einzufügen und in Zeile 161 der Pfad von "client" zu "resources" anzupassen:
<pre>
<pre>
/**
function sw_onBibManagerGetIcons ( $entry, &$icons) {
* LaTeX Rendering Class
  ...
* Copyright (C) 2003 Benjamin Zeiss <zeiss@math.uni-goettingen.de>
  // für HAWK HHG und MW1.23LTS Pfad von "client" zu "resources" angepasst 2016-06-14
  * -----------------------------------------------------------------------
  $icons['fulltext'] = array (
* Changed to MathLatexRender Class for HAWK HHG by Gunnar Werner (C) 2016
  'src' = $wgScriptPath . '/extensions/BibManager/resources/images/' . $icon,
* to be used with MW 1.23 LTS and extension Math REL-1_23...
  * for Windows with GhostScript+ImageMagick+MikTeX instead of Texvc
* Notice 1: In file Math.php loading this class has to be added:
* $wgAutoloadClasses['MathLatexRender'] = $dir . 'MathLatexRender.php';
* Notice 2: In file MathRenderer.php new default object $renderer has to be changed:
* $renderer = new MathLatexRender( $tex, $params ); #$renderer = new MathTexvc( $tex, $params );
* -----------------------------------------------------------------------
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
...
* @author Benjamin Zeiss <zeiss@math.uni-goettingen.de>
* => @author Gunnar Werner for HAWK HHG <gunnar.werner@hawk-hhg.de>
* @version v0.8 => v0.8.2016.05
* @package latexrender => class MathLatexRender for extension Math
...
*/
...
// "extends MathRenderer" new by changes 2016
class MathLatexRender extends MathRenderer {
   ...
   ...
  // new by changes 2016
);
  var $url = "";
...
  var $text = "";
}
  ...
</pre>
  /* function replaced with function __constructor() below by changes 2016
 
  function LatexRender($picture_path,$picture_path_httpd,$tmp_dir) {
===== In BibManager v1.1.0 Fehler bei SpecialPageAliases =====
    ...
 
  }
In der Datei "BibManager.alias.php" müssen die Array-Schlüssel von $specialPageAliases wie z. B. 'BibManagerCreate' für die jeweilige Sprache in Kleinbuchstaben angegeben werden, damit die BibManager-Seiten bei den Spezialseiten aufgelistet werden, allerdings werden die Seiten dann nicht mehr gefunden, wenn man auf die Verweise klickt.
  */
 
  // new constructor combining old function LatexRender()
Einzige Lösung scheint zu sein, in der Datei "BibManager.php" die Zeile 66 auszukommentieren:
  // and function renderMath() from old class MathRenderer
<pre>
  // by changes 2016
#$wgExtensionMessagesFiles['BibManagerAlias'] = $dir . 'BibManager.alias.php'; // Fehlfunktion in MW 1.23
  public function __construct ($latex_formula, $params = array() ) {
</pre>
    global $wgMathDirectory,
          $wgMathPath,
          $wgTmpDirectory,
          $wgLaTexCommand,
          $wgDvipsCommand,
          $wgImageMagickConvertCommand,
          $wgImageMagickIdentifyCommand;


    $latex_formula = '\displaystyle ' . $latex_formula;
===== In BibManager v1.1.0 fehlerhafte Funktionen auskommentieren bzw. ändern =====


    // from old function LatexRender()
BibManager v1.1.0 (REL1.23) verwendet in mehreren Dateien die Funktion "wfLoadExtensionMessages()", die seit MW 1.21 nicht mehr existiert, so dass die Zeile in folgenden Dateien auskommentiert werden muss:
    $this->_picture_path = $wgMathDirectory;
*"\specialpages\BibManagerCreate_body.php" in Zeile 7
    $this->_picture_path_httpd = $wgMathPath;
*"\specialpages\BibManagerEdit_body.php" in Zeile 7
    $this->_tmp_dir = $wgTmpDirectory;
*"\specialpages\BibManagerDelete_body.php" in Zeile 7
    $this->_tmp_filename = md5(rand());
*"\specialpages\BibManagerList_body.php" in Zeile 7
*"\specialpages\BibManagerListAuthors_body.php" in Zeile 7


    // check Math dir
BibManager v1.1.0 (REL1.23) verwendet in der Datei "\specialpages\BibManagerList_body.php" in den Zeilen 25 und 29 die Methode "SpecialPageFactory::getPage('...')->getDescription()", die einen Fehler "Call to a member function getDescription() on null" verursacht, weil "getPage('...') als Ergebnis NULL hat und "getDescription()" nicht darauf angewendet werden kann. Ursache ist der Name bei "getPage('...')", der mit dem Alias ersetzt werden muss. Der Alias der Sprachvarianten befindet sich in der Datei "\BibManager\BibManager.alias.php". Um den Alias für "getPage('...')" zu erhalten, wird die Methode "SpecialPageFactory::getLocalNameFor('...')" benötigt:
    if(!file_exists($wgMathDirectory)){@mkdir($wgMathDirectory);}
<pre>
    if(!file_exists($wgTmpDirectory)){@mkdir($wgTmpDirectory);}
// $linkDescription eingefügt und $createLink angepasst 2015-12-01 G. Werner für HAWK HHG
 
$linkDescription = array();
    // Objects $latex and $url replaced with $this by changes 2016
if(SpecialPageFactory::getPage(SpecialPageFactory::getLocalNameFor('BibManagerCreate'))===NULL){
    $this->_latex_path = $wgLaTexCommand;
  $linkDescription['Create'] = NULL;
    $this->_dvips_path = $wgDvipsCommand;
}
    $this->_convert_path = $wgImageMagickConvertCommand;
else{
    $this->_identify_path = $wgImageMagickIdentifyCommand;
  $linkDescription['Create'] = SpecialPageFactory::getPage(SpecialPageFactory::getLocalNameFor('BibManagerCreate'))->getDescription();
}
if(SpecialPageFactory::getPage(SpecialPageFactory::getLocalNameFor('BibManagerImport'))===NULL){
  $linkDescription['Import'] = NULL;
}
else{
  $linkDescription['Import'] = SpecialPageFactory::getPage(SpecialPageFactory::getLocalNameFor('BibManagerImport'))->getDescription();
}
$createLink = Linker::link(
  SpecialPage::getTitleFor('BibManagerCreate'),
  /*SpecialPageFactory::getPage('BibManagerCreate')->getDescription()*/
  $linkDescription['Create']
);
$importLink = Linker::link(
  SpecialPage::getTitleFor('BibManagerImport'),
  /*SpecialPageFactory::getPage('BibManagerImport')->getDescription()*/
  $linkDescription['BibManagerImport']
);
</pre>


    $this->url = $this->getFormulaURL($latex_formula);
===== In BibManager v1.1.0 Fehler bei neuem Eintrag und Eintragsbearbeitung =====


    // htmlentities for newer PHP versions changed 2016
Der Fehler bei einem Neueintrag in BibManager v1.1.0 REL1.23 2015-06-16 resultiert aus der Weiterleitung zur Datei für Bearbeitungen "specialpages\BibManagerEdit_body.php".
    $alt_latex_formula = htmlentities($latex_formula, ENT_QUOTES|ENT_XHTML, "UTF-8");
    $alt_latex_formula = str_replace("\r", "", $alt_latex_formula);
    $alt_latex_formula = str_replace("\n", "", $alt_latex_formula);
    $alt_latex_formula = str_replace('\displaystyle ', "", $alt_latex_formula);


    if($this->url != false){
In der Datei "specialpages\BibManagerCreate_body.php" kann in der Funktion "execute()" das Array "$formDescriptor" zwischen "id" und "options" um die Angabe eines Namens ergänzt werden, damit das Formularfeld "bm_select_type" nicht "wpbm_select_type" heißt:
      $this->text = '<img src="'.$this->url.'" title="'.$alt_latex_formula.'" alt="'.$alt_latex_formula.'" />';
<pre>
    }
//Z.26ff
    else{
$formDescriptor = array (
      $this->text = '[Unparseable or potentially dangerous latex formula. Error '.$this->_errorcode.' '.$this->_errorextra.']';
  'bm_select_type' => array (
    }
     'class' => 'HTMLSelectField',
  }
     ...
  ...
     'id' => '',
  // new for abstract function in "MathRenderer.php" by changes 2016
     'name' => 'bm_select_type',
  public function render(){
     'options' => ...
    return $this->text."\n";
  )
  }
)
  ...
</pre>
  function renderLatex($latex_formula) {
    ...
    // create temporary dvi file
    ...
    $status_code = exec($command);
    // added checking file by changes 2016
    if (!$status_code || !file_exists($this->_tmp_filename.".dvi")) {
      ...
      $this->_errorcode = 4;
      return false;
    }
    ...
  }
  ...
  function cleanTemporaryDirectory() {
     ...
    // check existence before deleting to prevent warnings added by changes 2016
    /*
    unlink($this->_tmp_dir."/".$this->_tmp_filename.".tex");
     ...
     */
     $file_types = array("tex", "aux", "log", "dvi", "ps", $this->_image_format);
     foreach($file_types as $f_typ){
      $tmp_file = $this->_tmp_dir."/".$this->_tmp_filename.".".$f_typ;
      if(file_exists($tmp_file)){
        unlink($tmp_file);
      }
      $tmp_file = "";
    }


    chdir($current_dir);
==== BibManager-Berechtigungen ====
  }
}
</pre>


==== LaTeXML für Math statt Texvc ====
'''Rechte-Vergabe für BibManager'''


Da LaTeXML nur bei einfachen Formeln funktioniert, kommt es nicht als Alternative zu Texvc in Betracht.
In der Datei "LocalSettings.php" werden zwischen "include_once(...)" und dem Array für die Zitierweise folgende Berechtigungen definiert, wobei im deutschen Salzwiki "Redakteur" statt "Editor" anzugeben ist:


In der Datei "readme" gibt es folgende Hinweise:
## Berechtigungen eingefügt 2012-05-11
* Seit MW1.19 beschränken sich die Rendering-Optionen auf "Always PNG" und "Leave it as TeX".
$wgGroupPermissions['*']['bibmanagercreate'] = false;
* Statt Bildern kann "MathML" mittels "LaTeXML" verwendet werden
$wgGroupPermissions['*']['bibmanageredit'] = false;
** Für LaTeXML ist "php5-curl" erforderlich; bei Windows ist es im Verzeichnis "\php\ext\" die Datei "php_curl.dll", die als Modul in der Datei "php.ini" eingebunden sein muss
$wgGroupPermissions['*']['bibmanagerdelete'] = false;
** In der Datei "LocalSettings.php" wird LaTeXML für die Konvertierung zu MathML verwendet: "$wgMathUseLaTeXML = true;"
$wgGroupPermissions['autor']['bibmanagercreate'] = true;
** In der Datei "LocalSettings.php" wird für anonyme Seitenaufrufe angegeben: "$wgDefaultUserOptions['math'] = MW_MATH_LATEXML"
$wgGroupPermissions['autor']['bibmanageredit'] = true;
** Empfohlen wird eine Core-Version von wmf/1.22wmf7 oder neuer
#$wgGroupPermissions['autor']['bibmanagerdelete'] = false;
$wgGroupPermissions['Redakteur|Editor']['bibmanagercreate'] = true;
$wgGroupPermissions['Redakteur|Editor']['bibmanageredit'] = true;
$wgGroupPermissions['Redakteur|Editor']['bibmanagerdelete'] = true;
$wgGroupPermissions['sysop']['bibmanagercreate'] = true;
  $wgGroupPermissions['sysop']['bibmanageredit'] = true;
$wgGroupPermissions['sysop']['bibmanagerdelete'] = true;


==== Texvc für Math kompilieren ====
'''Entfernen der Löschen- und Editier-Buttons ohne Rechte-Vergabe'''


Für die Kompilierung ist "MinGW" gegenüber "Cygwin" vorzuziehen, weil es unabhängig von den dll-Dateien und deren MS-Lizenzen mit der MSVC-Runtime funktioniert (siehe http://stackoverflow.com/questions/771756/what-is-the-difference-between-cygwin-and-mingw).
Das Entfernen der Schaltflächen funktionierte bis April 2012 auf nachfolgend beschriebene Weise, solange es noch kein Rechte-Management für den BibManager gab.


Da für "MinGW" keine verwertbare Ausgangsdatei zur Verfügung steht - , "makefile" wird nicht akzeptiert -, müssen "Cygwin" und "OCaml" (Version 4.02.3 32Bit + findlib + batteries) installiert werden (Dauer ca. 20 Min.). "OCaml" kann bei http://caml.inria.fr oder bei http://protz.github.io/ocaml-installer/ heruntergeladen werden.
In der Datei BibManager/includes/BibManagerPagerList.php werden in den Zeilen 57ff dazu die Variablen "$editLink" und "$deleteLink" entfernt.


'''Cygwin'''
Mit ein wenig PHP-Kenntnissen kann man auch die Anzeige des Links schaltbar machen:


Während der Installation von "OCaml" in das Verzeichnis "D:\texmf\" wird zusätzlich "Cygwin" im Verzeichnis "C:\cygwin\" installiert, sofern noch nicht vorhanden.
  $tablerow = array ( );
 
  $tablerow[] = '<tr>';
Für die Installation von "Cygwin" muss zum Herunterladen ein Mirror-Server ausgewählt werden, z. B. ftp://ftp.hawo.stw.uni-erlangen.de.
  $tablerow[] = '  <td style="vertical-align:top;">' . $citationLink . '</td>';
  $tablerow[] = '  <td>' . $format . '</td>';
  #$tablerow[] = '  <td style="text-align:center;">' . $editLink . $deleteLink . '</td>';
  if($_REQUEST['showDelete'] == 1){$tablerow[] = '  <td style="text-align:center;">' . $editLink . $deleteLink . '</td>';}
  else{$tablerow[] = '  <td style="text-align:center;">' . $editLink . '</td>';}
  $tablerow[] = '  <td style="text-align:center;">' . $exportLink . '</td>';
  $tablerow[] = '<tr>';
 
So würde der Link nur angezeigt werden, wenn in der Url "&showDelete=1" vorkommt.


Vor dem Kompilieren müssen Dateien angepasst werden (siehe https://www.mediawiki.org/wiki/Texvc#Windows und https://www.mediawiki.org/wiki/MWWRender.ml):
Wenn die Löschen-Funktion vollständig deaktiviert und nicht nur den Link versteckt werden soll, müssen in der Datei BibManager/BibManager.php folgende Zeilen auskommentiert werden:
* \Math\math\render.ml Z.42 und Z.48 (2 Backslashes statt einem Schrägstrich)
: <pre>...finalpath^"\\"^md5...</pre>
: <pre>...finalpath^"\\"^md5...</pre>


'''MinGW'''
  $wgAutoloadClasses['BibManagerDelete'] = $dir . 'specialpages/BibManagerDelete_body.php';
  $wgSpecialPages['BibManagerDelete'] = 'BibManagerDelete';


"MinGW" (2013-10-26) kann als Installationsmanager, der während der Installation die ausgewählten "Packages" aus dem Internet lädt (Dauer ca. 10 Min.), heruntergeladen werden bei https://sourceforge.net/projects/mingw/files/ (Stand 2016-04-29).
==== Anleitung anpassen und installieren ====


"MinGW" wird als 32Bit-Version im Verzeichnis "C:\MinGW\" installiert und wird nicht in der Systemsteuerung bei den installierten Programmen aufgelistet. Das Programm-Unterverzeichnis "bin\" muss bei der Umgebungsvariablen "Path" hinzugefügt und der Server danach neu gestartet werden.
Die von halloWelt! gelieferte Datei "manual.xml" enthält alle 4 Anleitungen: Benutzerhandbuch, User manual, Administrationshandbuch und Admin manual, die jeweils durch die <page>-Elemente gegliedert sind.


Im Installationsmanager bei <del>"Basic Setup"</del> "All Packages" alle Packages von "MinGW", aber nicht "MSYS" aktivieren. Danach im Menü "Installation => Apply changes" auswählen.
* Für das SalzWiki ist nur der <page>-Bereich "BibManager:Benutzerhandbuch" für den Import relevant, so dass eine Kopie der Datei unter "bibmanager_manual_user_de.xml" gespeichert wird und in dieser Datei die 3 anderen <page>-Bereiche entfernt werden.
* Für das SaltWiki und das Repositorium ist jeweils nur der <page>-Bereich "BibManager:User manual" für den Import relevant, so dass eine Kopie der Datei unter "bibmanager_manual_user_en.xml" gespeichert wird und in dieser Datei die 3 anderen <page>-Bereiche entfernt werden.
* Der Bilder-Import für das Handbuch findet nur im Repositorium statt.


Kompilieren (siehe auch http://www.mingw.org/wiki/mingw_for_first_time_users_howto):
==== Anleitung anpassen ====
* Die DOS-Kommandozeile als Administrator öffnen
Im <title>-Element nach <page> ist jeweils "HalloWelt:" vor "BibManager:..." zu entfernen:
* zum "Math"-Verzeichnis wechseln
<pre>
* Befehl zum Kompilieren eingeben
<page>
<title>HalloWelt:BibManager:...</title>
</pre>
Ebenso ist der Teil "Project:" vor "BibManager:..." in den Admin-Anleitungen am Ende des <text>-Elementes zu entfernen:
<pre>
<pre>
C:\MinGW\bin\gcc makefile -o texvc.exe
  [[Project:BibManager:...]]
  [[Project:BibManager:...]]</text>
  </revision>
</page>
</pre>
</pre>


Fehlermeldung: "Das Programm kann nicht gestartet werden, da libiconv-2.dll auf dem Computer fehlt."
==== Anleitung im Wiki installieren ====


In "Systemsteuerung => Alle Systemsteuerungselemente => System => Erweiterte Systemeinstellungen => Umgebungsvariablen" bei "Path" am Ende einfügen:
* Die angepasste xml-Datei über "Spezialseiten->Import" ins Wiki laden.
<pre>;C:\MinGW\bin\</pre>
* Anschließend sind die Bilder für das [[Project:BibManager:...]] im Repositorium mittels DOS-Konsole und PHP hochzuladen, um sie ins Wiki zu bringen:
<pre>
D:\
xampp\php\php.exe xampp\htdocs\saltwiki\maintenance\importImages.php xampp\htdocs\saltwiki\images_en
</pre>


=== MwEmbedSupport ===
=== CategoryTree ===


Die Erweiterung wird für die Wiedergabe von Videodateien mit der Erweiterung [[#TimedMediaHandler|"TimedMediaHandler"]] benötigt. Sie kann heruntergeladen werden bei https://www.mediawiki.org/wiki/Extension:MwEmbedSupport
Die Extension dient zur Darstellung der Kategorienbäzme, damit schnell den Artikeln und Dokumenten die richtigen Kategorien zugewiesen werden können.


=== OggHandler (JavaScript) ===
* Extension unter http://www.mediawiki.org/wiki/Categorytree herunterladen und in den Extensionsordner kopieren.
 
* In den Localsettinge eingefügen.
Die Erweiterung wird ab Mediawiki 1.24 nicht mehr unterstützt; empfohlen wird die Erweiterung "TimedMediaHandler", die die Erweiterung "MwEmbedSupport" benötigt und ebenfalls mit JavaScript funktioniert.
 
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 heise.de und wird dann gespeichert unter "D:\ffmpeg-wiki\"


Installation der Erweiterung:
* Extension unter http://www.mediawiki.org/wiki/Extension:OggHandler herunterladen.
* Extrahieren der Dateien nach extensions/OggHandler
* In der Datei "LocalSettings.php" einfügen:
<pre>
<pre>
## Repository: OggHanlder oder MwEmbedSupport und TimedMediaHandler
$wgUseAjax = true; ##muss von false auf true geändert werden, falls noch nicht geschehen
## OggHandler nur bis MW 1.23, danach MwEmbedSupport und TimedMediaHandler
require_once("{$IP}/extensions/CategoryTree/CategoryTree.php");  
require_once("$IP/extensions/OggHandler/OggHandler.php");
# FFmpeg auskommentiert, solange kostenfreie Lizenz für Hochschule ungeklärt ist
#$wgFFmpegLocation = "D:\ffmpeg-wiki\bin\ffmpeg";
</pre>
</pre>


=== QuestyCaptcha ===
=== CharacterEscapes, LOParserFunctions, ControlStructureFunctions  ===


Für SaltWiki wird zusätzlich zu "ConfirmEdit" als Erweiterung das Captcha "QuestyCaptcha" gegen Spam-Anmeldungen genutzt, da das Standard-Mathe-Captcha nicht ausreichte.
Notwendig für #if: und #switch-Anweisungen (z. B. beim Einsetzen des Seitentitels im Kopf von Vorlage:Infobox_Salz und bei den Hilfe-Seiten.
Die anderen angebotenen Captchas werden in zukünftigen Mediawiki-Versionen nicht mehr unterstützt oder funktionieren nicht mit allen gängigen Browsern oder funktionieren mit nicht-barrierefreien Bildern und/oder benötigen zusätzliche Installationen auf dem Wiki-Server mit Administrationsrechten, weshalb "QuestyCaptcha" trotz Beta-Status als einzig brauchbare Möglichkeit verwendet werden muss.
"ControlStructureFunctions" soll laut "mediawiki.org" nur bis Version 1.12 erforderlich und danach im Wiki-Code integriert sein, was aber scheinbar nicht zutrifft.<br>
 
Alternativ zu "LOParserFunctions" und "ControlStructureFunctions" kann möglicherweise auch die Erweiterung "ParserFunctions" (http://www.mediawiki.org/wiki/Help:ParserFunctions) in Kombination mit der Erweiterung "Loop" (http://www.mediawiki.org/wiki/Help:Loop) verwendet werden, wobei Folgendes zu berücksichtigen ist:
*Dateien "QuestyCaptcha.php", "QuestyCaptcha.class.php" und "QuestyCaptcha.i18n.php" unter http://www.mediawiki.org/wiki/Extension:QuestyCaptcha herunterladen und unter "extensions\ConfirmEdit\" speichern.
*In der Datei "LocalSettings.php" nach "require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );" einfügen:
<pre>
<pre>
##
Don't These Parser Functions Already Exist?
## EXTENSIONS
Yes and no. The ParserFunctions extension has
...
#if, #ifeq, #ifexpr, #switch, and #ifexist,  
require_once( "$IP/extensions/ConfirmEdit/QuestyCaptcha.php" );
and Loop Functions extension has
$wgCaptchaClass = "QuestyCaptcha";
#for and #foreach.  
# Salzwiki
The limitation of all those parser functions is  
$wgCaptchaQuestions[] = array('question' => 'Welches Wort fehlt: "Eine Frage stellen, eine ... geben"?', 'answer' => '***' );
that wiki markup is parsed before any parameters are passed to the underlying function.  
$wgCaptchaQuestions[] = array('question' => 'Um welche Art von Webseiteninhalt handelt es sich hier: Blog oder Wiki?', 'answer' => '***' );
These functions bypass that limitation through character escapes (see below),  
$wgCaptchaQuestions[] = array('question' => 'Wie lautet der Name dieses Wikis?', 'answer' => $wgSitename );
and allow wiki markup to be parsed after the parameters have been passed.
$wgCaptchaQuestions[] = array('question' => 'Bitte das magische Wort - Salz - hier eingeben:', 'answer' => '***' );
</pre>
$wgCaptchaQuestions[] = array('question' => 'Bitte das Spezialwort - 8Acht8 - hier eingeben:', 'answer' => '***' );
# Saltwiki
$wgCaptchaQuestions[] = array('question' => 'Which is the language of this question: Dutch, English, French, German or Spanish?', 'answer' => '***' );
$wgCaptchaQuestions[] = array( 'question' => 'Please write the following word backwards: '.$wgSitename, 'answer' => strrev($wgSitename) ); #'ikiwtlaS'
$wgCaptchaQuestions[] = array( 'question' => 'The taste of salt is neither bitter nor sweet nor sourish but &hellip;', 'answer' => '***' );
$wgCaptchaQuestions[] = array('question' => 'What is the missing word: "Ask a question, give an &hellip;"', 'answer' => ***'');
$wgCaptchaQuestions[] = array('question' => 'What kind of web content is this: Blog or Wiki?', 'answer' => '***');
$wgCaptchaQuestions[] = array( 'question' => 'What is this wiki\'s name (in capital letters)?', 'answer' => strtoupper($wgSitename) ); #'SALTWIKI'
# Repository
$wgCaptchaQuestions[] = array('question' => 'Which is the language of this question: Dutch, English, French, German or Spanish?', 'answer' => '***' );
$wgCaptchaQuestions[] = array( 'question' => 'Please write the following word backwards: '.$wgSitename, 'answer' => strrev($wgSitename) ); #'yrotisopeR'
$wgCaptchaQuestions[] = array( 'question' => 'The taste of salt is neither bitter nor sweet nor sourish but &hellip;', 'answer' => '***' );
$wgCaptchaQuestions[] = array('question' => 'What is the missing word: "Ask a question, give an &hellip;"', 'answer' => ***'');
$wgCaptchaQuestions[] = array('question' => 'What kind of web content is this: Blog or Wiki?', 'answer' => '***');
$wgCaptchaQuestions[] = array( 'question' => 'What is this wiki\'s name (in capital letters)?', 'answer' => strtoupper($wgSitename) ); #'REPOSITORY'
#$wgCaptchaQuestions[] = array('question' => 'Please write the magic secret, "salt", here:', 'answer' => '***');
#$wgCaptchaQuestions[] = array('question' => 'Type the code word, 8eight8, here:', 'answer' => '***');


## Auslöser für Captcha-Aktivierung
*Extensions unter http://www.mediawiki.org/wiki/Extension:Character_Escapes, http://www.mediawiki.org/wiki/Extension:LO_Parser_Functions und http://www.mediawiki.org/wiki/Extension:Control_Structure_Functions/ControlStructureFunctions.php herunterladen und in den Ordner "extensions" kopieren.
# Salzwiki/Saltwiki
**'''Extension CharacterEscapes'''
$wgCaptchaTriggers['edit']          = true;
***Im Verzeichnis "extensions" ein Unterverzeichnis "CharacterEscapes" und darin eine Datei "CharacterEscapes.php" anlegen.
$wgCaptchaTriggers['create']        = true;
***In der Datei das Quelltext-Beispiel von http://www.mediawiki.org/wiki/Extension:Character_Escapes einfügen.
$wgCaptchaTriggers['addurl']        = true;
**'''LOParserFunctions'''
$wgCaptchaTriggers['createaccount'] = true;
***Im Verzeichnis "extensions" ein Unterverzeichnis "LOParserFunctions" und darin eine Datei "LOParserFunctions.php" und eine Datei "LOParserFunctions.i18n.php" anlegen.
$wgCaptchaTriggers['badlogin']      = true;
***In den Dateien die Quelltext-Beispiele von http://www.mediawiki.org/wiki/Extension:LO_Parser_Functions einfügen und jeweils die fehlenden php-Tags "?>" am Ende ergänzen.
# Salzwiki/Saltwiki/Repository
***In das Verzeichnis die Datei "expr.php" von http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/ParserFunctions/Expr.php?revision=25357 kopieren
$wgCaptchaTriggers['contactpage'] = true;
**'''Extension ControlStructureFunctions'''
...
***Im Verzeichnis "extensions" ein Unterverzeichnis "ControlStructureFunctions" und darin eine Datei "ControlStructureFunctions.php" und eine Datei "ControlStructureFunctions.i18n.php" anlegen.
##
***In den Dateien die Quelltext-Beispiele von "http://www.mediawiki.org/wiki/Extension:Control_Structure_Functions" einfügen und jeweils die fehlenden php-Tags "?>" am Ende ergänzen.
## EINSTELLUNGEN
...
## Salzwiki/Saltwiki
#captcha Hschwarz 12.02.2010
$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;
</pre>


=== SpecialInterwiki ===
*Erweiterungen in Datei "LocalSettings.php" eingefügen.
<pre>##Extension CharacterEscapes fuer Helppages
require_once("extensions/CharacterEscapes/CharacterEscapes.php");


Die Erweiterung wurde später in "Interwiki" umbenannt und ist in Mediawiki seit Version 1.21 enthalten.
##Extension LOParserFunctions  fuer Helppages
require_once( "extensions/LOParserFunctions/LOParserFunctions.php" );


Diese Erweiterung fügt die Seite Special:Interwiki zu Mediawiki hinzu, um die Interwiki-Tabelle sehen und editieren zu können. Es werden auch alle Änderungen aufgezeichnet.
##Extension  ControlStructureFunctions fuer Helppages
Mit dieser InterWiki Tabelle kann man einerseits einfach zu Inhalten in anderen Wikis verlinken, auch zu Wikipedia, andererseits ist es damit möglich durch das Setzen von  $wgEnableScaryTranscluding = true;  Inhalte eines anderen Wikis zu "transcludieren".
# require_once( "extensions/ControlStructureFunctions/ControlStructureFunctions.php" );
</pre>


Die Erweiterung für MW 1.23 wird bei http://www.mediawiki.org/wiki/Extension:Interwiki heruntergeladen und in ...Extensions/Interwiki extrahiert.
=== CharInsert ===


In die "localsettings" eines jeden Wiki's ist dann einzufügen:
Diese Extension dient dazu Editierhilfen zum Einfügen von Spezialzeichen und Formatierungshilfen zur Verfügung zu stellen.Diese Hilfe wird im Bearbeitungsmodus und beim UpLoad-Formular zur Verfügung gestellt. Diese Erweiterung wurde Testweise installiert und dann wieder deaktiviert.


##to allow interwiki-linking, für Version MW 1.23 anderer Dateiname
Die Extension wird bei http://www.mediawiki.org/wiki/Extension:CharInsert heruntergeladen und in ...Extensions/CharInsert extrahiert.
#require_once("$IP/extensions/Interwiki/SpecialInterwiki.php");
require_once("$IP/extensions/Interwiki/Interwiki.php");
$wgGroupPermissions['*']['interwiki'] = false;
$wgGroupPermissions['sysop']['interwiki'] = true; ## nur sysops können die InterWiki Tabelle ändern und sehen
$wgEnableScaryTranscluding = true;                ## Seiten von anderen Wikis können eingebunden werden


In die localsettings ist einzufügen:


Diese Erweiterung wurde in SalzWiki, SaltWiki und im Repositorium installiert.
require_once("$IP/extensions/CharInsert/CharInsert.php");


In Mediawiki:Edittools werden die entsprechenden Zeichen bzw. Hilfen mit
<pre><charinsert> .. </charinsert> </pre>


=== SaltWiki (Wiki-Code) ===
eingefügt.


Die Erweiterung "SaltWiki" ergänzt die Erweiterung [[#BibManager|"BibManager"]] für Volltexte und DOIs bei den BibTex-Attributen. Da sich in der verwendeten BibManager-Version der Dateipfad für eine Grafik geändert hat, muss der Code dieser Erweiterung angepasst werden.
=== Cite  ===


Von der angepassten Datei "SaltWiki.php" wird eine Kopie mit dem Suffix "_SW" gespeichert.
Die Erweiterung "Cite" dient zum Erstellen von Fußnoten in Wiki-Artikeln.


==== Versionshinweis ====
* Erweiterung unter http://www.mediawiki.org/wiki/Cite herunterladen.
Die Version 2015-05-25 enthält eine Korrektur in der Sprachdatei "SaltWiki.i18n.php", damit bei "de" nicht wie bei "de-formal" die Sie-Form verwendet wird.
* Extrahieren der Dateien nach "\[wikiname]\extensions\Cite\"  
 
* Erweiterung in der Datei "LocalSettings.php" einfügen
==== Fehler (Wiki-Code) ====
In der Datei "SaltWiki.php" wird in der Funktion "sw_onBibManagerGetIcons(...)" in Z.161 eine Grafik aus dem Verzeichnis "\extensions\BibManager\client\images\" statt aus dem Verzeichnis "\extensions\BibManager\resources\images\" verwendet, weshalb der Alternativtext der Grafik angezeigt wird.


Z.159ff
<pre>
<pre>
// für HAWK HHG und MW1.23LTS Pfad von "client" zu "resources" angepasst 2016-06-14
require_once("$IP/extensions/Cite/Cite.php");
$icons['fulltext'] = array (
  'src' => $wgScriptPath . '/extensions/BibManager/resources/images/' . $icon,
  ...
);
</pre>
</pre>


==== Veralteter Code ====
Siehe näheres zum Einfügen von Fußnoten unter http://193.175.110.91/salzwiki/index.php/Autor#Fu.C3.9Fnoten.
Es wird noch die Funktion "wfMsg()" anstatt von "wfMessage()" in der Datei "SaltWiki.php" verwendet.


=== SaltWikiUpload ===
=== CiteThisPage ===


Die Erweiterung "SaltWikiUpload" ergänzt die Erweiterung [[#BibManager|"BibManager"]] für das Hochladen von Dateien im Repositorium unter Berücksichtigung von Meta-Daten (Vergleich der Formulareingaben siehe weiter unten)
Die Erweiterung "CiteThisPage" dient zum Erstellen von Zitierhilfen für Wiki-Artikel. Sie ist erst ab MW Version 1.24 einsetzbar.


==== Versionshinweis ====
* Erweiterung unter https://www.mediawiki.org/wiki/Extension:CiteThisPage?uselang=de herunterladen.
Die Version 2012-01-25 enthält
* Extrahieren der Dateien nach "\[wikiname]\extensions\CiteThisPage\"  
* in der Datei "SaltWikiUpload_body.php" ab Z.66 die Variable $aAuthorsLinks und in "foreach..." ab Z.104 Änderungen für $sFieldValue vor "$aText[]..."
* Erweiterung in der Datei "LocalSettings.php" einfügen
* in der Sprachdatei "SaltWikiUpload.i18n.php" in den Zeilen 53, 105 und 157 ein Zusatzelement "help-various_bibtex"
* in der Datei "\includes\SaltWikiUpload_Fields.php" das Zusatzelement "help-various_bibtex"
* in der Datei "\includes\SaltWikiUpload_HTMLDateField.php" Korrekturen zur Darstellung von Monatszahlen kleiner als 10 mit vorangestellter 0


==== Fehler ====
<pre>
* Das erweiterte Formular wird nicht angezeigt, sondern das MW-Upload-Formular
require_once("$IP/extensions/CiteThisPage/CiteThisPage.php");
* Beim Hochladen mittels MW-Upload-Formular scheitert das Hochladen mit der Fehlermeldung "Es gibt fehlerhaft ausgefüllte Felder", wenn die Erweiterung in der Datei "LocalSettings.php" eingebunden wird.
</pre>
* Die Sprachdatei "SaltWikiUpload.i18n.php" enthält bei "de" die Sie-Form wie bei "de-formal".
 
=== ConfirmEdit ===


==== Veralteter Code ====
Registrierte Nutzer dürfen auf die Diskussionseiten schreiben. Damit dies etwas sicherer vonstatten geht, wird mit ConfirmEdit ein Captcha eingeführt ('''bisher nur bei Salzwiki und Saltwiki, nicht bei Repositorium''').
* Funktion "wfMsg" statt "wfMessage" in den Dateien
** "SaltWikiUpload_body.php"
** "\includes\SaltWikiUpload_Fields.php"
** "\includes\SaltWikiUpload_HTMLDateField.php"


==== Formularunterschiede ====
*Dateien unter http://www.mediawiki.org/wiki/Confirmedit herunterladen und unter "extensions\ConfirmEdit\" speichern.
<b>SaltWikiUpload-Formular</b>
*In der Datei "LocalSettings.php" einfügen:
* Metadaten
<pre>
** Beschreibung
require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
** Quelle
</pre>
** Datum
** Autor(en)
** Berechtigung
** Schlagwörter
** Typ
* Medium
** Medienart
* Quelldatei
** Quelldatei
* Dateibeschreibung
** Zielname
** Weitere Anmerkungen


<b>MW1.23LTS-Upload-Formular</b>
=== ContactPage - Kontaktseite (Wiki-Code de-Formal) ===
* Quelldatei
** Quelldatei
* Dateibeschreibung
** Zielname
** Beschreibung/Quelle
** Lizenz
* Hochladeoptionen
** Diese Datei beobachten
** Warnungen ignorieren


==== Quellcode der Version 2012-01-25 ====
Für Mitteilungen allgemeiner Art wird eine Kontaktformular-Seite eingesetzt, die im Repositorium nur nach Anmeldung zur Verfügung steht. Bei Versand einer Kopie an eine im Formular eingetragene E-Mail-Adresse steht im Betreff: "Kopie Ihrer Nachricht an Hornemann (von [Ihr Name])"
Zeile 66ff unter "$aAuthors = explode(...);"
<pre>
$aAuthorsLinks = array();
foreach( $aAuthors as $sAuthor ){
  ...
  $aCategories[] = '[['.$sPrefixedCatText.']]';
  $aAuthorsLinks[] = '[[:'.$sPrefixedCatText.'|'.$oCategoryTitle->getText().']]';
}
</pre>


Zeile 104ff vor "$aText[] = ..."
Für das Kontaktformular muss als Empfangsadresse ein bestehendes Wiki-Konto angegeben werden und muss als E-Mail-Absender wegen Authentifizierung beim Versand die Angabe von $wgPasswordSender übernommen werden:
<pre>
<pre>$wgContactConfig['default'] = array(
foreach( $aTemplate as $sFieldName => $sFieldValue ) {
'RecipientUser' => 'Hornemann', //'WikiUser' // Must be a valid account //vormals $wgContactUser
  if( in_array( $sFieldName, array('literature_bibtex','grey_literature_bibtex','unpublished_reports_bibtex') ) && !empty($sFieldValue) ){
...
    $sFieldValue = '<bib id="'.$sFieldValue.'" />';
'SenderEmail' => null, // Defaults to $wgPasswordSender, may be changed as required
  }
...);
  if( $sFieldName == 'literature_doi' && !empty($sFieldValue) ){
    $sFieldValue = 'http://dx.doi.org/'.$sFieldValue;
  }
  if( $sFieldName == 'general_author' && !empty($sFieldValue) ){
    $sFieldValue = implode('; ', $aAuthorsLinks);
  }
 
  $aText[] = '|'.$sFieldName.'='.$sFieldValue;
}
</pre>
</pre>
Im jeweiligen Wiki-Konto "Hornemann" wird als E-Mail-Adresse "service@salzwiki.de" bzw. "service@saltwiki.net" angegeben. Es kann auch "salzwiki.fb@hawk-hhg.de" bzw. "saltwiki.fb@hawk-hhg.de" angegeben werden.


=== Terminology ===
Für das Formular wird die Erweiterung "ContactPage" benutzt. Die Sie-Form der Wiki-Übersetzungsdatei ist um einen Eintrag zu ergänzen.


Diese Erweiterung wird seit 2010-07-29 nicht mehr weiterentwickelt. Sie gilt als ineffizient bei umfangreichen Glossars. Es wird die Erweiterung "Lingo" empfohlen: http://www.mediawiki.org/wiki/Extension:Lingo.
Das Absenden des Kontaktformulars wird bei Nutzung ohne Anmeldung zum Verhindern von Spam über ein Captcha abgesichert. Hierfür sind bei der Erweiterung für MW 1.23 (REL1_23) Anpassungen am Code der Dateien "ContactPage_body.php", "\i18n\de.json" und "\i18n\en.json" sowie "\i18n\qqq.json" erforderlich.


Die Extension dient zum Erstellen eines Glossars.  
*Dateien unter http://www.mediawiki.org/wiki/Extension:ContactPage bzw. <b>für MW 1.23</b> unter https://git.wikimedia.org/zip/?r=mediawiki/extensions/ContactPage&h=daa666dec4793a2ce9675dbb8b6c365d105e8986&format=zip herunterladen und die Dateien unter "Extensions/ContactPage" speichern.
<br>Um Verwirrungen zu vermeiden wurde bei "Terminology" 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):
*Für MediaWiki 1.23 in den Übersetzungsdateien "de.json", "en.json" und "qqq.json" Zeilen einfügen (siehe weiter unten)
*Z. 31
*In der Wiki-Systemtexte-Datei vor "'emailccsubject '=> '...'" das Array-Element "'emailccme' => 'Sende eine Kopie der E-Mail an mich'," einfügen und an Sie-Form anpassen: "Eine Kopie der E-Mail an mich senden"
<pre>
**Für MediaWiki 1.23 im Verzeichnis "[wikiverzeichnis]\languages\i18n\" aus der Datei "de.json" aus Zeile 1759 in Datei "de-formal.json" in Zeile 217 einfügen
$wgExtensionCredits['parserhook'][] = array(
*Erweiterung mit Variablenzuweisungen in der Datei "LocalSettings.php" einfügen
  'name' => 'Glossar', //in Glossar umbenannt HJSChwarz 12.08.2010
</pre>
*Z. 53
<pre>
$rev = Revision::newFromTitle(Title::makeTitle(null, 'Glossar')); //in Glossar umbenannt HJSChwarz 12.08.2010
</pre>


* Extension unter http://www.mediawiki.org/wiki/Extension:Terminology herunterladen.
ACHTUNG: Nach jedem mediawiki-Update muss überprüft werden, ob die vorgenommene Änderung in den Sprachdateien noch existiert. Deshalb ist von den Dateien jeweils eine Kopie "...SW.json" bzw. "...SW.php" zu speichern:
* Datei in das Verzeichnis "extensions" kopieren
* MW1.23
* In der Datei "LocalSettings.php" einfügen:
** "[wikiverzeichnis]\languages\i18n\de.json"
<pre>require_once("$IP/extensions/terminology.php");</pre>
** "...\extensions\ContactPage\i18n\de.json", "...de-formal.json", "...en.json" und "...qqq.json"


==== MW 1.23 Code-Anpassungen ====


=== TimedMediaHandler (JavaScript) ===
Zur Code-Anpassung siehe auch https://gerrit.wikimedia.org/r/#/c/156052/


Die Erweiterung steht ab Mediawiki 1.17 zur Verfügung und beinhaltet den "Kaltura HTML5 Player" (JavaScript, http://www.html5video.org/kaltura-player/docs). Unterstützt werden Streaming, WebM und Ogg sowie gegebenenfalls getID3.
In der Datei "\extensions\ContactPage\i18n\qqq.json" Ergänzung bei "authors" hinter "Shirayuki" sowie in Zeile 25 am Ende ein Komma und darunter  eine Zeile für "contactpage-captcha-error" einfügen:
<pre>
{
  "metadata": {
    "authors": [
      ...
      "Shirayuki",
      "Gunnar Werner HAWK HHG"
    ]
  },
  ...
  "contactpage-usermailererror": "...",
  "contactpage-captcha-error": "Error message displayed when ehter was a CAPTCHA error (i.e. the user failed to enter the correct CAPTCHA, or didn't enter one at all, etc.)"
}
</pre>


Die Erweiterung benötigt zusätzlich
In der Datei "\extensions\ContactPage\i18n\en.json" Ergänzung bei "authors" hinter "Reedy" sowie in Zeile 20 am Ende ein Komma einfügen und darunter eine Zeile für "contactpage-captcha-error" einfügen:
* die Erweiterung [[#MwEmbedSupport|"MwEmbedSupport"]]
<pre>
* libwinpthread-1.dll für die Installation der Anwendung "ffmpeg"
{
* die Anwendungen
  "metadata": {
** "ffmpeg"
    "authors": [
** "ffmpeg2theora"
      ...
** "oggThumb"
      "Umherirrender",
* eventuell auch die Anwendungen
      "Gunnar Werner HAWK HHG"
** "PEAR File_Ogg", wenn nicht in "...\extensions\TimedMediaHandler\handlers\OggHandler\" die Datei "OggHandler.php" und das Verzeichnis "PEAR\" mit dem Unterverzeichnis "File_Ogg\" vorhanden sind
    ]
*** "PEAR Package Manager" oder "PEAR Pyras Installer"
  },
*** "PEAR File_Ogg" 0.3.1 Beta 2010-08-27 (Stand 2016-06-21) wie bei Erweiterung "OggHandler" für "oggThumb"-Vorschaubilder
  ...
** "getID3()"
  "contactpage-usermailererror": "Mail object returned error:",
  "contactpage-captcha-error": "CAPTCHA error"
}
</pre>


Für Details siehe https://phabricator.wikimedia.org/diffusion/ETMH/browse/master/README.
In der Datei "\extensions\ContactPage\i18n\de.json" Ergänzung bei "authors" hinter "Umherirrender", außerdem die Menüleisten-Bezeichnung "Kontaktseite" sowie Captcha-Texte einfügen:
 
<pre>
* Extensions herunterladen bei
{
** https://www.mediawiki.org/wiki/Extension:MwEmbedSupport
  "metadata": {
** https://www.mediawiki.org/wiki/Extension:TimedMediaHandler
    "authors": [
* Dateien in das Verzeichnis "extensions" kopieren
      ...
* Datei "TimedMediaHandler.sql" für Tabelle "transcode" als Kopie mit Suffix "_SW" speichern, Kopie anpassen für Tabelle mit Präfix "sr_" und zur Erstellung der Tabelle "sr_transcode" als Admin mit der Konsole ausführen: mysql -u root -p -> USE repository[_draft]
      "Umherirrender",
* Zusatzsoftware herunterladen
      "Gunnar Werner HAWK HHG"
** ffmpeg (Windows, 2016-05-10) bei www.heise.de oder https://ffmpeg.zeranoe.com/builds/ <del>http://firefogg.org/nightly/ffmpeg.exe (benötigt libwinpthread-1.dll)</del>
    ]
** ffmpeg2theora (Windows, 2014-03-06) bei www.heise.de oder http://v2v.cc/~j/ffmpeg2theora/ <del>http://firefogg.org/nightly/ffmpeg2theora.exe</del>
  },
** oggThumb (2010-06-01) bei https://sourceforge.net/projects/oggvideotools/files/oggvideotools-win32/oggvideotools-0.8a-win32/OggVideoTools-0.8a-win32.exe (vormals http://www.streamnik.de/files.html)
  "contact": "Kontaktseite",
** PEAR File_Ogg und Installer bei
  ...
*** http://pear.php.net/package/File_Ogg/download/File_Ogg-0.3.1.tgz (Beta, 2010-08-27)
  "contactpage-captcha": "Um die Nachricht senden zu können, bitte das Captcha lösen ([[Special:Captcha/help|weitere Informationen]])",
*** http://pear.php.net/go-pear.phar, Installationsanleitung http://pear.php.net/manual/en/installation.getting.php
  "contactpage-captcha-error": "Captcha-Fehlfunktion",
*** http://pear2.php.net
  "contactpage-captcha-failed": "Captcha-Test nicht bestanden! ([[Special:Captcha/help|weitere Informationen]])"
** getID3() Version 1.9.12 stable (2016-03-02) bei http://www.getid3.org
}
* Zusatzsoftware einrichten
** Verzeichnis "D:\ffmpeg_ogg\" erstellen
** "ffmpeg-20160620-afd0405-win32-static.zip" entpacken unter "D:\ffmpeg_ogg\" und Verzeichnis umbenennen in "\ffmpeg\"
** "ffmpeg2theora.exe" speichern unter "D:\ffmpeg_ogg\ffmpeg2theora\"
** "OggVideoTools-0.8a-win32.exe" installieren mit Auswahl "Add OggVideoTools to the system PATH for all users" und "Create...Desktop Icon" in Zielverzeichnis "D:\ffmpeg_ogg\OggVideoTools"
* In der Datei "LocalSettings.php" einfügen:
<pre>
## Repository: OggHanlder oder MwEmbedSupport und TimedMediaHandler
## OggHandler nur bis MW 1.23, danach MwEmbedSupport und TimedMediaHandler
#require_once("$IP/extensions/OggHandler/OggHandler.php");
# FFmpeg auskommentiert, solange kostenfreie Lizenz für Hochschule ungeklärt ist
#$wgFFmpegLocation = "D:\ffmpeg-wiki\bin\ffmpeg";
## TimedMediaHandler mit MwEmbedSupport statt OggHandler, 2015-09-21 G. Werner
require_once("$IP/extensions/MwEmbedSupport/MwEmbedSupport.php");
require_once("$IP/extensions/TimedMediaHandler/TimedMediaHandler.php");
# FFmpeg auskommentiert, solange kostenfreie Lizenz für Hochschule ungeklärt ist
#$wgFFmpegLocation = "D:\ffmpeg_ogg\ffmpeg\bin\ffmpeg";
$wgFFmpeg2theoraLocation = "D:\ffmpeg_ogg\ffmpeg2theora\ffmpeg2theora";
$wgOggThumbLocation = "D:\ffmpeg_ogg\OggVideoTools\bin\oggThumb";
</pre>
</pre>


=== User Merge - Benutzername löschen ===
Datei "ContactPage_body.php" vor Zeile 185 und nach Zeile 217+11 (228), vor Zeile 341+11+1 (353), nach Zeile 393+11+1+6 (411):
 
<pre>
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.
...
// Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
if ( $this->useCaptcha() ) {
  $formItems['Captcha'] = array(
    'label-message' => 'captcha-label',
    'type' => 'info',
    'default' => $this->getCaptcha(),
    'raw' => true,
  );
}


* Extension unter http://www.mediawiki.org/wiki/Extension:User_Merge_and_Delete herunterladen.
$form = new HTMLForm( $formItems, $this->getContext(), "contactpage-{$this->formType}" );
* Datei in das Verzeichnis extensions/UserMerge kopieren
...
* In den Localsettings eingefügen
public function processInput( $formData ) {
 
  global $wgUserEmailUseReplyTo, $wgPasswordSender;
<pre>
  global $wgCaptcha; // Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
require_once( "$IP/extensions/UserMerge/UserMerge.php" );
...
# Assign the usermerge right to a usergroup, i.e. to the bureaucrats:
// Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
$wgGroupPermissions['bureaucrat']['usermerge'] = true;
if ( $this->useCaptcha() && !$wgCaptcha->passCaptcha() ) {
</pre>
  // TODO proper i18n message
 
  return wfMessage( 'contactpage-captcha-error' )->plain();
=== WhosOnline - Wer ist online ===
}
 
// Stolen from Special:EmailUser
Die Extension WhosOnline dient dazu sich auf einer Specialpage anzeigen zu lassen, wer gerade online ist.
$error = '';
 
...
Für MediaWiki 1.23 ist im Herbst 2015 als älteste Version nur eine "REL1_25", also Version 1.4.0 für MW 1.25 erhältlich, die einen Script-Fehler verursacht, wenn in der Datei "WhosOnlineSpecialPage.php" bei der Funktion "getNavigationBar()" die Variable "$title" vom Typ String statt Objekt ist; zur Fehlerbehebung siehe weiter unten und https://www.mediawiki.org/wiki/Extension_talk:WhosOnline#Bug_in_MW_1.24_.3F
  private static function getYesOrNoMsg( $value ) {
 
    return wfMessage( $value ? 'htmlform-yes' : 'htmlform-no' )->inContentLanguage()->text();
Bei MediaWiki 1.25 verursacht die Version 1.5.0 einen Fehler, wenn die Datei "upgrade.php" verwendet wird, weil die Datei "extension.json" in der Erweiterung fehlt; siehe https://www.mediawiki.org/wiki/Extension_talk:WhosOnline#Fatal_error_running_update.php_on_V1.5.0. Es muss deshalb in der Datei "LocalSettings.php" wie bei älteren Versionen "require_once ..." statt "wfLoadExtension(...)" verwendet werden.
  }
  // Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
  /**
  * @return boolean True if CAPTCHA should be used, false otherwise
  */
  private function useCaptcha() {
    global $wgCaptchaClass, $wgCaptchaTriggers;
    return $wgCaptchaClass &&
      isset( $wgCaptchaTriggers['contactpage'] ) &&
      $wgCaptchaTriggers['contactpage'] &&
      !$this->getUser()->isAllowed( 'skipcaptcha' );
  }
  // Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
  /**
  * @return string CAPTCHA form HTML
  */
  private function getCaptcha() {
    // NOTE: make sure we have a session. May be required for CAPTCHAs to work.
    wfSetupSession();
    $captcha = ConfirmEditHooks::getInstance();
    $captcha->trigger = 'contactpage';
    $captcha->action = 'contact';
    return '<div class="captcha">' .
      $captcha->getForm() .
      "</div>\n";
  }
}
</pre>


*Dateien unter http://www.mediawiki.org/wiki/Extension:WhosOnline herunterladen und extrahieren
==== LocalSettings.php ====
*Verzeichnis "WhosOnline" unter "Extensions" speichern
*Für MediaWiki 1.23 in der Datei "WhosOnlineSpecialPage.php" die Funktion "getNavigationBar()" anpassen
*SQL-Befehl in der Extension-Datei "WhosOnline.sql" für neue Datenbank-Tabelle anpassen (siehe weiter unten)
*Mit "phpMyAdmin" und geändertem SQL-Befehl eine neue Datenbank-Tabelle erstellen (siehe weiter unten)
*In der Datei "LocalSettings.php" einfügen:
<pre>
<pre>
require_once("$IP/extensions/WhosOnline/WhosOnline.php");
// Version 2.2 für MediaWiki 1.25
$wgWhosOnlineShowAnons = true;
#wfLoadExtension("ContactPage.php");
</pre>
// Version 2.2 für MediaWiki 1.23
require_once( "$IP/extensions/ContactPage/ContactPage.php" );
$wgContactConfig['default'] = array(
  'RecipientUser' => 'Hornemann', //'WikiUser' // Must be the name of a valid account //vormals $wgContactUser
  'SenderName'=> 'Kontaktformular ' . $wgSitename, //"Contact Form " // "Contact Form on" needs to be translated //vormals $wgContactSenderName
  'SenderEmail'=> null // Defaults to $wgPasswordSender, may be changed as required
  'RequireDetails'=> true, // Whether users will be required to supply a name and an email address on Special:Contact
  'IncludeIP'=> false, // Whether the form will include a checkbox offering to put the IP address of the submitter in the subject line
  'AdditonalFields'=> array(
    'Text'=> array(
      'label-message'=> 'E-Mail-Nachricht', //'e-mail-message' //'emailmessage',
      'type'=> 'textarea',
      'rows'=> 20,
      'cols'=> 80,
      'required' => true, //Pflichtfeld
    ),
  ),
  // Added in MW 1.26
  #'DisplayFormat' => 'table', // See HTMLForm documentation for available values.
  #'RLModules' => array(), // Resource loader modules to add to the form display page.
  #'RLStyleModules' => array(), // Resource loader CSS modules to add to the form display page.
);
</pre>
 
=== CreativeCommonsRdf ===


'''Datei "WhosOnlineSpecialPage.php" für MW 1.23 anpassen'''
Die Erweiterung soll ab MW-Version 1.19 die Variable "$wgEnableCreativeCommonsRdf" in der Datei "LocalSettings.php" ersetzen, hat aber noch Beta-Status (2015-09-21). Die 3 Dateien der Erweiterung können heruntergeladen werden bei https://www.mediawiki.org/wiki/Extension:CreativeCommonsRdf
 
=== DynamicPageList ===
 
Es gibt 3 Erweiterungen mit der Bezeichnung "DynamicPageList", wobei die erste mit dem Alias "Intersection" nicht verwendet wird (siehe auch https://www.mediawiki.org/wiki/Extension:DPL).


Die Funktion "getNavigationBar()" ab Zeile 75 kopieren, auskommentieren und die Kopie darunter einfügen.
==== MediaWiki 1.23 ====
In der Kopie die Variable $wgLang als Ersatz für $wgContLang und die entsprechenden Variablen für die return-Funktion hinzufügen:
* Für MW 1.23 wird die Erweiterung "DynamicPageList" mit dem Alias "DynamicPageList3" von https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:DynamicPageList3 heruntergeladen und nach dem Extrahieren in das Verzeichnis "extensions" des jeweiligen Wikis extrahiert.
<pre>
* Einfügen in LocalSettings:  
function getNavigationBar(){
<pre>include("$IP/extensions/DynamicPageList3/DynamicPageList.php");</pre>
  global $wgContLang, $wgLang;
 
  $link = $wgContLang->specialpage('WhosOnline');
 
  if(is_object($link)){
=== Inline SVG Extension ===
    $title = $link;
 
  }
Diese Erweiterung wird ab Mediawiki 1.23 nicht mehr verwendet, weil die üblichen Browser inzwischen SVG-Elemente darstellen können.
  else{
    $title = Title::newFromText($link);
    if(is_null($title)){
      return false;
    }
  }
  $offset = $this->mOffset;
  $limit = $this->mLimit;
  $query = '';
  $query = wfCgiToArray('');
  $atend = $this->countUsersOnline() < ($this->mLimit + $this->mOffset); // show next link


  return $wgLang->viewPrevNext(
Die php-Datei "SVGtag.php" sorgt dafür, dass Inline-SVG-Code im Upload-Verzeichnis gespeichert und in einem "iframe" geladen wird. Dies ist erforderlich für ältere Browser, insbesondere für Internet Explorer bis einschließlich Version 8.
    $title,
    $offset,
    $limit,
    $query,
    $atend
  );
}
</pre>


'''Datei "WhosOnline.sql" anpassen'''
* Extension unter http://www.mediawiki.org/wiki/Extension:Inline_SVG_extension herunterladen.
* Datei in das Verzeichnis "extensions" kopieren
* In der Datei "LocalSettings.php" einfügen:
<pre>require_once("$IP/extensions/SVGtag.php");</pre>


Den SQL-Befehl in der Extension-Datei "WhosOnline.sql" für die neue Datenbank-Tabelle in der ersten Zeile z. B. wie folgt mit Präfix "sw_" bzw. "sr_" anpassen:
=== Interwiki ===
<pre>CREATE TABLE `[datenbankname]`.`[praefix]online` (</pre>


'''Datenbank-Tabelle erstellen'''
Die Erweiterung "Interwiki" ist in Mediawiki seit Version 1.21 enthalten und hieß ehemals "SpecialInterwiki", bevor sie umbenannt wurde.


Mit "phpMyAdmin" die MySQL-Datenbank für das Wiki auswählen und nach Auswahl des Karteikartenreiters/Tabs "SQL" die Tabelle "sw_online" bzw. "sr_online" durch Eingabe des folgenden SQL-Statements anlegen:
Diese Erweiterung fügt die Seite Special:Interwiki zu Mediawiki hinzu, um die Interwiki-Tabelle sehen und editieren zu können. Es werden auch alle Änderungen aufgezeichnet.
<pre>
Mit dieser InterWiki Tabelle kann man einerseits einfach zu Inhalten in anderen Wikis verlinken, auch zu Wikipedia, andererseits ist es damit möglich durch das Setzen von  $wgEnableScaryTranscluding = true; Inhalte eines anderen Wikis zu "transcludieren".
CREATE TABLE  `[datenbankname]`.`[praefix]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;
</pre>


=== WikiEditor (JavaScript) ===
Die Erweiterung für MW 1.23 wird bei http://www.mediawiki.org/wiki/Extension:Interwiki heruntergeladen und in das Verzeichnis "[wikiname]\extensions\Interwiki" extrahiert.


'''Achtung: Funktioniert nur bei Browsern mit aktiviertem JavaScript und muss in den nachfolgend genannten Dateien und dem Grafiken-Verzeichnis nach jedem MediaWiki-Update auf Vorhandensein und Änderungen überprüft werden!'''
In der Datei "LocalSettings.php" eines jeden Wikis ist dann einzufügen:  


Die Erweiterung "WikiEditor" wird seit MW1.18 als Ersatz für den schlichten Editor mitgeliefert.
##to allow interwiki-linking, für Version MW 1.23 anderer Dateiname
#require_once("$IP/extensions/Interwiki/SpecialInterwiki.php");
require_once("$IP/extensions/Interwiki/Interwiki.php");
$wgGroupPermissions['*']['interwiki'] = false;
$wgGroupPermissions['sysop']['interwiki'] = true; ## nur sysops können die InterWiki Tabelle ändern und sehen
$wgEnableScaryTranscluding = true;                ## Seiten von anderen Wikis können eingebunden werden


Um die Erweiterung einzubinden und sie für alle Nutzungskonten verfügbar zu machen, sind in der Datei "LocalSettings.php" in MW1.23 folgende Angaben nötig:
Diese Erweiterung wurde in SalzWiki, SaltWiki und im Repositorium installiert.
<pre>
require_once("$IP/extensions/WikiEditor/WikiEditor.php");
$wgDefaultUserOptions['usebetatoolbar'] = 1; // Editor bei allen Nutzungskonten standardmäßig aktivieren
$wgDefaultUserOptions['usebetatoolbar-cgd'] = 1; // Erweiterte Funktionen und Sonderzeichen bei allen Nutzungskonten standardmäßig aktivieren
$wgDefaultUserOptions['wikieditor-preview'] = 1; // Schaltfläche für Vorschau und Änderungen aktivieren
$wgDefaultUserOptions['wikieditor-publish'] = 1; // Schaltfläche für Speichern/Veröffentlichen und Abbrechen aktivieren
</pre>


Für die Nutzung zusätzlicher Funktionen siehe:
==== Anpassungen für geänderte Server-Adresse ====
* https://www.mediawiki.org/wiki/Extension:WikiEditor/de
* Math, Durchgestrichen, HTML-Kommentar: https://www.mediawiki.org/wiki/Extension:WikiEditor/Toolbar_customization/Library
* https://www.mediawiki.org/wiki/Extension:WikiEditor/Toolbar_customization
* https://meta.mediawiki.org/wiki/User:Krinkle/Scripts/InsertWikiEditorButton


Das Symbol für die Erweiterung "Math", das im Standard-Editor automatisch hinzugefügt wird, fehlt bei der Erweiterung "WikiEditor".
Für die Umstellung der Wikis von IP-Adressen auf Domain-Adressen sind die Datenbank-Einträge der Tabelle "..._interwiki" zu bearbeiten. Hierzu wird unter "Daten und Werkzeuge => Interwikidaten ansehen und bearbeiten" bzw. "Data and Tools => View and edit interwiki data" die entsprechende Spezial-Seite "Spezial:Interwikitabelle" bzw. "Special:Interwiki" aufgerufen.


Es gibt 4 Standard-"Sektionen"
* Alte Adressen:
* main für die Standard-Funktionen
** repository | http://193.175.110.91/repository.hawk-hhg.de/index.php/$1
* advanced für die erweiterten Funktionen
** saltwiki | http://193.175.110.91/saltwiki/index.php/$1
* characters für die Sonderzeichen
** salzwiki | http://193.175.110.91/salzwiki/index.php/$1
* help


Die "Sektionen" können "Gruppen" für Gruppierungen von Funktionen enthalten.
* Neue Adressen:
** repository | https://repository.hawk-hhg.de/index.php/$1
** saltwiki | https://saltwiki.net/index.php/$1
** salzwiki | https://salzwiki.de/index.php/$1


Die Funktionen sind über Schaltflächen (Text oder Symbol) oder Auswahllisten (Booklets) verfügbar.
==== Anpassungen für HTTPS ====


==== Anpassungen ====
Bei InterWikis in der Tabelle, für die sowohl "Als lokales Wiki definiert" als auch "Einbinden zulässig" aktiviert ist, die URL von "http" zu "https" ändern. Beispiel:
<pre>
wikipedia | https://de.wikipedia.org/wiki/$1 | ja | ja
</pre>


Folgende Dateien sind für zusätzliche Bearbeitungsfunktionen zu bearbeiten:
=== JavaScript ===
* Bilddatei "button-math.png" aus der Erweiterung "Math" kopieren in Verzeichnis "\extensions\WikiEditor\modules\images\toolbar\" und umbenennen in "insert-math.png"
* Sprach-Dateien im Verzeichnis "\extensions\WikiEditor\i18n\" ergänzen
* Im Verzeichnis "\extensions\WikiEditor\modules\" folgende Dateien ergänzen
** jquery.wikiEditor.toolbar.config.js Z.443 vor "redirect"
** optional: jquery.wikiEditor.dialogs.config.js Z. 17 "remove" und Z.71 "addToToolbar" vor "search"


'''Beispiel Sprachdatei''' "de.json" in Z.85 ergänzen:
Entfällt bei MW 1.23.11 LTS und wird ersetzt durch eine Anpassung in der Datei "skins\MonoBook.php".
<pre>
"wikieditor-toolbar-tool-math": "Formel",
"wikieditor-toolbar-tool-math-insert": "Formel einfügen",
</pre>


Datei "jquery.wikiEditor.toolbar.config.js" Z.443 vor "redirect" mit den offset-Werten von "redirect" ergänzen und "redirect" auskommentieren:
Die Erweiterung hat den Status "unmaintained" (Stand 2015-09-15); die Version 3.0.8 (2012-02-15) kann wegen einer ungültigen Internetadresse nicht heruntergeladen werden, doch gibt es auf der Internetseite https://www.organicdesign.co.nz/Extension:Javascript den Hinweis, dass die Erweiterung obsolet ist, seitdem MediaWiki den ResourceLoader bereitstellt, siehe https://www.mediawiki.org/wiki/ResourceLoader.
<pre>
// neu für HAWK HHG 2017-01-31
'math': {
'labelMsg': 'wikieditor-toolbar-tool-math',
'type': 'button',
'icon': {
  'default': 'insert-math.png',
  'default-rtl': 'insert-math.png'
},
'offset': {
  'default': [-70, -142],
  'default-rtl': [-70, -502]
},
'action': {
  'type': 'encapsulate',
  'options': {
  'pre': '<math>\n',
  'periMsg': 'wikieditor-toolbar-tool-math-insert',
  'post': '\n</math>',
  'ownline': true
  }
}
}/*,
'redirect': {
...
}
*/
</pre>


Datei "jquery.wikiEditor.dialogs.config.js" Z.17 vor ".wikiEditor( 'addToToolbar', {...} )" und Z.71 zwischen "group:insert tools:table" und "group:search" ergänzen:
Diese Erweiterung diente zusammen mit der von S. Reher gelieferten Datei "customizeSidebar.js" dazu, den Navigationsbereich "Werkzeuge" in der Sidebar entsprechend dem Anmeldestatus zu manipulieren - siehe hierzu [[#Sidebar_anpassen_.28Wiki-Code.2C_JS.29|Sidebar anpassen]]. Dies funktionierte allerdings nur, wenn beim Browser JavaScript aktiviert war.
<pre>
 
replaceIcons: function ( $textarea ) {
==== sichtbare Toolbox-Menüpunkte ====
...
.wikiEditor( 'removeFromToolbar', { section: 'advanced', group: 'insert', tool: 'math' } )
}
...
// neu für HAWK HHG 2017-01-31
.wikiEditor( 'addToToolbar', {
section: 'advanced',
group: 'insert',
tools: {
  'math': {
  labelMsg: 'wikieditor-toolbar-tool-math',
  type: 'button',
  icon: 'insert-math.png',
  offset: [-70, -142],
  action: {
    type: 'dialog',
    module: 'insert-math'
  }
  }
}
} )
</pre>


== Eingabe von Formeln mittels Tex (Wiki-Code) ==
* SalzWiki: alle Gruppen und User
** Druckversion


Damit mathematische und auch chemische Formeln dargestellt werden können, wird in Mediawiki "Texvc" benutzt. Dies funktioniert nicht unter Windows, sondern nur unter Linux. Siehe hierzu
* SaltWiki: alle Gruppen und User
* https://www.mediawiki.org/wiki/Extension_talk:Math#Math_REL-1_23_with_MW1.23LTS_on_Windows_with_ImageMagick.2C_MikTeX.2C_GhostScript_and_class_LatexRender
** Printable version
* https://www.mediawiki.org/wiki/Texvc#Option_C_-_Using_MathLatexRender_based_on_LatexRender_of_option_B
* https://www.mediawiki.org/wiki/Texvc#Windows)


Deshalb muss zusammen mit der Erweiterung [[#Math_.28Wiki-Code.29| Math (Wiki-Code)]] die Klasse LatexRender von Benjamin Zeiss in abgewandelter Form als Klasse MathLatexRender verwendet werden und muss folgende Software installiert werden:
* Repository: alle Gruppen und User
# Windows Server 2012R2
** Printable version
## GPL GhostScript 9.10 (gs910w32.exe, 2013-09-02)
 
## ImageMagick 6.9.3-8-Q16-x86-dll.exe (16Bit dynamic, nicht static)
==== ausgeblendete Toolbox-Menüpunkte ====
## MikTeX 2.9.5870 Net Installer 32Bit (complete, nicht basic)
# Windows Server 2008
## GPL GhostScript 8.70 (gs870w32.exe)
## ImageMagick 6.5.9-0-Q16-windows-dll.exe (16Bit dynamic, nicht static)
## MikTeX 2.8 Net Installer 32Bit (complete, nicht basic)
'''Nach jedem mediawiki-Update muss die Erweiterung "Math" mit den Dateien "Math.php" und "MathRenderer.php" auf Windows-Kompatibilität überprüft werden!'''


Die '''[[#Tats.C3.A4chliche_Installation|tatsächliche Installation ]]''' eines Tex-Systems erfolgt in Anlehnung an die [[#Alternative_Installationsmethode_gem.C3.A4.C3.9F_Mediawiki|alternative Methode]] auf der Mediawiki Seite
* SalzWiki: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Windows#Alternative_Solution.
** "Links auf diese Seite" (Special:WhatLinksHere/Main_Page)
** "Änderungen an verlinkten Seiten" (Spezial:%C3%84nderungen_an_verlinkten_Seiten)
** "Hochladen" (Special:Upload)
** "Spezialseiten" (Special:SpecialPages)
** "Permanenter Link" (Main_page&oldid=921)
** "Seiteninformationen" ([Seitentitel]&action=info])


=== Tatsächliche Installation ===
* SaltWiki: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
** "What links here" (Special:WhatLinksHere/Main_Page)
** "Related changes" (Special:RecentChangesLinked)
** "Hochladen" (Special:Upload)
** "Spezialseiten" (Special:SpecialPages)
** "Permanent link" (Main_page&oldid=921)
** "Page information" ([Seitentitel]&action=info])


Die Applikationen als Administrator für alle User im Verzeichnis "D:\texmf\" installieren:  
* Repository: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
** "Links auf diese Seite" (Special:WhatLinksHere/Main_Page)
** "Änderungen an verlinkten Seiten" (Spezial:%C3%84nderungen_an_verlinkten_Seiten)
** "Datei Hochladen" (Special:Upload)
** "Spezialseiten" (Spezial:Spezialseiten)
** "Permanent link" (Main_page&oldid=9522)
** "Seiteninformationen" ([Seitentitel]&action=info])


# GhostScript im Unterverzeichnis "ghostscript\" installieren
=== Math (Wiki-Code) ===
## aus dem Unterverzeichnis "bin\" die Datei "gswin32c.exe" kopieren und die Kopie umbenennen zu "gs.exe"
 
## In der Systemsteuerung unter "Erweiterte Systemeinstellungen => Erweitert => Umgebungsvariablen" die Systemvariable "Path" erweitern mit ";D:\texmf\ghostscript\bin\"
"Math" kann heruntergeladen werden von https://www.mediawiki.org/wiki/Extension:Math/de. Es ist inzwischen eine Erweiterung; bei MW1.16 wurde hingegen die Datei "[wikiname]\includes\Math.php" angepasst.
# ImageMagick im Unterverzeichnis "imagick\" installieren
 
## ImageMagick dll-Datei (bei vorhandener Windows-Server-Konfigurationsberechtigung), sonst static-Datei (nur XAMPP-Zugriffsberechtigungen), inkl. "Create a desktop icon", "Add application directory to your system path" und "Install developement headers and libraries for C and C++"
Die Erweiterung "Math" ist für die Darstellung von Formeln erforderlich und nutzt standardmäßig "texvc" (TeX validator and converter), wobei das mitgelieferte "texvc" nur unter Linux genutzt werden kann und für Windows erst kompiliert werden muss und problembehaftet ist.
## Testen mit der "Eingabeaufforderung/Konsole"
 
##* bei Windows Server 2012R2 durch Eingabe von
Somit scheidet "texvc" unter Windows aus. Stattdessen muss für die Nutzung von GhostScript, ImageMagick und MikTeX wie bei MW1.16 der Wiki-Code angepasst und die Klasse "LatexRender" in der Datei "Math_SW.php" mit Anpassungen als Klasse "MathLatexRender" weiterverwendet werden. Der Quelltext von "LatexRender" für alte MediaWikiVersionen wie MW1.16 steht zur Verfügung bei "https://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Windows/math.php".
##*# convert wizard: wizard.jpg [=&gt;Enter drücken]
 
##*# convert wizard.jpg win: [=&gt;Enter drücken]
Getestet werden kann die Erweiterung "Math" über die Kommandozeile:
##*# =&gt; ein Bild soll angezeigt werden, Fenstertitel "IMDisplay - wizard.jpg"
##* bei Windows Server 2008 durch Eingabe von
##*# convert logo: logo.miff [=&gt;Enter drücken]
##*# imdisplay logo.miff [=&gt;Enter drücken]
##*# =&gt; ein Bild soll angezeigt werden
## PHP-Erweiterung für ImageMagick
##* Für PHP 5.6.14 "php_imagick-3.4.1-5.6-ts-vc11-x86.zip" von http://windows.php.net/downloads/pecl/releases/imagick/ oder alternativ die Datei "php_imagick-3.2.0RC1-5.6-ts-vc11-x86.zip" von http://www.peewit.fr/imagick/ herunterladen und die VC11-kompilierte ThreadSafe-Datei Datei "php_imagick.dll" in das PHP-Unterverzeichnis "ext/" kopieren
##* Für PHP 5.6.14 in der Datei "php.ini" im Bereich Windows Extensions die Datei "php_imagick.dll" einbinden:<br/>extension=php_imagick.dll
##* <del>Für PHP 5.2.9 die VC6-kompilierte Datei "php_imagick_dyn-Q16.dll" von [http://valokuva.org/outside-blog-content/imagick-windows-builds/080709/ valukova.org] herunterladen und in das PHP-Unterverzeichnis "ext/" kopieren und umbenennen zu "php_imagick_dyn_Q16.dll" (Unterstrich statt Bindestrich)</del>
##* <del>Für PHP 5.2.9 in der Datei "php.ini" im Bereich Windows Extensions die Datei "php_imagick_dyn_Q16.dll" einbinden:<br/>extension=php_imagick_dyn_Q16.dll</del>
# MiKTeX Installation
## Für Sophos-Ausnahme im Verzeichnis "D:\texmf\" ein Unterverzeichnis "miktex\" erstellen
## Für Sophos-Antivirus eine Ausnahme festlegen:
##: Konfigurieren => Antivirus => On--Access-Scans => Ausschlüsse => Hinzufügen => Ordner => D:\texmf\miktex\
## MikTeX herunterladen – kann bis zu einer Stunde dauern! – und installieren
### Zum Herunterladen der Installationsdateien die Datei "MiKTeX_NetInstall_Complete_2.9.5870_setup.exe" ausführen
###* "Download MiKTeX" statt "Install MiKTeX"
###* "Complete MiKTeX" statt "Basic MiKTeX"
###* Zielverzeichnis "D:\Install\MiKTeX_2.9_complete\"
### Die Datei "MiKTeX_NetInstall_Complete_2.9.5870_setup.exe" für Installation im Verzeichnis "D:\texfm\miktex\" ausführen mit
###* "Install MiKTeX" statt "Download MiKTeX"
###* "Complete MiKTeX" statt "Basic MiKTeX"
###* "Anyone who uses this computer (all users)" statt "Only for: [Useraccount (Username)]"
###* "Preferred paper: A4", "Install missing packags on-the-fly: Yes"
# Die Erweiterung [[#Math_.28Wiki-Code.29| Math (Wiki-Code)]] installieren und anpassen
#In der Datei "LocalSettings.php" ist jeweils einzufügen:  
<pre>
<pre>
  $wgUseTeX = true;
D:
  # ImageMagick
cd xampp\htdocs\[wikiname]
  $wgImageMagickConvertCommand = 'D:\texmf\imagick\convert.exe';  
D:\xampp\php\php.exe tests\phpunit\phpunit.php extensions\Math\tests\
  $wgImageMagickIdentifyCommand = 'D:\texmf\imagick\identify.exe';
</pre>
  # Tex
 
  $wgLaTexCommand = 'D:\texmf\miktex\miktex\bin\latex.exe';  
Zur Installation und Konfiguration von GhostScript, ImageMagick und MikTeX siehe [[#Eingabe_von_Formeln_mittels_Tex_.28Wiki-Code.29| Eingabe_von_Formeln_mittels_Tex_(Wiki-Code)]]
  $wgDvipsCommand = 'D:\texmf\miktex\miktex\bin\dvips.exe';
 
==== Symbol im Editor ====
 
Bei Verwendung des einfachen Standard-Editors wird diesem automatisch ein Symbol für "Math" mit den entsprechenden Funktionen hinzugefügt.
 
Bei Verwendung der Erweiterung "WikiEditor" muss die Editor-Erweiterung angepasst werden, um das "Math"-Symbol mit den Bearbeitungsfunktionen nutzen zu können.
 
==== Installation "Math" ====
 
* Die heruntergeladene Erweiterung entpacken in das Verzeichnis "extensions\"
* Die Dateien "Math.php" und "MathRenderer.php" umbenennen in "Math_original.php" und "MathRenderer_original.php"; davon Kopien "Math.php" und "MathRenderer.php" erstellen und die Kopien wie nachfolgend beschrieben anpassen
* Die Erweiterung in der Datei "LocalSettings.php" einbinden<pre>require_once "$IP/extensions/Math/Math.php";</pre>
* Existenz der Datenbanktabelle "math" überprüfen, ansonsten erstellen
** entweder SQL-Befehl für MySQL/MariaDB aus der Datei "\extensions\Math\db\math.sql" mit phpMyAdmin ausführen
** oder per Kommandozeile eine Aktualisierung ausführen, aber nur wenn die Tabelle noch nicht exisitiert: <pre>D:\xampp\php\php.exe D:\xampp\htdocs\[wikiname]\maintenance\update.php</pre>
 
==== ImageMagick und MikTeX für Math statt Texvc ====
 
Bei MW1.23 soll zwar "Math" ohne "ImageMagick" verwendet werden (siehe https://www.mediawiki.org/Manual:Running_MediaWiki_on_Windows#ImageMagick), doch funktioniert dies nicht mit "texvc" unter Windows. Deshalb wird in der Datei "LocalSettings.php" weiterhin "ImageMagick" mit "true" aktiviert statt mit "false" deaktiviert und außerdem "Texvc" für die Datei "Math.hooks.php" deaktiviert:
<pre>
$wgUseImageMagick = true;
#ImageMagick
$wgImageMagickConvertCommand = 'D:\texmf\imagick\convert.exe';
$wgImageMagickIdentifyCommand = 'D:\texmf\imagick\identify.exe';
#TeX
$wgLaTexCommand = 'D:\texmf\miktex\bin\latex.exe';
$wgDvipsCommand = 'D:\texmf\miktex\bin\dvips.exe';
$wgSVGConverter = 'ImageMagick';
$wgSVGConverters = array(
  'ImageMagick' => '"D:\texmf\imagick\convert.exe" -background white $input PNG:$output',
);
require_once "$IP/extensions/Math/Math.php";
$wgMathDisableTexFilter = true; // in Math.hooks.php
</pre>
 
===== Anpassungen "Math.php" und "MathRenderer.php" (Wiki-Code) =====
* in der Datei "Math.php" zwischen Z.191 und Z.192 die Klasse "LatexRender" hinzufügen
: <pre>#$wgAutoloadClasses['MathLatexRender.php'] // für HAWK HHG eingefügt 2016-04-25</pre>
* in der Datei "MathRenderer.php" bei der Funktion "getRenderer(...)" in Z.122f bei "default:"
: <code>
: default: // für HAWK HHG angepasst 2016-04-25
: $renderer = new MathLatexRender( $tex, $params ); #$renderer = new MathTexvc( $tex, $params );
: </code>
* von den beiden Dateien eine Sicherungskopie "Math_SW.php" und "MathRender_SW.php" vorsorglich für Änderungen durch Wiki-Updates speichern
 
===== Anpassungen Klasse "LatexRender" =====
 
In der alten Datei "Math.php" bzw. "Math_SW.php" waren 2 Klassen, nämlich die Klasse "MathRenderer" und die Klasse "LatexRender" enthalten, wobei "MathRenderer" im Vergleich zum Original nur rudimentär vorhanden war, um ein Objekt der Klasse, "LatexRender" zu erzeugen.
 
Aus diesen beiden Klassen wird für MW1.23 die Klasse "MathLatexRender" als Sub-Klasse der Klasse "MathRenderer" aus der Erweiterung "Math.
 
Anstatt der Klasse "MathRenderer" unterhalb der Klasse "LatexRender" wird nun in der Klasse "LatexRender" die Funktion "renderMath()" durch Umbenennung und Anpassung als Konstruktor-Funktion "__constructor(...)" verwendet, wobei die Konstruktor-Funktion auch die Funktion "LatexRender(...)", die bisher zur Initialisierung als Konstruktor diente, ersetzt.
 
Hinzu kommt eine neue Funktion "render()", die durch die Definition in der Datei "MathRenderer.php" erforderlich ist.
 
Zudem werden die Variablen $url und $text als Klassen-Variablen definiert.
 
Außerdem wird in der Funktion "cleanTemporaryDirectory()" eine Ergänzung vorgenommen, damit vor dem Löschen der Dateien deren Existenz überprüft wird, um Warnungen zu vermeiden.
 
Zusätzlich werden für neuere PHP-Versionen bei "htmlentities(...)" die Parameter für XHTML und UTF-8 hinzugefügt.
 
<pre>
/**
* LaTeX Rendering Class
* Copyright (C) 2003  Benjamin Zeiss <zeiss@math.uni-goettingen.de>
* -----------------------------------------------------------------------
* Changed to MathLatexRender Class for HAWK HHG by Gunnar Werner (C) 2016
* to be used with MW 1.23 LTS and extension Math REL-1_23...
* for Windows with GhostScript+ImageMagick+MikTeX instead of Texvc
* Notice 1: In file Math.php loading this class has to be added:
* $wgAutoloadClasses['MathLatexRender'] = $dir . 'MathLatexRender.php';
* Notice 2: In file MathRenderer.php new default object $renderer has to be changed:
* $renderer = new MathLatexRender( $tex, $params ); #$renderer = new MathTexvc( $tex, $params );
* -----------------------------------------------------------------------
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
...
* @author Benjamin Zeiss <zeiss@math.uni-goettingen.de>
* => @author Gunnar Werner for HAWK HHG <gunnar.werner@hawk-hhg.de>
* @version v0.8 => v0.8.2016.05
* @package latexrender => class MathLatexRender for extension Math
...
*/
...
// "extends MathRenderer" new by changes 2016
class MathLatexRender extends MathRenderer {
  ...
  // new by changes 2016
  var $url = "";
  var $text = "";
  ...
  /* function replaced with function __constructor() below by changes 2016
  function LatexRender($picture_path,$picture_path_httpd,$tmp_dir) {
    ...
  }
  */
  // new constructor combining old function LatexRender()
  // and function renderMath() from old class MathRenderer
  // by changes 2016
  public function __construct ($latex_formula, $params = array() ) {
    global $wgMathDirectory,
          $wgMathPath,
          $wgTmpDirectory,
          $wgLaTexCommand,
          $wgDvipsCommand,
          $wgImageMagickConvertCommand,
          $wgImageMagickIdentifyCommand;
 
    $latex_formula = '\displaystyle ' . $latex_formula;
 
    // from old function LatexRender()
    $this->_picture_path = $wgMathDirectory;
    $this->_picture_path_httpd = $wgMathPath;
    $this->_tmp_dir = $wgTmpDirectory;
    $this->_tmp_filename = md5(rand());
 
    // check Math dir
    if(!file_exists($wgMathDirectory)){@mkdir($wgMathDirectory);}
    if(!file_exists($wgTmpDirectory)){@mkdir($wgTmpDirectory);}
 
    // Objects $latex and $url replaced with $this by changes 2016
    $this->_latex_path = $wgLaTexCommand;
    $this->_dvips_path = $wgDvipsCommand;
    $this->_convert_path = $wgImageMagickConvertCommand;
    $this->_identify_path = $wgImageMagickIdentifyCommand;
 
    $this->url = $this->getFormulaURL($latex_formula);
 
    // htmlentities for newer PHP versions changed 2016
    $alt_latex_formula = htmlentities($latex_formula, ENT_QUOTES|ENT_XHTML, "UTF-8");
    $alt_latex_formula = str_replace("\r", "", $alt_latex_formula);
    $alt_latex_formula = str_replace("\n", "", $alt_latex_formula);
    $alt_latex_formula = str_replace('\displaystyle ', "", $alt_latex_formula);
 
    if($this->url != false){
      $this->text = '<img src="'.$this->url.'" title="'.$alt_latex_formula.'" alt="'.$alt_latex_formula.'" />';
    }
    else{
      $this->text = '[Unparseable or potentially dangerous latex formula. Error '.$this->_errorcode.' '.$this->_errorextra.']';
    }
  }
  ...
  // new for abstract function in "MathRenderer.php" by changes 2016
  public function render(){
    return $this->text."\n";
  }
  ...
  function renderLatex($latex_formula) {
    ...
    // create temporary dvi file
    ...
    $status_code = exec($command);
    // added checking file by changes 2016
    if (!$status_code || !file_exists($this->_tmp_filename.".dvi")) {
      ...
      $this->_errorcode = 4;
      return false;
    }
    ...
  }
  ...
  function cleanTemporaryDirectory() {
    ...
    // check existence before deleting to prevent warnings added by changes 2016
    /*
    unlink($this->_tmp_dir."/".$this->_tmp_filename.".tex");
    ...
    */
    $file_types = array("tex", "aux", "log", "dvi", "ps", $this->_image_format);
    foreach($file_types as $f_typ){
      $tmp_file = $this->_tmp_dir."/".$this->_tmp_filename.".".$f_typ;
      if(file_exists($tmp_file)){
        unlink($tmp_file);
      }
      $tmp_file = "";
    }
 
    chdir($current_dir);
  }
}
</pre>
 
==== LaTeXML für Math statt Texvc ====
 
Da LaTeXML nur bei einfachen Formeln funktioniert, kommt es nicht als Alternative zu Texvc in Betracht.
 
In der Datei "readme" gibt es folgende Hinweise:
* Seit MW1.19 beschränken sich die Rendering-Optionen auf "Always PNG" und "Leave it as TeX".
* Statt Bildern kann "MathML" mittels "LaTeXML" verwendet werden
** Für LaTeXML ist "php5-curl" erforderlich; bei Windows ist es im Verzeichnis "\php\ext\" die Datei "php_curl.dll", die als Modul in der Datei "php.ini" eingebunden sein muss
** In der Datei "LocalSettings.php" wird LaTeXML für die Konvertierung zu MathML verwendet: "$wgMathUseLaTeXML = true;"
** In der Datei "LocalSettings.php" wird für anonyme Seitenaufrufe  angegeben: "$wgDefaultUserOptions['math'] = MW_MATH_LATEXML"
** Empfohlen wird eine Core-Version von wmf/1.22wmf7 oder neuer
 
==== Texvc für Math kompilieren ====
 
Für die Kompilierung ist "MinGW" gegenüber "Cygwin" vorzuziehen, weil es unabhängig von den dll-Dateien und deren MS-Lizenzen mit der MSVC-Runtime funktioniert (siehe http://stackoverflow.com/questions/771756/what-is-the-difference-between-cygwin-and-mingw).
 
Da für "MinGW" keine verwertbare Ausgangsdatei zur Verfügung steht - , "makefile" wird nicht akzeptiert -, müssen "Cygwin" und "OCaml" (Version 4.02.3 32Bit + findlib + batteries) installiert werden (Dauer ca. 20 Min.). "OCaml" kann bei http://caml.inria.fr oder bei http://protz.github.io/ocaml-installer/ heruntergeladen werden.
 
'''Cygwin'''
 
Während der Installation von "OCaml" in das Verzeichnis "D:\texmf\" wird zusätzlich "Cygwin" im Verzeichnis "C:\cygwin\" installiert, sofern noch nicht vorhanden.
 
Für die Installation von "Cygwin" muss zum Herunterladen ein Mirror-Server ausgewählt werden, z. B. ftp://ftp.hawo.stw.uni-erlangen.de.
 
Vor dem Kompilieren müssen Dateien angepasst werden (siehe https://www.mediawiki.org/wiki/Texvc#Windows und https://www.mediawiki.org/wiki/MWWRender.ml):
* \Math\math\render.ml Z.42 und Z.48 (2 Backslashes statt einem Schrägstrich)
: <pre>...finalpath^"\\"^md5...</pre>
: <pre>...finalpath^"\\"^md5...</pre>
 
'''MinGW'''
 
"MinGW" (2013-10-26) kann als Installationsmanager, der während der Installation die ausgewählten "Packages" aus dem Internet lädt (Dauer ca. 10 Min.), heruntergeladen werden bei https://sourceforge.net/projects/mingw/files/ (Stand 2016-04-29).
 
"MinGW" wird als 32Bit-Version im Verzeichnis "C:\MinGW\" installiert und wird nicht in der Systemsteuerung bei den installierten Programmen aufgelistet. Das Programm-Unterverzeichnis "bin\" muss bei der Umgebungsvariablen "Path" hinzugefügt und der Server danach neu gestartet werden.
 
Im Installationsmanager bei <del>"Basic Setup"</del> "All Packages" alle Packages von "MinGW", aber nicht "MSYS" aktivieren. Danach im Menü "Installation => Apply changes" auswählen.
 
Kompilieren (siehe auch http://www.mingw.org/wiki/mingw_for_first_time_users_howto):
* Die DOS-Kommandozeile als Administrator öffnen
* zum "Math"-Verzeichnis wechseln
* Befehl zum Kompilieren eingeben
<pre>
C:\MinGW\bin\gcc makefile -o texvc.exe
</pre>
 
Fehlermeldung: "Das Programm kann nicht gestartet werden, da libiconv-2.dll auf dem Computer fehlt."
 
In "Systemsteuerung => Alle Systemsteuerungselemente => System => Erweiterte Systemeinstellungen => Umgebungsvariablen" bei "Path" am Ende einfügen:
<pre>;C:\MinGW\bin\</pre>
 
=== MwEmbedSupport ===
 
Die Erweiterung wird für die Wiedergabe von Videodateien mit der Erweiterung [[#TimedMediaHandler|"TimedMediaHandler"]] benötigt. Sie kann heruntergeladen werden bei https://www.mediawiki.org/wiki/Extension:MwEmbedSupport
 
=== OggHandler (JavaScript) ===
 
Die Erweiterung wird ab Mediawiki 1.24 nicht mehr unterstützt; empfohlen wird die Erweiterung "TimedMediaHandler", die die Erweiterung "MwEmbedSupport" benötigt und ebenfalls mit JavaScript funktioniert.
 
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 heise.de und wird dann gespeichert unter "D:\ffmpeg-wiki\"
 
Installation der Erweiterung:
* Extension unter http://www.mediawiki.org/wiki/Extension:OggHandler herunterladen.
* Extrahieren der Dateien nach extensions/OggHandler
* In der Datei "LocalSettings.php" einfügen:
<pre>
## Repository: OggHanlder oder MwEmbedSupport und TimedMediaHandler
## OggHandler nur bis MW 1.23, danach MwEmbedSupport und TimedMediaHandler
require_once("$IP/extensions/OggHandler/OggHandler.php");
# FFmpeg auskommentiert, solange kostenfreie Lizenz für Hochschule ungeklärt ist
#$wgFFmpegLocation = "D:\ffmpeg-wiki\bin\ffmpeg";
</pre>
 
=== Piwik Integration ===
 
Die Erweiterung [https://www.mediawiki.org/wiki/Extension:Piwik_Integration "Piwik Integration"] für die Nutzung der Statistik-Anwendung "Piwik" kann ab den Versionen MW 1.14 und Piwik 0.4 verwendet werden.
 
* Dateien unter "extensions\Piwik\" speichern
* In der Datei "LocalSettings.php" einfügen:
<pre>
##
## EXTENSIONS
...
require_once( "$IP/extensions/Piwik/Piwik.php" );
$wgPiwikURL = $_SERVER['SERVER_NAME']."/analytics/piwik"; # ohne Protokoll-Angabe und ohne Schrägstrich am Ende!
$wgPiwikIDSite = "1"; # SalzWiki=1, SaltWiki=2, Repository=3
</pre>
 
Hinweis: Die Beispielangabe zu "$wgPiwikURL" bei der Internetseite, auf der die Erweiterung angeboten wird, ist nicht korrekt, weil die Erweiterung den Schrägstrich am Ende der Adresse im HTML-Quelltext beim Piwik-JS-Teil hinzufügt:
<pre>
$wgPiwikURL = "piwik-host.tld/dir/"; # ohne Protokoll-Angabe!
</pre>
 
=== QuestyCaptcha ===
 
Für SaltWiki wird zusätzlich zu "ConfirmEdit" als Erweiterung das Captcha "QuestyCaptcha" gegen Spam-Anmeldungen genutzt, da das Standard-Mathe-Captcha nicht ausreichte.
Die anderen angebotenen Captchas werden in zukünftigen Mediawiki-Versionen nicht mehr unterstützt oder funktionieren nicht mit allen gängigen Browsern oder funktionieren mit nicht-barrierefreien Bildern und/oder benötigen zusätzliche Installationen auf dem Wiki-Server mit Administrationsrechten, weshalb "QuestyCaptcha" trotz Beta-Status als einzig brauchbare Möglichkeit verwendet werden muss.
 
* Dateien "QuestyCaptcha.php", "QuestyCaptcha.class.php" und "QuestyCaptcha.i18n.php" unter http://www.mediawiki.org/wiki/Extension:QuestyCaptcha herunterladen und unter "extensions\ConfirmEdit\" speichern.
* In der Datei "LocalSettings.php" nach "require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );" einfügen:
<pre>
##
## EXTENSIONS
...
require_once( "$IP/extensions/ConfirmEdit/QuestyCaptcha.php" );
$wgCaptchaClass = "QuestyCaptcha";
# Salzwiki
$wgCaptchaQuestions[] = array('question' => 'Welches Wort fehlt: "Eine Frage stellen, eine ... geben"?', 'answer' => '***' );
$wgCaptchaQuestions[] = array('question' => 'Um welche Art von Webseiteninhalt handelt es sich hier: Blog oder Wiki?', 'answer' => '***' );
$wgCaptchaQuestions[] = array('question' => 'Wie lautet der Name dieses Wikis?', 'answer' => $wgSitename );
$wgCaptchaQuestions[] = array('question' => 'Bitte das magische Wort - Salz - hier eingeben:', 'answer' => '***' );
$wgCaptchaQuestions[] = array('question' => 'Bitte das Spezialwort - 8Acht8 - hier eingeben:', 'answer' => '***' );
# Saltwiki
$wgCaptchaQuestions[] = array('question' => 'Which is the language of this question: Dutch, English, French, German or Spanish?', 'answer' => '***' );
$wgCaptchaQuestions[] = array( 'question' => 'Please write the following word backwards: '.$wgSitename, 'answer' => strrev($wgSitename) ); #'ikiwtlaS'
$wgCaptchaQuestions[] = array( 'question' => 'The taste of salt is neither bitter nor sweet nor sourish but &hellip;', 'answer' => '***' );
$wgCaptchaQuestions[] = array('question' => 'What is the missing word: "Ask a question, give an &hellip;"', 'answer' => ***'');
$wgCaptchaQuestions[] = array('question' => 'What kind of web content is this: Blog or Wiki?', 'answer' => '***');
$wgCaptchaQuestions[] = array( 'question' => 'What is this wiki\'s name (in capital letters)?', 'answer' => strtoupper($wgSitename) ); #'SALTWIKI'
# Repository
$wgCaptchaQuestions[] = array('question' => 'Which is the language of this question: Dutch, English, French, German or Spanish?', 'answer' => '***' );
$wgCaptchaQuestions[] = array( 'question' => 'Please write the following word backwards: '.$wgSitename, 'answer' => strrev($wgSitename) ); #'yrotisopeR'
$wgCaptchaQuestions[] = array( 'question' => 'The taste of salt is neither bitter nor sweet nor sourish but &hellip;', 'answer' => '***' );
$wgCaptchaQuestions[] = array('question' => 'What is the missing word: "Ask a question, give an &hellip;"', 'answer' => ***'');
$wgCaptchaQuestions[] = array('question' => 'What kind of web content is this: Blog or Wiki?', 'answer' => '***');
$wgCaptchaQuestions[] = array( 'question' => 'What is this wiki\'s name (in capital letters)?', 'answer' => strtoupper($wgSitename) ); #'REPOSITORY'
#$wgCaptchaQuestions[] = array('question' => 'Please write the magic secret, "salt", here:', 'answer' => '***');
#$wgCaptchaQuestions[] = array('question' => 'Type the code word, 8eight8, here:', 'answer' => '***');
 
## Auslöser für Captcha-Aktivierung
# Salzwiki/Saltwiki
$wgCaptchaTriggers['edit']          = true;
$wgCaptchaTriggers['create']        = true;
$wgCaptchaTriggers['addurl']        = true;
$wgCaptchaTriggers['createaccount'] = true;
$wgCaptchaTriggers['badlogin']      = true;
# Salzwiki/Saltwiki/Repository
$wgCaptchaTriggers['contactpage'] = true;
...
##
## EINSTELLUNGEN
...
## Salzwiki/Saltwiki
#captcha Hschwarz 12.02.2010
$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;
</pre>
 
=== SaltWiki (Wiki-Code) ===
 
Die Erweiterung "SaltWiki" ergänzt die Erweiterung [[#BibManager|"BibManager"]] für Volltexte und DOIs bei den BibTex-Attributen. Da sich in der verwendeten BibManager-Version der Dateipfad für eine Grafik geändert hat, muss der Code dieser Erweiterung angepasst werden.
 
Von der angepassten Datei "SaltWiki.php" wird eine Kopie mit dem Suffix "_SW" gespeichert.
 
==== Versionshinweis ====
Die Version 2015-05-25 enthält eine Korrektur in der Sprachdatei "SaltWiki.i18n.php", damit bei "de" nicht wie bei "de-formal" die Sie-Form verwendet wird.
 
==== Fehler (Wiki-Code) ====
In der Datei "SaltWiki.php" wird in der Funktion "sw_onBibManagerGetIcons(...)" in Z.161 eine Grafik aus dem Verzeichnis "\extensions\BibManager\client\images\" statt aus dem Verzeichnis "\extensions\BibManager\resources\images\" verwendet, weshalb der Alternativtext der Grafik angezeigt wird.
 
Z.159ff
<pre>
// für HAWK HHG und MW1.23LTS Pfad von "client" zu "resources" angepasst 2016-06-14
$icons['fulltext'] = array (
  'src' => $wgScriptPath . '/extensions/BibManager/resources/images/' . $icon,
  ...
);
</pre>
 
==== Veralteter Code ====
Es wird noch die Funktion "wfMsg()" anstatt von "wfMessage()" in der Datei "SaltWiki.php" verwendet.
 
=== SaltWikiUpload ===
 
Die Erweiterung "SaltWikiUpload" ergänzt die Erweiterung [[#BibManager|"BibManager"]] für das Hochladen von Dateien im Repositorium unter Berücksichtigung von Meta-Daten (Vergleich der Formulareingaben siehe weiter unten)
 
==== Versionshinweis ====
Die Version 2012-01-25 enthält
* in der Datei "SaltWikiUpload_body.php" ab Z.66 die Variable $aAuthorsLinks und in "foreach..." ab Z.104 Änderungen für $sFieldValue vor "$aText[]..."
* in der Sprachdatei "SaltWikiUpload.i18n.php" in den Zeilen 53, 105 und 157 ein Zusatzelement "help-various_bibtex"
* in der Datei "\includes\SaltWikiUpload_Fields.php" das Zusatzelement "help-various_bibtex"
* in der Datei "\includes\SaltWikiUpload_HTMLDateField.php" Korrekturen zur Darstellung von Monatszahlen kleiner als 10 mit vorangestellter 0
 
==== Fehler ====
* Das erweiterte Formular wird nicht angezeigt, sondern das MW-Upload-Formular
* Beim Hochladen mittels MW-Upload-Formular scheitert das Hochladen mit der Fehlermeldung "Es gibt fehlerhaft ausgefüllte Felder", wenn die Erweiterung in der Datei "LocalSettings.php" eingebunden wird.
* Die Sprachdatei "SaltWikiUpload.i18n.php" enthält bei "de" die Sie-Form wie bei "de-formal".
 
==== Veralteter Code ====
* Funktion "wfMsg" statt "wfMessage" in den Dateien
** "SaltWikiUpload_body.php"
** "\includes\SaltWikiUpload_Fields.php"
** "\includes\SaltWikiUpload_HTMLDateField.php"
 
==== Formularunterschiede ====
<b>SaltWikiUpload-Formular</b>
* Metadaten
** Beschreibung
** Quelle
** Datum
** Autor(en)
** Berechtigung
** Schlagwörter
** Typ
* Medium
** Medienart
* Quelldatei
** Quelldatei
* Dateibeschreibung
** Zielname
** Weitere Anmerkungen
 
<b>MW1.23LTS-Upload-Formular</b>
* Quelldatei
** Quelldatei
* Dateibeschreibung
** Zielname
** Beschreibung/Quelle
** Lizenz
* Hochladeoptionen
** Diese Datei beobachten
** Warnungen ignorieren
 
==== Quellcode der Version 2012-01-25 ====
Zeile 66ff unter "$aAuthors = explode(...);"
<pre>
$aAuthorsLinks = array();
foreach( $aAuthors as $sAuthor ){
  ...
  $aCategories[] = '[['.$sPrefixedCatText.']]';
  $aAuthorsLinks[] = '[[:'.$sPrefixedCatText.'|'.$oCategoryTitle->getText().']]';
}
</pre>
 
Zeile 104ff vor "$aText[] = ..."
<pre>
foreach( $aTemplate as $sFieldName => $sFieldValue ) {
  if( in_array( $sFieldName, array('literature_bibtex','grey_literature_bibtex','unpublished_reports_bibtex') ) && !empty($sFieldValue) ){
    $sFieldValue = '<bib id="'.$sFieldValue.'" />';
  }
  if( $sFieldName == 'literature_doi' && !empty($sFieldValue) ){
    $sFieldValue = 'http://dx.doi.org/'.$sFieldValue;
  }
  if( $sFieldName == 'general_author' && !empty($sFieldValue) ){
    $sFieldValue = implode('; ', $aAuthorsLinks);
  }
 
  $aText[] = '|'.$sFieldName.'='.$sFieldValue;
}
</pre>
 
=== Terminology ===
 
Diese Erweiterung wird seit 2010-07-29 nicht mehr weiterentwickelt. Sie gilt als ineffizient bei umfangreichen Glossars. Es wird die Erweiterung "Lingo" empfohlen: http://www.mediawiki.org/wiki/Extension:Lingo.
 
Die Extension dient zum Erstellen eines Glossars.
<br>Um Verwirrungen zu vermeiden wurde bei "Terminology" 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
<pre>
$wgExtensionCredits['parserhook'][] = array(
  'name' => 'Glossar', //in Glossar umbenannt HJSChwarz 12.08.2010
</pre>
*Z. 53
<pre>
$rev = Revision::newFromTitle(Title::makeTitle(null, 'Glossar')); //in Glossar umbenannt HJSChwarz 12.08.2010
</pre>
 
* Extension unter http://www.mediawiki.org/wiki/Extension:Terminology herunterladen.
* Datei in das Verzeichnis "extensions" kopieren
* In der Datei "LocalSettings.php" einfügen:
<pre>require_once("$IP/extensions/terminology.php");</pre>
 
 
=== TimedMediaHandler (JavaScript) ===
 
Die Erweiterung steht ab Mediawiki 1.17 zur Verfügung und beinhaltet den "Kaltura HTML5 Player" (JavaScript, http://www.html5video.org/kaltura-player/docs). Unterstützt werden Streaming, WebM und Ogg sowie gegebenenfalls getID3.
 
Die Erweiterung benötigt zusätzlich
* die Erweiterung [[#MwEmbedSupport|"MwEmbedSupport"]]
* libwinpthread-1.dll für die Installation der Anwendung "ffmpeg"
* die Anwendungen
** "ffmpeg"
** "ffmpeg2theora"
** "oggThumb"
* eventuell auch die Anwendungen
** "PEAR File_Ogg", wenn nicht in "...\extensions\TimedMediaHandler\handlers\OggHandler\" die Datei "OggHandler.php" und das Verzeichnis "PEAR\" mit dem Unterverzeichnis "File_Ogg\" vorhanden sind
*** "PEAR Package Manager" oder "PEAR Pyras Installer"
*** "PEAR File_Ogg" 0.3.1 Beta 2010-08-27 (Stand 2016-06-21) wie bei Erweiterung "OggHandler" für "oggThumb"-Vorschaubilder
** "getID3()"
 
Für Details siehe https://phabricator.wikimedia.org/diffusion/ETMH/browse/master/README.
 
* Extensions herunterladen bei
** https://www.mediawiki.org/wiki/Extension:MwEmbedSupport
** https://www.mediawiki.org/wiki/Extension:TimedMediaHandler
* Dateien in das Verzeichnis "extensions" kopieren
* Datei "TimedMediaHandler.sql" für Tabelle "transcode" als Kopie mit Suffix "_SW" speichern, Kopie anpassen für Tabelle mit Präfix "sr_" und zur Erstellung der Tabelle "sr_transcode" als Admin mit der Konsole ausführen: mysql -u root -p -> USE repository[_draft]
* Zusatzsoftware herunterladen
** ffmpeg (Windows, 2016-05-10) bei www.heise.de oder https://ffmpeg.zeranoe.com/builds/ <del>http://firefogg.org/nightly/ffmpeg.exe (benötigt libwinpthread-1.dll)</del>
** ffmpeg2theora (Windows, 2014-03-06) bei www.heise.de oder http://v2v.cc/~j/ffmpeg2theora/ <del>http://firefogg.org/nightly/ffmpeg2theora.exe</del>
** oggThumb (2010-06-01) bei https://sourceforge.net/projects/oggvideotools/files/oggvideotools-win32/oggvideotools-0.8a-win32/OggVideoTools-0.8a-win32.exe (vormals http://www.streamnik.de/files.html)
** PEAR File_Ogg und Installer bei
*** http://pear.php.net/package/File_Ogg/download/File_Ogg-0.3.1.tgz (Beta, 2010-08-27)
*** http://pear.php.net/go-pear.phar, Installationsanleitung http://pear.php.net/manual/en/installation.getting.php
*** http://pear2.php.net
** getID3() Version 1.9.12 stable (2016-03-02) bei http://www.getid3.org
* Zusatzsoftware einrichten
** Verzeichnis "D:\ffmpeg_ogg\" erstellen
** "ffmpeg-20160620-afd0405-win32-static.zip" entpacken unter "D:\ffmpeg_ogg\" und Verzeichnis umbenennen in "\ffmpeg\"
** "ffmpeg2theora.exe" speichern unter "D:\ffmpeg_ogg\ffmpeg2theora\"
** "OggVideoTools-0.8a-win32.exe" installieren mit Auswahl "Add OggVideoTools to the system PATH for all users" und "Create...Desktop Icon" in Zielverzeichnis "D:\ffmpeg_ogg\OggVideoTools"
* In der Datei "LocalSettings.php" einfügen:
<pre>
## Repository: OggHanlder oder MwEmbedSupport und TimedMediaHandler
## OggHandler nur bis MW 1.23, danach MwEmbedSupport und TimedMediaHandler
#require_once("$IP/extensions/OggHandler/OggHandler.php");
# FFmpeg auskommentiert, solange kostenfreie Lizenz für Hochschule ungeklärt ist
#$wgFFmpegLocation = "D:\ffmpeg-wiki\bin\ffmpeg";
## TimedMediaHandler mit MwEmbedSupport statt OggHandler, 2015-09-21 G. Werner
require_once("$IP/extensions/MwEmbedSupport/MwEmbedSupport.php");
require_once("$IP/extensions/TimedMediaHandler/TimedMediaHandler.php");
# FFmpeg auskommentiert, solange kostenfreie Lizenz für Hochschule ungeklärt ist
#$wgFFmpegLocation = "D:\ffmpeg_ogg\ffmpeg\bin\ffmpeg";
$wgFFmpeg2theoraLocation = "D:\ffmpeg_ogg\ffmpeg2theora\ffmpeg2theora";
$wgOggThumbLocation = "D:\ffmpeg_ogg\OggVideoTools\bin\oggThumb";
</pre>
 
=== User Merge - Benutzername löschen ===
 
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.
 
* Extension unter http://www.mediawiki.org/wiki/Extension:User_Merge_and_Delete herunterladen.
* Datei in das Verzeichnis extensions/UserMerge kopieren
* In den Localsettings eingefügen
 
<pre>
require_once( "$IP/extensions/UserMerge/UserMerge.php" );
# Assign the usermerge right to a usergroup, i.e. to the bureaucrats:
$wgGroupPermissions['bureaucrat']['usermerge'] = true;
</pre>
 
=== WhosOnline - Wer ist online ===
 
Die Extension WhosOnline dient dazu sich auf einer Specialpage anzeigen zu lassen, wer gerade online ist.
 
Für MediaWiki 1.23 ist im Herbst 2015 als älteste Version nur eine "REL1_25", also Version 1.4.0 für MW 1.25 erhältlich, die einen Script-Fehler verursacht, wenn in der Datei "WhosOnlineSpecialPage.php" bei der Funktion "getNavigationBar()" die Variable "$title" vom Typ String statt Objekt ist; zur Fehlerbehebung siehe weiter unten und https://www.mediawiki.org/wiki/Extension_talk:WhosOnline#Bug_in_MW_1.24_.3F
 
Bei MediaWiki 1.25 verursacht die Version 1.5.0 einen Fehler, wenn die Datei "upgrade.php" verwendet wird, weil die Datei "extension.json" in der Erweiterung fehlt; siehe https://www.mediawiki.org/wiki/Extension_talk:WhosOnline#Fatal_error_running_update.php_on_V1.5.0. Es muss deshalb in der Datei "LocalSettings.php" wie bei älteren Versionen "require_once ..." statt "wfLoadExtension(...)" verwendet werden.
 
*Dateien unter http://www.mediawiki.org/wiki/Extension:WhosOnline herunterladen und extrahieren
*Verzeichnis "WhosOnline" unter "Extensions" speichern
*Für MediaWiki 1.23 in der Datei "WhosOnlineSpecialPage.php" die Funktion "getNavigationBar()" anpassen
*SQL-Befehl in der Extension-Datei "WhosOnline.sql" für neue Datenbank-Tabelle anpassen (siehe weiter unten)
*Mit "phpMyAdmin" und geändertem SQL-Befehl eine neue Datenbank-Tabelle erstellen (siehe weiter unten)
*In der Datei "LocalSettings.php" einfügen:
<pre>
require_once("$IP/extensions/WhosOnline/WhosOnline.php");
$wgWhosOnlineShowAnons = true;
</pre>
 
'''Datei "WhosOnlineSpecialPage.php" für MW 1.23 anpassen'''
 
Die Funktion "getNavigationBar()" ab Zeile 75 kopieren, auskommentieren und die Kopie darunter einfügen.
In der Kopie die Variable $wgLang als Ersatz für $wgContLang und die entsprechenden Variablen für die return-Funktion hinzufügen:
<pre>
function getNavigationBar(){
  global $wgContLang, $wgLang;
  $link = $wgContLang->specialpage('WhosOnline');
  if(is_object($link)){
    $title = $link;
  }
  else{
    $title = Title::newFromText($link);
    if(is_null($title)){
      return false;
    }
  }
  $offset = $this->mOffset;
  $limit = $this->mLimit;
  $query = '';
  $query = wfCgiToArray('');
  $atend = $this->countUsersOnline() < ($this->mLimit + $this->mOffset); // show next link
 
  return $wgLang->viewPrevNext(
    $title,
    $offset,
    $limit,
    $query,
    $atend
  );
}
</pre>
 
'''Datei "WhosOnline.sql" anpassen'''
 
Den SQL-Befehl in der Extension-Datei "WhosOnline.sql" für die neue Datenbank-Tabelle in der ersten Zeile z. B. wie folgt mit Präfix "sw_" bzw. "sr_" anpassen:
<pre>CREATE TABLE `[datenbankname]`.`[praefix]online` (</pre>
 
'''Datenbank-Tabelle erstellen'''
 
Mit "phpMyAdmin" die MySQL-Datenbank für das Wiki auswählen und nach Auswahl des Karteikartenreiters/Tabs "SQL" die Tabelle "sw_online" bzw. "sr_online" durch Eingabe des folgenden SQL-Statements anlegen:
<pre>
CREATE TABLE  `[datenbankname]`.`[praefix]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;
</pre>
 
=== WikiEditor (JavaScript) ===
 
'''Achtung: Funktioniert nur bei Browsern mit aktiviertem JavaScript und muss in den nachfolgend genannten Dateien und dem Grafiken-Verzeichnis nach jedem MediaWiki-Update auf Vorhandensein und Änderungen überprüft werden!'''
 
Die Erweiterung "WikiEditor" wird seit MW1.18 als Ersatz für den schlichten Editor mitgeliefert.
 
Um die Erweiterung einzubinden und sie für alle Nutzungskonten verfügbar zu machen, sind in der Datei "LocalSettings.php" in MW1.23 folgende Angaben nötig:
<pre>
require_once("$IP/extensions/WikiEditor/WikiEditor.php");
$wgDefaultUserOptions['usebetatoolbar'] = 1; // Editor bei allen Nutzungskonten standardmäßig aktivieren
$wgDefaultUserOptions['usebetatoolbar-cgd'] = 1; // Erweiterte Funktionen und Sonderzeichen bei allen Nutzungskonten standardmäßig aktivieren
$wgDefaultUserOptions['wikieditor-preview'] = 1; // Schaltfläche für Vorschau und Änderungen aktivieren
$wgDefaultUserOptions['wikieditor-publish'] = 1; // Schaltfläche für Speichern/Veröffentlichen und Abbrechen aktivieren
</pre>
 
Für die Nutzung zusätzlicher Funktionen siehe:
* https://www.mediawiki.org/wiki/Extension:WikiEditor/de
* Math, Durchgestrichen, HTML-Kommentar: https://www.mediawiki.org/wiki/Extension:WikiEditor/Toolbar_customization/Library
* https://www.mediawiki.org/wiki/Extension:WikiEditor/Toolbar_customization
* https://meta.mediawiki.org/wiki/User:Krinkle/Scripts/InsertWikiEditorButton
 
Das Symbol für die Erweiterung "Math", das im Standard-Editor automatisch hinzugefügt wird, fehlt bei der Erweiterung "WikiEditor".
 
Es gibt 4 Standard-"Sektionen"
* main für die Standard-Funktionen
* advanced für die erweiterten Funktionen
* characters für die Sonderzeichen
* help
 
Die "Sektionen" können "Gruppen" für Gruppierungen von Funktionen enthalten.
 
Die Funktionen sind über Schaltflächen (Text oder Symbol) oder Auswahllisten (Booklets) verfügbar.
 
==== Anpassungen ====
 
Folgende Dateien sind für zusätzliche Bearbeitungsfunktionen zu bearbeiten:
* Bilddatei "button-math.png" aus der Erweiterung "Math" kopieren in Verzeichnis "\extensions\WikiEditor\modules\images\toolbar\" und umbenennen in "insert-math.png"
* Sprach-Dateien im Verzeichnis "\extensions\WikiEditor\i18n\" ergänzen
* Im Verzeichnis "\extensions\WikiEditor\modules\" folgende Dateien ergänzen
** jquery.wikiEditor.toolbar.config.js Z.443 vor "redirect"
** optional: jquery.wikiEditor.dialogs.config.js Z. 17 "remove" und Z.71 "addToToolbar" vor "search"
 
'''Beispiel Sprachdatei''' "de.json" in Z.85 ergänzen:
<pre>
"wikieditor-toolbar-tool-math": "Formel",
"wikieditor-toolbar-tool-math-insert": "Formel einfügen",
</pre>
 
Datei "jquery.wikiEditor.toolbar.config.js" Z.443 vor "redirect" mit den offset-Werten von "redirect" ergänzen und "redirect" auskommentieren:
<pre>
// neu für HAWK HHG 2017-01-31
'math': {
'labelMsg': 'wikieditor-toolbar-tool-math',
'type': 'button',
'icon': {
  'default': 'insert-math.png',
  'default-rtl': 'insert-math.png'
},
'offset': {
  'default': [-70, -142],
  'default-rtl': [-70, -502]
},
'action': {
  'type': 'encapsulate',
  'options': {
  'pre': '<math>\n',
  'periMsg': 'wikieditor-toolbar-tool-math-insert',
  'post': '\n</math>',
  'ownline': true
  }
}
}/*,
'redirect': {
...
}
*/
</pre>
 
Datei "jquery.wikiEditor.dialogs.config.js" Z.17 vor ".wikiEditor( 'addToToolbar', {...} )" und Z.71 zwischen "group:insert tools:table" und "group:search" ergänzen:
<pre>
replaceIcons: function ( $textarea ) {
...
.wikiEditor( 'removeFromToolbar', { section: 'advanced', group: 'insert', tool: 'math' } )
}
...
// neu für HAWK HHG 2017-01-31
.wikiEditor( 'addToToolbar', {
section: 'advanced',
group: 'insert',
tools: {
  'math': {
  labelMsg: 'wikieditor-toolbar-tool-math',
  type: 'button',
  icon: 'insert-math.png',
  offset: [-70, -142],
  action: {
    type: 'dialog',
    module: 'insert-math'
  }
  }
}
} )
</pre>
 
== Eingabe von Formeln mittels Tex (Wiki-Code) ==
 
Damit mathematische und auch chemische Formeln dargestellt werden können, wird in Mediawiki "Texvc" benutzt. Dies funktioniert nicht unter Windows, sondern nur unter Linux. Siehe hierzu
* https://www.mediawiki.org/wiki/Extension_talk:Math#Math_REL-1_23_with_MW1.23LTS_on_Windows_with_ImageMagick.2C_MikTeX.2C_GhostScript_and_class_LatexRender
* https://www.mediawiki.org/wiki/Texvc#Option_C_-_Using_MathLatexRender_based_on_LatexRender_of_option_B
* https://www.mediawiki.org/wiki/Texvc#Windows)
 
Deshalb muss zusammen mit der Erweiterung [[#Math_.28Wiki-Code.29| Math (Wiki-Code)]] die Klasse LatexRender von Benjamin Zeiss in abgewandelter Form als Klasse MathLatexRender verwendet werden und muss folgende Software installiert werden:
# Windows Server 2012R2
## GPL GhostScript 9.10 (gs910w32.exe, 2013-09-02)
## ImageMagick 6.9.3-8-Q16-x86-dll.exe (16Bit dynamic, nicht static)
## MikTeX 2.9.5870 Net Installer 32Bit (complete, nicht basic)
# Windows Server 2008
## GPL GhostScript 8.70 (gs870w32.exe)
## ImageMagick 6.5.9-0-Q16-windows-dll.exe (16Bit dynamic, nicht static)
## MikTeX 2.8 Net Installer 32Bit (complete, nicht basic)
'''Nach jedem mediawiki-Update muss die Erweiterung "Math" mit den Dateien "Math.php" und "MathRenderer.php" auf Windows-Kompatibilität überprüft werden!'''
 
Die '''[[#Tats.C3.A4chliche_Installation|tatsächliche Installation ]]''' eines Tex-Systems erfolgt in Anlehnung an die [[#Alternative_Installationsmethode_gem.C3.A4.C3.9F_Mediawiki|alternative Methode]] auf der Mediawiki Seite
http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Windows#Alternative_Solution.
 
=== Tatsächliche Installation ===
 
Die Applikationen als Administrator für alle User im Verzeichnis "D:\texmf\" installieren:
 
# GhostScript im Unterverzeichnis "ghostscript\" installieren
## aus dem Unterverzeichnis "bin\" die Datei "gswin32c.exe" kopieren und die Kopie umbenennen zu "gs.exe"
## In der Systemsteuerung unter "Erweiterte Systemeinstellungen => Erweitert => Umgebungsvariablen" die Systemvariable "Path" erweitern mit ";D:\texmf\ghostscript\bin\"
# ImageMagick im Unterverzeichnis "imagick\" installieren
## ImageMagick dll-Datei (bei vorhandener Windows-Server-Konfigurationsberechtigung), sonst static-Datei (nur XAMPP-Zugriffsberechtigungen), inkl. "Create a desktop icon", "Add application directory to your system path", "Install FFmpeg" und "Install developement headers and libraries for C and C++"
## Testen mit der "Eingabeaufforderung/Konsole"
##* bei Windows Server 2012R2 durch Eingabe von
##*# convert wizard: wizard.jpg [=&gt;Enter drücken]
##*# convert wizard.jpg win: [=&gt;Enter drücken]
##*# =&gt; ein Bild soll angezeigt werden, Fenstertitel "IMDisplay - wizard.jpg"
##* bei Windows Server 2008 durch Eingabe von
##*# convert logo: logo.miff [=&gt;Enter drücken]
##*# imdisplay logo.miff [=&gt;Enter drücken]
##*# =&gt; ein Bild soll angezeigt werden
## PHP-Erweiterung für ImageMagick
##* Für PHP 5.6.14 "php_imagick-3.4.1-5.6-ts-vc11-x86.zip" von http://windows.php.net/downloads/pecl/releases/imagick/ oder alternativ die Datei "php_imagick-3.2.0RC1-5.6-ts-vc11-x86.zip" von http://www.peewit.fr/imagick/ herunterladen und die VC11-kompilierte ThreadSafe-Datei Datei "php_imagick.dll" in das PHP-Unterverzeichnis "ext/" kopieren
##* Für PHP 5.6.14 in der Datei "php.ini" im Bereich Windows Extensions die Datei "php_imagick.dll" einbinden:<br/>extension=php_imagick.dll
##* <del>Für PHP 5.2.9 die VC6-kompilierte Datei "php_imagick_dyn-Q16.dll" von [http://valokuva.org/outside-blog-content/imagick-windows-builds/080709/ valukova.org] herunterladen und in das PHP-Unterverzeichnis "ext/" kopieren und umbenennen zu "php_imagick_dyn_Q16.dll" (Unterstrich statt Bindestrich)</del>
##* <del>Für PHP 5.2.9 in der Datei "php.ini" im Bereich Windows Extensions die Datei "php_imagick_dyn_Q16.dll" einbinden:<br/>extension=php_imagick_dyn_Q16.dll</del>
# MiKTeX Installation
## Für Sophos-Ausnahme im Verzeichnis "D:\texmf\" ein Unterverzeichnis "miktex\" erstellen
## Für Sophos-Antivirus eine Ausnahme festlegen:
##: Konfigurieren => Antivirus => On--Access-Scans => Ausschlüsse => Hinzufügen => Ordner => D:\texmf\miktex\
## MikTeX herunterladen – kann bis zu einer Stunde dauern! – und installieren
### Zum Herunterladen der Installationsdateien die Datei "MiKTeX_NetInstall_Complete_2.9.5870_setup.exe" ausführen
###* "Download MiKTeX" statt "Install MiKTeX"
###* "Complete MiKTeX" statt "Basic MiKTeX"
###* Zielverzeichnis "D:\Install\MiKTeX_2.9_complete\"
### Die Datei "MiKTeX_NetInstall_Complete_2.9.5870_setup.exe" für Installation im Verzeichnis "D:\texfm\miktex\" ausführen mit
###* "Install MiKTeX" statt "Download MiKTeX"
###* "Complete MiKTeX" statt "Basic MiKTeX"
###* "Anyone who uses this computer (all users)" statt "Only for: [Useraccount (Username)]"
###* "Preferred paper: A4", "Install missing packags on-the-fly: Yes"
# Die Erweiterung [[#Math_.28Wiki-Code.29| Math (Wiki-Code)]] installieren und anpassen
#In der Datei "LocalSettings.php" ist jeweils einzufügen:
<pre>
  $wgUseTeX = true;
  # 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';
  $wgSVGConverter = 'ImageMagick';
  $wgSVGConverter = 'ImageMagick';
  $wgSVGConverters = array(
  $wgSVGConverters = array(
   'ImageMagick' => '"D:\texmf\imagick\convert.exe" -background white $input PNG:$output',  
   'ImageMagick' => '"D:\texmf\imagick\convert.exe" -background white $input PNG:$output',  
  );
  );
  require_once "$IP/extensions/Math/Math.php";
  require_once "$IP/extensions/Math/Math.php";
  $wgMathDisableTexFilter = true; // in Math.hooks.php
  $wgMathDisableTexFilter = true; // in Math.hooks.php
</pre>
</pre>
 
 
=== Alternative Installationsmethode gemäß Mediawiki ===
=== Alternative Installationsmethode gemäß Mediawiki ===
 
 
#install the complete [http://www.miktex.org/Setup.aspx 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.'''  
#install the complete [http://www.miktex.org/Setup.aspx 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.'''  
#install the static (to be sure dependencies are embed) binary of [http://www.imagemagick.org/script/binary-releases.php#windows|ImageMagick für Windows] in D:\texmf\imagick (ensure there are no spaces in the path you choose) - '''No: We installed the dynamic version wih administrator rights.'''  
#install the static (to be sure dependencies are embed) binary of [http://www.imagemagick.org/script/binary-releases.php#windows|ImageMagick für Windows] in D:\texmf\imagick (ensure there are no spaces in the path you choose) - '''No: We installed the dynamic version wih administrator rights.'''  
#install AFPL [http://www.imagemagick.org/script/binary-releases.php#windows GhostScript] bzw. [http://sourceforge.net/projects/ghostscript/files/AFPL%20Ghostscript/8.54/|AFPL GhostScript 8.54] bzw. [http://sourceforge.net/projects/ghostscript/|GhostScript] in D:\texmf\ghostscript  
#install AFPL [http://www.imagemagick.org/script/binary-releases.php#windows GhostScript] bzw. [http://sourceforge.net/projects/ghostscript/files/AFPL%20Ghostscript/8.54/|AFPL GhostScript 8.54] bzw. [http://sourceforge.net/projects/ghostscript/|GhostScript] in D:\texmf\ghostscript  
#oder GPL [http://sourceforge.net/projects/ghostscript/files/GPL%20Ghostscript/9.10/|GPL GhostScript 9.10 (gs910w32.exe)] bzw. [https://sourceforge.net/projects/ghostscript/files/GPL%20Ghostscript|GPL GhostScript] in D:\texmf\ghostscript  
#oder GPL [http://sourceforge.net/projects/ghostscript/files/GPL%20Ghostscript/9.10/|GPL GhostScript 9.10 (gs910w32.exe)] bzw. [https://sourceforge.net/projects/ghostscript/files/GPL%20Ghostscript|GPL GhostScript] in D:\texmf\ghostscript  
#copy D:\texfm\ghostscript\gs8.70\bin\gswin32c.exe to D:\texmf\ghostscript\gs8.70\bin\gs.exe (8.70 can be different depending on version you install)  
#copy D:\texfm\ghostscript\gs8.70\bin\gswin32c.exe to D:\texmf\ghostscript\gs8.70\bin\gs.exe (8.70 can be different depending on version you install)  
#add to the windows PATH environnement variable this path: D:\texmf\ghostscript\gs8.70\bin (again, 8.70 can be different depending on version you install)  
#add to the windows PATH environnement variable this path: D:\texmf\ghostscript\gs8.70\bin (again, 8.70 can be different depending on version you install)  
#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!  
#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!  
#open a command line (start -&gt; execute -&gt; cmd.exe)  
#open a command line (start -&gt; execute -&gt; cmd.exe)  
#verify that the following commands are working:  
#verify that the following commands are working:  
#:latex  
#:latex  
#:dvips  
#:dvips  
#:convert (not the microsoft convert)  
#:convert (not the microsoft convert)  
#:gs  
#:gs  
#[edit] Settings
#[edit] Settings
 
 
*your wiki directory = $<br/>
*your wiki directory = $<br/>
replace the file $/includes/Math.php with code from http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Windows/math.php  
replace the file $/includes/Math.php with code from http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Windows/math.php  
*uncomment or insert in $/LocalSettings.php:
*uncomment or insert in $/LocalSettings.php:
<pre>$wgUseTeX= true;</pre>
<pre>$wgUseTeX= true;</pre>
 
 
*insert in $/LocalSettings.php:
*insert in $/LocalSettings.php:
 
 
- ImageMagick<br>
- ImageMagick<br>
<pre>
<pre>
$wgImageMagickConvertCommand    = 'D:\texmf\imagick\convert.exe';
$wgImageMagickConvertCommand    = 'D:\texmf\imagick\convert.exe';
$wgImageMagickIdentifyCommand  = 'D:\texmf\imagick\identify.exe';  
$wgImageMagickIdentifyCommand  = 'D:\texmf\imagick\identify.exe';  
</pre>
</pre>
- Tex<br>
- Tex<br>
<pre>
<pre>
$wgLaTexCommand                = 'D:\texmf\miktex\miktex\bin\latex.exe';
$wgLaTexCommand                = 'D:\texmf\miktex\miktex\bin\latex.exe';
$wgDvipsCommand                = 'D:\texmf\miktex\miktex\bin\dvips.exe';
$wgDvipsCommand                = 'D:\texmf\miktex\miktex\bin\dvips.exe';
</pre>
 
*reboot if needed so that paths variables are updated for your services too
 
== Ausblenden der History ==
 
Diese Möglichkeit wurde nicht aktiviert.
 
Wenn nur Admins sowie Mitglieder der Gruppen "autor" und "Redakteur"/"Editor" die Versionsgeschichte einer Seite (History) sehen sollen, ist Folgendes in der Datei "LocalSettings.php" zu ergänzen:
<pre>
## 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;
}
</pre>
</pre>
*reboot if needed so that paths variables are updated for your services too


== Hilfeseiten  ==
== Hilfeseiten  ==

Aktuelle Version vom 8. Januar 2019, 12:26 Uhr

Dokumentation zur Bereitstellung von "SalzWiki", "SaltWiki" und "Repository"

Allgemeines[Bearbeiten]

In dieser Dokumentation werden die Installation und Konfiguration der Salzwikis (3 Wikisysteme) und der Erweiterungen (Extensions) beschrieben. Aktuell (seit 23.02.2016) ist Mediawiki Version 1.23.11 LTS installiert.

Ein Update kann durch Installation über die bestehende Version erfolgen oder durch Neuinstallation und Transfer von Konfigurationen und Daten. Um Altlasten in der neueren Version zu vermeiden empfiehlt sich Letzteres.

Das Repositorium-Wiki (deutsch) ist zusammen mit dem allgemeinen Salzwiki (deutsch) zu installieren, bevor die Konfigurationen in den Dateien "LocalSettings.php" geändert und Erweiterungen installiert werden, weil Zugriffe vom allgemeinen Salzwiki auf das Repositorium zu konfigurieren sind.

Sprachvarianten[Bearbeiten]

  • Das deutsche SalzWiki ist einsprachig "Deutsch".
  • Das englische Saltwiki ist einsprachig "English".
  • Das Repositorium ist seit 2012 einsprachig "Englisch" (zuvor "Deutsch") und soll 2-sprachig "Deutsch/English" werden.

Zur Konfiguration der Standardspracheinstellung siehe unter Wiki-Konfiguration -> Spracheinstellungen

Installationen[Bearbeiten]

Server und Anwendungen[Bearbeiten]

  1. Betriebssystem Windows-Server 2012 R2
  2. Webserver Apache 2.4.29 mit OpenSSL und anderen Zusatzmodulen
    • 64-Bit ohne XAMPP
    • 32-Bit von XAMPP
  3. Datenbank-Server (MySQL/)MariaDB 10.1.30
    • 64-Bit ohne XAMPP
    • 32-Bit von XAMPP
  4. Datenbank-Management-Anwendung phpMyAdmin
  5. Scriptsprache PHP ThreadSafe (für Apache unter Windows) mit Zusatzmodulen
    • 64-Bit ohne XAMPP
    • 32-Bit von XAMPP 7.2.1/7.2.2
    • Zusatzmodul php-imagick (TS => PECL)
      • 64-Bit
      • 32-Bit
  6. Statistik-Anwendung Webalizer 2.23-08
    • 32-Bit
  7. XAMPP-Paket 7.2.1/7.2.2 wegen notwendiger Bestandteile davon
    • 32-Bit
  8. Wikisystem MediaWiki 1.27.4 LTS mit Erweiterungen und Zusatz-Software
  9. GhostScript (für MediaWiki), AGPL statt GPL seit Version 9.07
    • AGPL Version 9.22 (2017-10-04) statt GPL-Version 9.10 (2013-09-02) bei https://www.ghostscript.com/
      • 64-Bit-Version gs922w64.exe ohne XAMPP-Anwendungen
      • 32-Bit-Version gs922w32.exe für XAMPP-Anwendungen
    • GPL bis Version 9.10 (2013-09-02) bei https://sourceforge.net/projects/ghostscript/
      • 64-Bit-Version gs910w64.exe ohne XAMPP-Anwendungen
      • 32-Bit-Version gs910w32.exe für XAMPP-Anwendungen
  10. ImageMagick (für MediaWiki)
    • Version 7.0.7-25-Q16-[HDRI-]x64-dll.exe ohne XAMPP-Anwendungen
    • Version 7.0.7-25-Q16-[HDRI-]x86-dll.exe für XAMPP-Anwendungen 32-Bit
    • Version 6.9.3-8-Q16-x64-dll.exe ohne XAMPP-Anwendungen
    • Version 6.9.3-8-Q16-x86-dll.exe für XAMPP-Anwendungen 32-Bit
  11. php-imagick
    • neue 64-Bit-Version statt 3.2.0RC1-5.6-zd-bv22-c86_peewit.zip ohne XAMPP-Anwendungen
    • neue 32-Bit-Version statt 3.2.0RC1-5.6-zd-bv22-c86_peewit.zip für XAMPP-Anwendungen
  12. MiKTeX 2.9.5870
  13. Statistik-Anwendung Piwik

Programme unter Systemsteuerung Windows Server 2012 R2[Bearbeiten]

Für MediaWiki 1.27.4 LTS[Bearbeiten]
  • GPL Ghostscript 9.22
  • ImageMagick 7.0.7-25 Q16 HDRI dll (dynamic)
  • Microsoft Visual C++ 2017 Redistributable [VC15]
    • (x64) - 14.13.26020.0
    • (x86) - 14.13.26020.0 14.11.25325.0
  • MikTeX 2.9
Für MediaWiki 1.23.11 LTS[Bearbeiten]
  • GPL Ghostscript 9.10
  • ImageMagick 6.9.3-8 Q16 (32-bit) (2016-04-10)
  • Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.6161
  • Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148
  • Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.6161
  • Microsoft Visual C++ 2012 Redistributable (x86) - 11.0.61030 Update 4
  • MikTeX 2.9

Programme unter Systemsteuerung Windows Server 2008 32 Bit[Bearbeiten]

Für MediaWiki 1.23.11 LTS und 1.16[Bearbeiten]
  • GPL GhostScript 8.70
  • ImageMagick 6.5.9-0 Q16 (2010-01-01)
  • Microsoft .Net Framework 3.5 Language Pack SP1 - DEU
  • Microsoft .Net Framework 3.5 SP1
  • Microsoft .Net Framework 4.5.2
  • Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148
  • Microsoft Visual C++ 2012 Redistributable (x86) - 11.0.61030 Update 4
  • MikTeX 2.8
  • MSXML 4.0 SP2 (KB954430)
  • MSXML 4.0 SP2 (KB973688)
  • OggVideoTools Ogg Video Tools
  • XAMPP 1.7.1

Verzeichnisse und Dateien[Bearbeiten]

Mit XAMPP[Bearbeiten]

XAMPP 5.6.30 und 5.6.14-0:

  • anonymous
  • apache
    • conf\extra\httpd-xampp.conf
    • error\XAMPP_FORBIDDEN.html.var
  • cgi-bin
  • contrib
  • FileZillaFTP
  • htdocs
    • Dateien: index.php, favicon.ico
    • dashboard
    • webalizer
    • xampp
    • Wiki-Verzeichnisse
  • install
  • licenses
  • locale
  • mailoutput
  • mailtodisk
  • MercuryMail
  • mysql
    • mysql_installservice.bat, mysql_uninstallservice.bat, resetroot.bat
    • bin\my.ini
  • perl
  • php
  • phpmyadmin
  • sendmail
  • src
  • tmp
  • tomcat
  • webalizer
  • webdav
  • Dateien:
    • apache_start.bat, apache_stop.bat, ... mysql_start.bat, mysql_stop.bat, ...
    • setup_xampp.bat
    • xampp-control.exe, xampp_start.exe, xampp_stop.exe
    • xampp-control.ini, xampp-control.log

XAMPP 5.6.30:

  • htdocs
    • Dateien: bitnami.css, applications.html
    • img

XAMPP 5.6.14-0:

  • security

Ohne XAMPP[Bearbeiten]

  • apache
  • htdocs
    • Angepasste Datei: index.php
    • Neu erstelltes Verzeichnis mit Datei: \info\phpinfo.php
    • Wiki-Verzeichnisse
  • mysql
  • php
  • phpmyadmin
  • tmp
  • Neu erstellte Dateien:
    • mysql_start.bat
    • mysql_stop.bat

Installationen mit XAMPP[Bearbeiten]

Das XAMPP-Paket ist als gepackte Datei, entweder zip oder 7z, zu verwenden, um eine Installation im System zu verhindern.

Nach dem Entpacken des XAMPP-Pakets ist

  • im Verzeichnis "D:\xampp\" das Unterverzeichnis "Apache24\" umzubenennen in "apache\"
  • die Datei "D:\xampp\setup_xampp.bat" auszuführen, um in den Konfigurationsdateien die Pfade für "D:\xampp\..." anpassen zu lassen.

Bei der Installation von XAMPP werden nicht erforderliche Anwendungen auf dem Server gespeichert, z. B.:

  • FileZilla
  • mailoutput
  • mailtodisk
  • MercuryMail
  • sendmail
  • Tomcat
  • Webalizer
  • Webdav

XAMPP absichern[Bearbeiten]

Verzeichniszugriff für "dashboard" einrichten[Bearbeiten]

Um das Verzeichnis "dashboard", das als localhost-Startverzeichnis im Browser geladen wird, vor öffentlichen Zugriffen zu schützen, wird die allgemeine Startseiten-Datei "index.php" angepasst und werden 2 Dateien angelegt.

Anpassung bei der allgemeinen Startseiten-Datei:

  • "xampp\htdocs\index.php" umbenennen zu "xampp\htdocs\index_original.php"
  • Datei "index.php" erstellen mit Verweisen zu den Wikis
  • Dtaei "index_localhost.php" erstellen für Zugriff auf das Verzeichnis "dashboard"

Die beiden neuen Dateien für Zugangsberechtigungen:

  • "xampp\htdocs\dashboard\.htaccess"
  • "xampp\security\dashboard.htpasswd"

Neu erstellte Datei "index.php":

<!DOCTYPE>
<html>
<head>
<title>SalzWiki SaltWiki RepositoryWiki</title>
</head>
<body>
<?php
if(!empty($_SERVER['HTTPS']) && ('on'==$_SERVER['HTTPS'])){
  $prot = 'https://';
}
else{
  $prot = 'http://';
}
?>
<ul>
  <li><a href="<?php echo $prot; ?>salzwiki.de" title="SalzWiki">SalzWiki: www.salzwiki.de</a></li>
  <li><a href="<?php echo $prot; ?>saltwiki.net" title="SaltWiki">SaltWiki: www.saltwiki.net</a></li>
  <li><a href="<?php echo $prot; ?>repository.hawk-hhg.de" title="RepositoryWiki">RepositoryWiki: repository.hawk-hhg.de</a></li>
</ul>
</body>
</html>

Neu erstellte Datei "index_localhost.php":

<?php
if($_SERVER['HTTP_HOST']=="localhost"){
  #var_dump($_SERVER['HTTP_HOST']);
  header('Location: http://'.$_SERVER['HTTP_HOST'].'/dashboard/');
}
else{
  header('Location: http://'.$_SERVER['HTTP_HOST'].'/index.php');
}
?>

Datei ".htaccess" mit "/" statt "\" in der Pfadangabe unter Windows wie bei Linux:

AuthType Basic
AuthName "XAMPP Dashboard"
AuthUserFile "../security/dashboard.htpasswd"
Require valid-user

Datei "dashboard.htpasswd", wobei "username" und "passwort" hier nur exemplarisch angegeben sind:

username:passwort

Installationen ohne XAMPP[Bearbeiten]

Die Server und Anwendungen werden wie bei einer XAMPP-Installation in ein Verzeichnis "D:\xampp\" installiert.

Sofern Apache, MySQL/MariaDB, PHP, phpMyAdmin und gegebenenfalls Webalizer aus einem XAMPP-Paket verwendet werden, sind Angaben in den Konfigurationsdateien sowie in den batch-Dateien für Starts und Stopps anzupassen.

Es ist im Verzeichnis "D:\xampp\htdocs\" ein Unterverzeichnis "info\" anzugelegen, in das die Datei "phpinfo.php" aus dem XAMPP-Verzeichnis "dashboard\" kopiert wird. Im Verzeichnis "htdocs\" wird die XAMPP-Datei "index.php" dahingehend angepasst, dass die Weiterleitung nicht zum Verzeichnis "/dashboard/", sondern zur Datei "/info/phpinfo.php" führt und dass in der letzten Zeile im Textbereich das Wort "XAMPP" entfernt wird.

Die Dienste für Apache und MySQL müssen per Kommandozeile, die als Administrator zu öffnen ist, installiert werden, damit sie bei einem Windows-Server-Neustart ebenfalls neu gestartet werden

Apache-Webserver[Bearbeiten]

Der Apache-Webserver ist als Dienst zu installieren, damit er nach Rechner-Neustarts durch Windows-Updates automatisch gestartet werden kann.

Konfiguration für HTTPS[Bearbeiten]

Es sind für HTTPS mit Verschlüsselung folgende Änderungen gegenüber HTTP ohne Verschlüsselung erforderlich:

  • Server-Zertifikat
    • Zertifikat von einer anerkannten Zertifizierungsstelle erstellen lassen
    • Anpassung einiger Zertifikat-Dateien für Apache unter Windows
  • Domain-Adresse für das Repositorium
  • Apache-Konfiguration
    • für Virtuelle Hosts mit Port 443 in der Datei "...\apache\extra\httpd-vhosts.conf"
    • für Deaktivierung des Passphrasen-Dialogs in der Datei "...\apache\extra\httpd-ssl.conf"
  • MediaWiki-Konfigurationsdatei "LocalSettings.php"
    • eigene PHP-Variable für das bei der Anfrage verwendete Protokoll
    • CreativeCommons-URLs mit https

Server-Zertifikat[Bearbeiten]

Das Server-Zertifikat wird vom Rechenzentrum der Hochschule beim DFN beantragt.

Zertifikat-Domains[Bearbeiten]

Das Zertifikat muss folgende Domain-Adressen abdecken:

  • salzwiki.de, www.salzwiki.de
  • saltwiki.net, www.saltwiki.net
  • repository.hawk-hhg.de, salzwiki.hawk-hhg.de, saltwiki.hawk-hhg.de
Zertifikat-Dateien[Bearbeiten]

Die Zertifikat-Dateien haben folgende Bezeichnungen:

  • **öffentlicher Schlüssel**: "cert-***.pem" wird umbenannt in "salzwiki_cert_pem.crt"
  • **Zertifikate-Kette**
    • "salzwiki.de.pem" enthält zwischen den Zertifikate-Blöcken Hinweise zum jeweiligen Zertifikat und kann von Apache nicht verwendet werden
    • "salzwiki_chain_pem.crt" wird als Kopie von "salzwiki.de.pem" ohne die Hinweise zwischen den Blöcken erstellt
  • privater Schlüssel
    • "salzwiki.de.key" ist mit einem Passwort geschützt und kann von Apache unter Windows nicht verwendet werden
    • "salzwiki.de.nopw.key" wird als Kopie von "salzwiki.de.key" ohne Passwortschutz erstellt

Um die Datei mit dem privaten Schlüssel ohne Passwortschutz verwenden zu können, müssen die Zugriffsrechte für das Verzeichnis "...\apache\conf\ssl.key\" erhöht werden. Das Verzeichnis darf nur vom Webserver ausgelesen werden können und nur mit Admin-Rechten zugänglich sein. Die Windows-Gruppe "Benutzer" muss von der Vererbung der übergeordneten Verzeichnisse befreit und aus den Verzeichnis-Berechtigungen entfernt werden.

Für die Erzeugung der Datei mit dem privaten Schlüssel ohne Passwortschutz kann die Datei "...\apache\bin\openssl.exe" verwendet werden, wenn der Webserver aus dem "XAMPP"-Paket installiert ist. Hierzu die geschützte Schlüsseldatei in dasselbe Verzeichnis einfügen, die Kommandozeile mit Admin-Rechten öffnen und folgenden Befehl eingeben:

openssl x509 -in salzwiki.de.key -out salzwiki.de.nopw.key

Die Zertifikate-Dateien werden in folgenden Unterverzeichnissen von "...\apache\conf\" gespeichert:

  • ssl.crt
    • salzwiki_cert_pem.crt
    • salzwiki_chain_pem.crt
  • ssl.key
    • salzwiki.de.key
    • salzwiki.de.nopw.key

Apache-Konfiguration ohne Passphrasen-Dialog[Bearbeiten]

Um unter Windows den Apache-Webserver bei Seitenaufrufen an der Passwort-Abfrage zu hindern ist in der Datei "httpd-ssl.conf" der Passphrasen-Dialog wie folgt auszukommentieren:

#SSLPassPhraseDialog builtin

Wiki-Konfiguration für Übertragungsprotokoll[Bearbeiten]

In der Datei "LocalSettings.php" wird bei Z.33ff eine Abfrage, welches Protokoll (http oder https) beim jeweiligen Seitenaufruf verwendet wird, eingefügt. Das Ergebnis wird in einer Variablen gespeichert und an mehreren Stellen in der Datei eingesetzt:

## The protocol and server name to use in fully-qualified URLs
if($_SERVER['HTTPS']==="on" OR !empty($_SERVER['HTTPS'])){$protokoll = "https";}
else{$protokoll = "http";}
$wgServer = $protokoll."://".$_SERVER['SERVER_NAME'];

Konfiguration für IP oder Domain[Bearbeiten]

"SalzWiki" und "Salt"Wiki" wurden ursprünglich durch Weiterleitungen von den "1&1"-Servern über folgende IP-Adressen eines "HAWK"-Servers zur Verfügung gestellt:

  • salzwiki.de => 193.175.110.91/salzwiki
  • saltwiki.net => 193.175.110.91/saltwiki

Das Repositorium war ohne Domain nur direkt über folgende IP-Adresse eines "HAWK"-Servers verfügbar:

  • 193.175.110.91/repository

Für eine Nutzung der Wikis per "HTTPS" mit SSL-Server-Zertifikat müssen Domain-Adressen statt IP-Adressen verwendet werden. Hierfür wurde bei den über "1&1" gehosteten Domains der DNS-Eintrag vom "1&1"-Server zum "HAWK"-Server geändert und die Weiterleitung aufgehoben.

Damit bei der Anmeldung im Repositorium vom Browser keine Sicherheitswarnung wegen eines fehlenden Server-Zertifikats erscheint, ist eine eigene Domain-Adresse für das Repositorium notwendig. Weil der Vertrag mit "1&1" keine Subdomains vorsieht, wurde hierfür bei der HAWK die Subdomain "repository.hawk-hhg.de" eingerichtet.

Konfiguration für IP[Bearbeiten]

Sofern die Wikis mit der IP-Adresse verwendet werden, sind keine besonderen Anpassungen in den Apache-Konfigurationsdateien erforderlich, abgesehen von den Unterschieden zwischen einer Installation mit oder ohne "XAMPP".

Konfiguration für Domain[Bearbeiten]

Sofern die Wikis mit den Domain-Adressen und "HTTPS" verwendet werden, sind Definitionen in folgenden Apache-Konfigurationsdateien im Unterverzeichnis "\extra\" erforderlich:

  • httpd-vhosts.conf für Virtual Hosts
  • httpd-ssl.conf eventuell für Anpassung der Standard-SSL-Konfiguration
Virtual Hosts[Bearbeiten]

Mehrere Domain-Adressen mit unterschiedlichen Inhalten auf einem Server werden als Virtual Hosts (VHosts) in der Datei "httpd-vhosts.conf" verwaltet.

Der zuerst definierte VHost ist der Standard-Server, beispielsweise "localhost", für Test-Wikis ohne Domain-Adresse und für nicht definierte Adressen mit dem Standard-Port 80 für "HTTP". Danach folgen die Definitionen für die Domain-Adressen und ihre Alias-Adressen mit dem Standard-Port 80 für "HTTP":

  • localhost (inkl. 193.175.110.91/salzwiki_draft, 193.175.110.91/saltwiki_draft, 193.175.110.91/repository_draft)
  • salzwiki.de alias www.salzwiki.de und salzwiki.hawk-hhg.de
  • saltwiki.net alias www.saltwiki.net und saltwiki.hawk-hhg.de
  • repository.hawk-hhg.de
  • subdomain-name.localhost

Für HTTPS-Verbindungen mit Port 443 erhalten folgende Domain-Adressen ebenfalls einen Eintrag in dieser VHosts-Datei – nicht in der Datei "httpd-ssl.conf":

  • localhost (mit selbst erstelltem SSL-Server-Zertifikat)
  • salzwiki.de alias www.salzwiki.de und salzwiki.hawk-hhg.de
  • saltwiki.net alias www.saltwiki.net und saltwiki.hawk-hhg.de
  • repository.hawk-hhg.de
Subdomains für localhost[Bearbeiten]

Subdomains für "localhost" können als "ServerAlias" oder für lokale Tests als "ServerName" festgelegt werden. Hierfür ist zusätzlich die "hosts"-Datei von Windows im Verzeichnis "C:\Windows\System32\drivers\etc\" zu ergänzen:

# Für Tests des Hornemann Instituts der HAWK eingefügt 2017-05-23
193.175.110.91   szw.localhost
193.175.110.91   stw.localhost
193.175.110.91   rpw.localhost
193.175.110.91   salzwiki.localhost
193.175.110.91   saltwiki.localhost
193.175.110.91   repository.localhost
Umstellung von IP-Adresse zu Domain-Adresse[Bearbeiten]

Bei einer Umstellung von IP-Adresse zu Domain-Adresse ändert sich das "root"-Verzeichnis von "htdocs" zum jeweiligen Wiki-Unterverzeichnis, das bei der VHost-Definition angegeben ist. Deshalb werden beim Standard-VHost für die bisher verwendeten Wiki-IP-Adressen Weiterleitungen zu den Wiki-Domain-Adressen eingerichtet, weil bei einer solchen Umstellung auch in den Wiki-Konfigurationsdateien "LocalSettings.php" in Z.30 der Pfad bei "$wgScriptPath" zu einem leeren String zu ändern ist:

$wgScriptPath = ""; #"/salzwiki"; #"/saltwiki"; #"/repository";

Vergleich zwischen IP-Adresse und Domain-Adresse:

  • SalzWiki
    • IP-Adresse: salzwiki.de als Weiterleitung zu "193.175.110.91/salzwiki/" mit $wgScriptPath = "/salzwiki";
    • Domain-Adresse: salzwiki.de als DNS-Eintrag zu "193.175.110.91" bei "1&1" mit Apache-VHost-Verzeichnis "/salzwiki" und mit $wgScriptPath = "";
  • SaltWiki
    • IP-Adresse: saltwiki.net als Weiterleitung zu "193.175.110.91/saltwiki/" mit $wgScriptPath = "/saltwiki";
    • Domain-Adresse: saltwiki.net als DNS-Eintrag zu "193.175.110.91" bei "1&1" mit Apache-VHost-Verzeichnis "/saltwiki" und mit $wgScriptPath = "";
  • Repository ohne Domain-Adresse
    • IP-Adresse: "193.175.110.91/repository/" mit $wgScriptPath = "/repository";
  • Repository mit Domain-Adresse
    • IP-Adresse: repository.hawk-hhg.de als Weiterleitung zu "193.175.110.91/repository/" mit $wgScriptPath = "/repository";
    • Domain-Adresse: repository.hawk-hhg.de als DNS-Eintrag zu "193.175.110.91" bei der HAWK mit Apache-VHost-Verzeichnis "/repository" und mit $wgScriptPath = "";
VHost-Definitionen[Bearbeiten]

Für HTTPS ist das öffentliche Ketten-Zertifikat "salzwiki_chain_pem.crt" als Standard-Zertifikat in der Direktive "SSLCertificateFile" anzugeben und die Direktive "SSLCertificateChainFile" auszukommentieren, weil sonst die Browser bei der Überprüfung hängen bleiben, wenn nicht gerade der Apache-Dienst im Task-Manager neu gestartet wurde.

Für HTTPS dürfen die Angaben für ServerName und ServerAlias keine Port-Angabe enthalten, weil "Google Chrome" sonst das Zertifikat als unsicher deklariert.

Einzutragende Definitionen in der Datei "httpd-vhosts.conf":

# Standard-VHost HTTP
<VirtualHost *:80>
 ServerName localhost
 ##ServerAlias 193.175.110.91
 ServerAdmin service@salzwiki.de
 DocumentRoot "D:/xampp/htdocs/"
 ErrorLog "logs/error.log"
 CustomLog "logs/access.log" combined
 RewriteEngine On
 RewriteCond %{REQUEST_URI} /salzwiki
 RewriteCond %{REQUEST_URI} !=/salzwiki_
 RewriteRule "^/salzwiki/(.*)$" "http://salzwiki.de/$1" [R=301,L] 
 RewriteCond %{REQUEST_URI} /saltwiki
 RewriteCond %{REQUEST_URI} !=/saltwiki_
 RewriteRule "^/saltwiki/(.*)$" "http://saltwiki.net/$1" [R=301,L]
 # Weiterleitung, sobald eine Subdomain repository.hawk-hhg.de eingerichtet ist
 RewriteCond %{REQUEST_URI} /repository
 RewriteCond %{REQUEST_URI} !=/repository_
 RewriteRule "^/repository/(.*)$" "http://repository.hawk-hhg.de/$1" [R=301,L] 
</VirtualHost>
# Standard-VHost HTTPS
<VirtualHost *:443>
 ServerName localhost
 ServerAdmin service@salzwiki.de
 DocumentRoot "D:/xampp/htdocs"
 <Directory "D:/xampp/htdocs">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
 </Directory>
 ErrorLog "logs/error.log"
 TransferLog "logs/access.log"
 CustomLog "logs/ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 RewriteEngine On
 RewriteCond %{HTTP_HOST} salzwiki.localhost
 RewriteRule "^(.*)$" "https://salzwiki.de$1" [R=301,L]
 RewriteCond %{REQUEST_URI} /repository
 RewriteCond %{REQUEST_URI} !=/repository_
 RewriteRule "^(.*)$" "http://193.175.110.91/$1" [R=301,L]
 # Weiterleitung, sobald eine Subdomain repository.hawk-hhg.de eingerichtet ist
 RewriteCond %{REQUEST_URI} /repository
 RewriteCond %{REQUEST_URI} !=/repository_
 RewriteRule "^/repository/(.*)$" "https://repository.hawk-hhg.de/$1" [R=301,L] 
 SSLEngine on
 SSLCertificateFile "conf/ssl.crt/server.crt"
 SSLCertificateKeyFile "conf/ssl.key/server.key"
</VirtualHost>
# SalzWiki-VHost HTTP
<VirtualHost *:80>
 ServerName salzwiki.de
 ServerAlias www.salzwiki.de salzwiki.hawk-hhg.de salzwiki.localhost
 ServerAdmin service@salzwiki.de
 DocumentRoot "D:/xampp/htdocs/salzwiki"
 <Directory "D:/xampp/htdocs/salzwiki">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
 </Directory>
 ErrorLog "logs/error_salzwiki.log"
 CustomLog "logs/access_salzwiki.log" combined
 RewriteEngine On
 RewriteCond %{HTTP_HOST} salzwiki.localhost
 RewriteRule "^(.*)$" "http://193.175.110.91/salzwiki$1" [R=301,L]
 RewriteCond %{REQUEST_URI} /repository
 RewriteCond %{REQUEST_URI} !=/repository_
 RewriteRule "^(.*)$" "http://193.175.110.91/$1" [R=301,L] 
</VirtualHost>
# SalzWiki-VHost HTTPS
<VirtualHost *:443>
 ServerName salzwiki.de
 ServerAlias www.salzwiki.de salzwiki.hawk-hhg.de salzwiki.localhost
 ServerAdmin service@salzwiki.de
 DocumentRoot "D:/xampp/htdocs/salzwiki"
 <Directory "D:/xampp/htdocs/salzwiki">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
 </Directory>
 ErrorLog "logs/error_salzwiki.log"
 TransferLog "logs/access_salzwiki.log"
 CustomLog "logs/ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 RewriteEngine On
 RewriteCond %{HTTP_HOST} salzwiki.localhost
 RewriteRule "^(.*)$" "https://salzwiki.de$1" [R=301,L]
 RewriteCond %{REQUEST_URI} /repository
 RewriteCond %{REQUEST_URI} !=/repository_
 RewriteRule "^(.*)$" "http://193.175.110.91/$1" [R=301,L]
 SSLEngine on
 SSLCertificateFile "conf/ssl.crt/salzwiki_chain_pem.crt"
 #SSLCertificateFile "conf/ssl.crt/salzwiki_cert_pem.crt"
 SSLCertificateKeyFile "conf/ssl.key/salzwiki.denopw.key"
 #SSLCertificateChainFile "conf/ssl.crt/salzwiki_chain_pem.crt"
 #SSLCertificateFile "conf/ssl.crt/server.crt"
 #SSLCertificateKeyFile "conf/ssl.key/server.key"
</VirtualHost>
# SaltWiki-VHost HTTP
<VirtualHost *:80>
 ServerName saltwiki.net
 ServerAlias www.saltwiki.net saltwiki.hawk-hhg.de saltwiki.localhost
 ServerAdmin service@saltwiki.net
 DocumentRoot "D:/xampp/htdocs/saltwiki"
 <Directory "D:/xampp/htdocs/saltwiki">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
 </Directory>
 ErrorLog "logs/error_saltwiki.log"
 CustomLog "logs/access_saltwiki.log" combined
 RewriteEngine On
 RewriteCond %{HTTP_HOST} saltwiki.localhost
 RewriteRule "^(.*)$" "http://193.175.110.91/saltwiki$1" [R=301,L]
 RewriteCond %{REQUEST_URI} /repository
 RewriteCond %{REQUEST_URI} !=/repository_
 RewriteRule "^(.*)$" "http://193.175.110.91/$1" [R=301,L] 
</VirtualHost>
# SaltWiki-VHost HTTPS
<VirtualHost *:443>
 ServerName saltwiki.net
 ServerAlias www.saltwiki.net saltwiki.hawk-hhg.de saltwiki.localhost
 ServerAdmin service@saltwiki.net
 DocumentRoot "D:/xampp/htdocs/saltwiki"
 <Directory "D:/xampp/htdocs/saltwiki">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
 </Directory>
 ErrorLog "logs/error_saltwiki.log"
 TransferLog "logs/access_saltwiki.log"
 CustomLog "logs/ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 RewriteEngine On
 RewriteCond %{HTTP_HOST} saltwiki.localhost
 RewriteRule "^(.*)$" "https://saltwiki.net$1" [R=301,L]
 RewriteCond %{REQUEST_URI} /repository
 RewriteCond %{REQUEST_URI} !=/repository_
 RewriteRule "^(.*)$" "http://193.175.110.91/$1" [R=301,L]
 SSLEngine on
 SSLCertificateFile "conf/ssl.crt/salzwiki_chain_pem.crt"
 #SSLCertificateFile "conf/ssl.crt/salzwiki_cert_pem.crt"
 SSLCertificateKeyFile "conf/ssl.key/salzwiki.denopw.key"
 #SSLCertificateChainFile "conf/ssl.crt/salzwiki_chain_pem.crt"
 #SSLCertificateFile "conf/ssl.crt/server.crt"
 #SSLCertificateKeyFile "conf/ssl.key/server.key"
</VirtualHost>
# Repositorium-VHost HTTP
<VirtualHost *:80>
 ServerName repository.hawk-hhg.de
 ServerAlias repository.localhost
 ServerAdmin service@salzwiki.de
 DocumentRoot "D:/xampp/htdocs/repository"
 <Directory "D:/xampp/htdocs/repository">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
 </Directory>
 ErrorLog "logs/error_repository.log"
 CustomLog "logs/access_repository.log" combined
 # Weiterleitung, solange keine Subdomain repository.hawk-hhg.de eingerichtet ist
 RewriteEngine On
 RewriteCond %{HTTP_HOST} repository.localhost [OR]
 RewriteCond %{HTTP_HOST} repository.hawk-hhg.de
 RewriteRule "^(.*)$" "http://193.175.110.91/repository$1" [R=301,L] 
</VirtualHost>
# Repositorium-VHost HTTPS
<VirtualHost *:443>
 ServerName repository.hawk-hhg.de
 ServerAlias repository.localhost
 ServerAdmin service@salzwiki.de
 DocumentRoot "D:/xampp/htdocs/repository"
 <Directory "D:/xampp/htdocs/repository">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
 </Directory>
 ErrorLog "logs/error_repository.log"
 TransferLog "logs/access_repository.log"
 CustomLog "logs/ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 # Weiterleitung, solange keine Subdomain repository.hawk-hhg.de eingerichtet ist
 #RewriteEngine On
 #RewriteCond %{HTTP_HOST} repository.localhost [OR]
 #RewriteCond %{HTTP_HOST} repository.hawk-hhg.de
 #RewriteRule "^(.*)$" "https://193.175.110.91/repository$1" [R=301,L] 
 SSLEngine on
 SSLCertificateFile "conf/ssl.crt/salzwiki_chain_pem.crt"
 #SSLCertificateFile "conf/ssl.crt/salzwiki_cert_pem.crt"
 SSLCertificateKeyFile "conf/ssl.key/salzwiki.denopw.key"
 #SSLCertificateChainFile "conf/ssl.crt/salzwiki_chain_pem.crt"
 #SSLCertificateFile "conf/ssl.crt/server.crt"
 #SSLCertificateKeyFile "conf/ssl.key/server.key"
</VirtualHost>

######## Beginn Draft-Wikis für Tests ########
<VirtualHost *:80>
 ServerName szw.localhost
 ServerAdmin service@salzwiki.de
 DocumentRoot "D:/xampp/htdocs/salzwiki_draft"
 <Directory "D:/xampp/htdocs/salzwiki_draft">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
 </Directory>
 ErrorLog "logs/error_salzwiki_draft.log"
 CustomLog "logs/access_salzwiki_draft.log" combined
 RewriteEngine On
 RewriteCond %{HTTP_HOST} szw.localhost
 RewriteRule "^(.*)$" "http://193.175.110.91/salzwiki_draft$1" [R=301,L] 
</VirtualHost>
<VirtualHost *:80>
 ServerName stw.localhost
 ServerAdmin service@saltwiki.net
 DocumentRoot "D:/xampp/htdocs/saltwiki_draft"
 <Directory "D:/xampp/htdocs/saltwiki_draft">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
 </Directory>
 ErrorLog "logs/error_saltwiki_draft.log"
 CustomLog "logs/access_saltwiki_draft.log" combined
 RewriteEngine On
 RewriteCond %{HTTP_HOST} stw.localhost
 RewriteRule "^(.*)$" "http://193.175.110.91/saltwiki_draft$1" [R=301,L] 
</VirtualHost>
<VirtualHost *:80>
 ServerName rpw.localhost
 ServerAdmin service@salzwiki.de
 DocumentRoot "D:/xampp/htdocs/repository_draft"
 <Directory "D:/xampp/htdocs/repository_draft">
  Options -Indexes +FollowSymLinks -Includes -ExecCGI
  AllowOverride All
  Require all granted
 </Directory>
 ErrorLog "logs/error_repository_draft.log"
 CustomLog "logs/access_repository_draft.log" combined
 RewriteEngine On
 RewriteCond %{HTTP_HOST} rpw.localhost
 RewriteRule "^(.*)$" "http://193.175.110.91/repository_draft$1" [R=301,L] 
</VirtualHost>
######## Ende Draft-Wikis für Tests ########

conf-Dateien mit und ohne XAMPP[Bearbeiten]

Konfigurationsdateien mit Verzeichnispfaden:

  • Datei "apache\conf\httpd.conf
  • Dateien im Verzeichnis "apache\conf\extra\"
    • httpd-autoindex.conf
    • httpd-dav.conf
    • httpd-manual.conf
    • httpd-multilang-errordoc.conf
    • httpd-ssl.conf
    • httpd-vhosts.conf
  • XAMPP-Konfiguration "apache\conf\extra\httpd-xampp.conf"

Apache ohne XAMPP[Bearbeiten]

Für die Nutzung von Apache ohne XAMPP ist zu berücksichtigen, dass der Apache-Webserver für Windows nicht bei apache.org erhältlich ist. Es empfiehlt sich die Verwendung des Apache aus einem XAMPP-Paket von apachefriends.org. Eventuell können auch die Portable-Versionen von ApacheHTTPD_PHP_Portable_2.4.6 und portable-apache-2.2.17-win32-x86 verwendet werden.

Verzeichnisumbenennung[Bearbeiten]

Sofern das Verzeichnis für Apache "Apache24" lautet, wird es in "apache" umbenannt.

Die Pfadangaben in den Konfigurationsdateien mit der Dateiendung "conf" und in den batch-Dateien für Starts und Stopps mit der Dateiendung "bat" sind anschließend an die Bezeichnung "apache" anzupassen.

Apache als Dienst installieren[Bearbeiten]

Nachdem die Kommandozeile als Administrator geöffnet wurde, den Apache-Dienst installieren:

D:
cd xampp\apache\bin
httpd -k install

Start und Stopp im Produktivbetrieb[Bearbeiten]

Unter "Systemsteuerung => System und Sicherheit => Verwaltung => Dienste" prüfen, ob der Dienst "Apache2.4" den Starttyp "Automatisch" aufweist, damit er nach einem Rechner-Neustart automatisch gestartet wird.

Um den Apache-Dienst zu starten oder anzuhalten, wird unter "Verwaltung => Dienste" nach Auswahl des Dienstes "Apache2.4" entweder im Menü unter "Aktion" oder mit der rechten Maustaste im Kontextmenü der jeweilige Vorgang ausgewählt.

Start und Stopp im Testbetrieb[Bearbeiten]

Der Apache-Webserver kann entweder mit Hilfe des Apache-Monitors oder per Kommandozeile gestartet und angehalten werden:

NET start Apache2.4

cd D:\xampp\
apache\bin\pv -f -k httpd.exe -q

Konfiguration allgemein[Bearbeiten]

Bei einer Installation von Apache ohne XAMPP werden die Verwendung von PHP und die Berechtigungen etwas anders als bei einer Installation mit XAMPP festgelegt. Die Haupt-Konfiguration unterscheidet sich je nach Installation wie folgt:

  • ohne XAMPP: in der Datei "apache\conf\httpd.conf"
  • mit XAMPP: zusätzlich in der Datei "apache\conf\extra\httpd-xampp.conf"

httpd.conf mit und ohne XAMPP[Bearbeiten]

ServerRoot "D:/xampp/apache"
Listen 80
...
LoadModule acces_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule session_module modules/mod_session.so
#LoadModule session_cookie_module modules/mod_session_cookie.so
#LoadModule session_crypto_module modules/mod_session_crypto.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule status_module modules/mod_status.so
...
ServerAdmin webmaster@hornemann-institut.de
ServerName localhost:80
...
DocumentRoot D:/xampp/htdocs
...
<IfModule dir_module>
  DirectoryIndex index.php index.shtml index.html index.htm \
                 default.php default.shtml default.html default.htm \
                 home.php home.shtml home.html home.htm
</IfModule>
...
<Files ".ht*">
  Require all denied
</Files>

httpd.conf ohne XAMPP[Bearbeiten]

Bei einer Installation von Apache ohne XAMPP werden die Verwendung von PHP und die Berechtigungen nicht in der Datei "\conf\extra\httpd-xampp.conf", sondern in der Datei "httpd.conf" wie folgt festgelegt.

...
#### aus "/extras/httpd-xampp.conf"
LoadFile "/xampp/php/php5ts.dll"
LoadFile "/xampp/php/libpq.dll"
...
#### aus "/extras/httpd-xampp.conf"
LoadModule php5_module D:/xampp/php/php5apache2_4.dll
...
#### aus "/extras/httpd-xampp.conf"
<IfModule env_module>
  SetEnv MIBDIRS "/xampp/php/extras/mibs"
  SetEnv MYSQL_HOME "\\xampp\\mysql\\bin"
  SetEnv OPENSSL_CONF "/xampp/apache/bin/openssl.cnf"
  SetEnv PHP_PEAR_SYSCONF_DIR "\\xampp\\php"
  SetEnv PHPRC "\\xampp\\php"
  SetEnv TMP "\\xampp\\tmp"
</IfModule>
...
<IfModule mime_module>
  ...
  #AddType text/html .shtml
  #AddOutputFilter INCLUDES .shtml
  #### Fuer PHP aus "/extras/httpd-xampp.conf"
  AddType text/html .php
  #AddType text/html .php .phps
</IfModule>
...
#### aus "/extras/httpd-xampp.conf"
<IfModule php5_module>
  PHPIniDir "/xampp/php"
  #PHPIniDir "D:/xampp/php"
</IfModule>
...
# XAMPP settings
#Include "conf/extra/httpd-xampp.conf"
...
#### aus "/extras/httpd-xampp.conf"
<FilesMatch "\.php$">
  SetHandler application/x-httpd-php
</FilesMatch>
#<FilesMatch "\.phps$">
#  SetHandler application/x-httpd-php-source
#</FilesMatch>

#### aus "/extras/httpd-xampp.conf" abgewandelt
<LocationMatch "^/(?i:(?:phpmyadmin|info))">
  Require local
  Require ip 193.175.110.
  Require ip 10.104.5.
  Require ip 172.16.100.2
</LocationMatch>

httpd.conf für XAMPP[Bearbeiten]

Bei einer Installation mit XAMPP werden die Verwendung von PHP und die Berechtigungen in der Datei "\conf\extra\httpd-xampp.conf" festgelegt, welche in der Datei "httpd.conf" in Z.250 eingebunden wird.

...
# XAMPP settings
Include "conf/extra/httpd-xampp.conf"
...

Verzeichnisauflistungen verhindern[Bearbeiten]

Um Auflistungen von Dateien und Verzeichnissen im Browser zu verhindern, ist die Angabe "-Indexes" in der Konfigurationsdatei "apache\conf\httpd.conf" Z.227ff und Z.246ff erforderlich:

<Directory />
  Options -Indexes +FollowSymLinks
  AllowOverride none
  Require all denied
</Directory>
...
<Directory "/xampp/htdocs">
  Options -Indexes +FollowSymLinks +Includes -ExecCGI
  AllowOverride All
  Require all granted
</Directory>

Verzeichniszugriff per Authentifizierung[Bearbeiten]

Um den Zugriff auf bestimmte Verzeichnisse per Browser nur für bestimmte Anmeldenamen mit Passwort zu erlauben, sind Angaben in folgenden Konfigurationsdateien erforderlich:

  • "xampp\apache\conf\httpd.conf"
  • "xampp\apache\conf\extra\httpd-default.conf"
  • für phpMyAdmin ohne XAMPP
    • "xampp\phpMyAdmin\config.inc.php"
  • für XAMPP
    • "xampp\htdocs\dashboard\.htaccess"
    • "xampp\security\dashboard.htpasswd"

Apache-Datei "httpd.conf"[Bearbeiten]

Z.288ff und Z.520f

<Files ".ht*">
  Require all denied
<Files>
...
# XAMPP settings
Include "conf/extra/httpd-xampp.conf"

Apache-Datei "httpd-default.conf"[Bearbeiten]

Z.45

AccessFileName .htaccess

XAMPP-Dashboard-Datei ".htaccess"[Bearbeiten]

Datei "\xampp\dashboard\.htaccess"

AuthType Basic
AuthName "XAMPP Dashboard"
AuthUserFile "../security/dashboard.htpasswd"
Require valid-user

XAMPP-Dashboard-Datei "htpasswd"[Bearbeiten]

Datei "\xampp\security\dashboard.htpasswd":

username:password

Verzeichniszugriff für bestimmte Rechner-IPs[Bearbeiten]

Um von einem Rechner aus, der sich in einem bestimmten Netz befindet oder per VPN mit einer bestimmten IP verbunden ist, per Browser die Verzeichnisse nicht nur mit "localhost" aufrufen zu können, müssen zusätzliche Angaben mit "Require ip ..." erfolgen; die Fehlermeldung für einen unzulässigen Aufruf wird mit "ErrorDocument ..." erzeugt.

Verzeichniszugriff für IPs mit XAMPP[Bearbeiten]

Das XAMPP-Sicherheitskonzept ab XAMPP 1.8 erlaubt den Zugriff per Browser auf bestimmte Verzeichnisse wie "phpmyadmin" nur noch vom Server aus ("Require local").

Beispiel XAMPP 5.6.14, Datei "xampp\apache\conf\extra\httpd-xampp.conf" Z.108ff

# New XAMPP security concept
<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
  Require local
  Require ip 193.175.110
  Require ip 10.104.5
  Require ip 172.16.100.2
  ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>

Verzeichniszugriff für IPs ohne XAMPP[Bearbeiten]

Beispiel ohne XAMPP, Datei "xampp\apache\conf\httpd.conf" am Ende:

<LocationMatch "^/(?i:(?:info|phpmyadmin))">
  Require local
  Require ip 193.175.110
  Require ip 10.104.5
  Require ip 172.16.100.2
</LocationMatch>

Server-Software auf Fehlerseiten nicht anzeigen[Bearbeiten]

Standardmäßig werden auf den Fehlerseiten folgende Details des Webservers angezeigt:

  • Webserver-Bezeichnung "Apache"
  • Webserver-Version
  • Betriebssystem-Art "Win32"
  • OpenSSL-Version

Um dies aus Sicherheitsgründen zu unterbinden, ist in der Datei "D:\xampp\apache\error\include\bottom.html" im span-Element für die Variable "SERVER_SOFTWARE" hinter dem öffnenden HTML-Kommentar ein Leerzeichen einzufügen:

<span><!-- #echo var="SERVER_SOFTWARE" --></span>

Datenbank-Server[Bearbeiten]

Der MySQL-Datenbank-Server ist als Dienst zu installieren, damit er nach Rechner-Neustarts durch Windows-Updates automatisch gestartet werden kann.

MySQL/MariaDB ohne XAMPP[Bearbeiten]

Nachdem die Kommandozeile als Administrator geöffnet wurde, den MySQL-Dienst installieren:

D:
cd xampp\mysql\bin
mysqld --install

Start und Stopp im Produktivbetrieb[Bearbeiten]

Unter "Systemsteuerung => System und Sicherheit => Verwaltung => Dienste" prüfen, ob der Dienst "mysql" den Starttyp "Automatisch" aufweist, damit er nach einem Rechner-Neustart automatisch gestartet wird.

Um den mysql-Dienst zu starten oder anzuhalten, wird unter "Verwaltung => Dienste" nach Auswahl des Dienstes "mysql" entweder im Menü unter "Aktion" oder mit der rechten Maustaste im Kontextmenü der jeweilige Vorgang ausgewählt.

Start und Stopp im Testbetrieb[Bearbeiten]

Für Testzwecke aus dem XAMPP-Paket folgende Dateien in das Verzeichnis "D:\xampp\" kopieren:

  • mysql_start.bat
  • mysql_stop.bat

Auf dem Desktop jeweils eine Verknüpfung zu den beiden bat-Dateien anlegen.

Der MySQL-Server kann per Batch-Datei oder Kommandozeile gestartet und angehalten werden:

D:
cd xampp\mysql\
bin\mysqld.exe --defaults-file=mysql\bin\my.ini

D:
cd xampp\mysql
bin\mysqld.exe -q
del data\%computername%.pid

PHP[Bearbeiten]

PHP-Versionen[Bearbeiten]

PHP 7.2.2[Bearbeiten]

  • Core-Erweiterung "Cite" erzeugt Fehler "Umcommitted DB writes"
  • Core-Erweiterung "ImageMap" erzeugt Fehler "Fatal exception of type MWException"

PHP 7.1[Bearbeiten]

Laut https://wiki.php.net/internals/windows/compiler soll PHP 7.1 zwar mit VC14 und VC15 funktionieren, doch wird dies nicht offiziell unterstützt.

PHP 7.0[Bearbeiten]

Das Support-Ende für PHP 7.0 ist früher als für PHP 5.6.

php.ini[Bearbeiten]

Module[Bearbeiten]

Folgende Module sind aktiviert:

  • bz2
  • curl
  • gd2
  • gettext
  • mbstring
  • exif ; Must be after mbstring
  • mysql
  • mysqli
  • openssl
  • pdo_mysql
  • pdo_sqlite
  • soap
  • sockets
  • sqlite3
  • xmlrpc
  • xsl

php-Konfiguration[Bearbeiten]

engine = On short_open_tag = On allow_call_time_pass_reference = Off safe_mode = Off expose_php = Off error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED enable_dl = On file_uploads = On allow_url_fopen = On allow_url_include = Off

phpMyAdmin[Bearbeiten]

Fehler bei Konto-Erstellung[Bearbeiten]

In phpMyAdmin 4.6.5.2 ist ein Bug, der eine Fehlermeldung erzeugt, wenn versucht wird, ein neues Datenbank-Nutzungskonto zu erstellen, weil im Verzeichnis "D:\xampp\mysql\" die Unterverzeichnisse "lib\plugin\ fehlen:

SHOW PLUGINS SONAME LIKE '%_password_check%'
MySQL meldet:
#1018 - Verzeichnis von 'D:\xampp\mysql\lib\plugin\' nicht lesbar (Fehler: 2 "No such file or directory")

Die Lösung besteht darin, im Verzeichnis "D:\xampp\mysql\" die Unterverzeichnisse "lib\plugin\" zu erstellen.

phpMyAdmin-Datei "config.inc.php"[Bearbeiten]

Um die Anmeldung bei der Nutzung von "phpMyAdmin" per HTTP-Authentifizierung durchzuführen, sind folgende Angaben in der Konfigurationsdatei ab Z.18 erforderlich:

/* Authentication type and info */
#$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['auth_type'] = 'http';
#$cfg['Servers'][$i]['user'] = 'root';
#$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;

Anmeldename und Passwort werden bei der HTTP-Anmeldung mit den Einträgen in der Tabelle "user" der Datenbank "mysql" verglichen.

Test mit phpMyAdmin-Datei ".htaccess"[Bearbeiten]

Datei "\xampp\phpMyAdmin\.htaccess"

AuthType Basic
AuthName "phpMyAdmin"
AuthUserFile "../security/phpmyadmin.htpasswd"
Require valid-user

Datei "\xampp\security\dashboard.htpasswd":

username:password

Statistik-Anwendung Piwik[Bearbeiten]

Zusätzlich zu "Piwik" ist die MW-Erweiterung "Piwik Integration" erforderlich oder muss der Code in der Datei "MonoBook.php" hinter dem Footer-Bereich mit dem "Piwik"-Code ergänzt werden.

Die Anwendung "Piwik" wird im Verzeichnis "xampp\htdocs\analytics\piwik\" zuerst auf dem Test-Server installiert.

Die Administration von "Piwik" erfolgt im Browser über die Adresse "localhost/analytics/piwik/index.php".

Die Datei "...\htdocs\robots.txt" ist zu ergänzen:

Disallow:/analytics/

Die Apache-Konfiguration ist dahingehend anzupassen, dass die Verzeichnisse "analytics\" und "piwik\" nach dem Vorbild von "phpmyadmin\" nur lokal erreichbar sind.

Installationshinweise[Bearbeiten]

Bei der Installation gibt es eine Warnung zur PHP-Konfiguration, wenn in der Datei "php.ini" nicht "always_populate_raw_post_data=-1" gesetzt ist. Dieser Parameter gilt als "deprecated" und entfällt mit PHP 7.0.0, weshalb sein Wert auf "-1" gesetzt werden soll.

Für die Installation per Browser muss JavaScript (JS) aktiviert sein oder muss mit dem Firefox-Plugin "Firebug" im HTML-Code bei select-Elementen die CSS-Definition "display:none;" entfernt werden. Ohne JS oder CSS-Anpassung fehlt

  • bei der Datenbank-Konfiguration der Adapter
  • bei der Website-Konfiguration die Zeitzone

Es wird empfohlen, für die "piwik"-Datenbank ein eigenes Nutzungskonto, das nur für diese Datenbank Berechtigungen hat, zu verwenden. Die Datenbank-Einrichtung von "Piwik" per Browser-Installation schlägt jedoch fehl, wenn das hierfür verwendete neue Benutzungskonto für "MySql" nicht existiert. Das Konto und die Datenbank sind deshalb vorab mit "phpMyAdmin" zu erstellen.

Konfiguration[Bearbeiten]

Die Piwik-System-Konfigurationsdatei "config.ini.php" befindet sich im Verzeichnis "...\analytics\piwik\config\".

Benutzungskonten[Bearbeiten]

Standardmäßig gibt es folgende Benutzungskonten:

  • [SuperUserName], Alias [...], Hauptadministrator WAHR
  • anonymous, Alias anonymous, Ansicht deaktiviert (rot), Administrator N/A
    • Kein Zugriff: "Für alle Websites anwenden" deaktiviert (rot)
    • Kein Zugriff: "SalzWiki" bzw. "SaltWiki" bzw. "Repository" aktiviert (grün)

Zusätzlich zum Hauptadmin-Konto wird für die Ansicht der Statistiken und für die Erstellung von Statistik-Berichten ein Benutzungskonto für Beschäftigte des Hornemann Instituts eingerichtet, womit es folgende Konten gibt:

  • Hauptadministration
  • Statistiknutzung
  • anonymous
Konto für Hauptadministration[Bearbeiten]

Das Nutzungskonto "SW_piwik" für die Hauptadministration wird bei der Installation von "Piwik" erstellt.

Der E-Mail-Versand wird unter "Einstellungen => System => Allgemeine Einstellungen => E-Mail-Server-Einstellungen" konfiguriert und sieht in der Piwik-System-Konfigurationsdatei "...\piwik\config\config.ini.php" wie folgt aus, nachdem :

[mail]
transport = "smtp"
port = "587"
host = "smtp.1und1.de"
type = "Login"
username = "service@salzwiki.de"
password = "***"
encryption = "ssl"

Damit als Absender nicht "noreply@localhost" gesendet wird, muss folgende Zeile in der Konfigurationsdatei im Abschnitt "[mail]" hinzugefügt werden:

defaultHostnameIfEmpty = "salzwiki.de"
Konto für Statistiknutzung[Bearbeiten]

Mit dem Hauptadmin-Konto wird unter "Einstellungen => System => Benutzer" ein Konto "Hornemann" erstellt. Dabei ist darauf zu achten, dass oben bei "Zugriffsverwaltung" nicht nur eines der Wikis, sondern "Für alle Websites anwenden" ausgewählt ist.

Das Konto hat folgende Einstellungen:

  • Benutzer Hornemann, Alias H.I.-SW-Statistik
  • E-Mail webmaster@hornemann-institut.org
  • Kein Zugriff deaktiviert (rot)
  • Ansicht
    • "Für alle Websites anwenden" aktiviert (grün), wird nach Auswahl einer Seite wie "SalzWiki" bei der Rückkehr deaktiviert (rot)
    • "SalzWiki" bzw. "SaltWiki" bzw. "Repository" aktiviert (grün)
  • Administrator deaktiviert (rot)
  • Hauptadministrator deaktiviert (rot)

Statistik-Berichte[Bearbeiten]

Für jedes Wiki wird ein eigener Bericht jeweils vom Typ HTML und PDF erstellt:

  • SalzWiki
    • HTML
    • PDF
  • SaltWiki
    • HTML
    • PDF
  • Repository
    • HTML
    • PDF

Bei dem Konto für die Statistiknutzung wird unter "Einstellungen => Persönlich => E-Mail-Berichte" festgelegt, welche Art von Bericht wann per E-Mail übermittelt wird.

  • Website: SalzWiki|SaltWiki|Repository
  • Beschreibung: Monatlicher Statistikbericht
  • Segment: Alle Besuche
  • Zeitplan: Monatlich
  • Uhrzeit: 1|2 (1 Uhr für HTML, 2 Uhr für PDF)
  • Versand via: E-Mail
  • Berichtsformat: HTML|PDF
  • Bericht senden an: An mich senden
  • Anzeigeoptionen: Tabellen und Graphen für alle Berichte anzeigen
  • Beinhaltete Statistiken
    • Alle Websites: Dashboard aller Websites
    • Verweise: Verweisart, Alle Verweise, Suchbegriffe, Suchmaschinen Websites, Soziale Netzwerke
    • Besucher: Besucherüberblick, Benutzer, Gerätetyp, Gerätemodell, Gerätemarke, Bildschirmauflösungen, Betriebssystem-Versionen, Browser, Browser-Version, Land, Kontinent, Region, Browsersprache, Stadt, Besuchslänge, Seiten pro Besuch
    • Aktionen: Aktionen - Kernmetriken, Seiten URL, Einstiegsseiten, Ausstiegsseiten, Ausgehende Verweise, Downloads

Statistik-Anwendung Webalizer[Bearbeiten]

Webalizer gibt es bei www.webalizer.org nicht für Windows, sondern nur als DOS-Quellcode, zuletzt in der Version 2.23-08 von 2013. Andere Varianten wie die der Firma "Stone Steps Inc." basieren auf Version 2.01-10. Die aktuellste Windows-Variante ist in XAMPP enthalten, beispielsweise in XAMPP 5.6.14 als Webalizer Version 2.23-04 vermutlich mit Stand März 2011.

Installiert wird die XAMPP-Variante.

Log-Format[Bearbeiten]

Als Log-Format wird das Standardformat CLF ("NCSA Common Log Format" bzw. "NCSA Combined Log Format") für die Auswertung der Apache-Log-Datei "access.log" verwendet, siehe auch https://en.wikipedia.org/wiki/Common_Log_Format. Es enthält folgende Angaben:

 * IP-Adresse des anfordernden Hosts
 * Ungenutzt für RFC-1413-Identität
 * Nutzername aus einer HTTP-Authentifizierung, ansonsten "-"
 * Zeitstempel (Datum, Uhrzeit und UTC-Abweichung)
 * Übermittlungsart, angeforderte Adresse und Übertragungsprotokoll mit Version, z. B. "GET /index.php HTTP/1.1"
 * HTTP-Statuscode
 * Menge der gesendeten Daten in Byte, ansonsten "-" (bei Umleitungen usw.) 
 * Ausgangsadresse des anfordernden Hosts
 * Systemangaben zum anfordernden Host wie Browser mit Version und Betriebssystem mit Version
 * Cookie

Common Log Format[Bearbeiten]

host rfc931 username date:time request statuscode bytes

Combined Log Format[Bearbeiten]

host rfc931 username date:time request statuscode bytes referrer user_agent cookie

Konfiguration[Bearbeiten]

Für jedes Wiki wird eine eigene Statistik-Konfigurationsdatei erstellt:

  • salzwiki.conf
  • saltwiki.conf
  • repository.conf

In diesen Dateien wird jeweils festgelegt, welche Webserver-Log-Datei ausgewertet wird und in welchem Verzeichnis die Auswertung gespeichert wird.

Wenn bei der Apache-Webserver-Konfiguration jedes Wiki als virtueller Host eine eigene Log-Datei zugewiesen bekommen hat, können diese VHost-Log-Dateien ausgewertet werden, ansonsten muss die allgemeine Log-Datei ausgewertet werden:

  • allgemeine Log-Datei: "access.log"
  • gesonderte VHost-Log-Dateien
    • "access_salzwiki.log"
    • "access_saltwiki.log"
    • "access_repository.log"

Welches Wiki ausgewertet wird, erfolgt über die Angabe der Host-Namen mit "IgnoreSite" und "IncludeSite":

# Internet-Adresse für Wiki:
IgnoreSite  *
# für Seiten inkl. Mediadateien aus dem Repositorium
IncludeSite 193.175.110.91
# für Seiten ohne Mediadateien aus dem Repositorium
#IncludeSite 193.175.110.91/salzwiki/
#IncludeSite 193.175.110.91/saltwiki/
IncludeSite salzwiki.de
IncludeSite www.salzwiki.de
IncludeSite salzwiki.hawk-hhg.de
#IncludeSite saltwiki.net
#IncludeSite www.saltwiki.net
#IncludeSite saltwiki.hawk-hhg.de
#IncludeSite repository.hawk-hhg.de

Die Auswertung für das jeweilige Wiki betrifft nur Aufrufe der index-Datei und der Dateien in den hexadezimal benannten Unterverzeichnissen im Verzeichnis "\wikiname\images\". Diese URLs werden folgendermaßen mit "IgnoreURL" und "IncludeURL" angegeben:

# Pfad für Wiki
IgnoreURL  *
IncludeURL /index.php*
IncludeURL /images/0/*
IncludeURL /images/1/*
IncludeURL /images/2/*
IncludeURL /images/3/*
IncludeURL /images/4/*
IncludeURL /images/5/*
IncludeURL /images/6/*
IncludeURL /images/7/*
IncludeURL /images/8/*
IncludeURL /images/9/*
IncludeURL /images/a/*
IncludeURL /images/b/*
IncludeURL /images/c/*
IncludeURL /images/d/*
IncludeURL /images/e/*
IncludeURL /images/f/*
IncludeURL /wikiname/index.php*
IncludeURL /wikiname/images/0/*
IncludeURL /wikiname/images/1/*
IncludeURL /wikiname/images/2/*
IncludeURL /wikiname/images/3/*
IncludeURL /wikiname/images/4/*
IncludeURL /wikiname/images/5/*
IncludeURL /wikiname/images/6/*
IncludeURL /wikiname/images/7/*
IncludeURL /wikiname/images/8/*
IncludeURL /wikiname/images/9/*
IncludeURL /wikiname/images/a/*
IncludeURL /wikiname/images/b/*
IncludeURL /wikiname/images/c/*
IncludeURL /wikiname/images/d/*
IncludeURL /wikiname/images/e/*
IncludeURL /wikiname/images/f/*

Folgende Definitionen sind zusätzlich erforderlich:

LogFile Pfadangabe/logdateiname
LogType clf
OutputDir Pfadangabe/wikiname
HistoryName wikiname.hist
Incremental yes
IncrementalName wikiname.current
ReportTitle Usage Statistics for
HostName wikiname
HTMLExtension html
PageType htm*
PageType php*
#UseHTTPS no
#DNSCache dns_cache.db
#DNSChildren 20
Quiet no
ReallyQuiet no
GMTTime no
VisitTimeout 1800
CountryGraph yes
GraphLegend yes
GraphLines 10
TopURLs 20
TopReferrers 20
TopAgents 10
TopCountries 50
TopSearch 20
AllSites no
AllURLs yes
AllReferrers yes
AllAgents yes
AllSearchStr yes
AllUsers no
#IndexAlias home.htm
#IndexAlias homepage.htm
DefaultIndex no
HideSite localhost
HideReferrer localhost/
HideReferrer 193.175.110.91/
HideReferrer salzwiki.de
HideReferrer www.salzwiki.de
HideReferrer salzwiki.hawk-hhg.de
HideReferrer Direct Request

HideURL *.css
HideURL *.ico
HideURL *.ICO
HideURL *.js
HideURL *.ra
HideURL robots.txt
HideURL api.php
HideURL load.php
HideURL opensearch_desc.php
HideURL /docs/
HideURL /extensinos/
HideURL /images/common/
HideURL /images/math/
HideURL /includes/
HideURL /languages/
HideURL /maintenance/
HideURL /mw-config/
HideURL /resources/
HideURL /serialized/
HideURL /skins/
HideURL /tests/

Dateien[Bearbeiten]

Die nachfolgenden Informationen sind in der Datei "D:\xampp\webalizer\INFO_WikiStatistiken.txt" gespeichert.

Bis Ende Mai 2017 war eine einzige Log-Datei für alle Wikis beim Apache-Webserver konfiguriert. Ab Ende Mai 2017 sind für die 3 Wikis eigene Log-Dateien beim Apache-Webserver konfiguriert.

2017-06-20: Die Log-Dateien des Apache-Webservers, access.log und access.old1.log, enthalten für Januar bis April 2017 identische Aufzeichnungen.

Für die Auswertung durch Webalizer wurden die großen Log-Dateien access.log und access.old1.log vom Apache-Log-Verzeichnis zu den Verzeichnissen "\webalizer\logs\access_20170612\" und "\webalizer\logs\access_old1_2016\" kopiert. Anschließend wurden die großen Dateien mit "7-zip" in kleine Dateien für jeden Monat aufgeteilt. Hierzu wird mit "Hinzufügen" die Kompressionsstärke "Speichern" ausgewählt und "In Teildaten aufsplitten (Bytes)" verwendet. Dann werden die Inhalte der Teildateien so zusammengestellt, dass für jeden Monat eine Datei "access_YYYY_Monat00.log" vorhanden ist. Für den Monat Mai 2017 wurde wegen der Umstellung auf Wiki-Log-Dateien jeweils die Datei "access_2017_Monat05.log" mit der Datei "access_2017_Monat05_02_wikiname.log" zur Datei "access_2017_Monat05_wikiname.log zusammengefügt". Für die Monate von Juni 2017 bis einschließlich Dezember 2017 werden die Wiki-Log-Dateien wie die alten, großen Dateien in Teildateien für jeden Monat aufgeteilt, beispielsweise "access_YYYY_Monat00_wikiname.log". Ab Januar 2018 werden die Wiki-Log-Dateien in Teildateien für jeden Monat nach dem Schema "wikiname_YYYY_Monat00.log" aufgeteilt.

Für die Statistiken bis einschließlich April 2017 wird in den Konfigurationsdateien der Wikis, "wikiname_YYYY_Monate.conf", die Monatsdatei "access_YYYY_Monat00.log", die aus der großen log-Datei stammt, angegeben. Für die Statistiken ab Mai 2017 wird in den Konfigurationsdateien der Wikis, "wikiname_YYYY_Monate.conf", die Monatsdatei "access_YYYY_Monat00_wikiname.log", die aus den einzelnen Wiki-Log-Dateien stammt, angegeben.

Die Batch-Datei "webalizer_YYYY_Monate.bat" wird für jeden Monat nach Anpassung der conf-Dateien ausgeführt.

  • Statistiken für 2018:
    • Log-Dateien-Verzeichnis für Webalizer: \logs\access_2018\access_wikiname.log => wikiname_2018_Monat00.log
    • Statistik-Verzeichnisse: \stats\wikiname\
    • Konfigurationsdateien: wikiname_[2018_]monate.conf
    • Batch-Datei: webalizer_[2018_]monate.bat
  • Statistiken für 2017:
    • Log-Dateien-Verzeichnis für Webalizer bis Juli: \logs\access_20170612\access_2017.log => access_2017_Monat00.log, access_wikiname.log => access_2017_Monat00_wikiname.log
    • Log-Dateien-Verzeichnis für Webalizer ab August: \logs\access_20171231\access_wikiname_2017_Hj2.log => access_2017_Monat00_wikiname.log
    • Statistik-Verzeichnisse: \stats_2017\wikiname\ => \stats_2017\wikiname\
    • Konfigurationsdateien: wikiname_2017_monate.conf
    • Batch-Datei: webalizer_2017_monate.bat
  • Statistiken für 2016:
    • Log-Dateien-Verzeichnis für Webalizer: \logs\access_old1_2016\access.old2016.log => access_2016_Monat00.log
    • Statistik-Verzeichnisse: \stats_2016\wikiname\
    • Konfigurationsdateien: wikiname_2016.conf
    • Batch-Datei: webalizer_2016.bat

DNS-Cache[Bearbeiten]

Anhand der IPs – sowohl IPv4 als auch IPv6 – erfolgt eine Zuordnung von Domains und abgeleitet von den First-Level-Domains eine Zuordnung von Ländern. Die Zuordnungen werden standardmäßig in einer DNS-Cache-Datei namens "dnscache.db" zwischengespeichert.

Der DNS-Zwischenspeicher wird mit folgenden Parametern festgelegt:

  1. DNSCache: Dateiname
  2. DNSChildren: Anzahl der Prozesse (1-100) für die DNS-Zuordnungen
  3. CacheIPs: IPs speichern, wenn keine Domain-Zuordnung möglich ist [yes|no]
  4. CacheTTL: Gültigkeitsdauer in Tagen (1-100) für jede zwischengespeicherten Adresse

Bei der Konfiguration kann der Cache für IPs, die nicht in Domainnamen aufgelöst werden können, aktiviert werden, wenn dies häufig vorkommt, damit bei der nächsten Auswertung nicht noch einmal eine Auflösung versucht wird:

CacheIPs yes

Suchmaschinen[Bearbeiten]

robots.txt[Bearbeiten]

Damit Test-Wikis während der Erprobungsphase, das Repositorium und verschiedene Wiki-Unterverzeichnisse nicht von Suchmaschinen durchsucht werden, wird eine Datei "robots.txt" im Verzeichnis "htdocs" gespeichert.
Damit kein Robot irgendetwas liest:

User-agent: *
Disallow:

Angaben nach dem Upgrade auf MW1.23 am 26.02.2016, damit der "Riddler"-Robot (hohe Zugriffszahlen) gar nichts und andere Robots nur das jeweilige Hauptverzeichnis von SalzWiki und SaltWiki und sonst nichts durchsuchen:

# robots.txt für Salzwiki und Saltwiki, damit Robots weder Unterverzeichnisse noch das Repositorium noch Test-Wikis durchsuchen
User-agent: Riddler
Disallow:/

User-agent: *
Disallow:/dashboard/
Disallow:/webalizer/
Disallow:/xampp/
Disallow:/salzwiki/cache/
Disallow:/salzwiki/docs/
Disallow:/salzwiki/extensions/
Disallow:/salzwiki/images/
Disallow:/salzwiki/includes/
Disallow:/salzwiki/languages/
Disallow:/salzwiki/maintenance/
Disallow:/salzwiki/mw-config/
Disallow:/salzwiki/resources/
Disallow:/salzwiki/serialized/
Disallow:/salzwiki/skins/
Disallow:/salzwiki/tests/
Disallow:/saltwiki/cache/
Disallow:/saltwiki/docs/
Disallow:/saltwiki/extensions/
Disallow:/saltwiki/images/
Disallow:/saltwiki/includes/
Disallow:/saltwiki/languages/
Disallow:/saltwiki/maintenance/
Disallow:/saltwiki/mw-config/
Disallow:/saltwiki/resources/
Disallow:/saltwiki/serialized/
Disallow:/saltwiki/skins/
Disallow:/saltwiki/tests/
Disallow:/repository/
Disallow:/salzwiki_draft/
Disallow:/saltwiki_draft/
Disallow:/repository_draft/
Disallow:/salz_salt_repo/
Disallow:/mediawiki_1_23_11/

Im jeweiligen Wiki-Hauptverzeichnis:

# Robots sollen keine Unterverzeichnisse durchsuchen
User-agent: Riddler
Disallow:/

User-agent: *
Disallow:/cache/
Disallow:/docs/
Disallow:/extensions/
Disallow:/images/
Disallow:/includes/
Disallow:/languages/
Disallow:/maintenance/
Disallow:/mw-config/
Disallow:/resources/
Disallow:/serialized/
Disallow:/skins/
Disallow:/tests/

Setzen von Keywords für den Head-Bereich eines Wikis[Bearbeiten]

Hierzu ist in der Datei "LocalSettings.php" die Funktion "efSetKeywords()" mit den entsprechenden Keywords einzufügen. Hier am Beispiel von SaltWiki. Diese sind jedoch nur bei Zugang über die IP-Adresse und nicht über den Frame von 1&1 sichtbar. Damit Keywords über den Frame sichtbar sind, sind diese für unseren Zugang bei 1&1 bei der Einrichtung der Website mit anzugeben. Dasselbe gilt für "description".

##Setzen von keywords
function efSetKeywords(){
   global $wgOut;
   $wgOut->addKeyword( 'salt' );
   $wgOut->addKeyword( 'desalination' );
   $wgOut->addKeyword( 'salt decay' );   
   $wgOut->addKeyword( 'cultural heritage' );   
   $wgOut->addKeyword( 'salt damage' );
   $wgOut->addKeyword( 'conservation' );
}

E-Mail-Versand[Bearbeiten]

Die HAWK-Outlook-Adressen können nicht für den Versand per SMTP als Absender verwendet werden, sondern nur als Zieladresse.

Die Datei "localSettings.php" wurde in den Verzeichnissen

  • salzwiki/
  • repository/
  • saltwiki/

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

Salzwiki/Repositorium

## E-Mail-Versand angepasst 15.01.2016 G. Werner
$wgEmergencyContact = "salzwiki.fb@hawk-hhg.de";
$wgPasswordSender = "service@salzwiki.de"; 
$wgSMTP = array( 
 'host' => "smtp.1und1.de", 
 'IDHost' => "1und1.de", 
 'port' => "587", 
 'auth' => true, 
 'username' => "service@salzwiki.de", 
 'password' => "********" 
);
$wgEnotifUserTalk = true; # UPO
$wgEnotifWatchlist = true; # UPO
$wgEmailAuthentication = true;

Saltwiki

## E-Mail-Versand angepasst 15.01.2016 G. Werner
$wgEmergencyContact = "saltwiki.fb@hawk-hhg.de";
$wgPasswordSender = "service@saltwiki.net"; 
$wgSMTP = array( 
 'host' => "smtp.1und1.de", 
 'IDHost' => "1und1.de", 
 'port' => "587", 
 'auth' => true, 
 'username' => "service@saltwiki.net", 
 'password' => "********" 
);
$wgEnotifUserTalk = true; # UPO
$wgEnotifWatchlist = true; # UPO
$wgEmailAuthentication = true;

Externe Links[Bearbeiten]

Damit externe Links in einem neuen Fenster geöffnet werden, ist in die "localsettings.php" einzufügen:

##Externe links erscheinen in einem neuen Fenster
$wgExternalLinkTarget = '_blank';

Datenbank-Fehler[Bearbeiten]

Falls ein Hinweis "A database query error has occured" angezeigt wird, kann man sich weitere Angaben anzeigen lassen, indem man in der Datei "LocalSettings.php" unten einfügt:

$wgShowSQLErrors = 1;

Versionshinweise[Bearbeiten]

Betriebssystem und Wiki-Serversysteme[Bearbeiten]

Datenbanksystem[Bearbeiten]

  • MySQL-Upgrade von Version 5.1 zu Version 5.6 ist nur möglich über Version 5.5
  • XAMPP hat zuletzt in Version 1.8.2-6 die MySQL-Version 5.5.x, danach die Version 5.6
  • XAMPP hat bis Version 5.5.28 bzw. 5.6.12 als Datenbanksystem MySQL, danach MariaDB
  • XAMPP hat in Version 5.6.14.0 die MariaDB-Version 10.0.x, aber in Version 5.6.14.3 die MariaDB-Version 10.1.x

XAMPP[Bearbeiten]

XAMPP 5.6.30[Bearbeiten]

  • PHP 5.6.30 32Bit
  • VC11 MS Visual C++ 2012 redistributable x86 Update 4
  • MariaDB 10.1.21 Win32 (Server), libmysql - mysqlnd 5.0.11dev (Client)
  • Apache 2.4.25 Win32
  • phpMyAdmin 4.6.5.2, Zeichensatz MySQL-Verbindung utf8mb4_unicode_ci
  • OpenSSL 1.0.2j
  • XAMPP Control Panel 3.2.2

In phpMyAdmin 4.6.5.2 ist ein Bug, der eine Fehlermeldung erzeugt, wenn versucht wird, ein neues Datenbank-Nutzungskonto zu erstellen. Die Lösung besteht darin, im Verzeichnis "D:\xampp\mysql\" die Unterverzeichnisse "lib\plugin\" zu erstellen.

XAMPP 5.6.14.3[Bearbeiten]

  • PHP 5.6.14 32Bit
  • VC11 MS Visual C++ 2012 redistributable x86 Update 4
  • MariaDB 10.1.8 Win32 (Server), libmysql - mysqlnd 5.0.11dev (Client)
  • Apache 2.4.17 Win32
  • phpMyAdmin 4.5.1, Zeichensatz MySQL-Verbindung utf8mb4_unicode_ci
  • OpenSSL 1.0.2d
  • XAMPP Control Panel 3.2.2

XAMPP 5.5.30/5.6.14.0[Bearbeiten]

  • PHP 5.5.30/5.6.14 32Bit + Pear, MS VC11 x86 32Bit ThreadSafe
  • VC11 MS Visual C++ 2012 redistributable x86 Update 4
  • MariaDB 10.0.17 Win32 (Server), libmysql - mysqlnd 5.0.11dev (Client)
  • Apache 2.4.17 Win32
  • phpMyAdmin 4.5.0.2, Zeichensatz MySQL-Verbindung utf8mb4_unicode_ci
  • OpenSSL 1.0.2d
  • XAMPP Control Panel 3.2.1

XAMPP 5.5.28/5.6.12[Bearbeiten]

  • PHP 5.5.28/5.6.12 + Pear, MS VC11 x86 32Bit ThreadSafe
  • MySQL 5.6.26-Community
  • Apache 2.4.16 Win32
  • phpMyAdmin 4.4.14
  • openSSL 1.0.1i

XAMPP 1.8.2-6[Bearbeiten]

  • PHP 5.4.31, MS VC9
  • MySQL 5.5.32-Community
  • Apache 2.4.4 Win32
  • phpMyAdmin 4.0.4
  • openSSL 0.9.8y mit OpenSSL-Bug "Heartbleed"

XAMPP 1.8.0[Bearbeiten]

Neues Sicherheitskonzept: Zugriff per Browser auf Verzeichnisse wie "phpmyadmin" nur noch direkt vom Server aus ("Require local")

XAMPP 1.7.1[Bearbeiten]

  • PHP 5.2.9, MS Visual C++ 2008 redistributable x86 9.0...
  • MySQL 5.1.33-Community Client 5.0.51a
  • Apache 2.2.11 Win32
  • phpMyAdmin 3.1.3.1

MediaWiki[Bearbeiten]

Informationen zu

MW Version 1.30[Bearbeiten]

  • Hooks
    • $wgExceptionHooks['MWException'][] entfällt

MW Version 1.27[Bearbeiten]

  • Datei "LocalSettings.php" anpassen
    • $wgScriptExtension entfällt
  • Skins-Element
    • $wgCopyrightIcon wird ersetzt durch $wgFooterIcons['copyright']['copyright']
  • Core-Variablen
    • $wgSessionHandler gilt als veraltet

MW Version 1.26[Bearbeiten]

MW Version 1.25[Bearbeiten]

Skin-Registrierung

wfLoadSkin("MonoBook"); //statt require_once "$IP/skins/MonoBook.php";

Erweiterungen-Registrierung

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

MW Version 1.24[Bearbeiten]

  • Logo-Speicherort geändert von "skins/common/images/" zu "resources/assets/" bzw. "images/..."
  • Bisher mitgelieferte Skins sind nicht mehr enthalten; die jeweiligenSkins-php-Dateien und Ordner sind gegebenenfalls aus dem Verzeichnis "skins/" zu entfernen:
    • CologneBlue.php, cologneblue
    • Modern.php, modern
    • MonoBook.php, monobook
    • Vector.php, vector
  • Datei "LocalSettings.php" eventuell an neue Skin-Registrierung anpassen
require_once "$IP/skins/MonoBookSW.php"; //statt $wgDefaultSkin = "monobooksw";
  • Nicht mehr unterstützt wird "register_globals => Bei PHP vor Version 5.4 in der Datei "php.ini" angeben "register_globals=Off"
  • Erweiterung "OggHandler" wird nicht mehr unterstützt

MW Version 1.23[Bearbeiten]

  • Skins werden anders eingebunden
    • Das jeweilige Skin-Unterverzeichnis sollte wie die php-Datei die Groß-Klein-Schreibweise berücksichtigen ("monobooksw/" => "MonoBookSW/")
    • Kleinbuchstaben bei $wgDefaultSkin = "monobooksw"; in der Datei "LocalSettings.php"
    • Die Skin-php-Datei, z. B. "MonoBookSW.php", ist nicht mehr im Verzeichnis "skins/", sondern im Unterverzeichnis, z. B. "skins/MonoBookSW/"
    • Die Skin-Datei "MonoBookSW.php" anpassen an die neue Version, siehe www.mediawiki.org/wiki/Manual:Skin_autodiscovery#Migration_guide
  • "Autodiscovery mechanism" für "Core Skins" gilt als "deprecated" und schreibt Warnungen in die Log-Dateien. Folgende Dateien und Ordner sind gegebenenfalls aus dem Verzeichnis "skins/" zu entfernen:
    • Chick.php, chick
    • Nostalgia.php, nostalgia
    • Simple.php, simple
    • Standard.php, standard
  • "The info page action, which provides useful statistics for any given page, has been improved and turned on by default."
  • Bei "Spezialseiten" wird die "ISBN-Suche" unter "Daten und Werkzeuge" statt unter "Andere Spezialseiten" angezeigt.
  • $wgPasswordSenderName wurde abgeschafft; der Name für die E-Mail-Adresse von $wgPasswordSender kann nur noch in der Seite "MediaWiki:Emailsender" angepasst werden

MW Version 1.21[Bearbeiten]

  • implementierte Erweiterungen
    • Cite
    • ImageMap
    • TitleBlacklist
    • SpamBlacklist
    • Interwiki bzw. SpecialInterwiki u. a.
  • Änderungen
    • Die Funktion "wfLoadExtensionMessages()" existiert nicht mehr, wird aber von BibManager REL1_23 verwendet und muss auskommentiert werden

MW Version 1.20[Bearbeiten]

  • PHP 5.3.2 oder neuer ist erforderlich
  • Erweiterungen, die Elemente der neuen Version voraussetzen
    • ApprovedRevs
    • Cite u. a.

MW Version 1.19[Bearbeiten]

  • $wgEnableCreativeCommonsRdf für "LocalSettings.php" wird nicht mehr unterstützt; stattdessen gibt es eine Erweiterung "CreativeCommonsRdf", die Beta-Status hat (2015-09-21).

MW Version 1.18[Bearbeiten]

  • MySQL 5.0.2 oder neuer ist erforderlich
  • mehr Genderneutralität bei Sprachdateien
  • Neue "Hooks"
    • BaseTemplateToolbox
  • implementierte Erweiterungen
    • ConfirmEdit
    • ParserFunctions mit Control Structure Functions ohne Loops
    • RenameUser
    • Nuke u. a.
  • Neue Erweiterungen
    • "Math", bisher Datei "\includes\math.php", siehe https://www.mediawiki.org/wiki/Texvc/de, verwendet "texvc", welches 3 Zusatzprogramme benötigt:
      • ocaml
      • LaTeX
      • dvipng
    • "WikiEditor", bisher Datei "\includes\EditPage.php" bzw. JS-Erweiterung "Extra Edit Buttons (XEB)", siehe en.wikipedia.org/wiki/User:MarkS/Extra_edit_buttons und en.wikipedia.org/wiki/User:MarkS/extraeditbuttons.js

MW Version 1.17[Bearbeiten]

  • PHP 5.2.3 oder neuer ist erforderlich
  • neuer Installationsvorgang
  • Kategoriensortierung geändert
  • Interwiki-Verweise werden in gesonderten Tabellen gespeichert
  • Standard-Skin "vector" statt "monobook"
  • neue Variable $wgPasswordSenderName (existiert nur bis Version 1.22)

SalzWiki SaltWiki Repository[Bearbeiten]

Anpassungen an Systemdateien[Bearbeiten]

Verzeichnisse und Dateien im jeweiligen Wiki:

  • includes
    • EditPage.php
    • HttpFunctions.php
    • Skin.php für 2 Varianten des linken Menüs
    • SkinTemplate.php für Werkzeuge ohne Datei-Upload
    • SkinTemplate.php für Werkzeuge ohne Spezialseiten
    • specialpage\SpecialPageFactory.php für Werkzeuge ohne Spezialseiten
  • languages
    • i18n\de-formal.json für Text bei Kontaktformular
  • skins
    • MonoBook.php für Footer-Elemente und eingeschränkte Sichtbarkeit von Werkzeugen
    • monobook\main.css für allgemeine Farben und für Farben in bestimmten Seitenbereichen

Upgrade vorhandener Wikis[Bearbeiten]

  1. neue Wiki-Version 1.31 entpacken nach "D:\noxampp\[wikiname]"
  2. Erweiterungen
    1. Erweiterungen für aktuelle Version herunterladen
    2. aktuelle Erweiterungen entpacken nach "D:\noxampp\[wikiname]\extensions"
  3. Datei "LocalSettings.php" umbenennen zu "LocalSettings_original_131.php"
  4. Dateien vom alten Server zum neuen Server kopieren
    1. ...\[wikiname]\images inkl. eigenem Unterverzeichnis "commons\"
    2. ...\[wikiname]\LocalSettings.php
  5. Wiki-Datenbanken
    1. Datenbankdaten auf dem alten Server sichern
    2. Datenbankdaten vom alten zum neuen Server kopieren
    3. Datenbankdaten auf dem neuen Server wiederherstellen
  6. Wiki-Anpassungen
    1. Datei "LocalSettings.php" vergleichen mit Angaben in "LocalSettings_original_131.php" und anpassen
    2. Datei "...\[wikiname]\maintenance\runJobs.php" mit php.exe auf der Admin-Kommandozeile ausführen
    3. Datei "...\[wikiname]\maintenance\upgrade.php" mit php.exe auf der Admin-Kommandozeile ausführen

Datenbanken sichern[Bearbeiten]

Kommandozeile als Administrator öffnen und folgenden Befehl eingeben:

D:
cd xampp\mysql\bin
mysqldump -uroot -p --databases db_wikiname > D:\Backup_193.175.110.91\Laufwerk_D\Backups
mysqldump --user=root --password --databases db_wikiname > D:\Backup_193.175.110.91\Laufwerk_D\Backups\db_wikiname_MW1.16_MariaDBv10.0.17_yyyymmdd.sql

Datenbanken wiederherstellen[Bearbeiten]

Kommandozeile als Administrator öffnen und folgenden Befehl eingeben:

D:
cd xampp\mysql\bin
mysql -uroot -p --execute="source D:\Backups\db_wikiname_MW1.16_MariaDBv10.0.17_yyyymmdd.sql" --force
mysql --user=root --password --execute="source D:\Backups\db_wikiname_MW1.16_MariaDBv10.0.17_yyyymmdd.sql" --force

Datenbank mittels XAMPP und phpmyAdmin anlegen[Bearbeiten]

Seit der Version 1.16.1 kann die jeweilige Datenbank statt mit phpMyAdmin während der Installation mittels Browser (/[wikiverzeichnis]/config/index.php) angelegt werden, sofern der Superuser-Account (Datenbank-Hauptadministrator) bekannt ist:

salzwiki[Bearbeiten]

Database name: salzwiki
Benutzer: SW_sawi 
Host: localhost 
Global Rechte: all privileges 
Grant: ja 
database table prefix: sw_

repository[Bearbeiten]

Database name: repository 
Benutzer: SW_repo 
Host: localhost 
Global Rechte: all privileges 
Grant: ja 
database table prefix: sr_

saltwiki[Bearbeiten]

Database name: saltwiki 
Benutzer: SW_sawi 
Host: localhost 
Global Rechte: all privileges 
Grant: ja 
database table prefix: sw_

Mediawiki Installieren[Bearbeiten]

  • Für die jeweiligen Wikis einen entsprechenden Wiki- und Verzeichnisnamen festlegen: "salzwiki", "repository", "saltwiki".
  • Die Dateien und Verzeichnisse aus der tar.gz-Datei in das jeweilige Wiki-Verzeichnis entpacken:
"D:\xampp\htdocs\[wikiverzeichnisname]\"
  • Nach Installationsanweisung das jeweilige Wiki installieren; hierzu im Browser die Adresse "D:\xampp\htdocs\[wikiverzeichnisname]\mw-config\index.php" aufrufen.
    • Contact e-mail: service@salzwiki.hawk-hhg.de
    • Language: Je nach Wiki Deutsch oder English
    • Copyright/license: Creative Commons
    • Admin username: Hornemann
    • Object caching: No
    • E-Mail
      • E-mail features: enabled
      • User-to-user e-mail: enabled
      • E-mail notification: enabled for discussion pages nad watchlists
      • E-mail address authentication: enabled
    • Datenbank
      • Database type: MySQL
      • Database host: localhost
      • Database name: [wikiname]
      • DB username: SW_sawi (SalzWiki, SaltWiki) bzw. SW_repo (Repositorium) hi_wiki_1
      • Superuser account: yes
      • Superuser name: root
      • Database table prefix: sw_ (SalzWiki, Saltwiki) bzw. sr_ (Repositorium)
      • Storage Engine: InnoDB
      • Database character set: MySQL 4.1/5.0 binary
    • Wiki
      • SalzWiki bzw. SaltWiki bzw. Repository
      • Projektraum entspricht Namen des Wikis
      • Benutzername: Hornemann
      • E-Mail-Adresse: salzwiki@hornemann-institut.de
    • Optionen
      • ausschließlich berechtigte Bearbeiter (SalzWiki, SaltWiki) bzw. geschlossenes Wiki (Repository)

Lizenz für das jeweilige Wiki[Bearbeiten]

Verwendet werden Creative-Commons-Lizenzen. Für SalzWiki wird die deutsche Variante, für SaltWiki und Repository wird die Standard-Variante vom Typ "cc-by-nc-sa" – Version 3.0 (Stand 2017-07-21) – eingesetzt.

Da die Grafiken unter "\skins\images\common\cc-..." keine Unterscheidung nach Versionsnummer und Länderversion anbieten, werden die Grafiken von "Creative Commons" heruntergeladen, umbenannt und gespeichert unter "[wikiname]\images\common\":

Die Lizenzkonfiguration erfolgt in der Datei "LocalSettings.php":

  • Salzwiki
## 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. 
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright 
## Deutsch
$wgRightsUrl = "https://creativecommons.org/licenses/by-nc-sa/3.0/de/"; 
$wgRightsText = "Namensnennung-Nicht-kommerziell-Weitergabe unter gleichen Bedingungen 3.0 Deutschland"; 
// bei MW 1.23
#$wgRightsIcon = "https://i.creativecommons.org/l/by-nc-sa/3.0/de/88x31.png";
#$wgRightsIcon = "{$wgStylePath}/common/images/cc-by-nc-sa.png";
$wgRightsIcon = $wgScriptPath."/common/images/CC_BY_NC_SA_3.0_de_88x31.png";
# $wgRightsCode = "[license_code]"; # Not yet used
  • Saltwiki und Repositorium
## 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. 
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright 
## English und Repositorium
$wgRightsUrl = "https://creativecommons.org/licenses/by-nc-sa/3.0/"; 
$wgRightsText = "Attribution-Noncommercial-Share Alike 3.0 Unported"; 
// bei MW 1.23
#$wgRightsIcon = "https://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png";
#$wgRightsIcon = "{$wgStylePath}/common/images/cc-by-nc-sa.png";
$wgRightsIcon = $wgScriptPath."/common/images/CC_BY_NC_SA_3.0_en_88x31.png";
# $wgRightsCode = "[license_code]"; # Not yet used

Style/Skin[Bearbeiten]

MW 1.23 LTS MonoBook[Bearbeiten]

Das Design für das Salzwiki basiert wegen der Hintergrundgrafik und der links angeordneten Footer-Icons weiter auf dem Stil (Skin) "Monobook", obwohl der Stil seit MW 1.17 von "Vector" als Standardstil abgelöst wurde. Dazu wird die Original-Datei "MonoBook.php" wegen der veralteten Auto-discovery-Funktion, die "Monobook" bei MW 1.23 LTS noch hat, als Kopie namens "MonoBook_Original.php" im Verzeichnis "skins\monobook\" gespeichert.

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

Zusätzlich sind darunter folgende Zeilen erforderlich:

  // CC-Icon rechts unten für "MonoBook" angepasst 2015-09-28:
  $wgFooterIcon_copyright['copyright'] = array(
    "src" => $wgRightsIcon, // Icon
    "url" => $wgRightsUrl,
    "alt" => $wgRightsText,
    //"height" => "", // Icon-Höhe
    //"width" => "" // Icon-Breite
  );
  unset($wgFooterIcons['copyright']);
  $wgFooterIcons_r['poweredby'] = array_merge($wgFooterIcon_copyright,$wgFooterIcons['poweredby']);
  // für "MonoBook" und "Vector" ergänzt
  ## FOOTER-Icons links, wobei der erste Schlüssel zu <li id="footer-...ico"> verarbeitet wird
  $wgFooterIcons_l['copyright']['hornemanninstitut'] = array(
    "src" => "$wgScriptPath/images/common/HI.png", // Icon
    "url" => "http://www.hornemann-institut.de",
    "alt" => "Hornemann Institut",
    //"height" => "", // Icon-Höhe
    //"width" => "" // Icon-Breite
  );
  $wgFooterIcons_l['copyright']['hawk'] = array(
    "src" => "$wgScriptPath/images/common/hawk.png", // Icon
    "url" => "http://www.hawk-hhg.de",
    "alt" => "HAWK HHG",
    //"height" => "", // Icon-Höhe
    //"width" => "" // Icon-Breite
  );
  $wgFooterIcons_l['copyright']['dfg'] = array(
    "src" => "$wgScriptPath/images/common/DFG.jpg", // Icon
    "url" => "http://www.dfg.de",
    "alt" => "DFG",
    //"height" => "", // Icon-Höhe
    //"width" => "" // Icon-Breite
  );
  // für "Vector"
  #$wgFooterIcons_r = $wgFooterIcons;
  unset($wgFooterIcons);
  $wgFooterIcons = array_merge($wgFooterIcons_l, $wgFooterIcons_r);

MW 1.23 LTS Vector[Bearbeiten]

Bei der Verwendung von "Vector" wird die Original-Datei "skins\Vector.php" wegen der veralteten Auto-discovery-Funktion, die "Vector" bei MW 1.23 LTS noch hat, als Kopie namens "Vector_Original.php" im Verzeichnis "skins\vector\" gespeichert.

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

Im Verzeichnis "vector/components/footer.less" wird für die eigenen Icons im Footer unten links die Definition von "#footer-icons" kopiert und umbenannt in "#footer-icons-left" und folgendermaßen angepasst:

/* SalzWiki eingefügt 2015-09-28 */
#footer-icons-left {
  float: left;
  li {
    float: left;
    margin-right: 0.5em;
    line-height: 2em;
    text-align: left;
  }
}

Im Verzeichnis "vector/images/" wird die Datei "headbg.jpg" für ein eigenes Hintergrundbild eingefügt.

Im Verzeichnis "vector/components/common.less" wird für das Hintergrundbild "body" folgendermaßen angepasst:

body {
  /* SalzWiki eingefügt 2015-09-28 */
  background: #F9F9F4 url("headbg.jpg");
  /*background-color: @menu-background-color*/
}

HAWK-Design[Bearbeiten]

Für Anpassungen der StyleSheets an das HAWK-Design siehe Adm:HAWK-Design.

[Bearbeiten]

Die Datei für das Logo links oben ist hochzuladen und in der Datei "LocalSettings.php" zuzuweisen:

  • Salzwiki
##Logo MW1.23
$wgLogo = $wgScriptPath."/images/common/Logo_Salz.png";
  • Saltwiki
##Logo MW1.23
$wgLogo = $wgScriptPath."/images/common/Logo_Salt.png";
  • Repositorium
##Logo MW1.23
$wgLogo = $wgScriptPath."/images/common/Logo_Repo.png";

Fußzeile "Footer" anpassen[Bearbeiten]

Um "Footer"-Verweise auszublenden und anzupassen sowie eigene Logos mit Verlinkung einzufügen, sind folgende Schritte notwendig:

LocalSettings.php anpassen[Bearbeiten]

Änderungen in der Datei "LocalSettings.php" "MonoBookSW.php": Zeile 141ff:

Ausblendung des Besuche-Zählers[Bearbeiten]

Die Anzeige der Texte von "Anzahl der Seitenabrufe" wird bei MW1.23 wie folgt unterbunden:

$wgDisableCounters = true;
Anpassung für Logos links und rechts[Bearbeiten]

Die Logos und Verweise links für "Hornemann Institut", "HAWK" und "SIK" sowie rechts für "CC-Lizenz" und "Powered by MediaWiki" werden wie folgt festgelegt:

#### Beginn FOOTER ab Version MW1.23
// CC-Icon rechts unten für "MonoBook" angepasst 2015-09-28:
$wgFooterIcon_copyright['copyright'] = array(
  "src" => $wgRightsIcon, // Icon
  "url" => $wgRightsUrl,
  "alt" => $wgRightsText,
  //"height" => "", // Icon-Höhe
  //"width" => "" // Icon-Breite
);
unset($wgFooterIcons['copyright']);
$wgFooterIcons_r['poweredby'] = array_merge($wgFooterIcon_copyright,$wgFooterIcons['poweredby']);
// für "MonoBook" und "Vector" ergänzt
## FOOTER-Icons links, wobei der erste Schlüssel zu <li id="footer-...ico"> verarbeitet wird
$wgFooterIcons_l['copyright']['hornemanninstitut'] = array(
  "src" => "$wgScriptPath/images/common/HI.png", // Icon
  "url" => "http://www.hornemann-institut.de",
  "alt" => "Hornemann Institut",
  //"height" => "", // Icon-Höhe
  //"width" => "" // Icon-Breite
);
$wgFooterIcons_l['copyright']['hawk'] = array(
  "src" => "$wgScriptPath/images/common/hawk.png", // Icon
  "url" => "http://www.hawk-hhg.de",
  "alt" => "HAWK HHG",
  //"height" => "", // Icon-Höhe
  //"width" => "" // Icon-Breite
);
$wgFooterIcons_l['copyright']['sik'] = array(
  "src" => "$wgScriptPath/images/common/SIK.png", // Icon
  "url" => "http://http://www.salze-kulturgut.de",
  "alt" => "SIK",
  "height" => "30px", // Icon-Höhe
  "width" => "30px" // Icon-Breite
);
// für "Vector"
#$wgFooterIcons_r = $wgFooterIcons;
unset($wgFooterIcons);
$wgFooterIcons = array_merge($wgFooterIcons_l, $wgFooterIcons_r);
#### Ende FOOTER ab Version MW1.23
Anpassung mittlerer Fußzeilen-Elemente[Bearbeiten]

Die Änderung von "Über [Wiki-Name]" zu "Forschungsverbund"/"Projektverbund" findet nicht mehr statt. Stattdessen muss "Disclaimer" durch "Impressum" ersetzt werden und wird "about" weggelassen.

Die Anzeige der Texte von "lastmodified", "about" und "CC-Lizenz" im mittleren Bereich kann mit einem "Hook" wie folgt unterbunden werden:

#### Beginn mittlerer FOOTER ab Version MW1.23
// Elemente verbergen
$wgHooks['SkinTemplateOutputPageBeforeExec'] = 'lfHide';
function lfHide( $skin, &$template ) {
  $template->set( "lastmod", "");
  $template->set( "copyright", "");
  $template->set( "about", "");
  return true;
};
// "Haftungsausschluss" wird auf der Seite "MediaWiki:Disclaimers" durch "Impressum" ersetzt
// Datenschutz ist bei MW1.31 mit "privacy" standardmäßig enthalten
// Projektverbund soll nicht mehr im Fußbereich erscheinen
#### Ende mittlerer FOOTER ab Version MW1.23

Für neue, geänderte und ausgeblendete Footer-Verweise, siehe auch https://www.mediawiki.org/wiki/Manual:Footer. Nicht mehr erforderliche Festlegungen:

// "Haftungsausschluss" wird auf der Seite "MediaWiki:Disclaimers" durch "Impressum" ersetzt
#$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function ($sk, &$tpl){
#  $tpl->set('impressum', $sk->footerLink('impressum', 'Impressum'));
#  $tpl->data['footerlinks']['places'][] = 'impressum';
#  return true;
#}
// Datenschutz ist bei MW1.23 standardmäßig enthalten
#$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function ($sk, &$tpl){
#  $tpl->set('datenschutz', $sk->footerLink('datenschutz', 'Datenschutz'));
#  $tpl->data['footerlinks']['places'][] = 'datenschutz';
#  return true;
#}
// Projektverbund soll nicht mehr im Fußbereich erscheinen
#$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function ($sk, &$tpl){
#  $tpl->set('projektverbund', $sk->footerLink('projektverbund', 'Projektverbund'));
#  $tpl->data['footerlinks']['places'][] = 'projektverbund';
#  return true;
#}

Angeblich können auch nicht erwünschte "Footer"-Seiten ausgeblendet werden, indem im Namensraum "MediaWiki:..." der enthaltene Text durch einen Bindestrich ersetzt wird, siehe https://www.mediawiki.org/wiki/Manual:Footer#Customizing_the_Built-in_items letzte Zeile. Dann müsste aber bei der entsprechenden Seite für jede Sprache die Änderung erfolgen.

Ursprüngliche Texte für "de-formal":

  • "MediaWiki:About": Über
  • "MediaWiki:Copyright": Der Inhalt ist verfügbar unter der Lizenz $1, sofern nicht anders angegeben.
  • "MediaWiki:Lastmodifiedat": Diese Seite wurde zuletzt am $1 um $2 Uhr bearbeitet.

MonoBook.php nicht mehr anpassen (Wiki-Code)[Bearbeiten]

Wenn die Datei "[wikiname]\skins\MonoBook.php" bearbeitet wird, ist im Verzeichnis "[wikiname]\skins\monobook" eine Kopie der Datei als "MonoBook_original.php" uz speichern und von der geänderten Datei als Backup für Wiki-Updates ebenfalls im Verzeichnis "\monobook" eine Kopie als "MonoBookSW.php" zu speichern.

Wird kein "Hook" in der Datei "LocalSettings.php" verwendet, können in der Datei "MonoBook.php" die Texte von "lastmodified" und "CC-Lizenz" sowie der Verweis zu "Über" bzw. "About" durch eigenen Code unter Zeile 154 herausgefiltert werden:

<?php
      foreach ( $validFooterLinks as $aLink ) { ?>
        <?php if($aLink!=="lastmod" && $aLink!=="copyright" && $aLink!=="about"){ /*eingefügt für HAWK HHG 2015-12-07 u. 2016-03-29*/ ?>
    <li id="<?php echo $aLink ?>"><?php $this->html( $aLink ) ?>
<?php   } /*eingefügt für HAWK HHG 2015-12-07*/
      }
?>

Original:

<?php
      foreach ( $validFooterLinks as $aLink ) { ?>
    <li id="<?php echo $aLink ?>"><?php $this->html( $aLink ) ?>
<?php
      }
?>

CSS-Anpassungen als Alternative (Wiki-Code)[Bearbeiten]

Alternativ kann in der Datei "\skins\monobook\main.css" unterhalb der Angaben für den Footerbereich in Zeile 550 die Anzeige verhindert werden, wobei der HTML-Quelltext für die Listenelemente aber trotzdem erzeugt wird:

/* eingefügt für HAWK HHG 2015-12-07 */
#f-list #lastmod, #f-list #copyright {
  display:none;
}

HTML-Footer-Elemente[Bearbeiten]

Bei MW1.17 bis 1.23 kann die Variable $wgFooterIcons für Icons links und rechts unten im Footer erweitert werden. Wie bei MW1.16 gibt es auch noch die Variable $wgCopyrightIcon, mit der nur der Bereich rechts unten im Footer angepasst werden kann.

Bei MW1.23 besteht der Footer-Container aus folgenden Bereichen:

  • div id="footer"
    • div id="f-copyrightico" (unterer Footer-Bereich links)
    • div id="f-poweredbyico" (unterer Footer-Bereich rechts)
    • ul id="f-list" (oberer=mittlerer Footer-Bereich)
      • li id="lastmod"
      • li id="viewcount"
      • li id="copyright"
      • li id="privacy"
      • li id="about"
      • li id="disclaimer"

Bei MW1.16 bestand der Footer-Container aus folgenden Bereichen:

  • ul id="footer-info" (oberer Footer-Bereich)
    • li id="footer-info-lastmod"
    • li id="footer-info-copyright"
  • ul id="footer-places" (unterer Footer-Bereich links)
    • ul id="footer-places-privacy"
    • ul id="footer-places-about"
    • ul id="footer-places-disclaimer"
  • ul id="footer-icons" (unterer Footer-Bereich rechts)
    • ul id="footer-copyrightico"
    • ul id="footer-poweredbyico"

"Forschungsverbund"/"Projektverbund" statt "Über [Wiki-Name]"[Bearbeiten]

Damit im "Footer" statt auf die Seite "Über SalzWiki" auf die Seite "Forschungsverbund" "Projektverbund" bzw. "Research Network" verlinkt wird, sind Änderungen an "Aboutsite" und "Aboutpage" vorzunehmen. Hierzu entweder über "Spezialseiten->Systemdaten und Werkzeuge->MediaWiki-Systemtexte" gehen oder folgende Adressen eingeben:

"[Wiki-Verzeichnis]/index.php?title=MediaWiki:Aboutsite/de[-formal|-at|-ch]&action=edit"
bzw.
"[Wiki-Verzeichnis]/index.php?title=MediaWiki:Aboutpage/de&action=edit"
  • Link-Text in "aboutsite" bearbeiten:
Projektverbund
<!--Über {{SITENAME}}-->
  • Seitenname, zu dem verlinkt wird, in "aboutpage" bearbeiten:
Project:Über

ersetzen durch

Forschungsverbund

Diese Änderungen müssen auf allen Sprach-Subpages für Aboutsite und Aboutpage - nämlich für "de", "de-formal", "de-at" und "de-ch" - durchgeführt werden, da die Änderungen an den Seiten "Aboutpage" und "Aboutsite" sich nur bei den Standard-Sprachversion wie "de" auswirken, jedoch nicht z. B. bei "de-formal". Deshalb wurden als auszuwählende Sprachen "de-formal", "de-at" und "de-ch" vorerst deaktiviert in der Datei [wikiverzeichnisname]\languages\Names.php Wenn ein User in den Profileinstellungen die Sprache abweichend von der Festlegung "de-formal" in der Datei "LocalSettings.php" auf "de" einstellt, funktioniert eventuell "Forschungsverbund" erst, nachdem "English" oder eine andere nicht-deutsche Sprache eingestellt wurde.

'de' => 'Deutsch',		# German ("Du")
##'de-at' => 'Österreichisches Deutsch',	# Austrian German
##'de-ch' => 'Schweizer Hochdeutsch',		# Swiss Standard German
##'de-formal' => 'Deutsch (Sie-Form)',		# German - formal address ("Sie") 

Um im "Footer" den Hyperlink "Forschungsverbund" statt "Projektverbund" angezeigt zu bekommmen, wird in der Skin-Datei der Code angepasst.

  • MW 1.23 Datei "MonoBook.php"
<?php foreach ($validFooterLinks as $aLink) { ?>
...
<?php } ?>

Favicon[Bearbeiten]

Damit in der Browser-Adresszeile ein Favicon dargestellt wird, ist eine Datei "salzwiki.ico" in das jeweilige Wiki-Verzeichnis hochzuladen und folgender Eintrag in der jeweiligen Datei "LocalSettings.php" vorzunehmen:

$wgFavicon = "/[wikiverzeichnisname]/salzwiki.ico";

Darstellung in einem Frame[Bearbeiten]

Diese Funktionalität war nötig, solange die Wikis über die IP durch Frame-"Weiterleitung" bei "1&1" erreichbar waren. Sie wurde im ersten Halbjahr 2017 überflüssig nach Änderung des DNS-Eintrags auf die HAWK-IP bei "1&1" im Rahmen der Umstellung auf HTTPS und Server-Zertifikate.

Seit MW 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. 

Wiki-Konfiguration[Bearbeiten]

Die Konfiguration eines Wikis erfolgt hauptsächlich mit PHP-Variablen in der Datei "xampp\htdocs\[wikiname]\LocalSettings.php".

Z.23ff bei Verwendung der Domain-Adressen mit HTTP oder HTTPS

...
$wgSitename = "Salzwiki"; # "Salzwiki" "Saltwiki" "Repository"
...
$wgScriptPath = ""; # "/salzwiki" "/saltwiki" "/repository"
$wgScriptExtension = ".php";
...
## The protocol and server name to use in fully-qualified URLs
if($_SERVER['HTTPS']==="on" OR !empty($_SERVER['HTTPS'])){$protokoll = "https";}
else{$protokoll = "http";}
$wgServer = $protokoll."://".$_SERVER['SERVER_NAME'];
...

Z.23ff bei Verwendung der IP-Adresse

...
$wgSitename = "Salzwiki"; # "Salzwiki" "Saltwiki" "Repository"
...
$wgScriptPath = "/salzwiki"; # "/salzwiki" "/saltwiki" "/repository"
$wgScriptExtension = ".php";
...
## The protocol and server name to use in fully-qualified URLs
$wgServer = "http://".$_SERVER['SERVER_NAME'];
...

Spracheinstellungen[Bearbeiten]

Standardsprache[Bearbeiten]

Die Standardsprache wird in der Datei "LocalSettings.php" festgelegt, kann von den Usern in den Profileinstellungen aber nach den persönnlichen Bedürfnissen angepasst werden.

  • Salzwiki: $wgLanguageCode = "de-formal";
  • Saltwiki: $wgLanguageCode = "en";
  • Repositorium: $wgLanguageCode = "en";

de-formal korrigieren (Wiki-Code)[Bearbeiten]

Die Datei "[wikiname]\languages\i18n\de-formal.json" wird wegen einer Du-Form ergänzt. Zuvor ist die Datei als Kopie "de-formal_original.json" zu speichern. Nach der Korrektur ist für Wiki-Updates eine Kopie als "de-formalSW.json" zu speichern.

Für die Sie-Form wird aus der Datei "de.json" von Zeile 1759 "emailccme" mit Du-Form verwendet: "Sende eine Kopie der E-Mail an mich"; deshalb ist in der Datei "de-formal.json" in Zeile 216f zwischen "emailpagetext" und "emailccsubject" einzufügen:

"emailccme": "Eine Kopie der E-Mail an mich senden",

Zugangsberechtigungen[Bearbeiten]

Gruppen für Berechtigungen[Bearbeiten]

  • Administratoren = Chef-Redakteure für Accounts erstellen/sperren, Systemtexte bearbeiten, Wiki-Inhalte verschieben, löschen, importieren etc.
  • autor = Autor/in für Wiki-Inhalte
  • Benutzer = nur Diskussionsseiten
  • Bots (Systemgruppe)
  • Bürokraten = Rechtevergabe, Account-Vereinigung
  • Editor (saltwiki, repository) = Wiki-Inhalte-Kontrolle
  • Redakteur (salzwiki) = siehe Editor
  • Sicherheit = Seitensperre für Spezialseiten und gesperrte Seiten bei deaktiviertem JavaScript
  • Salzwiki, HAWK etc. = Gruppen im Repository
  • sysop = Hauptadministrator

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

Damit die unten beschriebenen Rechtevergaben umgesetzt werden können, erhält "sysop" zunächst den Zugang zu den SpecialPages, um auch nach Änderung der Datei "SpecialPage.php" Zugriff auf die Spezialseiten zu haben. Folgende Zeile ist in "LocalSettings.php" einzufügen:

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

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

Nutzerrechte bis zum Freischalten von Saltwiki[Bearbeiten]

Kein "normaler" Nutzer kann Seiten in SaltWiki lesen:

$wgGroupPermissions['*']['read'] = false;

Als Ausnahme werden mit $wgWhitelistRead alle im Array genannten Seiten dennoch für alle zum Lesen freigegegben, beispielsweise die Startseite und die Anmeldeseite.

Benutzer-Rechte in allen 3 Wikis[Bearbeiten]

Das Benutzerrechteschema sieht folgendermaßen aus:

// Salzwiki (auskommentiert)
#$wgWhitelistRead = arry(":Hauptseite", "Spezial:Userlogin", "Salzwiki:Impressum", "General_disclaimer");
// Saltwiki
#$wgWhitelistRead = arry("Welcome_to_SaltWiki", "Saltwiki:About", "Saltwiki:General disclaimer", "Saltwiki:Privacy policy");
// Repository
#$wgWhitelistRead = arry(":home", "Spezial:Userlogin");
// Salzwiki/Saltwiki
$wgWhitelistedit = "talk";
// Salzwiki/Saltwiki
$wgGroupPermissions['Sysadmin']['editadmin'] = true;
# alle duerfen lesen, alle dürfen nicht editieren
$wgGroupPermissions['*']['read']          = true;
$wgGroupPermissions['*']['edit']          = false;
$wgGroupPermissions['*']['createpage']    = false;
$wgGroupPermissions['*']['createaccount'] = false; // Salzwiki: true, Saltwiki/Repository: false
$wgGroupPermissions['*']['createtalk']    = false;
$wgGroupPermissions['*']['writeapi']      = false;
$wgGroupPermissions['*']['restrictusers'] = false; // Salzwiki/Saltwiki: false, Repository: auskommentiert

# Benutzer duerfen: lesen, Diskussionsseiten erstellen
$wgGroupPermissions['user']['read']            = true; // Salzwiki/Saltwiki: true, Repository: false
$wgGroupPermissions['user']['createtalk']      = true; // Salzwiki/Saltwiki: true, Repository: false
$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['user']['writeapi']        = false;
$wgGroupPermissions['user']['restrictusers']   = false;
#$wgGroupPermissions['user']['sendemail']      = false; Repository: false, Salzwiki/Saltwiki: fehlt

# Spezialgruppe Autor
$wgGroupPermissions['autor']['emailconfirmed'] = true;
$wgGroupPermissions['autor']['createpage'] = true;
$wgGroupPermissions['autor']['createaccount'] = false; // Salzwiki: true, Saltwiki: false, Repository: auskommentiert
$wgGroupPermissions['autor']['createtalk'] = true;
$wgGroupPermissions['autor']['edit'] = true;
$wgGroupPermissions['autor']['protect'] = true; // Salzwiki/Saltwiki: true, Repository: auskommentiert
$wgGroupPermissions['autor']['editprotected'] = true; // Salzwiki/Saltwiki: true, Repository: auskommentiert
$wgGroupPermissions['autor']['read'] = true;
$wgGroupPermissions['autor']['upload'] = true;
$wgGroupPermissions['autor']['move'] = true;
$wgGroupPermissions['autor']['restrictusers'] = true; // Spezialseiten lesen

# Spezialgruppe Redakteur (Salzwiki) bzw. Editor (Saltwiki/Repository)
$wgGroupPermissions['Redakteur']['emailconfirmed'] = true;
$wgGroupPermissions['Redakteur']['createpage'] = true;
$wgGroupPermissions['Redakteur']['createtalk'] = true;
$wgGroupPermissions['Redakteur']['edit'] = true;
$wgGroupPermissions['Redakteur']['protect'] = true;
$wgGroupPermissions['Redakteur']['editprotected'] = true;
$wgGroupPermissions['Redakteur']['read'] = true;
$wgGroupPermissions['Redakteur']['upload'] = true;
$wgGroupPermissions['Redakteur']['patrol'] = true;
$wgGroupPermissions['Redakteur']['move'] = true;
$wgGroupPermissions['Redakteur']['createaccount'] = true;
$wgGroupPermissions['Redakteur']['movefile'] = true;
$wgGroupPermissions['Redakteur']['deletedtext'] = true;
$wgGroupPermissions['Redakteur']['deletedhistory'] = true;
$wgGroupPermissions['Redakteur']['noratelimit'] = true;
$wgGroupPermissions['Redakteur']['undelete'] = true;
$wgGroupPermissions['Redakteur']['restrictusers'] = true; // Salzwiki/Saltwiki: true, Repository: false
$wgGroupPermissions['Redakteur']['skipcaptcha'] = true;
$wgGroupPermissions['Redakteur']['approverevisions'] = true;

##Benutzergruppe um zu verhindern, dass Seiten der Specialpages 
##von jedem anderen außer Bürokraten und Admin und Sicherheit 
##aufgerufen werden können. Risos 08.02.2012
$wgGroupPermissions['Sicherheit']['read'] = true;
$wgGroupPermissions['Sicherheit']['Sicherheit'] = true;

# Prevent new user registrations except by sysops
$wgWhitelistAccount = array( "user" => 0, "sysop" => 1, "developer" => 1 );
#$wgGroupPermissions['sysop']['createaccount'] = false; // Salzwiki: fehlt, Saltwiki: false, Repository: auskommentiert

## Freischalten der Spezialseiten
$wgGroupPermissions['sysop']['restrictusers'] = true;
## Special Pages nur für Autoren lesbar
##$wgNamespaceProtection[NS_spezial] = array( 'spezial-read');
##$wgGroupPermissions['autor']['spezial-read'] = true;

#$wgGroupPermissions['emailconfirmed']['emailconfirmed'] = true;

Benutzer-Rechte in Repository[Bearbeiten]

Das für das Repositorium erweiterte Benutzerrechteschema enthält folgende Angaben:

# Repository
##---------------------------------------------------------------------------------
# Spezialgruppe HAWK eingefügt HSChwarz 4.10.2011
$wgGroupPermissions['HAWK']['emailconfirmed'] = true;
$wgGroupPermissions['HAWK']['createpage'] = true;
$wgGroupPermissions['HAWK']['createtalk'] = true;
$wgGroupPermissions['HAWK']['edit'] = true;
$wgGroupPermissions['HAWK']['read'] = true;
$wgGroupPermissions['HAWK']['move'] = true;
$wgGroupPermissions['HAWK']['restrictusers'] = false;
## Anlegen von Rechteschema für Projekte
# Spezialgruppe SalzWiki eingefügt HSChwarz 27.07.2010
$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['SalzWiki']['restrictusers'] = false;
# Spezialgruppe SIP eingefügt HSChwarz 27.07.2010
$wgGroupPermissions['SIP']['emailconfirmed'] = true;
$wgGroupPermissions['SIP']['createpage'] = true;
$wgGroupPermissions['SIP']['createtalk'] = true;
$wgGroupPermissions['SIP']['edit'] = true;
$wgGroupPermissions['SIP']['read'] = true;
$wgGroupPermissions['SIP']['move'] = true;
$wgGroupPermissions['SIP']['restrictusers'] = false;

## Erweiterung ApprovedRevs nicht zusammen mit "AccessControl" einsetzbar
#$wgGroupPermissions['sysop']['approverevisions'] = true;
#$wgGroupPermissions['*']['viewlinktolatest'] = false;
#$wgGroupPermissions['autor']['viewlinktolatest'] = true; // Salzwiki/Saltwiki: true, Repository: auskommentiert
#$wgGroupPermissions['sysop']['viewlinktolatest'] = true;

## BibManager-Berechtigungen eingefügt 2016-02-23
$wgGroupPermissions['*']['bibmanagercreate'] = false;
$wgGroupPermissions['*']['bibmanageredit'] = false;
$wgGroupPermissions['*']['bibmanagerdelete'] = false;
$wgGroupPermissions['autor']['bibmanager'create] = true;
$wgGroupPermissions['autor']['bibmanageredit'] = true;
#$wgGroupPermissions['autor']['bibmanagerdelete'] = true;
$wgGroupPermissions['Redakteur']['bibmanager'create] = true;
$wgGroupPermissions['Redakteur']['bibmanageredit'] = true;
$wgGroupPermissions['Redakteur']['bibmanagerdelete'] = true;
$wgGroupPermissions['sysop']['bibmanager'create] = true;
$wgGroupPermissions['sysop']['bibmanageredit'] = true;
$wgGroupPermissions['sysop']['bibmanagerdelete'] = true;
/*
## Salzwiki/Saltwiki: Erweiterung ConfirmEdit
#captcha Hschwarz 12.01.2010
$wgGroupPermissions['*']['skipcaptcha'] = false;
$wgGroupPermissions['user']['skipcaptcha'] = false;
$wgGroupPermissions['autor']['skipcaptcha'create] = true;
$wgGroupPermissions['autoconfirmed']['skipcaptcha'] = false;
#$wgGroupPermissions['bot']['skipcaptcha'] = true; // registered bots
$wgGroupPermissions['sysop']['skipcaptcha'] = true;
*/
## to allow interwiki-linking
$wgGroupPermissions['*']['interwiki'] = false;
$wgGroupPermissions['sysop']['interwiki'] = true;

Spezial-Seiten[Bearbeiten]

Für die Spezialseiten gibt es die Berechtigungsgruppe "Sicherheit" mit entsprechender Konfiguration in der Datei "LocalSettings.php".

Spezial-Seiten mit Sonderrechten[Bearbeiten]

Spezialseiten, die nur mit besonderen Berechtigungen verfügbar sind, werden nach Anmeldung bei einem Konto mit besonderen Berechtigungen auf der Seite "Spezialseiten" per CSS fett-formatiert dargestellt:

<li class="mw-specialpagerestricted">...
Spezial-Seiten verbergen[Bearbeiten]

Werden die Spezial-Seiten in der linken Menüleiste verborgen - siehe Sidebar-Einschränkung - sind sie dennoch über die Adresszeile des Browsers erreichbar, beispielsweise mit "https://wikiname.tld/index.php/Spezial:Spezialseiten".

Um derartige Seitenaufrufe zu unterbinden sind in der Datei "LocalSettings.php" Berechtigungen festzulegen.

Spezialseiten mit Gruppenberechtigung[Bearbeiten]

Es sollen nur Mitglieder bestimmter Gruppen die Spezialseiten im Namensraum "NS_SPECIAL" lesen dürfen, aber nicht unangemeldete Gäste oder Mitglieder anderer Gruppen. Gruppen mit Leserecht:

  • Administratoren
  • autor
  • Redakteur
  • Sicherheit
  • sysop

Für Berechtigungen von Spezialseiten siehe auch

In der Datei "LocalSettings.php" wird am Ende des Blocks "Namensräume" ein "Hook" namens "SpecialPage_initList" eingefügt. Der "Hook" wird in der Datei "SpecialPagesFactory.php" in der Funktion "getPageList()" ausgeführt. Verarbeitet werden die Angaben aus der Variablen $coreList.

Damit alle, die nicht Mitglied der berechtigten Gruppen sind, bestimmte Spezialseiten dennoch aufrufen können, wird Folgendes in der Datei "LocalSettings.php" eingegeben:

$wgHooks['SpecialPage_initList'][] = 'groupspecificSpecialpages';
function groupspecificSpecialpages(&$aSpecialPages){
  global $wgUser;
  $groups = $wgUser->getEffectiveGroups();
  if($wgUser->isAnon() || ( !in_array("sysop", $groups)
    && !in_array("autor", $groups) && !in_array("Administratoren", $groups)
    && !in_array("Redakteur", $groups) && !in_array("Editor", $groups)
    && !in_array("forschung", $groups)
  ) ){
    $aSpecialPages = array(
      "Specialpages" => "SpecialSpecialpages",
      "UserLogin" => "SpecialUserLogin",
      "UserLogout" => "SpecialUserLogout", // Seite nach der Abmeldung
      "CreateAccount" => "SpecialCreateAccount", // für Registrierung
      "Contact" => "SpecialContact", // Letzte Änderung im Menü links
      "Recentchanges" => "SpecialRecentChanges", // Kontaktseite im Menü links
      "BibManager" => "BibManager", // Bibliographie im Menü links
    );
  }
}
Anpassungen in vorigen MW-Versionen (Wiki-Code)[Bearbeiten]

Festlegungen in der Datei "LocalSettings.php" wirkten bei Aufruf der Spezialseiten in der Browser-Adresszeile nicht, unter anderem, weil

  • sich $wgNamespaceProtection nur auf "edit" und nicht auf "read" anwenden lässt
  • der Namensraum mit "NS_SPECIAL" statt mit "NS_spezial" angegeben werden muss
  • die Nutzungsfunktion "spezial-read" dem System nicht bekannt ist

Die unwirksame Konfiguration:

## Freischalten der Spezialseiten
$wgGroupPermissions['sysop']['restrictusers'] = true;
## SpecialPages nur für Autoren lesbar
$wgNamespaceProtection[NS_spezial] = array('spezial-read');
$wgGroupPermissions['autor']['spezial-read'] = true;

Achtung: Bei MW1.23 sind keine Anpassungen in der Datei "[wikiname]\includes\skins\SkinTemplate.php" vorzunehmen! Erfolgen dennoch Änderungen siehe auch http://nullraffer.de/wiki/index.php?title=Mediawiki_absichern.

Bei MW1.16 waren die Anpassungen im Wiki-Code der Datei "SpecialPage.php" sowie in der Konfigurationsdatei erforderlich. Bei MW1.31/1.27/1.23 heißt die Datei "SpecialPageFactory.php" statt "SpecialPage.php". Die gleichnamige Klasse mit der Funktion "getRestrictedPages(...)" gilt ab MW1.32 als veraltet.

Achtung: Bei MW 1.23 ist der Wiki-Code anders als bei MW 1.16! Wiki-Code bei MW 1.23 im Vergleich zu MW 1.16:

  • Datei "includes\specialpage\SpecialPageFactory.php" statt Datei "includes\SpecialPage.php"
  • Variable "private static $list" statt "static public $mList"
  • Assoziative Array-Elemente haben geänderte Werte, die nicht mehr in Arrays, sondern nur noch als Text-Strings angegeben sind
    • Bereich "Media reports and uploads" ab Zeile 114
    • Bereich "Unlisted / redirects" in Zeile 171
// Media reports and uploads
'Listfiles' => 'SpecialListFiles,
'Filepath' => 'SpecialFilePath',
...
// Unlisted / redirects
'Specialpages' => 'SpecialSpecialpages',
...

Weiterleitungen[Bearbeiten]

Für einige Seiten werden Weiterleitungen eingerichtet. Für eine Übersicht der bestehenden Weiterleitungen siehe bei den Spezialseiten http://193.175.110.91/[wikiverzeichnis]/index.php/Spezial:Weiterleitungen bzw. http://193.175.110.91/[wikiverzeichnis]/index.php/Special:ListRedirects:

Für die Navigation links (Sidebar), den Footer-Bereich und dergleichen gibt es folgende Weiterleitungen:

  • SalzWiki
    • Aktuelles => Startseite#Aktuelles
    • Bibliographie => Special:BibMangerList
    • Forschungsverbund => Informationen zum DFG-Projekt#Projektverbund
    • Hauptseite => Startseite
    • Projektverbund => Informationen zum DFG-Projekt#Projektverbund
    • Willkommen im SalzWiki => Informationen zum DFG-Projekt
    • Über => Informationen zum DFG-Projekt
    • Über SalzWiki => Informationen zum DFG-Projekt
    • Über Salzwiki => Informationen zum DFG-Projekt
    • Diskussion:Hauptseite => Diskussion:Startseite
    • Diskussion:Willkommen im SalzWiki => Diskussion:Informationen zum DFG-Projekt
    • Salzwiki:Forschungsverbund => Informationen zum DFG-Projekt#Projektverbund
    • Salzwiki:Portal => Informationen zum DFG-Projekt
    • Salzwiki:Projektverbund => Informationen zum DFG-Projekt#Projektverbund
    • Salzwiki Diskussion:Portal => Diskussion:Informationen zum DFG-Projekt
    • Hilfe:Variables => Help:Magic words
    • Adm:ToDo-Liste => Salzwiki:ToDo-Liste
  • SaltWiki
    • Literature and Data => Literature and Programs
    • News => Home
    • Project Network => About the project#Research Network
    • Research Network => About the project#Research Network
    • Welcome to SaltWiki => About the project
    • Talk:Welcome to SaltWiki => Talk:About the project
    • Saltwiki:Portal => Home
    • Saltwiki:Research Network => About the project#Research Network
    • Help:Tex/de => Help:TeX/de
    • Help:Variables => Help:Magic words
  • Repository
    • Hauptseite => Repository
    • Main Page => Repository
    • Main Page/de => Repository
    • Repository:About => VRE/Repository

Sidebar anpassen[Bearbeiten]

Logo-Hyperlink[Bearbeiten]

Die Seite, die beim Klick auf das Logo aufgerufen werden soll, wird in der Seite "MediaWiki:Mainpage" angegeben.

Navigation links mit 2 Varianten[Bearbeiten]

Es gibt zwei Varianten:

  • die Standard-Variante für
    • nicht-angemeldete Gäste, welche Wiki-Seiten nur ansehen können
    • angemeldete Standard-User
  • die Autor-Variante für
    • Autor/inn/en
    • Administrator/inn/en
    • Forscher/innen
Navigation links Standard-Variante[Bearbeiten]

Die Standard-Variante ist zu erreichen über:
http://193.175.110.91/[wikiverzeichnis]/index.php/MediaWiki:Sidebar
https://[wiki-domain]/index.php/MediaWiki:Sidebar

<!-- Salzwiki -->
*navigation
**Mainpage|Startseite
<del>**Salzwiki:Portal|SalzWiki:Portal</del>
<!--**Informationen zum DFG-Projekt|SalzWiki-Portal-->
<!--**Aktuelles|Aktuelles-->
Special:BibManager_Overview|Bibliographie
**Glossar|Glossar
<!--**Autorenanmeldung|Autorenanmedlung-->
**Redaktion SalzWiki|Redaktion
**Autoren/innen_von_SalzWiki|Autor/inn/en
**recentchanges-url|Recentchanges
**special:contact|Kontakt
**Hilfe:Contents/de|Hilfe

*SEARCH
<!--*Umfrage-->
<!--**http://www.worktogether51.net/gc/wsl.php?I=Y4TTY7YTOTTYT47TTUTTBT4NTTYT4BT40 |Ihre Meinung zu SalzWiki-->

*TOOLBOX

*andere Sprachen
**https://www.saltwiki.net/|English
<-- Repositorium -->
*Navigation 
**Hauptseite|Home

*Other Wikis
**https://www.salzwiki.de/|SalzWiki
**https://www.saltwiki.net/|SaltWiki
<-- Saltwiki -->
* navigation
** mainpage|Home
<!--** portal-url|SaltWiki-Portal-->
<!--** About_the_project|SaltWiki Portal-->
<!--** News|News-->
** Special:BibManager_Overview|Bibliography|Literature
** Glossary|Glossary
** Editorial Board|Editorial Board
** Authors in SaltWiki|Authors
** Special:Contact|Contact
** Help:Contents|Help

* SEARCH

* TOOLBOX

*Languages
**https://www.salzwiki.de/|German
Navigation links Autor-Variante[Bearbeiten]

Die Autor-Variante muss durch Erstellung einer neuen Seite (Adminrechte erforderlich) erfolgen:

  • Erst folgende Adresse im Browser eingeben:
    http://193.175.110.91/[wikiverzeichnis]/index.php/MediaWiki:Autor_sidebar
    https://[wiki-domain]/index.php/MediaWiki:Autor_sidebar
  • Danach mit Karteikarte "Erstellen" folgenden Quelltext eingeben:
<!-- Salzwiki -->
*Navigation
**Mainpage|Startseite
<del>**SalzWiki:Portal|SalzWiki:Portal</del>
<!--**Informationen zum DFG-Projekt|SalzWiki-Portal-->
<!--**Aktuelles|Aktuelles-->
<!--**http://193.175.110.91/repository/index.php/Main_Page |Repositorium-->
**https://repository.hawk-hhg.de/ |Repositorium
**Spezial:Bibliographieeinträge_verwalten|Bibliographie
**Glossar|Glossar
**Redaktion_SalzWiki|Redaktion
**Autoren/innen von SalzWiki|Autor/inn/en
**recentchanges-url|recentchanges
**special:contact|Kontakt
**help:contents/de|help
<!--
*Umfrage
**http://www.worktogether51.net/gc/wsl.php?I=Y4TTY7YTOTTYT47TTUTTBT4NTTYT4BT40ON84RMK758E |Ihre Meinung als Autor zu SalzWiki 
**http://www.worktogether51.net/gc/wsl.php?I=Y4TTY7YTOTTYT47TTUTTBT4NTTYT4BT40 |Ihre Meinung als Nutzer zu SalzWiki -->

* Autor/inn/en-Seiten
**Autoren|Richtlinien/Übersichten
**Nutzungsrechte|Nutzungsrechte
**Review|Review
**Kategorie|Kategorienbaum
**Vorlagen|Vorlagen
<!--**sandkasten|Sandbox-->

*SEARCH

*TOOLBOX

*Andere Sprachen
**https://www.saltwiki.net/ |English


<-- Saltwiki -->
*Navigation
**Mainpage|Home
<!--**Saltwiki:Community_portal|SaltWiki:Portal-->
<!--**About_the_Project|SaltWiki Portal-->
<!--**News|News-->
<!--**http://193.175.110.91/repository/index.php/Main_Page |Repository-->
**https://repository.hawk-hhg.de/ |Repository
**Special:BibManager_Overview|Bibliography
**Glossary|Glossary
**Editorial_Board|Editorial Board
**Authors in Saltwiki|Authors
**recentchanges-url|recentchanges 
**Special:Contact|Contact
**Help:Contents|Help
<!--**Helppage|help-->

* Author Pages
**Authors_Page|Guidelines
**Rights|Rights
**Review|Review
**categories|Category tree
**Templates|Templates
<!--**sandbox|Sandbox-->

*SEARCH

*TOOLBOX

*Languages
**https://www.salzwiki.de/ |German


<-- Repositorium -->
*Navigation
<!--*Research Environment-->
**Mainpage|Home
<!--**Repository Portal|Repository Portal-->
**News|News
**Projekte|Projects
**Communication|Communication
**Publications|Publication

* 
**Special:BibManager_Overview|Bibliography
**terminology|Glossary
**Category:Author|Authors' Contents
**recentchanges-url|Recent changes
**Special:Contact|Contact
**Help:Contents|Help

* author pages
**Rights|Rights
**Kategorienbaum|Category tree

* other wikis
**Vorlagen|Templates
**https://www.salzwiki.de/ |SalzWiki
**https://www.saltwiki.net/ |SaltWiki

*SEARCH

*TOOLBOX

*LANGUAGES

Navigationsbereich mit Einschränkungen versehen[Bearbeiten]

Um die linke Navigationsleiste abhängig von der Gruppenzugehörigkeit in der Menüauswahl zu beschränken werden folgende "Hooks" statt Änderungen am Wiki-Code verwendet:

Änderungen am Wiki-Code der Datei "[wikiname]\includes\Skin.php" für die zu verwendende Sidebar-Variante sind nicht mehr erforderlich, da mit dem "Hook" die Auswahl für die Menü-Variante je nach Gruppenzugehörigkeit festgelegt werden kann.

Änderungen am Wiki-Code der Datei "[wikiname]\skins\MonoBook\MonoBookTemplate.php" für den Umfang der Werkzeuge sind nicht mehr erforderlich, da mit dem "Hook" die Einschränkungen bei den Werkzeugen je nach Gruppenzugehörigkeit festgelegt werden können.

Sidebar-Einschränkung[Bearbeiten]

Mit den nachfolgend beschriebenen Änderungen gibt es zwei Sidebar-Varianten (Menü-Varianten links). Welche Variante angezeigt wird, richtet sich dabei nach der Gruppen-Zugehörigkeit.

Bei MW1.31/1.27/1.23 können die Änderungen mit einem "Hook" in der Datei "LocalSettings.php" vorgenommen werden und sind für alle Layouts ("Skins") gültig, während bei MW1.16 Wiki-Code in der Datei "Skin.php" des jeweiligen Layouts angepasst wurde und sich nur auf den jeweiligen "Skin" auswirkte.

Sidebar-Anpassungen mit "Hook"[Bearbeiten]

Der "Hook" für die Auswahl der Sidebar-Variante heißt "SkinBuildSidebar" und steht seit MW1.14 zur Verfügung.

In der Datei "LocalSettings.php" wird oberhalb der Anpassungen für die "Toolbox" (Werkzeuge) folgender Code eingefügt:

#### Beginn SIDEBAR je nach Gruppenzugehörigkeit
$wgHooks['SkinBuildSidebar'] = 'groupspecificSidebar';
function groupspecificSidebar( $skin, &$sidebar ) {
  global $wgUser;
  $groups = $wgUser->getEffectiveGroups();
  $sidebar = array();
  if (in_array("autor", $groups) || in_array("Administrator", $groups) || in_array("forschung", $groups)) {
    $skin->addToSidebar($sidebar, 'autor_sidebar');
  }
  else{
    $skin->addToSidebar($sidebar, 'sidebar');
  }
  return true;
};
#### Ende SIDEBAR je nach Gruppenzugehörigkeit

Sidebar-Anpassungen ohne "Hook" (Wiki-Code)[Bearbeiten]

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

In der Datei "includes\Skin.php" in der Funktion "function buildSidebar()" in der zweiten Zeile die globale Variable "$wgUser" mit Kommentar hinzufügen, um später die Gruppenrechte abfragen zu können:

<!--MW1.23, Z.1249-->
global $wgMemc, $wgEnableSidebarCache, $wgSidebarCacheExpiry, $wgUser; // for HAWK HHG $wgUser added

Nach der Zeile mit "$bar = array();" (MW1.23 Z.1263, MW1.16 Z.2085) folgende Zeile auskommentieren:

#$this->addToSidebar( $bar, 'sidebar' ); // changed for HAWK HHG 2015-12-22

und folgenden Code einfügen:

// new for HAWK HHG 2015-12-22
$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' ) );
  $this->addToSidebar( $bar, 'autor_sidebar' );
} else {
  //$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );
  $this->addToSidebar( $bar, 'sidebar' );
}

Die Zeile "$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );" muss auskommentiert oder gelöscht werden. Die explode-Funktion wird als Wiki-Code in "addToSidebarPlain(...)" verwendet.

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

Sollte es danach PHP-Warnungen wie "Warning: Call-time pass-by-reference has been deprecated ..." geben, gibt es folgende vorübergehende Notlösung: In der Datei "php.ini" in Zeile 165 "allow_call_time_pass_reference = On" statt "Off" setzen. Diese Möglichkeit gilt als veraltet und wird in Zukunft nicht mehr von PHP unterstützt werden, so dass der oben beschriebene Code der Funktion dann geändert werden muss!

Werkzeuge/Toolbox[Bearbeiten]

Änderungen an der Datei "skins\MonoBook\MonoBookTemplate.php" sind bei MW1.31/1.27/1.23 nicht mehr erforderlich, da mit einem "Hook" namens "BaseTemplateToolbox" die Einschränkungen bei den Werkzeugen je nach Gruppenzugehörigkeit in der Datei "LocalSettings.php festgelegt werden können.

Anpassungen mittels "Hook" in der Datei "LocalSettings.php" wirken sich auf alle "Skins" aus, wohingegen sich Anpassungen in der Datei "MonoBookTemplate.php" nur auf das Layout "MonoBook" auswirken, wenn nicht in der Datei "[wikiname]\includes\skins\SkinTemplate.php" Änderungen entsprechend denen für die Spezialseiten erfolgen.

Werkzeuge-Anpassung mit "Hook"[Bearbeiten]

Der verwendete "Hook" für den Umfang der zur Verfügung stehenden Werkzeuge heißt "BaseTemplateToolbox" und steht seit MW1.18 zur Verfügung.

In der Datei " in LocalSettings.php" ist folgender Code einzufügen:

#### Beginn TOOLBOX je nach Gruppenzugehörigkeit nur 'print' oder alles
$wgHooks['BaseTemplateToolbox'][] = 'groupspecificToolbox';
function groupspecificToolbox( BaseTemplate $baseTemplate, array &$toolbox ) {
  global $wgUser;
  $groups = $wgUser->getEffectiveGroups();
  if (!in_array("autor", $groups) && !in_array("Administrator", $groups) && !in_array("forschung", $groups)) {
    foreach($toolbox as $k => $v_array){
      if($k!=="print" && isset($toolbox[$k])){
        unset($toolbox[$k]);
      }
    }
  }
  return true;
}
#### Ende TOOLBOX je nach Gruppenzugehörigkeit nur 'print' oder alles

Werkzeuge-Anpassungen ohne "Hook" (Wiki-Code)[Bearbeiten]

Die Sidebar im Bereich "Werkzeuge" wird mit einem Eingriff in den Wiki-Code bei "skins/MonoBook.php" für alle Gruppen außer "autor", "admin" und "forschung" manipuliert. Hierzu wird in der Funktion "toolbox()" Z.254ff die Variable "global $wgUser;" eingefügt und bei "foreach" die Z.262 bei "$this->makeListItem" mit einer Bedingung versehen:

function toolbox();
  global $wgUser; // Für HAWK HHG
  $groups = $wgUser->getEffecitveGroups(); // Für HAWK HHG
  ...
  foreach ( $this->getToolbox() as $key => $tbitem ) {
    // Für HAWK HHG: Alle Werkzeuge für die Gruppen autor, Administrators und forschung, sonst nur Werkzeug "Druckversion"
    if(in_array("autor", $groups) || in_array("Administrators", $groups) || in_array("forschung", $groups) || $key==="print"){
      <?php echo $this->makeListItem( $key, $tbitem); ?>
    }
  }

Achtung: Code-Anpassung muss in "skins/MonoBook.php" nach jedem mediawiki-Update auf Vorhandensein und Funktion überprüft werden!

Eventuell muss auch die Datei "\includes\SkinTemplate.php" bei der Funktion "buildNavUrls()" in den Zeilen 1247 und 1262 angepasst werden, um Datei-Uploads auszublenden - siehe http://nullraffer.de/wiki/index.php?title=Mediawiki_absichern:

global $wgUploadNavigationUrl;
global $wgUser; // eingefügt 2015-12-04 für HAWK HHG
...
// Bedingung eingefügt 2015-12-04 für HAWK HHG
if(!$wgUser->isAnon()){
  $nav_urls['specialpages'] = array( 'href' => self::makeSpecialUrl( 'Upload' ) );
}
...

Werkzeuge-Schlüsselwörter[Bearbeiten]

  • Links auf diese Seite: key = whatlinkshere
  • Änderungen an verlinkten Seiten: key = recentchangeslinked
  • Datei hochladen: key = upload
  • Spezialseiten: key = specialpages
  • Druckversion: key = print
  • Permanenter Link: key = permalink
  • Seiteninformationen: key = info

sichtbare Toolbox-Menüpunkte[Bearbeiten]

  • SalzWiki, Repositorium: alle Gruppen und User
    • Druckversion
  • SaltWiki: alle Gruppen und User
    • Printable version

ausgeblendete Toolbox-Menüpunkte[Bearbeiten]

  • SalzWiki: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
    • "Links auf diese Seite" (Special:WhatLinksHere/Main_Page)
    • "Änderungen an verlinkten Seiten" (Spezial:%C3%84nderungen_an_verlinkten_Seiten)
    • "Hochladen" (Special:Upload)
    • "Spezialseiten" (Special:SpecialPages)
    • "Permanenter Link" (Main_page&oldid=921)
    • "Seiteninformationen" ([Seitentitel]&action=info])
  • SaltWiki: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
    • "What links here" (Special:WhatLinksHere/Main_Page)
    • "Related changes" (Special:RecentChangesLinked)
    • "Hochladen" (Special:Upload)
    • "Spezialseiten" (Special:SpecialPages)
    • "Permanent link" (Main_page&oldid=921)
    • "Page information" ([Seitentitel]&action=info])
  • Repository: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
    • "Links auf diese Seite" (Special:WhatLinksHere/Main_Page)
    • "Änderungen an verlinkten Seiten" (Spezial:%C3%84nderungen_an_verlinkten_Seiten)
    • "Datei Hochladen" (Special:Upload)
    • "Spezialseiten" (Spezial:Spezialseiten)
    • "Permanent link" (Main_page&oldid=9522)
    • "Seiteninformationen" ([Seitentitel]&action=info])

Überschrift der Hauptseite/Mainpage ändern[Bearbeiten]

Die Überschrift ist auf der Systemseite "Mediawiki:Mainpage" eingetragen und muss dort geändert werden. Die Überschrift, die per Voreinstellung Main Page (Hauptseite in der deutschen Übersetzung) heißt, ist in die entsprechende Titelzeile zu ändern.

Repositorium-Dateien im SalzWiki[Bearbeiten]

Für das wiki-übergreifende Hochladen und Anzeigen von Media-Dateien sind in der Datei "LocalSettings.php" folgende Variablen anzupassen:

  • $wgUploadNavigationUrl
  • $wgSharedUploadPath
  • $wgRepositoryBaseUrl
Logo Wiki-Header-Leiste
Datei Diskussion auf einem gemeinsam genutzten Medienarchiv ansehen $wgRepositoryBaseUrl
Navigation


Suche

Werkzeuge
 Datei hochladen
 $wgUploadNavigatonUrl

Abschnitt "Datei"
  • bei vorhandener Quelle:
    • Datei-Verweis: $wgSharedUploadPath
    • Dateibeschreibungsseite-Verweis: $wgRepositoryBaseUrl
  • bei nicht gefundener Quelle
    • moved-Verweis: $wgRepositoryBaseUrl
Abschnitte aus anderem Wiki mittels $wgRepositoryBaseUrl
  • "Metadaten"
  • "Summary"
  • "Licensing" aus Vorlage im anderen Wiki mit relativem Pfad im Verweis für Icons
Abschnitt "Dateiversionen" mit Verweis zu "Version vom": $wgSharedUploadPath
Abschnitt "Dateiverwendung" mit Datei-Verweis: $wgRepositoryBaseUrl
Wiki-Footer-Leiste

Hochladen von Dateien[Bearbeiten]

Das Hochladen von Dateien geschieht immer in das Repositorium. Hierfür sind Anpassungen in der Konfigurationsdatei erforderlich.

Konfigurationsdatei anpassen[Bearbeiten]

Für das Hochladen ins Repositorium über "Werkzeuge => Datei hochladen" bzw. "tools => Upload file" sind folgende Änderungen in der Datei "LocalSettings.php" des SalzWikis bzw. SaltWikis vorzunehmen, siehe auch https://www.mediawiki.org/wiki/Manual:$wgUploadNavigationUrl:

## für $wgUploadNavigationUrl, $wgSharedUploadPath und $wgRepositoryBaseUrl
## bei Verwendung einer IP-Adresse statt Domain-Adresse
#$url_repository = "/repository/";
## bei Verwendung von Domain-Adresse statt IP-Adresse ohne Protokoll wg. Inhalten bei "https"
$url_repository = "repository.hawk-hhg.de/";
...
## relative IP-Adresse "..._draft"
#$wgUploadNavigationUrl = "/repository_draft/index.php/Special:Upload";
#$wgUploadNavigationUrl = $url_repository."index.php/Special:Upload";
## bei Verwendung von Domain-Adresse statt IP-Adresse mit Protokoll
$wgUploadNavigationUrl = $protokoll."://".$url_repository."index.php/Special:Upload";
$wgEnableUploads       = false;  ##damit kein Upload in SalzWiki bzw. SaltWiki möglich ist

Zudem sind folgende Änderungen in der Datei "LocalSettings.php" des Repositoriums vorzunehmen:

$wgEnableUploads       = true;
## Erlaubte Dateitypen
$wgFileExtensions = array('avi','bib','doc','docx','gif','jpeg','jpg','mov','mpeg','odt','ods','oga','ogg','ogv',
'pdf','png','svg','tif','tiff','txt','xls','xlsx','xml');
Text der Upload-Spezialseite[Bearbeiten]

Es gibt folgende MW-Seiten für den Text der Seite "Special:Upload":

  • MediaWiki:Uploadtext (Standard "en")
  • MediaWiki:Uploadtext/de
  • MediaWiki:Uploadtext/de-formal
  • MediaWiki:Uploadtext/[Sprachenkürzel] (andere Sprachen)

In den Textdefinitionen unter "...\[wikiname]\languages\i18n\" gibt es ebenfalls Texte für die Uploadseite, welche scheinbar nicht verwendet werden; diese Texte befinden sich in den json-Dateien im Element "uploadtext":

  • en.json Z.1286
  • de.json Z.1290
  • de-formal.json Z.176

Übergreifende Darstellung[Bearbeiten]

Für den Zugriff vom SalzWiki bzw. SaltWiki auf Dateien und deren Seiten im Repositorium mittels "http" bzw. "https" durch anonyme User sind Anpassungen wie nachfolgend beschrieben erforderlich.

Da alle Dateien wie z.B Fotos mit den dazugehörigen Metadaten und Lizenzhinweisen im Repositorium liegen, muss vom SalzWiki aus der Zugriff nicht nur auf die Dateien, sondern auch auf die dazugehörigen Metadaten und Lizenzhinweise erfolgen.

Bei Seiten-Aufrufen mit https wird die Seite aus dem Repositorium mit den Metadaten, der Zusammenfassung und den Lizenzhinweisen ignoriert.

Anzupassende Dateien:

  • Konfigurationsdatei "LocalSettings.php" des SalzWikis bzw. SaltWikis
  • PHP-Konfigurationsdatei "php.ini"
Wiki-Konfigurationsdatei[Bearbeiten]

Findet das Salzwiki eine Datei oder ein Bild nicht im eigenen Wiki, schaut es mit Hilfe von Shared-Einstellungen automatisch im Repositorium nach und sucht dort. Wird auf ein englischsprachiges Repositorium verwiesen, ist in der Wiki-Konfigurationsdatei "Datei:" durch "File:" zu ersetzen, damit die Metadaten ausgelesen werden können.

Zusammenhang zwischen Variablen und Darstellung[Bearbeiten]
  • $wgSharedUploadPath
    • Abschnitt "Datei": Verweis zur Datei
  • $wgRepositoryBaseUrl
    • Karteikartenreiter "Auf einem gemeinsam genutzten Medienarchiv ansehen" bzw. "View on a shared repository"
    • Abschnitt "Datei": Verweis zur Dateibeschreibungsseite, anderenfalls Verweis "moved"
    • Abschnitt "Dateiversionen": Verweis zur "Version vom"
    • Abschnitt "Dateiverwendung": Verweis zur Ursprungsdatei der erzeugten Duplikatdatei
    • Zusätzliche Inhalte (Metadata, Summary, Licencing) der Datei-Seite im Repositorium benötigen "http" als Base-URL-Protokoll
Anpassungen in der Konfigurationsdatei[Bearbeiten]
## Zugriff auf das Repositorium
$wgFetchCommonsDescriptions  = true;
## für $wgUploadNavigationUrl, $wgSharedUploadPath und $wgRepositoryBaseUrl
## bei Verwendung von IP-Adresse statt Domain-Adresse
#$url_repository = "/repository/";
## bei Verwendung von Domain-Adresse statt IP-Adresse ohne Protokoll wg. Inhalten bei "https"
$url_repository = "repository.hawk-hhg.de/";
...
## shared uploads: Das Laden der Daten erfolgt immer aus dem Repositorium
## Damit automatisch im Repository nach "Dateien" gesucht wird:
$wgUseSharedUploads = true;
## bei Verwendung von IP-Adresse statt Domain-Adresse
#$wgSharedUploadPath = "/repository/images";
#$wgSharedUploadPath = $url_repository."images";
## bei Verwendung von Domain-Adresse statt IP-Adresse mit Protokoll
$wgSharedUploadPath = $protokoll."://".$url_repository."images";
$wgSharedUploadDirectory = "D:/xampp/htdocs/repository/images";
$wgHashedSharedUploadDirectory = true;
$wgSharedUploadDBname = "repository";
$wgSharedUploadDBprefix  = "sr_";
## IP-Adresse mit Protokoll "http" wg. fehlendem Serverzertifikat
#$wgRepositoryBaseUrl = 'http://193.175.110.91/repository/index.php/Datei:';  
#$wgRepositoryBaseUrl = 'http://'.$_SERVER['SERVER_NAME'].'/repository/index.php/File:';
#$wgRepositoryBaseUrl = 'http://'.$_SERVER['SERVER_ADDR'].'/repository/index.php/File:';
## Domain-Adresse mit Protokoll "http" bei "https"-Aufruf wg. Seiteninhalten mit CC-Icons u. Ä., 2018-02-06
#$wgRepositoryBaseUrl = "http://".$url_repository."index.php/Datei:";
$wgRepositoryBaseUrl = "http://".$url_repository."index.php/File:";
## Verwendung der Klasse ForeignDBRepo
$wgForeignFileRepos[] = array(
 'class' => 'ForeignDBRepo',
 'name' => '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
);
PHP-Konfigurationsdatei[Bearbeiten]

Die Funktion "fopen()" muss ausgeführt werden können, um Beschreibungsdaten wie Metadaten und Zusammenfassungen sowie Lizenzhinweise vom Repositorium zu holen. Hierfür muss in der PHP-Konfigurationsdatei "php.ini" in Zeile 523 folgende Einstellung vorhanden sein:

allow_url_fopen = On
Grafiken für Lizenz[Bearbeiten]

Die Grafiken für die CC-Lizenz werden im Repositorium in der Vorlage "CC-by-nc-nd" verwendet und haben eine interne Adresse. Diese Lizenz-Grafiken werden bei Aufrufen mit "http" und "https" nur im Repositorium, aber nicht im SalzWiki bzw. SaltWiki angezeigt, wenn das Repositorium mit einer Domain-Adresse statt mit einer IP-Adresse konfiguriert ist. Ein Änderung in der Interwiki-Tabelle von "ja" zu "nein" bei "lokales Wiki" bewirkt nichts.

Für Seiten im SalzWiki und SaltWiki, die Media-Dateien des Repositoriums verwenden, sind für http-/https-Aufrufe deshalb folgende Unterverzeichnisse und Dateien aus dem Repositorium in die beiden anderen Wikis zu kopieren:

  • [wikiverzeichnis]\images\thumb\
    • 0\07\Pict-nd.png\30px-Pict-nd.png
    • 1\1f\Pict-nc.png\30px-Pict-nc.png
    • d\d6\Pict-by.png\30px-Pict-by.png

MediaWiki-Datei anpassen (Wiki-Code)[Bearbeiten]

Die nachfolgend beschriebene Vorgehensweise erlaubt es, auf ein für den normalen User gesperrtes Wiki wie das Repositorium zuzugreifen und die Metadaten der Abbildungen/Dateien auszulesen und in SalzWiki widerzugeben. Nach jedem mediawiki-Update muss die Datei "includes/httpFunctions.php" auf Änderungen überprüft werden!

  • Zunächst ist die Datei "httpFunctions.php" im Verzeichnis includes von SalzWiki sowohl für https als auch für die Erweiterung "Snoopy" zu modifizieren, siehe https://phabricator.wikimedia.org/T27563. Dazu wird von der Datei eine Kopie "httpFunctions_original.php" gespeichert; danach wird folgender Code angepasst:
    • für die Mediawiki-Version 1.23:
--- HttpFunctions.php	2010-06-09 05:49:34.000000000 +0200
+++ HttpFunctions_sw.php	2018-01-29
@@ -131,1 +131,1 @@
-		if ( preg_match( '!^http://([\w.-]+)[/:].*$!' ) ) {
+		if ( preg_match( '!^http://([\w.-]+)[/:].*$!' ) || preg_match( '!^https://([\w.-]+)[/:].*$!' ) ) {
@@ -790,11 +790,97 @@
-		$curlRes = curl_exec( $curlHandle );
-		if ( curl_errno ($curlHandle ) == CURLE_OPERATION_TIMEOUTED ) {
-			$this->status->fatal( 'http_timed_out', $this->url );
-		} elseif ($curlRes === false ) {
-			$this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) );
-		} else {
-			$this->headerList = explode( "\r\n", $this->headerText );
-		}
-
-		curl_close( $curlHandle );
-
+		/*  Neuer Code für "Snoopy" ungeprüft bei MW1.23 übernommen von MW1.16
+		 *  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;
	}
}

**für die Mediawiki-Version '''16.0''':
<pre>
--- HttpFunctions.php	2010-06-09 05:49:34.000000000 +0200
+++ HttpFunctions_new.php	2010-11-22 17:09:33.000000000 +0100
@@ -758,14 +758,97 @@
-		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 {

Es wurden hauptsächlich Anpassungen gemacht, 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.

  • Die geänderte Datei "httpFunctions.php" als Sicherung für Mediawiki-Updates kopieren und speichern als "httpFunctions_sw.php".
  • Die Erweiterung "Snoopy-1.2.4" von "http://sourceforge.net/projects/snoopy/" herunterladen, zip-Dateien auspacken und die Erweiterung in das Verzeichnis "extensions" des SalzWikis bzw. Saltwikis kopieren.
  • Das Modul "curl" muss beim Apache-Webserver aktiviert sein; dazu kommentiert man in der Datei "D:\xampp\php\php.ini" die folgende Zeile ein:
extension=php_curl.dll 

Den Apache-Dienst über das XAMPP-Control-Panel neu starten, damit die Änderungen wirksam werden.

  • Der Zugriff auf das Repositorium wird gesperrt durch folgenden Eintrag in der Datei "LocalSettings.php" des Repositoriums:
$wgGroupPermissions['*']['read'] = false;
  • Um den Zugriff auf das geschützte Repositorium durchführen zu können, ist folgende Konfiguration der Datei "LocalSettings.php" des Salzwikis bzw. Saltwikis vorzunehmen:
$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 Zugriffe bei hoher Last verlangsamen kann.
$wgShowAuthenticatedRepositoryError - Gibt Fehlermeldungen in die Log Dateien. Für den Live Betrieb bitte abstellen.

Vorlagen[Bearbeiten]

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

Die einzelnen Vorlagen sind im Namensraum "Vorlage" bzw. "Template" 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. Die vorhandene Vorlage "Languages" wird ersetzt durch eine eigene Vorlage.

Für Vorlagen mit Beispieltexten unter Verwendung des Vorlagennamens im "noinclude"-Bereich siehe weiter unten bei Code-Probleme und deren Lösungen, Abschnitt "Timeout durch Template-Name im Template-Text" – betrifft insbesondere die Erweiterung "AccessControl".

  • Vorlagen für SalzWiki
    • FreeForTranslation
  • Vorlagen für SalzWiki und Saltwiki
    • Infobox_Salz bzw. Infobox_Salt
    • MetadatenFoto_upload (wird im Artikel Vorlagen/Templates verwendet)
  • Vorlagen für das Repositorium
    • MetadatenFoto_upload
    • MetadatenDaten_upload
    • MetadatenLiteratur_upload
    • MetadatenProben_upload
    • MetadatenText_upload
    • Untersuchungsmethoden
  • Lizenzvorlagen: Eine neue Kategorie "Kategorie:Lizenzenvorlagen" erstellen mit folgenden Vorlagen:
    • CC-by-nc-nd,CC-by-nc-nd/de
    • CC-by-nc-sa,CC-by-nc-sa/de
    • PD
    • PD Help Page, PD Help Page/de, PD Help Page/fr
    • GFDL,GFDL/de (nur im Repositorium)

Alle anderen Vorlagen wurden beim Einbinden der Hilfeseiten bzw. Extensions eingestellt.

Lizenzen-Auswahl 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)

Editor (JavaScript)[Bearbeiten]

Achtung: Alle üblichen Editoren zur Bearbeitung von Seiteninhalten funktionieren nur mit JavaScript. Dies gilt auch für die Erweiterung WikiEditor.

Standard-Editor (Wiki-Code, JS)[Bearbeiten]

Achtung: Funktioniert nur bei Browsern mit aktiviertem JavaScript und muss in den 3 nachfolgend genannten Dateien und dem Grafiken-Verzeichnis nach jedem MediaWiki-Update auf Vorhandensein und Änderungen überprüft werden!

Folgende Dateien werden vom Standard-Editor verwendet:

  • "/includes/EditPage.php"
  • Symbole/Grafiken: "skins/common/images/..."
  • "/languages/i18n/..."

Vorhanden sind folgende Funktionen:

  • bold, italic
  • link (wiki), ext. link
  • headline size 2
  • file embedded, media
  • nowiki, signatur
  • horizontal line

Das Schaltflächen-Symbol für Weiterleitungen ist bei MW 1.23 im Gegensatz zu MW 1.16 nicht vorhanden und wird für die Salz-Wikis auch nicht mehr durch Anpassungen hinzugefügt.

Das Schaltflächen-Symbol für mathematische Formeln wird von der Erweiterung "Math" hinzugefügt, u. a. in folgenden Dateien:

  • "/extensions/Math/Math.hooks.php" für die Modul-Aktivierung von "math.editbuttons"
  • "/extensions/Math/modules/ext.math.editbuttons.js"
  • "/extensions/Math/i18n/de.json" für Texte zur Schaltfläche

Ergänzt werden sollen folgende Funktionen (siehe "Anpassungen" weiter unten):

  • Zeilenumbruch
  • Durchgestrichen
  • Hoch gestellt
  • Tief gestellt
  • Zitat
  • Fußnoten-Verweis
  • Versteckter Kommentar
  • Tabelle einfügen
Anpassungen[Bearbeiten]

Für Anpassungen siehe auch https://www.mediawiki.org/wiki/Manual:Custom_edit_buttons#Classic_edit_toolbar

  • neues Unterverzeichnis "/editor_default_sw/" für Grafiken der Schaltflächen
  • neue Einträge in den Sprachdateien im Verzeichnis "/languages/i18n/"
  • Code-Anpassungen in der Core-Datei "EditPage.php"

Es wird ein neues Unterverzeichnis "editor_default_sw" im Verzeichnis "/skins/common/images/" erstellt, da vom Wiki-Code für den Editor aus diesem Verzeichnis die Grafiken geholt werden. In das neu erstellte Verzeichnis werden folgende Grafiken aus der älteren Wiki-Installation oder von https://commons.wikimedia.org/wiki/Mediawiki_edit_toolbar kopiert und gespeichert:

  • "Button_Bibliogryphy.png" umbenennen zu "Button_bibliography.png"
  • "Button_blockquote.png"
  • "Button_enter.png"
  • "Button_hide_comment.png" umbenennen zu "Button_hidden_comment.png"
  • "Button_insert_table.png"
  • "Button_lower_letter.png" umbennen zu "Button_sub_letter.png"
  • "Button_redirect.png"
  • "Button_reflink.png"
  • "Button_small.png"
  • "Button_strike.png"
  • "Button_upper_letter.png" umbenennen zu "Button_sup_letter.png"


de.json Z.626 unter "hr_tip" wie folgt ergänzen und anschließend eine Kopie der Datei als "de_SW.json" speichern:

"enter_tip": "Zeilenumbruch",
"strike_sample": "durchgestrichener Text",
"strike_tip": "Durchgestrichen",
"sup_letter_sample": "hoch gestellter Text",
"sup_letter_tip": "Hoch gestellt",
"sub_letter_sample": "tief gestellter Text",
"sub_letter_tip": "Tief gestellt",
"blockquote_sample": "Zitat",
"blockquote_tip": "Zitierter Text",
"reflink_sample": "Fußnoten-Text",
"reflink_tip": "Fußnoten-Verweis",
"hidden_comment_sample": "Kommentar",
"hidden_comment_tip": "Versteckter Kommentar",
"insert_table_sample": "! Kopf1\n! Kopf2\n! Kopf3\n|-\n| Reihe1 Spalte1\n| Reihe1 Spalte2\n| Reihe1 Spalte3\n|-\n| Reihe2 Spalte1\n| Reihe2 Spalte2\n| Reihe2 Spalte3",
"insert_table_tip": "Tabelle einfügen (Tabellenkopf, 3 Spalten, 2 Reihen)",
"redirect_sample": "Seitenname",
"redirect_tip": "Weiterleitung",
"bibliography_sample": "Nachname:2017",
"bibliography_tip": "Literaturzitat einfügen",

en.json Z.593 unter "hr_tip" wie folgt ergänzen und anschließend eine Kopie derDatei als "en_SW.json" speichern:

"enter_tip": "Line break",
"strike_sample": "Strike-through text",
"strike_tip": "Strike",
"sup_letter_sample": "Superscript text",
"sup_letter_tip": "Superscript",
"sub_letter_sample": "Subscript text",
"sub_letter_tip": "Subscript",
"blockquote_sample": "Block quote",
"blockquote_tip": "Quoted text",
"reflink_sample": "Footnote text",
"reflink_tip": "footnote reference",
"hidden_comment_sample": "Comment",
"hidden_comment_tip": "Hidden comment",
"insert_table_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",
"insert_table_tip": "Insert table (table head, 3 columns, 2 rows)",
"redirect_sample": "Page name",
"redirect_tip": "Redirect",
"bibliography_sample": "Surname:2017",
"bibliography_tip": "Insert literature blockquote",


Nachfolgenden Code in der Datei "/includes/EditPage.php" bei der Array-Variablen "$Toolarray" (ab Zeile 3385) am Ende einfügen (Z. 3475); hierbei das erste Komma nicht vergessen.

 ,
 array(
  'image'  => "editor_default_sw/Button_enter.png",
  'id'     => 'mw-editbutton-enter',
  'open'   => '<br />',
  'close'  => '',
  'sample' => '',
  'tip'    => wfMessage( 'enter_tip' )->text()
 ),
 array(
  'image'  => "editor_default_sw/Button_strike.png",
  'id'     => 'mw-editbutton-strike',
  'open'   => '<s>',
  'close'  => '</s>',
  'sample' => wfMessage( 'strike_sample' )->text(),
  'tip'    => wfMessage( 'strike_tip' )->text()
 ),
 array(
  'image'  => "editor_default_sw/Button_sup_letter.png",
  'id'     => 'mw-editbutton-sup-letter',
  'open'   => '<sup>',
  'close'  => '</sup>',
  'sample' => wfMessage( 'sup_letter_sample' )->text(),
  'tip'    => wfMessage( 'sup_letter_tip' )->text()
 ),
 array(
  'image'  => "editor_default_sw/Button_sub_letter.png",
  'id'     => 'mw-editbutton-sub-letter',
  'open'   => '<sub>',
  'close'  => '</sub>',
  'sample' => wfMessage( 'sub_letter_sample' )->text(),
  'tip'    => wfMessage( 'sub_letter_tip' )->text()
 ),
 array(
  'image'  => "editor_default/Button_redirect.png",
  'id'     => 'mw-editbutton-redirect',
  'open'   => "#REDIRECT[[",
  'close'  => ']]',
  'sample' => wfMessage( 'redirect_sample' )->text(),
  'tip'    => wfMessage( 'redirect_tip' )->text(),
  'key'    => 'F'
 ),
 array(
  'image'  => "editor_default_sw/Button_reflink.png",
  'id'     => 'mw-editbutton-reflink',
  'open'   => '<ref>',
  'close'  => '</ref>',
  'sample' => wfMessage( 'reflink_sample' )->text(),
  'tip'    => wfMessage( 'reflink_tip' )->text()
 ),
 array(
  'image'  => "editor_default_sw/Button_blockquote.png",
  'id'     => 'mw-editbutton-blockquote',
  'open'   => '<blockquote>'."\n",
  'close'  => "\n".'</blockquote>',
  'sample' => wfMessage( 'blockquote_sample' )->text(),
  'tip'    => wfMessage( 'blockquote_tip' )->text()
 ),
 array(
  'image'  => "editor_default_sw/Button_Bibliography.png",
  'id'     => 'mw-editbutton-bibliography',
  'open'   => '<bib id="',
  'close'  => '"/>',
  'sample' => wfMessage( 'bibliography_sample' )->text(),
  'tip'    => wfMessage( 'bibliography_tip' )->text()
 ),
 array(
  'image'  => "editor_default_sw/Button_hidden_comment.png",
  'id'     => 'mw-editbutton-hidden-comment',
  'open'   => '<!-- ',
  'close'  => ' -->',
  'sample' => wfMessage( 'hidden_comment_sample' )->text(),
  'tip'    => wfMessage( 'hidden_comment_tip' )->text()
 ),
 array(
  'image'  => "editor_default_sw/Button_insert_table.png",
  'id'     => 'mw-editbutton-insert-table',
  'open'   => '{| class="wikitable"'."\n".'|-'."\n",
  'close'  => "\n".'|}',
  'sample' => wfMessage( 'insert_table_sample' )->text(),
  'tip'    => wfMessage( 'insert_table_tip' )->text()
 )

Die Texte für "tip" und "sample" befinden sich in den json-Sprachdateien im Verzeichnis "/includes/i18n/".

ACHTUNG: Nach jedem mediawiki-Update muss überprüft werden, ob die vorgenommene Änderung in der Datei "EditPage.php" noch existiert und funktioniert. Deshalb ist im Verzeichnis "/includes/" von der Datei eine Kopie namens "EditPage_SW.php" zu speichern.

Erweiterung WikiEditor oder alter Standard-Editor ???[Bearbeiten]

Beispiel für einzufügenden HTML-Kommentar in Datei ??? ("ext.wikiEditor.js"? oder "ext.wikiEditor.toolbar.js"? im Verzeichnis "/extensions/WikiEditor/modules/"?):

if(mw.toolbar){
  mw.toolbar.addButton({
    imageFile: '//upload.wikimedia.org/wikipedia/en/3/34/Button_hide_comment.png',
    speedTip: 'Comment visible only for editors',
    tagOpen: '<!-- ',
    tagClose: ' -->',
    sampleText: 'Insert comment here',
    imageId: 'button-comment'
  });
}

Namensräume[Bearbeiten]

Übersicht der vorhandenen Namensräume[Bearbeiten]

Eine Übersicht sowohl der MediaWiki-Namensräume als auch der selbst erstellten Namensräume wird aufgelistet durch Eingabe folgender Adresse:
localhost/[wikiname]/api.php?action=query&meta=siteinfo&siprop=namespaces

Einrichten von Namensräumen[Bearbeiten]

Es werden folgende Namensräume eingerichtet:

  1. "ADM" bzw. "Access": "ADM" bei Salzwiki und Saltwiki, "Access" bei Repository) für Dokumente der Administratoren, den nur diese bearbeiten können,
  2. "Bearbeitung": nur bei Saltwiki zum erstmaligen Erstellen von Dokumenten, die kein Leser sehen soll
  3. "Literature": für die Bibliographie - Achtung: Bei der Zuweisung in $wgExtraNamespaces ist ein Leerzeichen vor "_talk"!
  4. "SalzeImPorenraum": nur bei Repository
  5. "RBKLuebeck": nur bei Repository - Achtung: Ursprüngliche Konstante "RBK-Luebeck" mit Bindestrich erzeugt bei MW 1.23 eine Fehlermeldung und Bindestrich ist auch nicht bei $wgExtraNamespaces enthalten

Leerzeichen und Bindestriche sind für selbst definierte Namensräume (custom namespaces) nicht zulässig, siehe https://www.mediawiki.org/wiki/Manual:Using_custom_namespaces

Salzwiki

# Einrichten der Namensräume 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 Helpnamespace
$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;

Saltwiki

# Einrichten der Namensräume 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 Helpnamespace
$wgNamespaceProtection[NS_ADM] = array( 'editadm' ); #permission "editadmin" required to edit the Adm namespace
$wgNamespacesWithSubpages[NS_ADM] = true;            #subpages enabled for the ADM namespace
$wgGroupPermissions['Sysadmin']['editadm'] = true;

Repository

# Einrichten der Namensräume Adm, Bearbeitung und Literature
define("NS_Access", 100);
define("NS_Access_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_Access => 'Access',
NS_Access_TALK => 'Access_talk',
#NS_Bearbeitung => 'Bearbeitung',
#NS_Bearbeitung_TALK => 'Bearbeitung_talk',
NS_Literature => 'Literature',
NS_Literature_TALK => 'Literature _talk'
);

##Anlegen von Namensräumen für Projekte
define('NS_SalzeImPorenraum', 1010);
define('NS_SalzeImPorenraum_TALK', 1011);
$wgExtraNamespaces[NS_SalzeImPorenraum] = 'SIPP';
$wgExtraNamespaces[NS_SalzeImPorenraum_TALK] = 'SIPP_talk';
#define('NS_RBK-Luebeck', 1020); //Achtung: Bindestrich darf nicht sein und ist auch nicht bei $wgExtraNamespaces enthalten
#define('NS_RBK-Luebeck_TALK', 1021);  //Achtung: Bindestrich darf nicht sein und ist auch nicht bei $wgExtraNamespaces enthalten
define('NS_RBKLuebeck', 1021);
define('NS_RBKLuebeck_TALK', 1021);
$wgExtraNamespaces[NS_RBKLuebeck] = 'Rbkl';
$wgExtraNamespaces[NS_RBKLuebeck_TALK] = 'Rbkl_talk';

#$wgNamespacesWithSubpages[NS_HELP] = true;            #subpages enabled for the Helpnamespace
#$wgNamespaceProtection[NS_ADM] = array( 'editadm' ); #permission "editadmin" required to edit the Adm namespace
#$wgNamespacesWithSubpages[NS_ADM] = true;            #subpages enabled for the ADM namespace
#$wgGroupPermissions['Sysadmin']['editadm'] = true;

Extensions[Bearbeiten]

Welche Erweiterungen in welcher Distribution enthalten sind, erfährt man auf der Seite https://www.mediawiki.org/wiki/Comparison_of_extensions_in_distributions


AccessControl[Bearbeiten]

Verwendungszweck[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.

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;

Damit nur Mitglieder der Gruppe "parole" Zugang zu einer Seite erhalten, wird auf der jeweiligen Seite oben folgende Zeile eingegeben (siehe dazu auch http://www.mediawiki.org/wiki/Extension:AccessControl):

<accesscontrol>parole</accesscontrol>

AccessControl v2.4 fehlerhaft bei MW 1.23[Bearbeiten]

Für MW 1.23 wurde versucht, AccessControl v2.5 zu verwenden. Der Download enthält aber nicht wie in Aussicht gestellt Version 2.5, sondern Version v2.4, bei welcher in der Datei "changelog.txt" nur Änderungen bis v2.3 aufgelistet sind. Die Version 2.4 hat mehrere Fehler:

  • Z.21: "$wgAccessControlRedirect = true;" fehlt
  • Z.136: in Funktion getTemplatePage() ist ein Rückgabewert auskommentiert
  • Z.173: php-Warnung, weil "isset($allow)" fehlt
  • Z.225: php-Warnung, weil "isset($rights)" fehlt
  • Z.202, Z.210: in Funktion fromTemplates() wird dieselbe Funktion evtl. endlos aufgerufen
  • Z.284: in Funktion allRightsTag() wird die Funktion fromTemplates() aufgerufen, die wiederum evtl. die Funktion allRightsTag() in Z.213, Z.218 und Z.220 endlos aufruft
  • Funktion doRedirect() ist im Vergleich zu v2.5 anders

AccessControl v2.5 für MW 1.23[Bearbeiten]

Siehe auch https://www.mediawiki.org/wiki/Extension:AccessControl

Für die Gruppe "autor" wird standardmäßig beispielsweise die Seite "Autor" nach einer Liste mit Kontonamen durchsucht, wobei unterschieden wird zwischen "write"-Berechtigung und durch das Suffix "(ro)", was "readonly" bedeutet, "read"-Berechtigung.

Da eine Vielzahl Benutzungskonten zur Gruppe "autor" gehört und die Seite "Autor" in SalzWiki anderweitig verwendet wird, muss die Gruppenzugehörigkeit mit der Zuordnung in der MW-Datenbank überprüft werden und der Code der Erweiterung in der Funktion "makeGroupArray(...)" angepasst werden.

Installationshinweise[Bearbeiten]

Achtung: Version 2.5 ist nicht zum Herunterladen bei REL1.23, sondern erst bei REL1.24 verfügbar.

  • Die Extension wird als (REL1.24 oder) REL1.26 heruntergeladen und nach dem Extrahieren in das Verzeichnis "extensions" kopiert.
    • v2.5 "...REL1.26...", Datei "version": 2016-01-09T22:48:53 1a2ce27 [verwendet]
    • v2.5 "...REL1.24...", Datei "version": 2016-01-09T22:48:53 c7e1e54 [nicht verwendet]
    • v2.4 "...REL1.23...", Datei "version": 2015-06-16T21:00:32 befc02e [nicht verwendet]
  • Einfügen in Datei "LocalSettings.php":
require_once("$IP/extensions/AccessControl/AccessControl.php");
$wgUseMediaWikiGroups = true;
Code-Probleme und deren Lösungen[Bearbeiten]

undefinierte Variablen

PHP erzeugt evtl. eine Meldung "Notice: Undefined variable: allow ... on line 174". Es fehlt bei $allow die Abfrage "isset(...)".

Die Datei "AccessControl.php" ist zur Verhinderung von php-Warnungen wie folgt zu bearbeiten:
In Zeile 174 "if(is_array($allow)){" mit "isset($allow) &&" ergänzen:

if(isset($allow) && is_array($allow)){

Gruppenzugehörigkeit mit Datenbank statt Gruppen-Seite prüfen

Die Überprüfung der Gruppenberechtigung darf nicht mit einer Seite für die Gruppe mit Kontenliste, sondern muss mit den Angaben in der Wiki-Datenbank ausgeführt werden

  • Datei "LocalSettings.php" mit "$wgUseMediaWikiGroups" ergänzen
  • Datei "\extensions\AccessControl\AccessControl.php" in der Funktion "makeGroupArray(...)" anpassen


Datei "LocalSettings.php":

require_once("$IP/extensions/AccessControl/AccessControl.php");
$wgUseMediaWikiGroups = true;

Datei "AccessControl.php" Z.89ff:

function makeGroupArray( $accesslist ) {
  ...
  $usersreadonly = Array();
  // für HAWK HHG eingefügt 2016-05-17
  // users of group from wiki database
  global $wgUseMediaWikiGroups, $wgUser;
  if($wgUseMediaWikiGroups === true){
    if( in_array($accesslist, $wgUser->getGroups()) ){
      $userswrite[] = $wgUser->getName();
    }
    return array($userswrite, $usersreadonly);
  }
  // users from group-page with list of users and their rights for writing or reading
  $users = getUsersFromPages( $accesslist );
  ...
}

Timeout durch Template-Name im Template-Text

Weitere Probleme mit Script-Timeout wie bei AccessControl v2.4:

  • Z.206, Z.214: in Funktion fromTemplates() wird dieselbe Funktion evtl. endlos aufgerufen
  • Z.290: in Funktion allRightsTag() wird die Funktion fromTemplates() aufgerufen, die wiederum evtl. die Funktion allRightsTag() in Z.217, Z.222 und Z.224 endlos aufruft

Timeout-Ursache sind in den Templates "Ynotice", "Baustelle" und "FreeForTranslation" die noinclude-Bereiche, in denen der Template-Name erneut auftaucht. Der erste Buchstabe muss entweder kleingeschrieben werden oder - besser - durch Hexadezimal-HTML-Zeichen ersetzt werden:


<noinclude>
=== Beispielvorlage ===
{{&#98;notice|text=
}}
</noinclude>

<noinclude>
=== Beispielvorlage ===
{{&#66;austelle}}
</noinclude>

<noinclude>
=== Beispielvorlage ===
{{&#70;reeForTranslation}}
</noinclude>


Verarbeitung von Rückgabewert NULL

In den Funktionen "getTemplatePage(...)" Z.130ff und "getUsersFromPages(...)" Z.144ff muss wie bei der Funktion "getContentPage(...)" für die Verwendung der Methode "getNativeData()" der Wert, der sich zuvor aus der Methode "getContent()" ergibt, auf "NULL" überprüft werden.

function getTemplatePage( $template ) {
  ...
  if ( method_exists('WikiPage', 'getContent' ) ){
    // für HAWK HHG angepasst 2016-05-17
    #$contentPage = new WikiPage( $gt );
    #return $contentPage->getContent()->getNativeData();
    $contentPage = WikiPage::factory( $gt );
    $contentPageContent = $contentPage->getContent( Revision::RAW )
    if ( $contentPageContent != NULL ){
      return ContentHandler::getContentText( $contentPageContent );
    }
  } else {
    // create Article and get the content
    $contentPage = new Article( $gt, 0 );
    return $contentPage->fetchContent( 0 );
  }
}

function getUsersFromPages( $group ) {
  ...
  if ( method_exists('WikiPage', 'getContent' ) ){
    // für HAWK HHG angepasst 2016-05-17
    #$groupPage = new WikiPage( $gt );
    #$allowedUsers = $groupPage->getContent()->getNativeData();
    $groupPage = WikiPage::factory( $gt );
    $groupContent = $groupPage->getContent( Revision::RAW )
    if ( $groupContent != NULL ){
      $allowedUsers = ContentHandler::getContentText( $groupContent );
    }
  } else {
    // create Article and get the content
    $groupPage = new Article( $gt, 0 );
    $allowedUsers = $groupPage->fetchContent( 0 );
  }
}


weitere Fehlerquellen

Abhilfe schaffen folgende Änderungen von https://www.mediawiki.org/wiki/Extension_talk:AccessControl#Selected_fixes_against_2.5:

//function makeGroupArray(...)
//Z.94
$usersreadonly[] = (string)$user;   #$usersreadonly[] = $user;
//Z.97
$userswrite[] = (string)$user;   #$userswrite[] = $user;

//function getUsersFromPages(...)
//Z.150
$gt = $Title->newFromText( $group );    #$gt = $Title->makeTitle( 0, $group );

//function fromTemplates(...)
//Z.231
if ( $wgUser->isAnon() ) {    #if ( $wgUser->mID === 0 ) {
//Z.236
if ( in_array( 'sysop', $wgUser->getGroups(), true) ) {    #if ( in_array( 'sysop', $wgUser->mGroups, true) ) {
//Z.244
if ( ! in_array( $wgUser->getName(), $users[0], true) ) {    #if ( ! in_array( $wgUser->mName, $users[0], true) ) {
//Z.255
if ( ! in_array( $wgUser->getName(), $users[1], true) ) {    #if ( ! in_array( $wgUser->mName, $users[1], true) ) {

// function allRightTags(...)
//Z.285
$gt = $Title->newFromText( $redirecttarget );    #$gt = $Title->makeTitle( 0, $redirecttarget );

//function hookUserCan(...)
//Z.322
if ( $wgUser->isAnon() ) {    #if ( $wgUser->mID === 0 ) {
//Z.338
if ( $wgUser->isAnon() ) {    #if ( $wgUser->mID === 0 ) {
//Z.351
if ( in_array( $wgUser->getName(), $users[0], true) ) {    #if ( in_array( $wgUser->mName, $users[0], true) ) {
//Z.364
if ( in_array( $wgUser->getName(), $users[1], true) ) {    #if ( in_array( $wgUser->mName, $users[1], true) ) {


Funktion "fromTemplates"

Bei der Funktion "fromTemplates($string)" bei Z.219ff hat möglicherweise die Variable $rights den Wert NULL, weil sie die verschachtelteten Funktionen "allRightTags( getContentPage( 10, $templatepage) )" mit dem Namensraum 10 (ID für Templates) und mit dem Inhalt anstatt mit dem Seitentitel verwendet:

} elseif ( ctype_alnum( substr( $templatepage, 0, 1 ) )) {
  // für HAWK HHG angepasst 2016-05-17
  $context = new RequestContext();
  $gt2 = $context->getTitle();
  // The check of included template
  if (strpos( $tempatepage, '|' ) > 0) {
    $templatename = substr( $templatepage, 0, strpos( $templatepage, '|' ) );
    #$rights = allRightTags( getContentPage( 10, $templatename ) );
    $rights = allRightTags( getContentPage( $gt2->getNamespace(), $templatename ) );
  } else {
    #$rights = allRightTags( getContentPage( 10, $templatepage ) );
    $rights = allRightTags( getContentPage( $gt2->getNamespace(), $gt2->getFullText() ) );
  }
}
Lösungsversuche ohne Erfolg[Bearbeiten]

Funktion "getContentPage(...)"

Fehlversuch Z. 121ff hinzufügen von "else{...}"

if ( method_exists( 'WikiPage', 'getContent' ) ) {
 $contentPage = WikiPage::factory( $gt ); #$contentPage = new WikiPage( $gt );
 if ( $contentPage->getContent (Revision::RAW) != NULL ) {
  ...
 }
 // für HAWK HHG nicht eingefügt 2016-05-10 wegen Endlosscript
 else{
  $context = new RequestContext();
  $gt2 = $context->getTitle();
  $contentArticle = new Article( $gt2, $namespace);
  if($contentArticle->getPage()->getContent() != NULL){
   return $contentArticle->getPage()->getContent(Revision::RAW)->getNativeData()
  }
 }
} else {
 // create Article and get the content
...
}

Einrichten einer Nutzungsgruppe[Bearbeiten]

Eine Gruppe von Usern, die alleine Zugang auf bestimmte Seiten haben soll, wird z. b. beim Repositorium im Namensrauam "ACCESS" wie unten eingerichtet.

Speichern der Liste auf der Seite Access:SIP
<accesscontrol>Access:SIP</accesscontrol># Schutz der eigenen Seite
*Hschwarz                                                 # einfache Liste der User
*HJuling
*MSteiger
*SLaue
*SBrueggerhoff
*Testuser

ApprovedRevs[Bearbeiten]

Einschränkung[Bearbeiten]

Diese Erweiterung kann nicht verwendet werden, wenn die Erweiterung "AccessControl" verwendet wird; siehe https://www.mediawiki.org/wiki/Extension:ApprovedRevs.

Verwendungszweck[Bearbeiten]

Mit dieser Erweiterung können Revisionen (Versionen einer SalzWiki-Seite) bestätigt oder abgelehnt werden. Die bestätigte Version wird allen Usern angezeigt.

Approved Revs-1.jpg

Installation der Erweiterung "ApprovedRevs"[Bearbeiten]

  • Die Erweiterung wird mit der Version 0.7.0 REL1.23 2015-06-16T21:01:12 513cff5 heruntergeladen und nach dem Extrahieren in das Extensions-Verzeichnis des jeweiligen Wikis kopiert.
  • Es muss bei einem neuen Wiki eine Datenbank-Tabelle mit dem Präfix "sw_" (SalzWiki, SaltWiki) bzw. "sr_" (Repository) und dem Namen "approved_revs" angelegt werden. Hierzu gibt es zwei Möglichkeiten:
    • Das Skript "update.php" von "MediaWiki's/maintenance" benutzen oder
    • Mittels "phpMyAdmin" in der Datenbank die Tabelle mit den beiden SQL-Befehlen, die in der Datei "ApprovedRevs.sql" der Erweiterung zu finden sind, erstellen.
  • Die Erweiterung in der Datei "LocalSettings.php" aktivieren
// SalzWiki, SaltWiki, Repository
require_once( "$IP/extensions/ApprovedRevs/ApprovedRevs.php" );

Konfiguration von "ApprovedRevs"[Bearbeiten]

Diejenigen, die das Recht "viewlinktolatest" haben, sehen einen Hyperlink unter dem Titel des Artikels, um zur aktuellen unbestätigten Version zu kommen.

Diejenigen, die das Recht "approverevisions" haben, können in der History (Versionen-Übersicht) eine Version "bestätigen" oder "ablehnen".

Damit nur Admins und Mitglieder der Gruppen "Redakteur"/"Editor" eine Version bestätigen bzw. ablehnen können und zusätzlich Mitglieder der Gruppe "autor" den Verweis zur aktuellen unbestätigten Version zur Verfügung gestellt bekommen, sind in der Datei "LocalSettings.php" folgende Angaben erforderlich:

// SalzWiki
$wgGroupPermissions['Redakteur']['approverevisions'] = true;
$wgGroupPermissions['sysop']['approverevisions'] = true;
$wgGroupPermissions['autor']['viewlinktolatest'] = true;
$wgGroupPermissions['*']['viewlinktolatest'] = false;
$wgGroupPermissions['sysop']['viewlinktolatest'] = true;
// SaltWiki
$wgGroupPermissions['Editor']['approverevisions'] = true;
$wgGroupPermissions['sysop']['approverevisions'] = true;
$wgGroupPermissions['autor']['viewlinktolatest'] = true;
$wgGroupPermissions['*']['viewlinktolatest'] = false;
$wgGroupPermissions['sysop']['viewlinktolatest'] = true;
// Repository
$wgGroupPermissions['Editor']['approverevisions'] = true;
$wgGroupPermissions['sysop']['approverevisions'] = true;
#$wgGroupPermissions['autor']['viewlinktolatest'] = true;
$wgGroupPermissions['*']['viewlinktolatest'] = false;
$wgGroupPermissions['sysop']['viewlinktolatest'] = true;

Beispiele:

  • damit z. B. alle Mitglieder der Gruppe "autor" Seiten als geprüft markieren können
$wgGroupPermissions['autor']['approverevisions'] = true;
  • um den ApprovedRevs-Hyperlink standardmäßig zu deaktivieren
$wgGroupPermissions['*']['viewlinktolatest'] = false;
  • um den ApprovedRevs-Hyperlink allen Admins und Mitgliedern der Gruppe "autor" zur Verfügung zu stellen
$wgGroupPermissions['autor']['viewlinktolatest'] = true;
$wgGroupPermissions['sysops']['viewlinktolatest'] = true;

Bibliography[Bearbeiten]

Die Extension Bibliography wurde durch die Erweiterung BibManager ersetzt. Siehe hierzu unter "Erweiterungen - BibManager".


BibManager[Bearbeiten]

Die Erweiterung "BibManager" wird zur Erstellung und Verwaltung der Literaturhinweise bzw. zum Einbinden der Zitate in Artikel benutzt und verwendet den Namensraum "NS_CITATION" ("Cit") mit der Nummer 800 sowie "NS_CITATION_TALK" ("Cit_talk") mit der Nummer 801.

Die Erweiterung besteht aus

  • der Grunderweiterung "BibManager"
  • und den von "HalloWelt" für die HAWK HHG programmierten Zusatzerweiterungen

Mit der Erweiterung "SaltWiki" können im SalzWiki/SaltWiki/Repository weitere Felder, die nicht im original "BibTeX" spezifiziert sind, wie DOI und Fulltext, verwendet werden.

Die Erweiterung "SaltWikiUpload" soll im Repositorium das Hochladen von Dateien mit BibTex-Angaben erleichtern, doch wird bei MW1.23LTS nur das MW-Standard-Upload-Formular angezeigt.

Versionen[Bearbeiten]

Für MediaWiki 1.23 LTS wird wegen diverser Probleme bei der BibManager-Version v1.1.0 die Version 1.23 REL1.26 2015-11-17T01:01:50 d824ce8 installiert.

  • BibManager
    • v1.23.0 master 2016-01-15T07:01:22 951b12f
    • v1.23.0 REL1.26 2015-11-17T01:01:50 d824ce8 verwenden bei MW1.23LTS
    • v1.1.0 REL1.23 2015-06-16T21:02:02 6218f71 (angeboten für MW 1.22+)
    • v1 (verwendet bei MW1.16)
  • SaltWiki
    • SaltWiki mit Datum 2012-05-25 verwenden bei MW1.23LTS
    • SaltWiki mit Datum 2012-01-20 (verwendet bei MW1.16)
  • SaltWikiUpload
    • SaltWikiUpload mit Datum 2012-01-25 verwenden bei MW1.23LTS Repository
    • SaltWikiUpload mit Datum 2012-01-11 (verwendet bei MW1.16 Repository)

BibManager-Versionsangaben befinden sich in folgenden Dateien:

  • version: REL1.26 2015-11-17T01:01:50
  • BibManager.php: 1.23.0
  • BibManager.i18n.php: compatibility back to MediaWiki 1.17

Installation[Bearbeiten]

Bei der Installation werden die Erweiterungen in folgende Ordner kopiert:

  • "\extensions\BibManager\"
  • "\extensions\SaltWiki\"
  • "\extensions\SaltWikiUpload\"

In der Datei "LocalSettings.php" wird Folgendes eingefügt:

## Namensräume
...
 // für Erweiterung BibManager
 define("NS_CITATION", 800);
 define("NS_CITATION_TALK", 801);
 $wgExtraNamespaces[NS_CITATION] = 'Cit';
 $wgExtraNamespaces[NS_CITATION_TALK] = 'Cit_talk';
 ...
## EXTENSIONS
...
 require_once('extensions/BibManager/BibManager.php');
 require_once('extensions/SaltWiki/SaltWiki.php' );
 #nur im Repositorium:
 require_once('extensions/SaltWikiUpload/SaltWikiUpload.php' );
 ...
## Einstellungen
...
## Erweiterung BibManager
# Namensraum berücksichtigen
$wgBibManagerCitationArticleNamespace = NS_CITATION;
# BibManager-Anpassung an die gewünschte Zitierweise
$wgBibManagerCitationFormats = array (
  '-' => '%author%: %title%, %year% %url%, %doi%.',
  'article' => '%author% (%year%): %title%. <em>%journal%</em>, <b>%volume%</b> (%number%), %pages%, %url%, %doi%.',
  'book' => '%editor% %author% (%year%): <em>%title%, %edition%, %publisher%, %address%, %pages%</em>, %url%., %doi%',
  'booklet' => '%title% %url%, %doi%.',
  'conference' => '%author% (%year%): %title%. %booktitle% %url%, %doi%.',
  'inbook' => '%author% (%year%): <em>%title%. In: %editor%: %edition%, %publisher%, %address%, %pages%</em> %url%, %doi%.',
  'incollection' => '%author% (%year%): %title%. In: %editor%: %booktitle%, <em>%publisher%</em>, %pages%, %url%, %doi%.',
  'inproceedings' => '%author% (%year%): %title%. In: %editor%: %booktitle%,<em>%publisher%</em>, %pages%, %url%, %doi%.',
  'manual' => '%title% %url%, %doi%.',
  'mastersthesis' => '%author% (%year%): %title%, %type%, %school%, %address%, %url%, %doi%.',
  'misc' => '%author% (%year%): %title%, %howpublished%, %pages% %url%, %doi%.',
  'phdthesis' => '%author% (%year%): %title%. %type%, %school%, %url%, %doi%.',
  'proceedings' => '%editor% (%year%): %title%,<em> %publisher%</em>, %url%, %doi%.',
  'techreport' => '%author% (%year%): %title%. %institution% %url%, %doi%.',
  'unpublished' => '%author% (%year%): %title%. %note%, %url%, %doi%.'
);
BibManager v1.23 REL1_26 und v1.23 master[Bearbeiten]
  • Fehler bei "Edit" mit Fehlermeldung zu bereits vorhandenem Schlüssel
  • Fehler bei "Delete" wegen fehlender Datensatzkennung
  • Bei "Verwalten" fehlen rechts die Icons für "Edit" und "Delete" sowie die Trennung zwischen beiden Texten: css-Datei fehlt im head-Bereich
  • In der Datei "\extensions\BibManager\includes\BibManagerHooks.php" ist in der Funktion "getIcons(...)" der Pfad 2-mal hart-codiert statt mit einer Variablen angegeben:
    ... htmlspecialchars( $wgScriptPath . '/extensions/BibManager/resources/images/[pencil.png|book.png]' );
BibManager v1.1.0 REL1_23[Bearbeiten]
  • Fehler bei "Create", "Edit" und "Delete" wegen fehlender Datensatzkennung.
  • In der Datei "\extensions\BibManager\includes\BibManagerHooks.php" ist in der Funktion "onBeforePageDisplay(...)" der Pfad zur Erweiterung 3-mal hart-codiert statt mit einer Variablen angegeben:
    ... htmlspecialchars( $wgScriptPath . '/extensions/BibManager/client/[BibManagerCommon.css|BibManagerEdit.js|BibManagerList.js]' );
  • Für ebenfalls hart-codierte Pfadangaben in der Funktion "getIcons(...)" siehe #BibManager 1.23 REL1_26 und 1.23 master

Spezialseiten-Gruppe[Bearbeiten]

Verfügbarkeit in Abhängigkeit vom Status

  • Ohne Anmeldung sollen nur die Verweise zu "Bibliographien anzeigen: Autoren" und "Bibliographien verwalten" sichtbar sein. Bei "Bibliographien verwalten" sind dann die Funktionen "Edit" und "Delete" nicht vorhanden, sondern nur "Export".
  • Nach Anmeldung sind auch die Funktionen "Bibliographieeintrag anlegen" und "Bibliographien importieren" verfügbar.

Von den zu ändernden Dateien bzw. Verzeichnissen ist nach den Anpassungen jeweils eine Kopie mit dem Suffix "SW" im Dateinamen bzw. Verzeichnisnamen zu speichern, um nach Updates von MediaWiki oder Erweiterungen die Änderungen übernehmen zu können.

Es sollte eine Datei "\i18n\qqq.json" mit folgendem Code erstellt werden:

{
  "@metadata": {
    "authors": []
  },
  "bibmanager": "BibManager",
  "bibmanager-desc": "{{desc}}"
}
BibManager v1.23.0 REL1.26 Datei-Anpassungen[Bearbeiten]
  • \i18n\ => \i18nSW\
    • de.json
    • de-formal.json
    • en.json
    • qqq.json
  • \includes\
    • BibManagerHooks.php => BibManagerHooksSW.php
    • BibManagerPagerList.php =>BibManagerPagerListSW.php
  • \includes\specials\
    • SpecialBibManagerDelete.php => SpecialBibManagerDeleteSW.php
    • SpecialBibManagerEdit.php => SpecialBibManagerEditSW.php
  • \resources\ext.bibManager.css =ext.bibManagerSW.css>
BibManager v1.1.0 REL1.23 Datei-Anpassungen[Bearbeiten]
  • BibManager.php => BibManagerSW.php
  • BibManager.alias.php => BibManager.aliasSW.php
  • \i18n\ => \i18nSW\
    • de.json
    • de-formal.json
    • en.json
    • qqq.json
  • \specialpages\ => \specialpagesSW\
    • BibManagerCreate_body.php
    • BibManagerDelete_body.php
    • BibManagerEdit_body.php
    • BibManagerExport_body.php
    • BibManagerImport_body.php
    • BibManagerList_body.php
    • BibManagerListAuthors_body.php

Die Spezialseiten-Gruppe "BibManager" und die darin angezeigten Spezialseiten werden in der Datei "\extensions\BibManager\i18n\[Sprache].json" festgelegt; siehe https://www.mediawiki.org/wiki/Manual:Special_pages#The_localisation_file. Die Einbindung funktioniert mit MW1.23 fehlerhaft: Entweder werden die Seiten nicht angezeigt (Schlüssel mit Großbuchstaben wie bisher) oder werden die Seiten nicht gefunden (Schlüssel insgesamt in Kleinbuchstaben).

In den Zeilen 5 und 13 der json-Sprachdateien wäre der Array-Schlüssel von "BibManager" in Kleinbuchstaben zu ändern:

...
  "specialpages-group-bibmanager": "BibManager",
...
  "bibmanager": "BibManager",
...

Die Variable $wgSpecialPageGroups in der Datei "BibManager.php" gilt als "deprecated" seit MW 1.21 (https://gerrit.wikimedia.org/r/#/c/220819/3) und kann auskommentiert werden, wenn im Verzeichnis "\specialpages\" in den jeweiligen Dateien "BibManager..._body.php" am Ende der Klasse folgende Funktion eingefügt wird (https://www.mediawiki.org/wiki/Manual:Special_pages => Special page group):

  protected function getGroupName(){
    return 'bibmanager';
  }
Systemnachrichten für Gruppe prüfen[Bearbeiten]

Ob die Gruppe "BibManager" in den Systemnachrichten auftaucht, lässt sich durch Aufruf der MediaWiki-Systemnachrichten, die sich bei den Spezialseiten in der Rubrik "Daten und Werkzeuge" befinden, überprüfen, indem als Präfixfilter "Specialpages-group" angegeben wird. Dann sollte bei den Ergebnissen der Name "specialpages-group-bibmanager" mit dem Text "BibManager" aufgelistet werden.

Einschränkungen für Darstellung in der Spezialseiten-Gruppe überprüfen[Bearbeiten]

Wenn die BibManager-Spezialseiten nicht angezeigt werden, folgendes prüfen:

  • In den Dateien "BibManager.php" oder "LocalSettings.php" die Gruppenberechtigung ändern:
    • Bibliographien anlegen: $wgGroupPermissions['sysop']['bibmanagercreate'] => $wgGroupPermissions['*']['bibmanagercreate']
    • Bibliographien importieren: $wgGroupPermissions['sysop']['bibmanageredit'] => $wgGroupPermissions['*']['bibmanageredit']
  • Beim Klassen-Konstruktor "parent::__construct('...', '...')" den 2. Parameter (Kleinbuchstaben) für $restriction weggelassen in folgenden Dateien:
    • "\specialpages\BibManagerCreate_body.php" in Zeile 6
    • "\specialpages\BibManagerImport_body.php" in Zeile 6

Fehler korrigieren[Bearbeiten]

Fehler beim Speichern nach Bearbeitung[Bearbeiten]

Der bearbeitete Datensatz kann nicht gespeichert werden, weil die Prüfung des Bearbeitungsmodus fehlerhaft ist und der Datensatz wie ein Neueintrag auf einen bereits vorhandenen Zitatschlüssel überprüft wird.

In der Datei "\extensions\BibManager\includes\specials\SpecialBibManagerEdit.php" muss in der Funktion "execute(...)" in Zeile 69 "bm_edit_mode" zu "wpbm_edit_mode" geändert werden:

$editMode = $wgRequest->getBool( 'wpbm_edit_mode' ); #$editMode = $wgRequest->getBool( 'bm_edit_mode' ); für HAWK HHG geändert 2016-02-16

Anschließend ist eine Kopie der Datei mit dem Suffix "SW" zu speichern.

Fehler bei Löschvorgang[Bearbeiten]

Der Datensatz kann wegen fehlender Angaben nach der Löschbestätigung nicht gelöscht werden:

  • Element "bm_bibtexCitation" existiert nicht im Formular, sondern "wpbm_bibtexCitation"
  • Element "bm_delete" existiert nicht im Formular, sondern "wpbm_delete"
  • $deleteSubmit ist immer falsch, weil String (Zeichenkette) mit Boolean (Wahrheitswert) verglichen wird

In der Datei "\extensions\BibManager\includes\specials\SpecialBibManagerDelete.php" folgende Anpassungen vornehmen:

  • Bei Array "$formDescriptor" einen Namen für das Formularfeld "bm_delete" vorgeben
  • Bei Array "$formDescriptor" einen Namen für das Formularfeld "bm_bibtexCitation" vorgeben
  • In Funktion "formSubmit(...)" bei der Prüfung von "$formdata['bm_delete']" Umwandlung von Boolean in String einfügen
//Z.59ff
$formDescriptor = array (
  'bm_delete' = array (
    'class' => 'HTMLHiddenField';
    'default' => true,
    'name' => 'bm_delete', // für HAWK HHG eingefügt 2016-02-09
  )
  'bm_bibtexCitation' = array (
    'class' => 'HTMLHiddenField';
    'default' => $citation,
    'name' => 'bm_bibtexCitation', // für HAWK HHG eingefügt 2016-02-09
  )
);
//Z.89
if ( empty( $formData['bm_delete'] ) || $formData['bm_delete'] !== (string)true ) // für HAWK HHG ergänzt mit (string) 2016-02-09
Falscher Text nach Löschvorgang[Bearbeiten]

Nachdem ein Eintrag gelöscht wurde, erscheint "Ihre Daten wurden erfolgreich gespeichert!" (auch schon in MW1.16).

In der Datei "\extensions\BibManager\includes\specials\SpecialBibManagerDelete.php" in der Funktion "formSubmit(...)" wird in Z.94 fälschlicherweise "bm_success_save-complete" verwendet. Da es kein Text-Element "bm_success_delete" gibt, muss es in den Dateien "\i18n\[en|de|de-formal].json" für "en", "de" und "de-formal" in der Zeile nach "bm_success_save-complete" ergänzt werden, damit es in der Datei "BibManagerDelete_body.php" verwendet werden kann.

Nach den Anpassungen ist die Delete-Datei als Kopie mit dem Suffix "SW" im Verzeichnis "specials" und das Verzeichnis "i18n" als Kopie "i18nSW" zu speichern.

//de.json Z.135f
  "bm_success_save-complete": "<div class=\"successbox\"><strong>Deine Daten wurden erfolgreich gespeichert!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
  "bm_success_delete": "<div class=\"successbox\"><strong>Die Daten wurden erfolgreich gelöscht!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",

//de-formal.json Z.135f
  "bm_success_save-complete": "<div class=\"successbox\"><strong>Ihre Daten wurden erfolgreich gespeichert!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
  "bm_success_delete": "<div class=\"successbox\"><strong>Die Daten wurden erfolgreich gelöscht!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",

//en.json Z.135f
  "bm_success_save-complete": "<div class=\"successbox\"><strong>Your data was successfully saved!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
  "bm_success_delete": "<div class=\"successbox\"><strong>The data were successfully deleted!</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
//SpecialBibManagerDelete.php Z.92ff
// für HAWK HHG geändert zu "delete"-Text statt "save-complete" 2016-02-15
if ( $result === true ) {
  $wgOut->addHtml( wfMessage( 'bm_success_delete') ); #wfMsg( 'bm_success_save-complete') für HAWK HHG korrigiert 2016-02-08
  ...
}

Außerdem kann in der Datei "SpecialBibManagerDelete.php" wie in Z.94 die Funktion "wfMsg()" ersetzt werden durch "wfMessage()" in den Zeilen 24, 29, 35, 43, 54, 71.

Fehler im HTML-Code korrigieren[Bearbeiten]

Bei der BibManager-Übesicht wird für jede Tabellenzeile ein statt eines erzeugt (auch schon in MW1.16). Im Verzeichnis "BibManager\includes\" in der Datei "bibManagerPagerList.php" in Zeile 133 den fehlenden Schrägstrich einfügen:

  $tablerow[] = '</tr>'; // Schrägstrich für schließendes Tag eingefügt 2012-09-17 G. Werner
Fehlende Icons bei Verweisen rechts für "edit" und "delete"[Bearbeiten]

In der BibManager-Übersicht sind rechts Text-Hyperlinks ohne Abstand für "edit" und "delete" anstatt Icons; es sind in folgenden Dateien Anpassungen vorzunehmen:

  • "\extensions\BibManager\includes\BibManagerHooks.php"
  • "\extensions\BibManager\resources\ext.bibManager.css"
  • "\extensions\BibManager\includes\BibManagerPagerList.php"

Nach den Anpassungen ist jeweils eine Kopie der Datei mit dem Suffix "SW" zu speichern.

Bei "BibManagerHooks.php" ist in Funktion "onBeforePageDisplay(...)" am Anfang, vor Zeile 29 (Eindbindung der JS-Module), die Einbindung der css-Datei einzufügen:

  // für HAWK HHG eingefügt 2016-02-12
  $out->addModuleStyles( 'ext.bibManager.styles' );

Bei "ext.bibManager.css" in Zeile 96 einen Kommentar einfügen und zwischen "width: 16px;" und "text-indent: 9999px;", Z.99f, eine neue Zeile "height: 15px;" einfügen

/* für HAWK HHG wg. nicht sichtbarer Icons, die bei BibManager v1 ohne "overflow:hidden" sehr weit rechts waren, geändert 2016-02-15 */
#bm_table a.icon {
  ...
  height: 15 px; /*text-indent: 9999px;*/	
  ...
}

Bei "BibManagerPagerList.php" in Funktion "formatRow(...)" in den Zeilen 104, 108, 117 und 120 die "wfMsg"-Funktionen ersetzen durch "wfMessage"-Funktionen:

if ($wgUser->isAllowed('bibmanageredit')){
  // für HAWK HHG "wfMsg()" zu "wfMessage()" geändert 2016-02-15
  $editLink = Linker::link(
    SpecialPage::getTitleFor( 'BibManagerEdit' ),
    wfMessage( 'bm_list_table_edit' ), /*wfMsg( 'bm_list_table_edit' )*/
    array (
      'class' => 'icon edit',
      'title' => wfMessage( 'bm_list_table_edit' ) /*wfMsg( 'bm_list_table_edit' )*/
    ),
    $specialPageQuery
  );
}

if ($wgUser->isAllowed('bibmanagerdelete')){
  $deleteLink = Linker::link(
    SpecialPage::getTitleFor( 'BibManagerDelete' ),
    wfMessage( 'bm_list_table_delete' ),
    array (
      ...
    ),
    $specialPageQuery
  );
}


Fehlendes Icon "Link zum Volltext" bei Detailseite[Bearbeiten]

Auf der Detailseite eines Bibliographieeintrags wird rechts statt des Icons der Alternativtext "Link zum Volltext" bzw. "Fulltext link" angezeigt; es ist folgende Datei anzupassen:

  • "\extensions\SaltWiki\SaltWiki.php"

Nach den Anpassungen ist jeweils eine Kopie der Datei mit dem Suffix "_SW" zu speichern.

Bei "SaltWiki.php" ist in der Funktion "sw_onBibManagerGetIcons(...)" vor Zeile 160 ein Kommentar einzufügen und in Zeile 161 der Pfad von "client" zu "resources" anzupassen:

function sw_onBibManagerGetIcons ( $entry, &$icons) {
 ...
 // für HAWK HHG und MW1.23LTS Pfad von "client" zu "resources" angepasst 2016-06-14
 $icons['fulltext'] = array (
  'src' = $wgScriptPath . '/extensions/BibManager/resources/images/' . $icon,
  ...
 );
 ...
}
In BibManager v1.1.0 Fehler bei SpecialPageAliases[Bearbeiten]

In der Datei "BibManager.alias.php" müssen die Array-Schlüssel von $specialPageAliases wie z. B. 'BibManagerCreate' für die jeweilige Sprache in Kleinbuchstaben angegeben werden, damit die BibManager-Seiten bei den Spezialseiten aufgelistet werden, allerdings werden die Seiten dann nicht mehr gefunden, wenn man auf die Verweise klickt.

Einzige Lösung scheint zu sein, in der Datei "BibManager.php" die Zeile 66 auszukommentieren:

#$wgExtensionMessagesFiles['BibManagerAlias'] = $dir . 'BibManager.alias.php'; // Fehlfunktion in MW 1.23
In BibManager v1.1.0 fehlerhafte Funktionen auskommentieren bzw. ändern[Bearbeiten]

BibManager v1.1.0 (REL1.23) verwendet in mehreren Dateien die Funktion "wfLoadExtensionMessages()", die seit MW 1.21 nicht mehr existiert, so dass die Zeile in folgenden Dateien auskommentiert werden muss:

  • "\specialpages\BibManagerCreate_body.php" in Zeile 7
  • "\specialpages\BibManagerEdit_body.php" in Zeile 7
  • "\specialpages\BibManagerDelete_body.php" in Zeile 7
  • "\specialpages\BibManagerList_body.php" in Zeile 7
  • "\specialpages\BibManagerListAuthors_body.php" in Zeile 7

BibManager v1.1.0 (REL1.23) verwendet in der Datei "\specialpages\BibManagerList_body.php" in den Zeilen 25 und 29 die Methode "SpecialPageFactory::getPage('...')->getDescription()", die einen Fehler "Call to a member function getDescription() on null" verursacht, weil "getPage('...') als Ergebnis NULL hat und "getDescription()" nicht darauf angewendet werden kann. Ursache ist der Name bei "getPage('...')", der mit dem Alias ersetzt werden muss. Der Alias der Sprachvarianten befindet sich in der Datei "\BibManager\BibManager.alias.php". Um den Alias für "getPage('...')" zu erhalten, wird die Methode "SpecialPageFactory::getLocalNameFor('...')" benötigt:

// $linkDescription eingefügt und $createLink angepasst 2015-12-01 G. Werner für HAWK HHG
$linkDescription = array();
if(SpecialPageFactory::getPage(SpecialPageFactory::getLocalNameFor('BibManagerCreate'))===NULL){
  $linkDescription['Create'] = NULL;
}
else{
  $linkDescription['Create'] = SpecialPageFactory::getPage(SpecialPageFactory::getLocalNameFor('BibManagerCreate'))->getDescription();
}
if(SpecialPageFactory::getPage(SpecialPageFactory::getLocalNameFor('BibManagerImport'))===NULL){
  $linkDescription['Import'] = NULL;
}
else{
  $linkDescription['Import'] = SpecialPageFactory::getPage(SpecialPageFactory::getLocalNameFor('BibManagerImport'))->getDescription();
}
$createLink = Linker::link(
  SpecialPage::getTitleFor('BibManagerCreate'),
  /*SpecialPageFactory::getPage('BibManagerCreate')->getDescription()*/
  $linkDescription['Create']
);
$importLink = Linker::link(
  SpecialPage::getTitleFor('BibManagerImport'),
  /*SpecialPageFactory::getPage('BibManagerImport')->getDescription()*/
  $linkDescription['BibManagerImport']
);
In BibManager v1.1.0 Fehler bei neuem Eintrag und Eintragsbearbeitung[Bearbeiten]

Der Fehler bei einem Neueintrag in BibManager v1.1.0 REL1.23 2015-06-16 resultiert aus der Weiterleitung zur Datei für Bearbeitungen "specialpages\BibManagerEdit_body.php".

In der Datei "specialpages\BibManagerCreate_body.php" kann in der Funktion "execute()" das Array "$formDescriptor" zwischen "id" und "options" um die Angabe eines Namens ergänzt werden, damit das Formularfeld "bm_select_type" nicht "wpbm_select_type" heißt:

//Z.26ff
$formDescriptor = array (
  'bm_select_type' => array (
    'class' => 'HTMLSelectField',
    ...
    'id' => '',
    'name' => 'bm_select_type',
    'options' => ...
  )
)

BibManager-Berechtigungen[Bearbeiten]

Rechte-Vergabe für BibManager

In der Datei "LocalSettings.php" werden zwischen "include_once(...)" und dem Array für die Zitierweise folgende Berechtigungen definiert, wobei im deutschen Salzwiki "Redakteur" statt "Editor" anzugeben ist:

## Berechtigungen eingefügt 2012-05-11
$wgGroupPermissions['*']['bibmanagercreate'] = false;
$wgGroupPermissions['*']['bibmanageredit'] = false;
$wgGroupPermissions['*']['bibmanagerdelete'] = false;
$wgGroupPermissions['autor']['bibmanagercreate'] = true;
$wgGroupPermissions['autor']['bibmanageredit'] = true;
#$wgGroupPermissions['autor']['bibmanagerdelete'] = false;
$wgGroupPermissions['Redakteur|Editor']['bibmanagercreate'] = true;
$wgGroupPermissions['Redakteur|Editor']['bibmanageredit'] = true;
$wgGroupPermissions['Redakteur|Editor']['bibmanagerdelete'] = true;
$wgGroupPermissions['sysop']['bibmanagercreate'] = true;
$wgGroupPermissions['sysop']['bibmanageredit'] = true;
$wgGroupPermissions['sysop']['bibmanagerdelete'] = true;

Entfernen der Löschen- und Editier-Buttons ohne Rechte-Vergabe

Das Entfernen der Schaltflächen funktionierte bis April 2012 auf nachfolgend beschriebene Weise, solange es noch kein Rechte-Management für den BibManager gab.

In der Datei BibManager/includes/BibManagerPagerList.php werden in den Zeilen 57ff dazu die Variablen "$editLink" und "$deleteLink" entfernt.

Mit ein wenig PHP-Kenntnissen kann man auch die Anzeige des Links schaltbar machen:

  $tablerow = array ( );

$tablerow[] = ''; $tablerow[] = ' ' . $citationLink . ''; $tablerow[] = ' ' . $format . ''; #$tablerow[] = ' ' . $editLink . $deleteLink . ''; if($_REQUEST['showDelete'] == 1){$tablerow[] = ' ' . $editLink . $deleteLink . '';} else{$tablerow[] = ' ' . $editLink . '';} $tablerow[] = ' ' . $exportLink . ''; $tablerow[] = ''; So würde der Link nur angezeigt werden, wenn in der Url "&showDelete=1" vorkommt. Wenn die Löschen-Funktion vollständig deaktiviert und nicht nur den Link versteckt werden soll, müssen in der Datei BibManager/BibManager.php folgende Zeilen auskommentiert werden: $wgAutoloadClasses['BibManagerDelete'] = $dir . 'specialpages/BibManagerDelete_body.php'; $wgSpecialPages['BibManagerDelete'] = 'BibManagerDelete';

Anleitung anpassen und installieren[Bearbeiten]

Die von halloWelt! gelieferte Datei "manual.xml" enthält alle 4 Anleitungen: Benutzerhandbuch, User manual, Administrationshandbuch und Admin manual, die jeweils durch die <page>-Elemente gegliedert sind.

  • Für das SalzWiki ist nur der <page>-Bereich "BibManager:Benutzerhandbuch" für den Import relevant, so dass eine Kopie der Datei unter "bibmanager_manual_user_de.xml" gespeichert wird und in dieser Datei die 3 anderen <page>-Bereiche entfernt werden.
  • Für das SaltWiki und das Repositorium ist jeweils nur der <page>-Bereich "BibManager:User manual" für den Import relevant, so dass eine Kopie der Datei unter "bibmanager_manual_user_en.xml" gespeichert wird und in dieser Datei die 3 anderen <page>-Bereiche entfernt werden.
  • Der Bilder-Import für das Handbuch findet nur im Repositorium statt.

Anleitung anpassen[Bearbeiten]

Im <title>-Element nach <page> ist jeweils "HalloWelt:" vor "BibManager:..." zu entfernen:

<page>
 <title>HalloWelt:BibManager:...</title>

Ebenso ist der Teil "Project:" vor "BibManager:..." in den Admin-Anleitungen am Ende des <text>-Elementes zu entfernen:

  [[Project:BibManager:...]]
  [[Project:BibManager:...]]</text>
  </revision>
</page>

Anleitung im Wiki installieren[Bearbeiten]

  • Die angepasste xml-Datei über "Spezialseiten->Import" ins Wiki laden.
  • Anschließend sind die Bilder für das Project:BibManager:... im Repositorium mittels DOS-Konsole und PHP hochzuladen, um sie ins Wiki zu bringen:
D:\
xampp\php\php.exe xampp\htdocs\saltwiki\maintenance\importImages.php xampp\htdocs\saltwiki\images_en

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"); 

CharacterEscapes, LOParserFunctions, ControlStructureFunctions[Bearbeiten]

Notwendig für #if: und #switch-Anweisungen (z. B. beim Einsetzen des Seitentitels im Kopf von Vorlage:Infobox_Salz und bei den Hilfe-Seiten. "ControlStructureFunctions" soll laut "mediawiki.org" nur bis Version 1.12 erforderlich und danach im Wiki-Code integriert sein, was aber scheinbar nicht zutrifft.
Alternativ zu "LOParserFunctions" und "ControlStructureFunctions" kann möglicherweise auch die Erweiterung "ParserFunctions" (http://www.mediawiki.org/wiki/Help:ParserFunctions) in Kombination mit der Erweiterung "Loop" (http://www.mediawiki.org/wiki/Help:Loop) verwendet werden, wobei Folgendes zu berücksichtigen ist:

Don't These Parser Functions Already Exist?
Yes and no. The ParserFunctions extension has
 #if, #ifeq, #ifexpr, #switch, and #ifexist, 
and Loop Functions extension has
 #for and #foreach. 
The limitation of all those parser functions is 
that wiki markup is parsed before any parameters are passed to the underlying function. 
These functions bypass that limitation through character escapes (see below), 
and allow wiki markup to be parsed after the parameters have been passed.
  • 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" );

CharInsert[Bearbeiten]

Diese Extension dient dazu Editierhilfen zum Einfügen von Spezialzeichen und Formatierungshilfen zur Verfügung zu stellen.Diese Hilfe wird im Bearbeitungsmodus und beim UpLoad-Formular zur Verfügung gestellt. Diese Erweiterung wurde Testweise installiert und dann wieder deaktiviert.

Die Extension wird bei http://www.mediawiki.org/wiki/Extension:CharInsert heruntergeladen und in ...Extensions/CharInsert extrahiert.

In die localsettings ist einzufügen:

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

In Mediawiki:Edittools werden die entsprechenden Zeichen bzw. Hilfen mit

<charinsert> .. </charinsert> 

eingefügt.

Cite[Bearbeiten]

Die Erweiterung "Cite" dient zum Erstellen von Fußnoten in Wiki-Artikeln.

  • Erweiterung unter http://www.mediawiki.org/wiki/Cite herunterladen.
  • Extrahieren der Dateien nach "\[wikiname]\extensions\Cite\"
  • Erweiterung in der Datei "LocalSettings.php" einfügen
require_once("$IP/extensions/Cite/Cite.php");

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

CiteThisPage[Bearbeiten]

Die Erweiterung "CiteThisPage" dient zum Erstellen von Zitierhilfen für Wiki-Artikel. Sie ist erst ab MW Version 1.24 einsetzbar.

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

ConfirmEdit[Bearbeiten]

Registrierte Nutzer dürfen auf die Diskussionseiten schreiben. Damit dies etwas sicherer vonstatten geht, wird mit ConfirmEdit ein Captcha eingeführt (bisher nur bei Salzwiki und Saltwiki, nicht bei Repositorium).

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

ContactPage - Kontaktseite (Wiki-Code de-Formal)[Bearbeiten]

Für Mitteilungen allgemeiner Art wird eine Kontaktformular-Seite eingesetzt, die im Repositorium nur nach Anmeldung zur Verfügung steht. Bei Versand einer Kopie an eine im Formular eingetragene E-Mail-Adresse steht im Betreff: "Kopie Ihrer Nachricht an Hornemann (von [Ihr Name])"

Für das Kontaktformular muss als Empfangsadresse ein bestehendes Wiki-Konto angegeben werden und muss als E-Mail-Absender wegen Authentifizierung beim Versand die Angabe von $wgPasswordSender übernommen werden:

$wgContactConfig['default'] = array(
 'RecipientUser' => 'Hornemann', //'WikiUser' // Must be a valid account //vormals $wgContactUser
 ...
 'SenderEmail' => null, // Defaults to $wgPasswordSender, may be changed as required
...);

Im jeweiligen Wiki-Konto "Hornemann" wird als E-Mail-Adresse "service@salzwiki.de" bzw. "service@saltwiki.net" angegeben. Es kann auch "salzwiki.fb@hawk-hhg.de" bzw. "saltwiki.fb@hawk-hhg.de" angegeben werden.

Für das Formular wird die Erweiterung "ContactPage" benutzt. Die Sie-Form der Wiki-Übersetzungsdatei ist um einen Eintrag zu ergänzen.

Das Absenden des Kontaktformulars wird bei Nutzung ohne Anmeldung zum Verhindern von Spam über ein Captcha abgesichert. Hierfür sind bei der Erweiterung für MW 1.23 (REL1_23) Anpassungen am Code der Dateien "ContactPage_body.php", "\i18n\de.json" und "\i18n\en.json" sowie "\i18n\qqq.json" erforderlich.

  • Dateien unter http://www.mediawiki.org/wiki/Extension:ContactPage bzw. für MW 1.23 unter https://git.wikimedia.org/zip/?r=mediawiki/extensions/ContactPage&h=daa666dec4793a2ce9675dbb8b6c365d105e8986&format=zip herunterladen und die Dateien unter "Extensions/ContactPage" speichern.
  • Für MediaWiki 1.23 in den Übersetzungsdateien "de.json", "en.json" und "qqq.json" Zeilen einfügen (siehe weiter unten)
  • In der Wiki-Systemtexte-Datei vor "'emailccsubject '=> '...'" das Array-Element "'emailccme' => 'Sende eine Kopie der E-Mail an mich'," einfügen und an Sie-Form anpassen: "Eine Kopie der E-Mail an mich senden"
    • Für MediaWiki 1.23 im Verzeichnis "[wikiverzeichnis]\languages\i18n\" aus der Datei "de.json" aus Zeile 1759 in Datei "de-formal.json" in Zeile 217 einfügen
  • Erweiterung mit Variablenzuweisungen in der Datei "LocalSettings.php" einfügen

ACHTUNG: Nach jedem mediawiki-Update muss überprüft werden, ob die vorgenommene Änderung in den Sprachdateien noch existiert. Deshalb ist von den Dateien jeweils eine Kopie "...SW.json" bzw. "...SW.php" zu speichern:

  • MW1.23
    • "[wikiverzeichnis]\languages\i18n\de.json"
    • "...\extensions\ContactPage\i18n\de.json", "...de-formal.json", "...en.json" und "...qqq.json"

MW 1.23 Code-Anpassungen[Bearbeiten]

Zur Code-Anpassung siehe auch https://gerrit.wikimedia.org/r/#/c/156052/

In der Datei "\extensions\ContactPage\i18n\qqq.json" Ergänzung bei "authors" hinter "Shirayuki" sowie in Zeile 25 am Ende ein Komma und darunter eine Zeile für "contactpage-captcha-error" einfügen:

{
  "metadata": {
    "authors": [
      ...
      "Shirayuki",
      "Gunnar Werner HAWK HHG"
    ]
  },
  ...
  "contactpage-usermailererror": "...",
  "contactpage-captcha-error": "Error message displayed when ehter was a CAPTCHA error (i.e. the user failed to enter the correct CAPTCHA, or didn't enter one at all, etc.)"
}

In der Datei "\extensions\ContactPage\i18n\en.json" Ergänzung bei "authors" hinter "Reedy" sowie in Zeile 20 am Ende ein Komma einfügen und darunter eine Zeile für "contactpage-captcha-error" einfügen:

{
  "metadata": {
    "authors": [
      ...
      "Umherirrender",
      "Gunnar Werner HAWK HHG"
    ]
  },
  ...
  "contactpage-usermailererror": "Mail object returned error:",
  "contactpage-captcha-error": "CAPTCHA error"
}

In der Datei "\extensions\ContactPage\i18n\de.json" Ergänzung bei "authors" hinter "Umherirrender", außerdem die Menüleisten-Bezeichnung "Kontaktseite" sowie Captcha-Texte einfügen:

{
  "metadata": {
    "authors": [
      ...
      "Umherirrender",
      "Gunnar Werner HAWK HHG"
    ]
  },
  "contact": "Kontaktseite",
  ...
  "contactpage-captcha": "Um die Nachricht senden zu können, bitte das Captcha lösen ([[Special:Captcha/help|weitere Informationen]])",
  "contactpage-captcha-error": "Captcha-Fehlfunktion",
  "contactpage-captcha-failed": "Captcha-Test nicht bestanden! ([[Special:Captcha/help|weitere Informationen]])"
}

Datei "ContactPage_body.php" vor Zeile 185 und nach Zeile 217+11 (228), vor Zeile 341+11+1 (353), nach Zeile 393+11+1+6 (411):

...
// Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
if ( $this->useCaptcha() ) {
  $formItems['Captcha'] = array(
    'label-message' => 'captcha-label',
    'type' => 'info',
    'default' => $this->getCaptcha(),
    'raw' => true,
  );
}

$form = new HTMLForm( $formItems, $this->getContext(), "contactpage-{$this->formType}" );
...
public function processInput( $formData ) {
  global $wgUserEmailUseReplyTo, $wgPasswordSender;
  global $wgCaptcha; // Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
...
// Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
if ( $this->useCaptcha() && !$wgCaptcha->passCaptcha() ) {
  // TODO proper i18n message
  return wfMessage( 'contactpage-captcha-error' )->plain();
}
// Stolen from Special:EmailUser
$error = '';
...
  private static function getYesOrNoMsg( $value ) {
    return wfMessage( $value ? 'htmlform-yes' : 'htmlform-no' )->inContentLanguage()->text();
  }
  // Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
  /**
  * @return boolean True if CAPTCHA should be used, false otherwise
  */
  private function useCaptcha() {
    global $wgCaptchaClass, $wgCaptchaTriggers;
 
    return $wgCaptchaClass &&
      isset( $wgCaptchaTriggers['contactpage'] ) &&
      $wgCaptchaTriggers['contactpage'] &&
      !$this->getUser()->isAllowed( 'skipcaptcha' );
  }
  // Captcha-Verwendung eingefügt für HAWK HHG 2015-12-07
  /**
  * @return string CAPTCHA form HTML
  */
  private function getCaptcha() {
    // NOTE: make sure we have a session. May be required for CAPTCHAs to work.
    wfSetupSession();
 
    $captcha = ConfirmEditHooks::getInstance();
    $captcha->trigger = 'contactpage';
    $captcha->action = 'contact';
 
    return '<div class="captcha">' .
      $captcha->getForm() .
      "</div>\n";
  }
}

LocalSettings.php[Bearbeiten]

// Version 2.2 für MediaWiki 1.25
#wfLoadExtension("ContactPage.php");
// Version 2.2 für MediaWiki 1.23
require_once( "$IP/extensions/ContactPage/ContactPage.php" );
$wgContactConfig['default'] = array(
  'RecipientUser' => 'Hornemann', //'WikiUser' // Must be the name of a valid account //vormals $wgContactUser
  'SenderName'=> 'Kontaktformular ' . $wgSitename, //"Contact Form " // "Contact Form on" needs to be translated //vormals $wgContactSenderName
  'SenderEmail'=> null // Defaults to $wgPasswordSender, may be changed as required
  'RequireDetails'=> true, // Whether users will be required to supply a name and an email address on Special:Contact
  'IncludeIP'=> false, // Whether the form will include a checkbox offering to put the IP address of the submitter in the subject line
  'AdditonalFields'=> array(
    'Text'=> array(
      'label-message'=> 'E-Mail-Nachricht', //'e-mail-message' //'emailmessage',
      'type'=> 'textarea',
      'rows'=> 20,
      'cols'=> 80,
      'required' => true, //Pflichtfeld
    ),
  ),
  // Added in MW 1.26
  #'DisplayFormat' => 'table', // See HTMLForm documentation for available values.
  #'RLModules' => array(), // Resource loader modules to add to the form display page.
  #'RLStyleModules' => array(), // Resource loader CSS modules to add to the form display page.
);

CreativeCommonsRdf[Bearbeiten]

Die Erweiterung soll ab MW-Version 1.19 die Variable "$wgEnableCreativeCommonsRdf" in der Datei "LocalSettings.php" ersetzen, hat aber noch Beta-Status (2015-09-21). Die 3 Dateien der Erweiterung können heruntergeladen werden bei https://www.mediawiki.org/wiki/Extension:CreativeCommonsRdf

DynamicPageList[Bearbeiten]

Es gibt 3 Erweiterungen mit der Bezeichnung "DynamicPageList", wobei die erste mit dem Alias "Intersection" nicht verwendet wird (siehe auch https://www.mediawiki.org/wiki/Extension:DPL).

MediaWiki 1.23[Bearbeiten]

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


Inline SVG Extension[Bearbeiten]

Diese Erweiterung wird ab Mediawiki 1.23 nicht mehr verwendet, weil die üblichen Browser inzwischen SVG-Elemente darstellen können.

Die php-Datei "SVGtag.php" sorgt dafür, dass Inline-SVG-Code im Upload-Verzeichnis gespeichert und in einem "iframe" geladen wird. Dies ist erforderlich für ältere Browser, insbesondere für Internet Explorer bis einschließlich Version 8.

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

Interwiki[Bearbeiten]

Die Erweiterung "Interwiki" ist in Mediawiki seit Version 1.21 enthalten und hieß ehemals "SpecialInterwiki", bevor sie umbenannt wurde.

Diese Erweiterung fügt die Seite Special:Interwiki zu Mediawiki hinzu, um die Interwiki-Tabelle sehen und editieren zu können. Es werden auch alle Änderungen aufgezeichnet. Mit dieser InterWiki Tabelle kann man einerseits einfach zu Inhalten in anderen Wikis verlinken, auch zu Wikipedia, andererseits ist es damit möglich durch das Setzen von $wgEnableScaryTranscluding = true; Inhalte eines anderen Wikis zu "transcludieren".

Die Erweiterung für MW 1.23 wird bei http://www.mediawiki.org/wiki/Extension:Interwiki heruntergeladen und in das Verzeichnis "[wikiname]\extensions\Interwiki" extrahiert.

In der Datei "LocalSettings.php" eines jeden Wikis ist dann einzufügen:

##to allow interwiki-linking, für Version MW 1.23 anderer Dateiname
#require_once("$IP/extensions/Interwiki/SpecialInterwiki.php");
require_once("$IP/extensions/Interwiki/Interwiki.php");
$wgGroupPermissions['*']['interwiki'] = false;
$wgGroupPermissions['sysop']['interwiki'] = true; ## nur sysops können die InterWiki Tabelle ändern und sehen
$wgEnableScaryTranscluding = true;                ## Seiten von anderen Wikis können eingebunden werden

Diese Erweiterung wurde in SalzWiki, SaltWiki und im Repositorium installiert.

Anpassungen für geänderte Server-Adresse[Bearbeiten]

Für die Umstellung der Wikis von IP-Adressen auf Domain-Adressen sind die Datenbank-Einträge der Tabelle "..._interwiki" zu bearbeiten. Hierzu wird unter "Daten und Werkzeuge => Interwikidaten ansehen und bearbeiten" bzw. "Data and Tools => View and edit interwiki data" die entsprechende Spezial-Seite "Spezial:Interwikitabelle" bzw. "Special:Interwiki" aufgerufen.

Anpassungen für HTTPS[Bearbeiten]

Bei InterWikis in der Tabelle, für die sowohl "Als lokales Wiki definiert" als auch "Einbinden zulässig" aktiviert ist, die URL von "http" zu "https" ändern. Beispiel:

wikipedia | https://de.wikipedia.org/wiki/$1 | ja | ja

JavaScript[Bearbeiten]

Entfällt bei MW 1.23.11 LTS und wird ersetzt durch eine Anpassung in der Datei "skins\MonoBook.php".

Die Erweiterung hat den Status "unmaintained" (Stand 2015-09-15); die Version 3.0.8 (2012-02-15) kann wegen einer ungültigen Internetadresse nicht heruntergeladen werden, doch gibt es auf der Internetseite https://www.organicdesign.co.nz/Extension:Javascript den Hinweis, dass die Erweiterung obsolet ist, seitdem MediaWiki den ResourceLoader bereitstellt, siehe https://www.mediawiki.org/wiki/ResourceLoader.

Diese Erweiterung diente zusammen mit der von S. Reher gelieferten Datei "customizeSidebar.js" dazu, den Navigationsbereich "Werkzeuge" in der Sidebar entsprechend dem Anmeldestatus zu manipulieren - siehe hierzu Sidebar anpassen. Dies funktionierte allerdings nur, wenn beim Browser JavaScript aktiviert war.

sichtbare Toolbox-Menüpunkte[Bearbeiten]

  • SalzWiki: alle Gruppen und User
    • Druckversion
  • SaltWiki: alle Gruppen und User
    • Printable version
  • Repository: alle Gruppen und User
    • Printable version

ausgeblendete Toolbox-Menüpunkte[Bearbeiten]

  • SalzWiki: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
    • "Links auf diese Seite" (Special:WhatLinksHere/Main_Page)
    • "Änderungen an verlinkten Seiten" (Spezial:%C3%84nderungen_an_verlinkten_Seiten)
    • "Hochladen" (Special:Upload)
    • "Spezialseiten" (Special:SpecialPages)
    • "Permanenter Link" (Main_page&oldid=921)
    • "Seiteninformationen" ([Seitentitel]&action=info])
  • SaltWiki: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
    • "What links here" (Special:WhatLinksHere/Main_Page)
    • "Related changes" (Special:RecentChangesLinked)
    • "Hochladen" (Special:Upload)
    • "Spezialseiten" (Special:SpecialPages)
    • "Permanent link" (Main_page&oldid=921)
    • "Page information" ([Seitentitel]&action=info])
  • Repository: Nicht-Mitglieder der Gruppen "autor", "Administrators", "forschung"
    • "Links auf diese Seite" (Special:WhatLinksHere/Main_Page)
    • "Änderungen an verlinkten Seiten" (Spezial:%C3%84nderungen_an_verlinkten_Seiten)
    • "Datei Hochladen" (Special:Upload)
    • "Spezialseiten" (Spezial:Spezialseiten)
    • "Permanent link" (Main_page&oldid=9522)
    • "Seiteninformationen" ([Seitentitel]&action=info])

Math (Wiki-Code)[Bearbeiten]

"Math" kann heruntergeladen werden von https://www.mediawiki.org/wiki/Extension:Math/de. Es ist inzwischen eine Erweiterung; bei MW1.16 wurde hingegen die Datei "[wikiname]\includes\Math.php" angepasst.

Die Erweiterung "Math" ist für die Darstellung von Formeln erforderlich und nutzt standardmäßig "texvc" (TeX validator and converter), wobei das mitgelieferte "texvc" nur unter Linux genutzt werden kann und für Windows erst kompiliert werden muss und problembehaftet ist.

Somit scheidet "texvc" unter Windows aus. Stattdessen muss für die Nutzung von GhostScript, ImageMagick und MikTeX wie bei MW1.16 der Wiki-Code angepasst und die Klasse "LatexRender" in der Datei "Math_SW.php" mit Anpassungen als Klasse "MathLatexRender" weiterverwendet werden. Der Quelltext von "LatexRender" für alte MediaWikiVersionen wie MW1.16 steht zur Verfügung bei "https://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Windows/math.php".

Getestet werden kann die Erweiterung "Math" über die Kommandozeile:

D:
cd xampp\htdocs\[wikiname]
D:\xampp\php\php.exe tests\phpunit\phpunit.php extensions\Math\tests\

Zur Installation und Konfiguration von GhostScript, ImageMagick und MikTeX siehe Eingabe_von_Formeln_mittels_Tex_(Wiki-Code)

Symbol im Editor[Bearbeiten]

Bei Verwendung des einfachen Standard-Editors wird diesem automatisch ein Symbol für "Math" mit den entsprechenden Funktionen hinzugefügt.

Bei Verwendung der Erweiterung "WikiEditor" muss die Editor-Erweiterung angepasst werden, um das "Math"-Symbol mit den Bearbeitungsfunktionen nutzen zu können.

Installation "Math"[Bearbeiten]

  • Die heruntergeladene Erweiterung entpacken in das Verzeichnis "extensions\"
  • Die Dateien "Math.php" und "MathRenderer.php" umbenennen in "Math_original.php" und "MathRenderer_original.php"; davon Kopien "Math.php" und "MathRenderer.php" erstellen und die Kopien wie nachfolgend beschrieben anpassen
  • Die Erweiterung in der Datei "LocalSettings.php" einbinden
    require_once "$IP/extensions/Math/Math.php";
  • Existenz der Datenbanktabelle "math" überprüfen, ansonsten erstellen
    • entweder SQL-Befehl für MySQL/MariaDB aus der Datei "\extensions\Math\db\math.sql" mit phpMyAdmin ausführen
    • oder per Kommandozeile eine Aktualisierung ausführen, aber nur wenn die Tabelle noch nicht exisitiert:
      D:\xampp\php\php.exe D:\xampp\htdocs\[wikiname]\maintenance\update.php

ImageMagick und MikTeX für Math statt Texvc[Bearbeiten]

Bei MW1.23 soll zwar "Math" ohne "ImageMagick" verwendet werden (siehe https://www.mediawiki.org/Manual:Running_MediaWiki_on_Windows#ImageMagick), doch funktioniert dies nicht mit "texvc" unter Windows. Deshalb wird in der Datei "LocalSettings.php" weiterhin "ImageMagick" mit "true" aktiviert statt mit "false" deaktiviert und außerdem "Texvc" für die Datei "Math.hooks.php" deaktiviert:

$wgUseImageMagick = true;
#ImageMagick
$wgImageMagickConvertCommand = 'D:\texmf\imagick\convert.exe';
$wgImageMagickIdentifyCommand = 'D:\texmf\imagick\identify.exe';
#TeX
$wgLaTexCommand = 'D:\texmf\miktex\bin\latex.exe';
$wgDvipsCommand = 'D:\texmf\miktex\bin\dvips.exe';
$wgSVGConverter = 'ImageMagick';
$wgSVGConverters = array(
  'ImageMagick' => '"D:\texmf\imagick\convert.exe" -background white $input PNG:$output',
);
require_once "$IP/extensions/Math/Math.php";
$wgMathDisableTexFilter = true; // in Math.hooks.php
Anpassungen "Math.php" und "MathRenderer.php" (Wiki-Code)[Bearbeiten]
  • in der Datei "Math.php" zwischen Z.191 und Z.192 die Klasse "LatexRender" hinzufügen
#$wgAutoloadClasses['MathLatexRender.php'] // für HAWK HHG eingefügt 2016-04-25
  • in der Datei "MathRenderer.php" bei der Funktion "getRenderer(...)" in Z.122f bei "default:"
default: // für HAWK HHG angepasst 2016-04-25
$renderer = new MathLatexRender( $tex, $params ); #$renderer = new MathTexvc( $tex, $params );
  • von den beiden Dateien eine Sicherungskopie "Math_SW.php" und "MathRender_SW.php" vorsorglich für Änderungen durch Wiki-Updates speichern
Anpassungen Klasse "LatexRender"[Bearbeiten]

In der alten Datei "Math.php" bzw. "Math_SW.php" waren 2 Klassen, nämlich die Klasse "MathRenderer" und die Klasse "LatexRender" enthalten, wobei "MathRenderer" im Vergleich zum Original nur rudimentär vorhanden war, um ein Objekt der Klasse, "LatexRender" zu erzeugen.

Aus diesen beiden Klassen wird für MW1.23 die Klasse "MathLatexRender" als Sub-Klasse der Klasse "MathRenderer" aus der Erweiterung "Math.

Anstatt der Klasse "MathRenderer" unterhalb der Klasse "LatexRender" wird nun in der Klasse "LatexRender" die Funktion "renderMath()" durch Umbenennung und Anpassung als Konstruktor-Funktion "__constructor(...)" verwendet, wobei die Konstruktor-Funktion auch die Funktion "LatexRender(...)", die bisher zur Initialisierung als Konstruktor diente, ersetzt.

Hinzu kommt eine neue Funktion "render()", die durch die Definition in der Datei "MathRenderer.php" erforderlich ist.

Zudem werden die Variablen $url und $text als Klassen-Variablen definiert.

Außerdem wird in der Funktion "cleanTemporaryDirectory()" eine Ergänzung vorgenommen, damit vor dem Löschen der Dateien deren Existenz überprüft wird, um Warnungen zu vermeiden.

Zusätzlich werden für neuere PHP-Versionen bei "htmlentities(...)" die Parameter für XHTML und UTF-8 hinzugefügt.

/**
 * LaTeX Rendering Class
 * Copyright (C) 2003  Benjamin Zeiss <zeiss@math.uni-goettingen.de>
 * -----------------------------------------------------------------------
 * Changed to MathLatexRender Class for HAWK HHG by Gunnar Werner (C) 2016
 * to be used with MW 1.23 LTS and extension Math REL-1_23...
 * for Windows with GhostScript+ImageMagick+MikTeX instead of Texvc
 * Notice 1: In file Math.php loading this class has to be added:
 * $wgAutoloadClasses['MathLatexRender'] = $dir . 'MathLatexRender.php';
 * Notice 2: In file MathRenderer.php new default object $renderer has to be changed:
 * $renderer = new MathLatexRender( $tex, $params ); #$renderer = new MathTexvc( $tex, $params );
 * -----------------------------------------------------------------------
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
...
 * @author Benjamin Zeiss <zeiss@math.uni-goettingen.de>
 * => @author Gunnar Werner for HAWK HHG <gunnar.werner@hawk-hhg.de>
 * @version v0.8 => v0.8.2016.05
 * @package latexrender => class MathLatexRender for extension Math
...
*/
...
// "extends MathRenderer" new by changes 2016
class MathLatexRender extends MathRenderer {
  ...
  // new by changes 2016
  var $url = "";
  var $text = "";
  ...
  /* function replaced with function __constructor() below by changes 2016
  function LatexRender($picture_path,$picture_path_httpd,$tmp_dir) {
    ...
  }
  */
  // new constructor combining old function LatexRender()
  // and function renderMath() from old class MathRenderer
  // by changes 2016
  public function __construct ($latex_formula, $params = array() ) {
    global $wgMathDirectory,
           $wgMathPath,
           $wgTmpDirectory,
           $wgLaTexCommand,
           $wgDvipsCommand,
           $wgImageMagickConvertCommand,
           $wgImageMagickIdentifyCommand;

    $latex_formula = '\displaystyle ' . $latex_formula;

    // from old function LatexRender()
    $this->_picture_path = $wgMathDirectory;
    $this->_picture_path_httpd = $wgMathPath;
    $this->_tmp_dir = $wgTmpDirectory;
    $this->_tmp_filename = md5(rand());

    // check Math dir
    if(!file_exists($wgMathDirectory)){@mkdir($wgMathDirectory);}
    if(!file_exists($wgTmpDirectory)){@mkdir($wgTmpDirectory);}

    // Objects $latex and $url replaced with $this by changes 2016
    $this->_latex_path = $wgLaTexCommand;
    $this->_dvips_path = $wgDvipsCommand;
    $this->_convert_path = $wgImageMagickConvertCommand;
    $this->_identify_path = $wgImageMagickIdentifyCommand;

    $this->url = $this->getFormulaURL($latex_formula);

    // htmlentities for newer PHP versions changed 2016
    $alt_latex_formula = htmlentities($latex_formula, ENT_QUOTES|ENT_XHTML, "UTF-8");
    $alt_latex_formula = str_replace("\r", "", $alt_latex_formula);
    $alt_latex_formula = str_replace("\n", "", $alt_latex_formula);
    $alt_latex_formula = str_replace('\displaystyle ', "", $alt_latex_formula);

    if($this->url != false){
      $this->text = '<img src="'.$this->url.'" title="'.$alt_latex_formula.'" alt="'.$alt_latex_formula.'" />';
    }
    else{
      $this->text = '[Unparseable or potentially dangerous latex formula. Error '.$this->_errorcode.' '.$this->_errorextra.']';
    }
  }
  ...
  // new for abstract function in "MathRenderer.php" by changes 2016
  public function render(){
    return $this->text."\n";
  }
  ...
  function renderLatex($latex_formula) {
    ...
    // create temporary dvi file
    ...
    $status_code = exec($command);
    // added checking file by changes 2016
    if (!$status_code || !file_exists($this->_tmp_filename.".dvi")) {
      ...
      $this->_errorcode = 4;
      return false;
    }
    ...
  }
  ...
  function cleanTemporaryDirectory() {
    ...
    // check existence before deleting to prevent warnings added by changes 2016
    /*
    unlink($this->_tmp_dir."/".$this->_tmp_filename.".tex");
    ...
    */
    $file_types = array("tex", "aux", "log", "dvi", "ps", $this->_image_format);
    foreach($file_types as $f_typ){
      $tmp_file = $this->_tmp_dir."/".$this->_tmp_filename.".".$f_typ;
      if(file_exists($tmp_file)){
        unlink($tmp_file);
      }
      $tmp_file = "";
    }

    chdir($current_dir);
  }
}

LaTeXML für Math statt Texvc[Bearbeiten]

Da LaTeXML nur bei einfachen Formeln funktioniert, kommt es nicht als Alternative zu Texvc in Betracht.

In der Datei "readme" gibt es folgende Hinweise:

  • Seit MW1.19 beschränken sich die Rendering-Optionen auf "Always PNG" und "Leave it as TeX".
  • Statt Bildern kann "MathML" mittels "LaTeXML" verwendet werden
    • Für LaTeXML ist "php5-curl" erforderlich; bei Windows ist es im Verzeichnis "\php\ext\" die Datei "php_curl.dll", die als Modul in der Datei "php.ini" eingebunden sein muss
    • In der Datei "LocalSettings.php" wird LaTeXML für die Konvertierung zu MathML verwendet: "$wgMathUseLaTeXML = true;"
    • In der Datei "LocalSettings.php" wird für anonyme Seitenaufrufe angegeben: "$wgDefaultUserOptions['math'] = MW_MATH_LATEXML"
    • Empfohlen wird eine Core-Version von wmf/1.22wmf7 oder neuer

Texvc für Math kompilieren[Bearbeiten]

Für die Kompilierung ist "MinGW" gegenüber "Cygwin" vorzuziehen, weil es unabhängig von den dll-Dateien und deren MS-Lizenzen mit der MSVC-Runtime funktioniert (siehe http://stackoverflow.com/questions/771756/what-is-the-difference-between-cygwin-and-mingw).

Da für "MinGW" keine verwertbare Ausgangsdatei zur Verfügung steht - , "makefile" wird nicht akzeptiert -, müssen "Cygwin" und "OCaml" (Version 4.02.3 32Bit + findlib + batteries) installiert werden (Dauer ca. 20 Min.). "OCaml" kann bei http://caml.inria.fr oder bei http://protz.github.io/ocaml-installer/ heruntergeladen werden.

Cygwin

Während der Installation von "OCaml" in das Verzeichnis "D:\texmf\" wird zusätzlich "Cygwin" im Verzeichnis "C:\cygwin\" installiert, sofern noch nicht vorhanden.

Für die Installation von "Cygwin" muss zum Herunterladen ein Mirror-Server ausgewählt werden, z. B. ftp://ftp.hawo.stw.uni-erlangen.de.

Vor dem Kompilieren müssen Dateien angepasst werden (siehe https://www.mediawiki.org/wiki/Texvc#Windows und https://www.mediawiki.org/wiki/MWWRender.ml):

  • \Math\math\render.ml Z.42 und Z.48 (2 Backslashes statt einem Schrägstrich)
...finalpath^"\\"^md5...
...finalpath^"\\"^md5...

MinGW

"MinGW" (2013-10-26) kann als Installationsmanager, der während der Installation die ausgewählten "Packages" aus dem Internet lädt (Dauer ca. 10 Min.), heruntergeladen werden bei https://sourceforge.net/projects/mingw/files/ (Stand 2016-04-29).

"MinGW" wird als 32Bit-Version im Verzeichnis "C:\MinGW\" installiert und wird nicht in der Systemsteuerung bei den installierten Programmen aufgelistet. Das Programm-Unterverzeichnis "bin\" muss bei der Umgebungsvariablen "Path" hinzugefügt und der Server danach neu gestartet werden.

Im Installationsmanager bei "Basic Setup" "All Packages" alle Packages von "MinGW", aber nicht "MSYS" aktivieren. Danach im Menü "Installation => Apply changes" auswählen.

Kompilieren (siehe auch http://www.mingw.org/wiki/mingw_for_first_time_users_howto):

  • Die DOS-Kommandozeile als Administrator öffnen
  • zum "Math"-Verzeichnis wechseln
  • Befehl zum Kompilieren eingeben
C:\MinGW\bin\gcc makefile -o texvc.exe

Fehlermeldung: "Das Programm kann nicht gestartet werden, da libiconv-2.dll auf dem Computer fehlt."

In "Systemsteuerung => Alle Systemsteuerungselemente => System => Erweiterte Systemeinstellungen => Umgebungsvariablen" bei "Path" am Ende einfügen:

;C:\MinGW\bin\

MwEmbedSupport[Bearbeiten]

Die Erweiterung wird für die Wiedergabe von Videodateien mit der Erweiterung "TimedMediaHandler" benötigt. Sie kann heruntergeladen werden bei https://www.mediawiki.org/wiki/Extension:MwEmbedSupport

OggHandler (JavaScript)[Bearbeiten]

Die Erweiterung wird ab Mediawiki 1.24 nicht mehr unterstützt; empfohlen wird die Erweiterung "TimedMediaHandler", die die Erweiterung "MwEmbedSupport" benötigt und ebenfalls mit JavaScript funktioniert.

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 heise.de und wird dann gespeichert unter "D:\ffmpeg-wiki\"

Installation der Erweiterung:

## Repository: OggHanlder oder MwEmbedSupport und TimedMediaHandler
## OggHandler nur bis MW 1.23, danach MwEmbedSupport und TimedMediaHandler
require_once("$IP/extensions/OggHandler/OggHandler.php");
# FFmpeg auskommentiert, solange kostenfreie Lizenz für Hochschule ungeklärt ist
#$wgFFmpegLocation = "D:\ffmpeg-wiki\bin\ffmpeg";

Piwik Integration[Bearbeiten]

Die Erweiterung "Piwik Integration" für die Nutzung der Statistik-Anwendung "Piwik" kann ab den Versionen MW 1.14 und Piwik 0.4 verwendet werden.

  • Dateien unter "extensions\Piwik\" speichern
  • In der Datei "LocalSettings.php" einfügen:
##
## EXTENSIONS
...
require_once( "$IP/extensions/Piwik/Piwik.php" );
$wgPiwikURL = $_SERVER['SERVER_NAME']."/analytics/piwik"; # ohne Protokoll-Angabe und ohne Schrägstrich am Ende!
$wgPiwikIDSite = "1"; # SalzWiki=1, SaltWiki=2, Repository=3

Hinweis: Die Beispielangabe zu "$wgPiwikURL" bei der Internetseite, auf der die Erweiterung angeboten wird, ist nicht korrekt, weil die Erweiterung den Schrägstrich am Ende der Adresse im HTML-Quelltext beim Piwik-JS-Teil hinzufügt:

$wgPiwikURL = "piwik-host.tld/dir/"; # ohne Protokoll-Angabe!

QuestyCaptcha[Bearbeiten]

Für SaltWiki wird zusätzlich zu "ConfirmEdit" als Erweiterung das Captcha "QuestyCaptcha" gegen Spam-Anmeldungen genutzt, da das Standard-Mathe-Captcha nicht ausreichte. Die anderen angebotenen Captchas werden in zukünftigen Mediawiki-Versionen nicht mehr unterstützt oder funktionieren nicht mit allen gängigen Browsern oder funktionieren mit nicht-barrierefreien Bildern und/oder benötigen zusätzliche Installationen auf dem Wiki-Server mit Administrationsrechten, weshalb "QuestyCaptcha" trotz Beta-Status als einzig brauchbare Möglichkeit verwendet werden muss.

  • Dateien "QuestyCaptcha.php", "QuestyCaptcha.class.php" und "QuestyCaptcha.i18n.php" unter http://www.mediawiki.org/wiki/Extension:QuestyCaptcha herunterladen und unter "extensions\ConfirmEdit\" speichern.
  • In der Datei "LocalSettings.php" nach "require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );" einfügen:
##
## EXTENSIONS
...
require_once( "$IP/extensions/ConfirmEdit/QuestyCaptcha.php" );
$wgCaptchaClass = "QuestyCaptcha";
# Salzwiki
$wgCaptchaQuestions[] = array('question' => 'Welches Wort fehlt: "Eine Frage stellen, eine ... geben"?', 'answer' => '***' );
$wgCaptchaQuestions[] = array('question' => 'Um welche Art von Webseiteninhalt handelt es sich hier: Blog oder Wiki?', 'answer' => '***' );
$wgCaptchaQuestions[] = array('question' => 'Wie lautet der Name dieses Wikis?', 'answer' => $wgSitename );
$wgCaptchaQuestions[] = array('question' => 'Bitte das magische Wort - Salz - hier eingeben:', 'answer' => '***' );
$wgCaptchaQuestions[] = array('question' => 'Bitte das Spezialwort - 8Acht8 - hier eingeben:', 'answer' => '***' );
# Saltwiki
$wgCaptchaQuestions[] = array('question' => 'Which is the language of this question: Dutch, English, French, German or Spanish?', 'answer' => '***' );
$wgCaptchaQuestions[] = array( 'question' => 'Please write the following word backwards: '.$wgSitename, 'answer' => strrev($wgSitename) ); #'ikiwtlaS'
$wgCaptchaQuestions[] = array( 'question' => 'The taste of salt is neither bitter nor sweet nor sourish but …', 'answer' => '***' );
$wgCaptchaQuestions[] = array('question' => 'What is the missing word: "Ask a question, give an …"', 'answer' => ***'');
$wgCaptchaQuestions[] = array('question' => 'What kind of web content is this: Blog or Wiki?', 'answer' => '***');
$wgCaptchaQuestions[] = array( 'question' => 'What is this wiki\'s name (in capital letters)?', 'answer' => strtoupper($wgSitename) ); #'SALTWIKI'
# Repository
$wgCaptchaQuestions[] = array('question' => 'Which is the language of this question: Dutch, English, French, German or Spanish?', 'answer' => '***' );
$wgCaptchaQuestions[] = array( 'question' => 'Please write the following word backwards: '.$wgSitename, 'answer' => strrev($wgSitename) ); #'yrotisopeR'
$wgCaptchaQuestions[] = array( 'question' => 'The taste of salt is neither bitter nor sweet nor sourish but …', 'answer' => '***' );
$wgCaptchaQuestions[] = array('question' => 'What is the missing word: "Ask a question, give an …"', 'answer' => ***'');
$wgCaptchaQuestions[] = array('question' => 'What kind of web content is this: Blog or Wiki?', 'answer' => '***');
$wgCaptchaQuestions[] = array( 'question' => 'What is this wiki\'s name (in capital letters)?', 'answer' => strtoupper($wgSitename) ); #'REPOSITORY'
#$wgCaptchaQuestions[] = array('question' => 'Please write the magic secret, "salt", here:', 'answer' => '***');
#$wgCaptchaQuestions[] = array('question' => 'Type the code word, 8eight8, here:', 'answer' => '***');

## Auslöser für Captcha-Aktivierung
# Salzwiki/Saltwiki
$wgCaptchaTriggers['edit']          = true; 
$wgCaptchaTriggers['create']        = true; 
$wgCaptchaTriggers['addurl']        = true; 
$wgCaptchaTriggers['createaccount'] = true;
$wgCaptchaTriggers['badlogin']      = true;
# Salzwiki/Saltwiki/Repository
$wgCaptchaTriggers['contactpage'] = true;
...
##
## EINSTELLUNGEN
...
## Salzwiki/Saltwiki
#captcha Hschwarz 12.02.2010
$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;

SaltWiki (Wiki-Code)[Bearbeiten]

Die Erweiterung "SaltWiki" ergänzt die Erweiterung "BibManager" für Volltexte und DOIs bei den BibTex-Attributen. Da sich in der verwendeten BibManager-Version der Dateipfad für eine Grafik geändert hat, muss der Code dieser Erweiterung angepasst werden.

Von der angepassten Datei "SaltWiki.php" wird eine Kopie mit dem Suffix "_SW" gespeichert.

Versionshinweis[Bearbeiten]

Die Version 2015-05-25 enthält eine Korrektur in der Sprachdatei "SaltWiki.i18n.php", damit bei "de" nicht wie bei "de-formal" die Sie-Form verwendet wird.

Fehler (Wiki-Code)[Bearbeiten]

In der Datei "SaltWiki.php" wird in der Funktion "sw_onBibManagerGetIcons(...)" in Z.161 eine Grafik aus dem Verzeichnis "\extensions\BibManager\client\images\" statt aus dem Verzeichnis "\extensions\BibManager\resources\images\" verwendet, weshalb der Alternativtext der Grafik angezeigt wird.

Z.159ff

// für HAWK HHG und MW1.23LTS Pfad von "client" zu "resources" angepasst 2016-06-14
$icons['fulltext'] = array (
  'src' => $wgScriptPath . '/extensions/BibManager/resources/images/' . $icon,
  ...
);

Veralteter Code[Bearbeiten]

Es wird noch die Funktion "wfMsg()" anstatt von "wfMessage()" in der Datei "SaltWiki.php" verwendet.

SaltWikiUpload[Bearbeiten]

Die Erweiterung "SaltWikiUpload" ergänzt die Erweiterung "BibManager" für das Hochladen von Dateien im Repositorium unter Berücksichtigung von Meta-Daten (Vergleich der Formulareingaben siehe weiter unten)

Versionshinweis[Bearbeiten]

Die Version 2012-01-25 enthält

  • in der Datei "SaltWikiUpload_body.php" ab Z.66 die Variable $aAuthorsLinks und in "foreach..." ab Z.104 Änderungen für $sFieldValue vor "$aText[]..."
  • in der Sprachdatei "SaltWikiUpload.i18n.php" in den Zeilen 53, 105 und 157 ein Zusatzelement "help-various_bibtex"
  • in der Datei "\includes\SaltWikiUpload_Fields.php" das Zusatzelement "help-various_bibtex"
  • in der Datei "\includes\SaltWikiUpload_HTMLDateField.php" Korrekturen zur Darstellung von Monatszahlen kleiner als 10 mit vorangestellter 0

Fehler[Bearbeiten]

  • Das erweiterte Formular wird nicht angezeigt, sondern das MW-Upload-Formular
  • Beim Hochladen mittels MW-Upload-Formular scheitert das Hochladen mit der Fehlermeldung "Es gibt fehlerhaft ausgefüllte Felder", wenn die Erweiterung in der Datei "LocalSettings.php" eingebunden wird.
  • Die Sprachdatei "SaltWikiUpload.i18n.php" enthält bei "de" die Sie-Form wie bei "de-formal".

Veralteter Code[Bearbeiten]

  • Funktion "wfMsg" statt "wfMessage" in den Dateien
    • "SaltWikiUpload_body.php"
    • "\includes\SaltWikiUpload_Fields.php"
    • "\includes\SaltWikiUpload_HTMLDateField.php"

Formularunterschiede[Bearbeiten]

SaltWikiUpload-Formular

  • Metadaten
    • Beschreibung
    • Quelle
    • Datum
    • Autor(en)
    • Berechtigung
    • Schlagwörter
    • Typ
  • Medium
    • Medienart
  • Quelldatei
    • Quelldatei
  • Dateibeschreibung
    • Zielname
    • Weitere Anmerkungen

MW1.23LTS-Upload-Formular

  • Quelldatei
    • Quelldatei
  • Dateibeschreibung
    • Zielname
    • Beschreibung/Quelle
    • Lizenz
  • Hochladeoptionen
    • Diese Datei beobachten
    • Warnungen ignorieren

Quellcode der Version 2012-01-25[Bearbeiten]

Zeile 66ff unter "$aAuthors = explode(...);"

$aAuthorsLinks = array();
foreach( $aAuthors as $sAuthor ){
  ...
  $aCategories[] = '[['.$sPrefixedCatText.']]';
  $aAuthorsLinks[] = '[[:'.$sPrefixedCatText.'|'.$oCategoryTitle->getText().']]';
}

Zeile 104ff vor "$aText[] = ..."

foreach( $aTemplate as $sFieldName => $sFieldValue ) {
  if( in_array( $sFieldName, array('literature_bibtex','grey_literature_bibtex','unpublished_reports_bibtex') ) && !empty($sFieldValue) ){
    $sFieldValue = '<bib id="'.$sFieldValue.'" />';
  }
  if( $sFieldName == 'literature_doi' && !empty($sFieldValue) ){
    $sFieldValue = 'http://dx.doi.org/'.$sFieldValue;
  }
  if( $sFieldName == 'general_author' && !empty($sFieldValue) ){
    $sFieldValue = implode('; ', $aAuthorsLinks);
  }
  
  $aText[] = '|'.$sFieldName.'='.$sFieldValue;
}

Terminology[Bearbeiten]

Diese Erweiterung wird seit 2010-07-29 nicht mehr weiterentwickelt. Sie gilt als ineffizient bei umfangreichen Glossars. Es wird die Erweiterung "Lingo" empfohlen: http://www.mediawiki.org/wiki/Extension:Lingo.

Die Extension dient zum Erstellen eines Glossars.
Um Verwirrungen zu vermeiden wurde bei "Terminology" 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");


TimedMediaHandler (JavaScript)[Bearbeiten]

Die Erweiterung steht ab Mediawiki 1.17 zur Verfügung und beinhaltet den "Kaltura HTML5 Player" (JavaScript, http://www.html5video.org/kaltura-player/docs). Unterstützt werden Streaming, WebM und Ogg sowie gegebenenfalls getID3.

Die Erweiterung benötigt zusätzlich

  • die Erweiterung "MwEmbedSupport"
  • libwinpthread-1.dll für die Installation der Anwendung "ffmpeg"
  • die Anwendungen
    • "ffmpeg"
    • "ffmpeg2theora"
    • "oggThumb"
  • eventuell auch die Anwendungen
    • "PEAR File_Ogg", wenn nicht in "...\extensions\TimedMediaHandler\handlers\OggHandler\" die Datei "OggHandler.php" und das Verzeichnis "PEAR\" mit dem Unterverzeichnis "File_Ogg\" vorhanden sind
      • "PEAR Package Manager" oder "PEAR Pyras Installer"
      • "PEAR File_Ogg" 0.3.1 Beta 2010-08-27 (Stand 2016-06-21) wie bei Erweiterung "OggHandler" für "oggThumb"-Vorschaubilder
    • "getID3()"

Für Details siehe https://phabricator.wikimedia.org/diffusion/ETMH/browse/master/README.

## Repository: OggHanlder oder MwEmbedSupport und TimedMediaHandler
## OggHandler nur bis MW 1.23, danach MwEmbedSupport und TimedMediaHandler
#require_once("$IP/extensions/OggHandler/OggHandler.php");
# FFmpeg auskommentiert, solange kostenfreie Lizenz für Hochschule ungeklärt ist
#$wgFFmpegLocation = "D:\ffmpeg-wiki\bin\ffmpeg";
## TimedMediaHandler mit MwEmbedSupport statt OggHandler, 2015-09-21 G. Werner
require_once("$IP/extensions/MwEmbedSupport/MwEmbedSupport.php");
require_once("$IP/extensions/TimedMediaHandler/TimedMediaHandler.php");
# FFmpeg auskommentiert, solange kostenfreie Lizenz für Hochschule ungeklärt ist
#$wgFFmpegLocation = "D:\ffmpeg_ogg\ffmpeg\bin\ffmpeg";
$wgFFmpeg2theoraLocation = "D:\ffmpeg_ogg\ffmpeg2theora\ffmpeg2theora";
$wgOggThumbLocation = "D:\ffmpeg_ogg\OggVideoTools\bin\oggThumb";

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.

Für MediaWiki 1.23 ist im Herbst 2015 als älteste Version nur eine "REL1_25", also Version 1.4.0 für MW 1.25 erhältlich, die einen Script-Fehler verursacht, wenn in der Datei "WhosOnlineSpecialPage.php" bei der Funktion "getNavigationBar()" die Variable "$title" vom Typ String statt Objekt ist; zur Fehlerbehebung siehe weiter unten und https://www.mediawiki.org/wiki/Extension_talk:WhosOnline#Bug_in_MW_1.24_.3F

Bei MediaWiki 1.25 verursacht die Version 1.5.0 einen Fehler, wenn die Datei "upgrade.php" verwendet wird, weil die Datei "extension.json" in der Erweiterung fehlt; siehe https://www.mediawiki.org/wiki/Extension_talk:WhosOnline#Fatal_error_running_update.php_on_V1.5.0. Es muss deshalb in der Datei "LocalSettings.php" wie bei älteren Versionen "require_once ..." statt "wfLoadExtension(...)" verwendet werden.

  • Dateien unter http://www.mediawiki.org/wiki/Extension:WhosOnline herunterladen und extrahieren
  • Verzeichnis "WhosOnline" unter "Extensions" speichern
  • Für MediaWiki 1.23 in der Datei "WhosOnlineSpecialPage.php" die Funktion "getNavigationBar()" anpassen
  • SQL-Befehl in der Extension-Datei "WhosOnline.sql" für neue Datenbank-Tabelle anpassen (siehe weiter unten)
  • Mit "phpMyAdmin" und geändertem SQL-Befehl eine neue Datenbank-Tabelle erstellen (siehe weiter unten)
  • In der Datei "LocalSettings.php" einfügen:
require_once("$IP/extensions/WhosOnline/WhosOnline.php");
$wgWhosOnlineShowAnons = true;

Datei "WhosOnlineSpecialPage.php" für MW 1.23 anpassen

Die Funktion "getNavigationBar()" ab Zeile 75 kopieren, auskommentieren und die Kopie darunter einfügen. In der Kopie die Variable $wgLang als Ersatz für $wgContLang und die entsprechenden Variablen für die return-Funktion hinzufügen:

function getNavigationBar(){
  global $wgContLang, $wgLang;
  $link = $wgContLang->specialpage('WhosOnline');
  if(is_object($link)){
    $title = $link;
  }
  else{
    $title = Title::newFromText($link);
    if(is_null($title)){
      return false;
    }
  }
  $offset = $this->mOffset;
  $limit = $this->mLimit;
  $query = '';
  $query = wfCgiToArray('');
  $atend = $this->countUsersOnline() < ($this->mLimit + $this->mOffset); // show next link

  return $wgLang->viewPrevNext(
    $title,
    $offset,
    $limit,
    $query,
    $atend
  );
}

Datei "WhosOnline.sql" anpassen

Den SQL-Befehl in der Extension-Datei "WhosOnline.sql" für die neue Datenbank-Tabelle in der ersten Zeile z. B. wie folgt mit Präfix "sw_" bzw. "sr_" anpassen:

CREATE TABLE `[datenbankname]`.`[praefix]online` (

Datenbank-Tabelle erstellen

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

CREATE TABLE  `[datenbankname]`.`[praefix]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;

WikiEditor (JavaScript)[Bearbeiten]

Achtung: Funktioniert nur bei Browsern mit aktiviertem JavaScript und muss in den nachfolgend genannten Dateien und dem Grafiken-Verzeichnis nach jedem MediaWiki-Update auf Vorhandensein und Änderungen überprüft werden!

Die Erweiterung "WikiEditor" wird seit MW1.18 als Ersatz für den schlichten Editor mitgeliefert.

Um die Erweiterung einzubinden und sie für alle Nutzungskonten verfügbar zu machen, sind in der Datei "LocalSettings.php" in MW1.23 folgende Angaben nötig:

require_once("$IP/extensions/WikiEditor/WikiEditor.php");
$wgDefaultUserOptions['usebetatoolbar'] = 1; // Editor bei allen Nutzungskonten standardmäßig aktivieren
$wgDefaultUserOptions['usebetatoolbar-cgd'] = 1; // Erweiterte Funktionen und Sonderzeichen bei allen Nutzungskonten standardmäßig aktivieren
$wgDefaultUserOptions['wikieditor-preview'] = 1; // Schaltfläche für Vorschau und Änderungen aktivieren
$wgDefaultUserOptions['wikieditor-publish'] = 1; // Schaltfläche für Speichern/Veröffentlichen und Abbrechen aktivieren

Für die Nutzung zusätzlicher Funktionen siehe:

Das Symbol für die Erweiterung "Math", das im Standard-Editor automatisch hinzugefügt wird, fehlt bei der Erweiterung "WikiEditor".

Es gibt 4 Standard-"Sektionen"

  • main für die Standard-Funktionen
  • advanced für die erweiterten Funktionen
  • characters für die Sonderzeichen
  • help

Die "Sektionen" können "Gruppen" für Gruppierungen von Funktionen enthalten.

Die Funktionen sind über Schaltflächen (Text oder Symbol) oder Auswahllisten (Booklets) verfügbar.

Anpassungen[Bearbeiten]

Folgende Dateien sind für zusätzliche Bearbeitungsfunktionen zu bearbeiten:

  • Bilddatei "button-math.png" aus der Erweiterung "Math" kopieren in Verzeichnis "\extensions\WikiEditor\modules\images\toolbar\" und umbenennen in "insert-math.png"
  • Sprach-Dateien im Verzeichnis "\extensions\WikiEditor\i18n\" ergänzen
  • Im Verzeichnis "\extensions\WikiEditor\modules\" folgende Dateien ergänzen
    • jquery.wikiEditor.toolbar.config.js Z.443 vor "redirect"
    • optional: jquery.wikiEditor.dialogs.config.js Z. 17 "remove" und Z.71 "addToToolbar" vor "search"

Beispiel Sprachdatei "de.json" in Z.85 ergänzen:

"wikieditor-toolbar-tool-math": "Formel",
"wikieditor-toolbar-tool-math-insert": "Formel einfügen",

Datei "jquery.wikiEditor.toolbar.config.js" Z.443 vor "redirect" mit den offset-Werten von "redirect" ergänzen und "redirect" auskommentieren:

// neu für HAWK HHG 2017-01-31
'math': {
 'labelMsg': 'wikieditor-toolbar-tool-math',
 'type': 'button',
 'icon': {
  'default': 'insert-math.png',
  'default-rtl': 'insert-math.png'
 },
 'offset': {
  'default': [-70, -142],
  'default-rtl': [-70, -502]
 },
 'action': {
  'type': 'encapsulate',
  'options': {
   'pre': '<math>\n',
   'periMsg': 'wikieditor-toolbar-tool-math-insert',
   'post': '\n</math>',
   'ownline': true
  }
 }
}/*,
'redirect': {
...
}
*/

Datei "jquery.wikiEditor.dialogs.config.js" Z.17 vor ".wikiEditor( 'addToToolbar', {...} )" und Z.71 zwischen "group:insert tools:table" und "group:search" ergänzen:

replaceIcons: function ( $textarea ) {
 ...
 .wikiEditor( 'removeFromToolbar', { section: 'advanced', group: 'insert', tool: 'math' } )
}
...
// neu für HAWK HHG 2017-01-31
.wikiEditor( 'addToToolbar', {
 section: 'advanced',
 group: 'insert',
 tools: {
  'math': {
   labelMsg: 'wikieditor-toolbar-tool-math',
   type: 'button',
   icon: 'insert-math.png',
   offset: [-70, -142],
   action: {
    type: 'dialog',
    module: 'insert-math'
   }
  }
 }
} )

Eingabe von Formeln mittels Tex (Wiki-Code)[Bearbeiten]

Damit mathematische und auch chemische Formeln dargestellt werden können, wird in Mediawiki "Texvc" benutzt. Dies funktioniert nicht unter Windows, sondern nur unter Linux. Siehe hierzu

Deshalb muss zusammen mit der Erweiterung Math (Wiki-Code) die Klasse LatexRender von Benjamin Zeiss in abgewandelter Form als Klasse MathLatexRender verwendet werden und muss folgende Software installiert werden:

  1. Windows Server 2012R2
    1. GPL GhostScript 9.10 (gs910w32.exe, 2013-09-02)
    2. ImageMagick 6.9.3-8-Q16-x86-dll.exe (16Bit dynamic, nicht static)
    3. MikTeX 2.9.5870 Net Installer 32Bit (complete, nicht basic)
  2. Windows Server 2008
    1. GPL GhostScript 8.70 (gs870w32.exe)
    2. ImageMagick 6.5.9-0-Q16-windows-dll.exe (16Bit dynamic, nicht static)
    3. MikTeX 2.8 Net Installer 32Bit (complete, nicht basic)

Nach jedem mediawiki-Update muss die Erweiterung "Math" mit den Dateien "Math.php" und "MathRenderer.php" auf Windows-Kompatibilität überprüft werden!

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

Tatsächliche Installation[Bearbeiten]

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

  1. GhostScript im Unterverzeichnis "ghostscript\" installieren
    1. aus dem Unterverzeichnis "bin\" die Datei "gswin32c.exe" kopieren und die Kopie umbenennen zu "gs.exe"
    2. In der Systemsteuerung unter "Erweiterte Systemeinstellungen => Erweitert => Umgebungsvariablen" die Systemvariable "Path" erweitern mit ";D:\texmf\ghostscript\bin\"
  2. ImageMagick im Unterverzeichnis "imagick\" installieren
    1. ImageMagick dll-Datei (bei vorhandener Windows-Server-Konfigurationsberechtigung), sonst static-Datei (nur XAMPP-Zugriffsberechtigungen), inkl. "Create a desktop icon", "Add application directory to your system path", "Install FFmpeg" und "Install developement headers and libraries for C and C++"
    2. Testen mit der "Eingabeaufforderung/Konsole"
      • bei Windows Server 2012R2 durch Eingabe von
        1. convert wizard: wizard.jpg [=>Enter drücken]
        2. convert wizard.jpg win: [=>Enter drücken]
        3. => ein Bild soll angezeigt werden, Fenstertitel "IMDisplay - wizard.jpg"
      • bei Windows Server 2008 durch Eingabe von
        1. convert logo: logo.miff [=>Enter drücken]
        2. imdisplay logo.miff [=>Enter drücken]
        3. => ein Bild soll angezeigt werden
    3. PHP-Erweiterung für ImageMagick
      • Für PHP 5.6.14 "php_imagick-3.4.1-5.6-ts-vc11-x86.zip" von http://windows.php.net/downloads/pecl/releases/imagick/ oder alternativ die Datei "php_imagick-3.2.0RC1-5.6-ts-vc11-x86.zip" von http://www.peewit.fr/imagick/ herunterladen und die VC11-kompilierte ThreadSafe-Datei Datei "php_imagick.dll" in das PHP-Unterverzeichnis "ext/" kopieren
      • Für PHP 5.6.14 in der Datei "php.ini" im Bereich Windows Extensions die Datei "php_imagick.dll" einbinden:
        extension=php_imagick.dll
      • Für PHP 5.2.9 die VC6-kompilierte Datei "php_imagick_dyn-Q16.dll" von valukova.org herunterladen und in das PHP-Unterverzeichnis "ext/" kopieren und umbenennen zu "php_imagick_dyn_Q16.dll" (Unterstrich statt Bindestrich)
      • Für PHP 5.2.9 in der Datei "php.ini" im Bereich Windows Extensions die Datei "php_imagick_dyn_Q16.dll" einbinden:
        extension=php_imagick_dyn_Q16.dll
  3. MiKTeX Installation
    1. Für Sophos-Ausnahme im Verzeichnis "D:\texmf\" ein Unterverzeichnis "miktex\" erstellen
    2. Für Sophos-Antivirus eine Ausnahme festlegen:
      Konfigurieren => Antivirus => On--Access-Scans => Ausschlüsse => Hinzufügen => Ordner => D:\texmf\miktex\
    3. MikTeX herunterladen – kann bis zu einer Stunde dauern! – und installieren
      1. Zum Herunterladen der Installationsdateien die Datei "MiKTeX_NetInstall_Complete_2.9.5870_setup.exe" ausführen
        • "Download MiKTeX" statt "Install MiKTeX"
        • "Complete MiKTeX" statt "Basic MiKTeX"
        • Zielverzeichnis "D:\Install\MiKTeX_2.9_complete\"
      2. Die Datei "MiKTeX_NetInstall_Complete_2.9.5870_setup.exe" für Installation im Verzeichnis "D:\texfm\miktex\" ausführen mit
        • "Install MiKTeX" statt "Download MiKTeX"
        • "Complete MiKTeX" statt "Basic MiKTeX"
        • "Anyone who uses this computer (all users)" statt "Only for: [Useraccount (Username)]"
        • "Preferred paper: A4", "Install missing packags on-the-fly: Yes"
  4. Die Erweiterung Math (Wiki-Code) installieren und anpassen
  5. In der Datei "LocalSettings.php" ist jeweils einzufügen:
 $wgUseTeX = true;
 # 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';
 $wgSVGConverter = 'ImageMagick';
 $wgSVGConverters = array(
  'ImageMagick' => '"D:\texmf\imagick\convert.exe" -background white $input PNG:$output', 
 );
 require_once "$IP/extensions/Math/Math.php";
 $wgMathDisableTexFilter = true; // in Math.hooks.php

Alternative Installationsmethode 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 für Windows in D:\texmf\imagick (ensure there are no spaces in the path you choose) - No: We installed the dynamic version wih administrator rights.
  3. install AFPL GhostScript bzw. GhostScript 8.54 bzw. [1] in D:\texmf\ghostscript
  4. oder GPL GhostScript 9.10 (gs910w32.exe) bzw. GhostScript in D:\texmf\ghostscript
  5. copy D:\texfm\ghostscript\gs8.70\bin\gswin32c.exe to D:\texmf\ghostscript\gs8.70\bin\gs.exe (8.70 can be different depending on version you install)
  6. add to the windows PATH environnement variable this path: D:\texmf\ghostscript\gs8.70\bin (again, 8.70 can be different depending on version you install)
  7. 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!
  8. open a command line (start -> execute -> cmd.exe)
  9. verify that the following commands are working:
    latex
    dvips
    convert (not the microsoft convert)
    gs
  10. [edit] Settings
  • your wiki directory = $

replace the file $/includes/Math.php with code from http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Windows/math.php

  • uncomment or insert in $/LocalSettings.php:
$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

Ausblenden der History[Bearbeiten]

Diese Möglichkeit wurde nicht aktiviert.

Wenn nur Admins sowie Mitglieder der Gruppen "autor" und "Redakteur"/"Editor" die Versionsgeschichte einer Seite (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;
}

Hilfeseiten[Bearbeiten]

Die Dateien, Abbildungen und Vorlagen entsprechend den Anweisungen in "http://www.mediawiki.org/wiki/Project:PD_help/Copying" in ein Verzeichnis exportieren und von dort in das entsprechende Wiki importieren. Die Import- und Export-Funktionen stehen unter "Spezialseiten->Seitenwerkzeuge" bzw. "Special pages->Page tools" zur Verfügung. Aktuelle Dateien vom 16.3.2011 sind unter D:\Dokumente\Hilfe-Dateien auf dem SalzWiki-Server gespeichert.

Bisher werden aus Mediawiki die deutschen Hilfeseiten nicht automatisch mit aufgelistet, weshalb neben den englischen Dateien (MediaWiki-help-en.xml) eine zweite Exportdatei (MediaWiki-Hilfe-de.xml) für die deutschen Dateien erstellt werden muss. Als Dateien wählt man dazu alle aus dem Namensraum "help/de" aus.

Die Abbildungen werden - in Abwandlung der Hinweise - direkt aus Mediawiki im Verzeichnis D:\Dokumente\Hilfe-Dateien gespeichert und von dort im Repositorium über "Spezialseiten->Medien" oder den Menüpunkt "Werkzeuge: Hochladen" hochgeladen. Auf die z. T. unterschiedlichen Lizenzen ist beim Hochladen bei der Eingabe der Metadaten zu achten.

  • Deutsche Version: Soll zuerst auf die deutsche Version verwiesen werden, ist der Hyperlink im Menü links (Sidebar) auf "help:contents/de" zu setzen.
  • Englische Version: Soll zuerst auf die englische Version verwiesen werden, ist der Hyperlink im Menü links (Sidebar) auf "help:Contents" zu setzen.

Die Extension "ParserFunctions" wird benötigt.