Adm:Einrichtung Wikis MW1.35

Aus Salzwiki
Zur Navigation springen Zur Suche springen

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. Die Angaben beziehen sich auf Mediawiki (MW) Version 1.35.8 LTS.

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 (englisch) 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 zukünftig nur noch für die Media-Dateien von "SalzWiki" und "SaltWiki" genutzt werden.

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

Langzeit-Versionen-Problematik[Bearbeiten]

MW-LTS-Versionen sind unzureichend auf Langzeit-Versionen von MariaDB und auf das Unterstützungsende von PHP ausgelegt:

  • MW 1.39 von 11/2022 bis 11/2025 für
    • MariaDB 10.3.0+ von 05/2018 bis 05/2023, nicht MariaDB 10.4 oder neuer
    • PHP 7.4.3+ von 11/2019 bis 11/2022, PHP 8.0 von 11/2020, PHP 8.1 bis 11/2024
  • MW 1.35 LTS von 09/2020 bis 09/2023 für
    • MariaDB 10.1.0+ von 10/2015 bis 10/2020, nicht MariaDB 10.2 oder neuer
    • PHP 7.4.3+ von 11/2019 bis 11/2022, nicht PHP 8.x

Installationen[Bearbeiten]

Server und Anwendungen[Bearbeiten]

  1. Betriebssystem Windows-Server 2016
  2. VMWare Tools (für Virtualisierung)
  3. Virenschutz Sophos
  4. Microsoft Visual C++ for Visual Studio 2019 Redistributable 64-Bit [VC16 x64]
  5. Webserver Apache 2.4.51 64-Bit VC16 mit OpenSSL 1.1.0i und anderen Zusatzmodulen
  6. Scriptsprache PHP 7.4.27 ThreadSafe 64-Bit (für Apache unter Windows) mit Zusatzmodulen
  7. Datenbank-Server (MySQL/)MariaDB 10.2.17 64-Bit
  8. Datenbank-Management-Anwendung phpMyAdmin 5.2.0
  9. Statistik-Anwendung Webalizer 2.23-08 32-Bit
  10. Wikisystem MediaWiki 1.35.8 LTS mit Erweiterungen und Zusatz-Software
  11. GhostScript AGPL 9.55.0 (für MediaWiki) 64-Bit-Version
  12. ImageMagick (für MediaWiki) Version 7.1.0-17-Q16-HDRI-x64-dll.exe
  13. php-imagick (für MediaWiki mit ImageMagick) neue 64-Bit-Version für PHP7.2-TS-VC15
  14. MiKTeX 21.12 NetInstaller-Version mit Complete-Installation (für MediaWiki mit Formeln) 64-Bit-Version
  15. Statistik-Anwendung Matomo, vormals Piwik

Programme unter Systemsteuerung Windows Server 2016[Bearbeiten]

Für MediaWiki 1.35.8 LTS[Bearbeiten]
  • GPL Ghostscript 9.55.0
  • ImageMagick 7.1.0-17 Q16-HDRI (64-bit) (2021-12-04)
  • Microsoft Visual C++ 2015-2019 Redistributable [VC16] (x64) - 14.29.30133
  • MikTeX 21.12
Für Server-System[Bearbeiten]
  • VMware Tools

Installationen ohne XAMPP[Bearbeiten]

Die Server und Anwendungen werden vergleichbar einer XAMPP-Installation in ein Verzeichnis "D:\noxampp\" installiert.

Für Apache, MariaDB, PHP, phpMyAdmin und Webalizer sind die Angaben in den Konfigurationsdateien anzupassen.

Es ist im Verzeichnis "D:\noxampp\htdocs\" ein Unterverzeichnis "info\" anzugelegen, in dem die selbst erstellte Datei "phpinfo.php" gespeichert wird.

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

Verzeichnisse und Dateien[Bearbeiten]

Im Verzeichnis "D:\noxampp\" befinden sich folgende Dateien mit Informationen und für die Konfiguration

  • apache
    • conf\httpd.conf
    • conf\extra\ mit Dateien httpd-default.conf, httpd-ssl.conf, httpd-vhosts.conf
  • htdocs
    • Angepasste Datei: index.php
    • info\phpinfo.php (neu erstelltes Verzeichnis mit selbst erstellter Datei)
    • Wiki-Verzeichnisse
  • mysql
    • my.ini
    • data
  • php
    • php.ini
  • phpmyadmin
    • config.inc.php
  • tmp (neu erstelltes Verzeichnis für Session-Dateien)
  • webalizer
    • webalizer.bat
    • conf-Dateien der Wikis

Firewall-Ausnahmen[Bearbeiten]

In der Windows Firewall sind 2 Ausnahmen für eingehenden Datenverkehr durch Erstellen eigener Regeln hinzuzufügen:

  • "Apache_TCP_80_443"
    • Beschreibung: Apache-Dienst TCP-Verbindungen Ports 80, 443 und 8080
    • Programme und Dienste: "D:\noxampp\apache\bin\httpd.exe"
    • Protokolle und Ports: Protokolltyp TCP, Ports 80, 443, 8080
    • Erweitert: Profil Öffentlich, Edgeausnahme blockieren
  • "IP_Bereiche_zulassen"
    • Beschreibung: fuer MSSQL von H.I. per VPN und von RedDot und HAWK-Website
    • Bereich: Remote-IP-Adressen für H.I.-DSL-Zugang, HAWK-VPN-Bereiche, RZ-Rechner, H.I.-Webserver, RedDot-Server, HAWK-Webserver, Datenbankserver
    • Erweitert: Profile Domäne, Privat und Öffentlich

Apache-Webserver[Bearbeiten]

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

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 von https://www.apachelounge.com/download/.

Verzeichnisumbenennung[Bearbeiten]

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

Die Pfadangaben in den Konfigurationsdateien mit der Dateiendung "conf" 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 noxampp\apache\bin
httpd -k install -n "Apache2.4.51"

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

Start und Stopp des Dienstes[Bearbeiten]

Der Apache-Webserver kann auf verschiedene Arten gestartet und angehalten werden:

  • Windows Task Manager => Dienste
  • mit Hilfe des Apache-Monitors
  • per Kommandozeile
Start und Stopp per Task Manager[Bearbeiten]

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

Start und Stopp per Apache-Monitor[Bearbeiten]
  • Im Windows Explorer folgende Datei als Administrator ausführen: "D:\noxampp\apache\bin\ApacheMonitor.exe"
  • In der Taskleiste das Symbol mit der rechten Maustaste anklicken und "Open Apache Monitor" auswählen
  • Service "Apache2.4.51" markieren und Schaltfläche "Start" oder "Stop" auswählen
Start und Stopp per Kommandozeile[Bearbeiten]
NET start Apache2.4.51

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

Apache-Konfiguration[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"

Konfigurationsdateien haben die Dateiendung ".conf" und befinden sich in folgenden Verzeichnispfaden:

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

httpd.conf[Bearbeiten]

In der Hauptkonfigurationsdatei werden allgemeine Einstellungen festgelegt, beispielsweise

  • Server-Pfad
  • Standard-HTTP-Port
  • Standard-Verzeichnis für Webdateien
  • Verwendung von Modulen wie "ssl" und "php"
  • Verwendung von Konfigurationsdateien aus dem Unterverzeichnis "\extra"
  • Schutz von Verzeichnissen

Sofern VHosts für verschiedene Domains in der Datei "httpd-vhosts.conf" eingerichtet werden, werden in der Datei "httpd.conf" nur HTTP-Aufrufe von "localhost" oder über die Server-IP festgelegt.

define SRVROOT "D:/noxampp/apache"
ServerRoot "${SRVROOT}"
...
Listen 80
..
## ThreadSafe von PHP verwenden, eingefügt 2018-09-03
LoadFile "D:/noxampp/php/php7ts.dll"
#LoadFile "D:/noxampp/php/php8ts.dll"
#LoadFile "/noxampp/php/libpq.dll"
...
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 cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule headers_module modules/mod_headers.so
LoadModule include_module modules/mod_include.so
LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule log_rotate_module modules/mod_log_rotate.so # Zusatzmodul für LogRotation
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php7_module D:/noxampp/php/php7apache2_4.dll # Zusatzmodul für PHP7
#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 socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule status_module modules/mod_status.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
...
ServerAdmin webmaster@hornemann-institut.de
ServerName 193.175.104.134:80
...
DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">
...
</Directory>
...
<IfModule dir_module>
  DirectoryIndex index.php index.html
</IfModule>
...
<Files ".ht*">
  Require all denied
</Files>
...
ErrorLog "logs/error.log"
LogLevel warn
<IfModule log_config_module>
 ## für HAWK wegen DSGVO angepasst
 #LogFormat "%h %l %u %t \"%r\" %>s %b \"{Referer}i\" \"{User-Agent}i\"" combined
 #LogFormat "%h %l %u %t \"%r\" %>s %b" common
 LogFormat "%h - - %t \"%r\" %>s %b \"{Referer}i\" \"{User-Agent}i\" %I %O" combined
 LogFormat "%h - - %t \"%r\" %>s %b" common
 <IfModule log_config_module>
  ## für HAWK wegen DSGVO angepasst
  #LogFormat "%h %l %u %t \"%r\" %>s %b \"{Referer}i\" \"{User-Agent}i\" %I %O" combinedio
  LogFormat "%h - - %t \"%r\" %>s %b \"{Referer}i\" \"{User-Agent}i\" %I %O" combinedio
 </IfModule>
 CustomLog "logs/access.log" common
</IfModule>
...
<IfModule alias_module>
 ## für HAWK eingefügt
 Alias /phpmyadmin D:/noxampp/phpmyadmin
 Alias /info D:/noxampp/info
 Alias /webalizer /D:/noxampp/webalizer
 ## für HAWK deaktiviert
 #ScriptAlias /cgi-bin/ "${SRVROOOT}/cgi-bin/"
</IfModule>
...
<IfModule headers_module>
 RequestHeader unset Proxy early
</IfModule>
...
<IfModule mime_module>
  ...
  #AddType text/html .shtml
  #AddOutputFilter INCLUDES .shtml
  #### Fuer PHP eingefügt
  AddType text/html .php
</IfModule>
...
#### aus "XAMPP" abgewandelt
<IfModule php7_module>
  PHPIniDir "D:/noxampp/php"
</IfModule>
...
## für HAWK aktiviert
Include conf/extra/httpd-ssl.conf
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
...
# für HAWK eingefügt
# Spam-Bots abwehren
<IfModule rewerite_module>
 RewriteEngine On
 RewriteCond %{HTTP_USER_AGENT} ^Java.* [OR]
 RewriteCond %{HTTP_USER_AGENT} ^MJ12bot.* [OR]
 RewriteCond %{HTTP_USER_AGENT} ^SemrushBot.* [OR]
 RewriteCond %{HTTP_USER_AGENT} ^AhrefsBot.*
 RewriteRule ^(.*)$ - [F]
 #RewriteRule .* - [R=429]
</IfModule>
...
#### aus "XAMPP" abgewandelt
# PHP7
<IfModule php7_module>
 PHPIniDir "D:/noxampp/php"
</IfModule>
## PHP8
<IfModule php_module>
 PHPIniDir "D:/noxampp/php"
</IfModule>
...
#### aus "XAMPP" abgewandelt
<FilesMatch "\.php$">
  SetHandler application/x-httpd-php
</FilesMatch>
...

Verzeichnisauflistungen verhindern[Bearbeiten]

Um Auflistungen von Dateien und Verzeichnissen im Browser zu verhindern, ist die Angabe "-Indexes" in der Konfigurationsdatei "apache\conf\httpd.conf" und bei den VHosts erforderlich:

<Directory />
  #Options -Indexes +FollowSymLinks
  AllowOverride none
  Require all denied
</Directory>
...
DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/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:

  • "noxampp\apache\conf\httpd.conf"
  • "noxampp\apache\conf\extra\httpd-default.conf"
  • "noxampp\phpMyAdmin\config.inc.php"


Apache-Datei "httpd.conf"[Bearbeiten]

ca. Z.300f

<Files ".ht*">
  Require all denied
<Files>
Apache-Datei "httpd-default.conf"[Bearbeiten]

Z.45

AccessFileName .htaccess

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.

In der Datei "D:\noxampp\apache\conf\httpd.conf" am Ende einfügen:


#### Verzeichnisschutz mit IP-Whitelist aus "xampp" abgewandelt
<LocationMatch "^/(?i:(?:info|phpmyadmin))">
  Require local
  Require ip 193.175.104.133
  Require ip 193.175.104.134
  Require ip 193.175.110.
  Require ip 10.104.5.
  Require ip 10.104.55.
  Require ip 10.104.56.
  Require ip 172.16.100.2
  Require ip 172.28.0.
  Require ip 192.168.170.
</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 "Win64"
  • OpenSSL-Version

Dies ist der Fall, obwohl üblicherweise "ServerSignature Off" in Apache eingestellt ist, weil ab Version 2.0.44 die Angaben für "ServerTokens" ausschlaggebend sind, siehe auch

In der Datei "httpd.conf" können unterhalb der "include"-Anweisungen folgende Angaben eingetragen werden, um auch im HTTP-Request möglichst wenig Informationen zu übermitteln:

ServerSignature Off
ServerTokens Prod

Um auch die minimalen Angaben auf den Fehlerseiten 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>

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
  • repository-sw.hawk.de, salzwiki.hawk.de, saltwiki.hawk.de

Für Tests auf einem Testserver können folgende Domain-Adressen verwendet werden:

  • test-szw.hawk.de
  • test-stw.hawk.de
  • test-rpw.hawk.de
Zertifikat-Dateien[Bearbeiten]

Die Zertifikat-Dateien haben folgende Bezeichnungen:

  • **öffentlicher Schlüssel**: "cert-***.pem" wird umbenannt in "salzwiki_cert_pem.crt"
  • **Zertifikate-Kette**: Es ist seit 2017 keine gesonderte Zertifikatsketten-Datei erforderlich, weil die Angaben zur Zertifizierungskette in den Zertifikaten enthalten sind.
  • 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, die inzwischen nicht mehr aus dem "XAMPP"-Paket hinzugefügt werden muss. 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 "SaltWiki" 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 ########

Datenbank-Server[Bearbeiten]

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

MariaDB ohne XAMPP[Bearbeiten]

MariaDB-Service installieren[Bearbeiten]

Nachdem die Kommandozeile als Administrator geöffnet wurde, den MariaDB-Dienst mit der Bezeichnung "MariaDB10.2.17" installieren:

D:
cd noxampp\mysql\bin
mysql_install_db.exe --datadir=D:\noxampp\mysql\data --service=MariaDB10.2.17 --password

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

Zugangsdaten absichern[Bearbeiten]

Bei MariaDB ab Version 5.2 gibt es ein Authentication-Plugin für Socket-Authentifizierung, weshalb bei der Installation mittels Kommandozeile das Konto "root" ohne Passwort-Anmeldung eingerichtet wird.

Unter Windows kann ein Passwort für "root" in der Admin-Kommandozeile mit folgenden Befehlen festgelegt werden:

cd D:\noxampp\mysql\bin
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhos' IDENTIFIED BY '[passwort]';
ALTER USER 'root'@'::1' IDENTIFIED BY '[passwort]';
ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '[passwort]';

Um die Passwort-Änderung zu aktivieren, muss der Dienst "MariaDB10.2.17" neu gestartet werden.

Möglicherweise muss zusätzlich das Authentication-Plugin "ed25519" verwendet werden. Es hat das Plugin "mysql_native_password", das SHA-1 basiert war, abgelöst.

Konfigurationsdatei[Bearbeiten]

Die Konfigurationsdatei "my.ini" für v10.2.17 wird vom bisherigen Server auf den neuen Server kopiert und mit der Vorlagendatei "my-huge.ini" des neuen Servers verglichen.

Die Vorlagendateien "my-[...].ini befinden sich bei v10.2.17 im Verzeichnis "mysql\" statt wie bei v10.0.17 im Verzeichnis "myslq\bin\".

Die Definitionen bei v10.2.17 erfolgen ohne Anführungszeichen und wie bei v10.0.17 mit "/" statt "\" auch unter Windows.

Defintionen im Abschnitten "[client]":

port = 3306
socket = D:/noxampp/mysql/mysql.sock

Definitionen im Abschnitt "[mysqld]":

port = 3306
socket = D:/noxampp/mysql/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8

# Point the following paths to a dedicated disk
#tmpdir = /tmp/
tmpdir = D:/noxampp/tmp
...
log_bin = mysql_bin
...
innodb_data_file_path = ibdata:1:10M:autoextend
...
innodb_buffer_pool_size = 384M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 100M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

Start und Stopp im Produktivbetrieb[Bearbeiten]

Um den mysql-Dienst zu starten oder anzuhalten, gibt es folgende Möglichkeiten:

  • unter "Verwaltung => Dienste" nach Auswahl des Dienstes "MariaDB10.2.17" entweder im Menü unter "Aktion" oder mit der rechten Maustaste im Kontextmenü den jeweiligen Vorgang auswählen
  • per Kommandozeile
D:
cd noxampp\mysql\
bin\mysqld.exe --defaults-file=mysql\my.ini

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

PHP[Bearbeiten]

PHP-Versionen[Bearbeiten]

Erforderlich ist für Apache eine TS-Version, die als herunterladbare zip-Datei im Dateinamen kein "ts" enthält, während die "nts-Version "nts" enthält. Im Dateinamen ist "Win32" auch bei der 64-Bit-Version "x64" enthalten.

PHP 8.1.5[Bearbeiten]

Für MW 1.39: VC16 (2019) x64 TS: php-8.1.5-Win32-VS!&-x64.zip (2022-04-15)

PHP 7.4.32[Bearbeiten]

Für MW 1.35: VC15 (2017) x64 TS: php-7.4.32-Win32-VC15-x64.zip (2022-09-29)

PHP 7.2.2[Bearbeiten]

Bei MW 1.31:

  • Core-Erweiterung "Cite" erzeugt Fehler "Uncommitted DB writes" und ist zu ersetzen durch die Erweiterung "CiteThisPage"
  • Core-Erweiterung "ImageMap" erzeugt Fehler "Fatal exception of type MWException"

php.ini[Bearbeiten]

Module[Bearbeiten]

aktivierte Module[Bearbeiten]

Folgende Module sind aktiviert:

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

Damit "cURL" von PHP verwendet wird, ist die Windows-Systemvariable "PATH" für PHP zu ergänzen. Hierzu "Systemsteuerung => System und Sicherheit => System => Erweiterte Systemeinstellungen" auswählen, im Fenster "Systemeigenschaften" beim Karteikartenreiter "Erweitert" die Schaltfläche "Umgebungsvariablen..." auswählen und bei "Systemvariablen" die Variable "PATH" markieren. Anschließend über die Schaltfläche "Bearbeiten..." folgenden Eintrag am Ende hinzufügen:

...;D:\noxampp\php\

Zusätzlich ist die Datei "...\php\libssh2.dll" in das Verzeichnis "..\apache\bin\" zu kopieren.

zusätzliche Module[Bearbeiten]
  • imagick

Die dll-Datei "php_imagick.dll" für das Modul "imagick" kann bei "PECL" heruntergeladen werden: https://windows.php.net/downloads/pecl/releases/imagick/.

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 & ~E_WARNING
error_log = "D:\noxampp\php\logs\php_error.log"
extension_dir = "D:\noxampp\php\ext"
enable_dl = On
file_uploads = On
upload_tmp_dir = "D:\noxampp\tmp"
upload_max_filesize = 100M ;bis 2023-02-15 50M
allow_url_fopen = On
allow_url_include = Off

phpMyAdmin[Bearbeiten]

Es wird Version 5.2.0 verwendet.

Konfiguration[Bearbeiten]

Für die Konfiguration gibt es 2 Möglichkeiten

  • Im Browser durch Aufruf von "phpmyadmin/setup/index.php"
  • Im Editor durch
    • Kopie von "config.sample.inc.php" zu "config.inc.php"
    • Anpassung von "config.inc.php" entsprechend der Datei vom bisherigen Server

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

Um die Anmeldung bei der Nutzung von "phpMyAdmin" mittels grafischer Oberfläche durchzuführen, sind folgende Angaben in der Konfigurationsdatei erforderlich:

/* Authentication type and info */
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['AllowRoot'] = true;
$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs';

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

/* Authentication type and info */
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['auth_type'] = 'http';
#$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['AllowRoot'] = true;
$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs';

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

php-imagick[Bearbeiten]

Die PHP-Erweiterung für ImageMagick kann unter folgenden Adressen heruntergeladen werden:

  • https://windows.php.net/downloads/pecl/releases/imagick/
    • 3.7.0 (Stand 2022-12-21) für
      • PHP 8.1 VS16 x86 und x64 NTS und TS
      • PHP 8.0 VS16 x86 und x64 NTS und TS
      • PHP 7.4 VC15 x86 und x64 NTS und TS
    • 3.6.0 (Stand 2022-12-21) für
      • PHP 8.0 VS16 x86 und x64 NTS und TS
      • PHP 7.4 VC15 x86 und x64 NTS und TS
      • PHP 7.3 VC15 x86 und x64 NTS und TS

Zur Nutzung von php-imagick für PHP 7.4 mit VC15 folgende Schritte ausführen:

  1. "php_imagick-3.6.0-7.4 ts-vc15-x64.zip" (PECL) herunterladen
  2. die VC15-kompilierte 64-Bit-ThreadSafe-Datei "php_imagick.dll" in das PHP-Unterverzeichnis "ext/" kopieren
  3. Für PHP 7.4 in der Datei "php.ini" im Bereich Windows Extensions die Datei "php_imagick.dll" einbinden:
    extension=imagick
  4. Den Apache-Webserver-Dienst neu starten

GhostScript[Bearbeiten]

Bei GhostScript gab es bis Version 9.07 unterschiedliche Lizenzen: (A)GPL und AFPL, siehe auch https://de.wikipedia.org/wiki/Ghostscript. Deshalb wurde bis Version 9.10 die GPL-Variante genutzt. Neuere OpenSource-FreeWare-Versionen gibt es unter der AGPL-Lizenz. Zum Herunterladen können folgende Adressen genutzt werden:

  1. GhostScript Version 9.55.0 herunterladen: gs9550w64.exe für 64-Bit
  2. GhostScript als Administrator im Unterverzeichnis "D:\texmf\ghostscript\" installieren.
  3. aus dem Unterverzeichnis "bin\" die Datei "gswin64c.exe" kopieren und die Kopie umbenennen zu "gs.exe"
  4. In der Systemsteuerung unter "Erweiterte Systemeinstellungen => Erweitert => Umgebungsvariablen" die Systemvariable "Path" erweitern mit ";D:\texmf\ghostscript\bin\"

ImageMagick[Bearbeiten]

  1. ImageMagick 64-Bit herunterladen von
  2. ImageMagick als Administrator im Unterverzeichnis "D:\texmf\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"
      • "Install Legacy Utilities (e.g. convert)"
      • "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 - magick-..."
      • 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

MiKTeX[Bearbeiten]

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

  1. Sophos-Anpassungen entfallen
  2. MikTeX setup-21.12x64.exe (Net Installer) wird nicht mehr angeboten, ebenso miktexsetup-21.12-x64.exe (Setup Utility), stattdessen nur noch basic-miktex-21.12-x64.exe (Basic), herunterladen von einer der folgenden Adressen:
  3. Installationsangaben
    • Zielverzeichnis "D:\texmf\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 MW-Erweiterung Math (Wiki-Code) installieren und anpassen
  5. In der MW-Konfigurationsdatei "LocalSettings.php" ist jeweils einzufügen:
 $wgUseTeX = true;
 # ImageMagick
 $wgImageMagickConvertCommand = 'D:\texmf\imagick\convert.exe'; 
 $wgImageMagickIdentifyCommand = 'D:\texmf\imagick\identify.exe';
 # Tex 64-Bit mit zusätzlichem Unterverzeichnis "\x64"
 $wgLaTexCommand = 'D:\texmf\miktex\miktex\bin\x64\latex.exe'; 
 $wgDvipsCommand = 'D:\texmf\miktex\miktex\bin\x64\dvips.exe';
 $wgSVGConverter = 'ImageMagick';
 $wgSVGConverters = array(
  'ImageMagick' => '"D:\texmf\imagick\convert.exe" -background white $input PNG:$output', 
 );
 #require_once "$IP/extensions/Math/Math.php";
 wfLoadExtension("Math");
 $wgMathDisableTexFilter = true; // in Math.hooks.php

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:/analytics/
Disallow:/webalizer/
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 2022 G. Werner
$wgEmergencyContact = "salzwiki.fb@hawk-hhg.de";
$wgPasswordSender = "service@salzwiki.de"; 
$wgSMTP = array( 
 'host' => "smtp.ionos.de", 
 'IDHost' => "ionos.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.ionos.de", 
 'IDHost' => "ionos.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;
# oder
$wgShowExceptionDetails = true;
$wgShowDBErrorBacktrace = true;

Versionshinweise[Bearbeiten]

Betriebssystem und Wiki-Serversysteme[Bearbeiten]

Datenbanksystem[Bearbeiten]

  • MariaDB
    • "ini"-Dateien als Vorlagen für die Konfiguration befinden sich bei v10.2.17 im Verzeichnis "mysql\", bei v10.0.17 im Verzeichnis "mysql\bin\"
  • MySQL
    • MySQL-Upgrade von Version 5.1 zu Version 5.6 ist nur möglich über Version 5.5
  • XAMPP
    • 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 hat bis Version 5.5.28 bzw. 5.6.12 als Datenbanksystem MySQL, danach MariaDB
    • XAMPP hat zuletzt in Version 1.8.2-6 die MySQL-Version 5.5.x, danach die Version 5.6 - wichtig für MySQL-Upgrade von 5.1 über 5.5 zu 5.6

MediaWiki[Bearbeiten]

Informationen zu

MW Version 1.39[Bearbeiten]

  • PHP 7.4.3+ oder 8.0.x oder 8.1.x mit "intl"-Erweiterung ist erforderlich
  • MariaDB 10.3.0+ ist erforderlich

MW Version 1.35[Bearbeiten]

  • MW Version 1.35.0 bis 1.35.4 wegen schwerwiegendem Sicherheitsproblem nicht verwenden, siehe https://www.mediawiki.org/wiki/2021-12_security_release/FAQ/de
  • PHP 7.2.x oder 7.3.19+ mit "fileinfo"-Erweiterung ist erforderlich
  • MariaDB 10.1.0+ ist erforderlich
  • Core-Variablen
    • $wgLogos für verschiedene Logo-Größen statt $wgLogo
  • neu implementierte Erweiterungen
    • PageImages seit MW 1.34
    • Scribunto seit MW 1.34
    • SecureLinkFixer
    • TemplateData
    • TextExtracts seit MW 1.34
    • VisualEditor als Alternative zum Quelltext-Editor
  • neue Spezialseiten als Abkürzungen zu den jeweiligen Aktionen
    • Spezial:EditPage
    • Spezial:PageHistory
    • Spezial:PageInfo
    • Spezial:Purge

MW Version 1.31[Bearbeiten]

  • PHP 7.0.0 bis PHP 7.2.x oder 7.3.19+ mit "fileinfo"-Erweiterung ist erforderlich
  • Skins
    • "CologneBlue" und "Modern" sind nicht mehr enthalten, aber weiter kompatibel, und müssen separat heruntergeladen werden
    • "Timeless" für responsives Layout mit 4 Varianten: Mobil, Tablet, durchschnittlicher Desktop, breiter Desktop
  • Core-Variablen
    • nicht mehr vorhanden sind z. B. $wgScriptExtension und $wgUseAjax
    • Wert geändert bei $wgLogAutopatrol von true zu false
    • $wgDBmysql5 gilt als veraltet und war nur experimentell
  • Datenbank-Schema verändert
    • Tabelle "archive" bei den Spalten "ar_flags" und "ar_text"
    • Tabelle "actor" im Zusammenhang mit Variable $wgActorTableSchemaMigrationStage
  • implementierte Erweiterungen
    • CategoryTree
    • CodeEditor
    • MultimediaViewer
    • OATHAuth
    • Replace Text
  • nicht mehr enthaltene Erweiterung
    • Nuke
  • nicht mehr unterstützte Erweiterung
    • AccessControl
    • MWEmbedSupport ist Teil von TimedMediaHandler geworden

MW Version 1.30[Bearbeiten]

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

MW Version 1.27[Bearbeiten]

  • PHP 5.5.9 oder neuer mit "mbstring"-Erweiterung ist erforderlich
  • Skins-Element
    • $wgCopyrightIcon wird ersetzt durch $wgFooterIcons['copyright']['copyright']
  • Core-Variablen
    • $wgScriptExtension entfällt
    • $wgSessionHandler gilt als veraltet
    • $wgDisableAuthManager auf "true" setzen, wenn alte Erweiterungen nicht für "AuthManager" angepasst wurden
  • implementierte Erweiterungen
    • RandomRootPage
    • ApiSandbox

MW Version 1.26[Bearbeiten]

MW Version 1.25[Bearbeiten]

Skin-Registrierung

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

Erweiterungen-Registrierung

wfLoadExtension("CategoryTree"); //statt require_once "$IP/extensions/CategoryTree/CategoryTree.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"
  • Nicht mehr unterstützt werden Sprachdateien im "php"-Dateiformat, sondern nur noch Dateien im "json"-Dateiformat
  • 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
  • Sprachdateien sind separate "json"-Dateien für jede Sprache statt einer gemeinsamen "php"-Datei für alle Sprachen; letztere gelten als "deprecated"
  • $wgLocalInterwiki gilt als "deprecated" und kann ersetzt werden mit "$wgLocalInterwikis"
  • $wgImageMagickIdentifyCommand für XCF-Dateien gilt als "deprecated", weil MediaWiki inzwischen das in "ImageMagick" enthaltene Kommando von sich aus nutzen kann
  • "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).
  • $wgImageMagickIdentifyCommand für XCF-Dateien

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)

Salz-/Salt-/Repository-Wikis[Bearbeiten]

Extensions[Bearbeiten]

Vorinstallierte Erweiterungen[Bearbeiten]

Welche Erweiterungen bei MW1.35 in welcher Linux-Distribution enthalten sind, erfährt man auf der Seite https://www.mediawiki.org/wiki/Comparison_of_extensions_in_distributions.

Mit MW1.35 zu installierende Erweiterungen:

  • ApprovedRevs v1.3-alpha
  • AuthorProtect v1.4.0 (2022-10-23)
  • BibManager v1.23.0 (2018-03-18)
  • BibManagerAdditionalPublications v1.1
  • ContactPage v2.3 (2022-11-28)
  • DynamicPageList3 v3.3.8
  • Lingo v3.0.0
  • Math v3.0.0 (2022-11-28)
  • TimedMediaHandler v0.6.0 (2022-11-28) mit MwEmbedSupport
  • UserMerge v1.10.1 (2022-11-28)
  • WhosOnline v1.7.2 (2022-10-24)

In MW1.35 enthaltene Erweiterungen, die genutzt werden:

  • CategoryTree
  • Cite
  • CiteThisPage
  • ConfirmEdit inklusive QuestyCaptcha
  • ImageMap
  • Interwiki
  • MultimediaViewer
  • ParserFunctions
  • SpamBlackList
  • WikiEditor

In MW1.35 enthaltene Erweiterungen, die nicht verwendet werden:

  • CodeEditor
  • Gadgets
  • InputBox
  • LocalisationUpdate
  • Nuke
  • OATHAuth
  • PageImages
  • PdfHandler
  • Poem
  • Renameuser
  • ReplaceText
  • Scribunto
  • SecureLinkFixer
  • SyntaxHighlighting_GeSHi
  • TemplateData
  • TextExtracts
  • TitleBlackList
  • VisualEditor

AccessControl (fehlerhaft)[Bearbeiten]

"AccessControl" wird nicht mehr installiert, da es von MediaWiki ab Version 1.31 nicht mehr unterstützt wird. Dies betrifft bisher geschützte Seiten, die ohne die Erweiterung nicht nur für Autor/inn/en sichtbar sind, beispielsweise die Seite "RichtlinienAutoren" und Seiten wie "Autoren" (Richtlinien/Übersichten) aus dem Sidebar-Bereich "Autor/inn/en-Seiten.

Auf der Seite der Erweiterung wird ab MW 1.23 die Version "AC 2.6" von 2016-06-06 empfohlen, siehe auch https://www.mediawiki.org/wiki/Extension:AccessControl. Allerdings gibt es bei allen neueren Versionen vor MW1.31 Fehlermeldungen wegen fehlender json-Dateien oder einer nicht unterstützten Manifest-Version 2. Verwendet werden musste bei MW1.23/1.27 die Version REL1.27 AC2.5 mit "include_once(...)" statt "wfLoadExtension(...)".

Etliche Erweiterungen für spezielle Nutzungsrechte werden aufgelistet bei https://www.mediawiki.org/wiki/Category:Page_specific_user_rights_extensions, sind allerdings nicht mehr mit MW1.31 nutzbar.

Als vorläufiger Ersatz wird die Erweiterung "AuthorProtect" verwendet, mit der nach Auswahl der Karteikarte "Schützen" bei den Auswahllisten für den Seitenschutz "Bearbeitungen auf den Autor beschränken" zusätzlich zur Verfügung steht.

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 1.3-alpha 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.
  • Es muss bei einem bestehenden Wiki mit "phpMyAdmin" die Datenbank-Tabelle auf die Spalte "approver_id" überprüft werden und, sofern die Spalte fehlt, die Spalte mit dem SQL-Befehl aus der Datei "...\extensions\ApprovedRevs\sql\patch-approver_id.sql" hinzugefügt werden, wobei das Tabellen-Präfix "sw_" bzw. "sr_" zu ergänzen ist.
  • Die Erweiterung in der Datei "LocalSettings.php" aktivieren
// SalzWiki, SaltWiki, Repository
wfLoadExtension("ApprovedRevs");

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 "sysop" Seiten als geprüft markieren können
$wgGroupPermissions['sysop']['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;

AuthorProtect[Bearbeiten]

Die Erweiterung "AuthorProtect" wird als Ersatz für "Access Control" nur im Repositorium verwendet. Mit "AuthorProtect" kann die Bearbeitung einer Seite auf die Autorin bzw. den Autor einer Seite beschränkt werden. Durch die Erweiterung steht bei einer Seite nach Auswahl der Karteikarte "Schützen" bei den Auswahllisten für den Seitenschutz zusätzlich "Bearbeitungen auf den Autor beschränken" zur Verfügung.

Für Informationen und zum Herunterladen siehe https://www.mediawiki.org/wiki/Extension:AuthorProtect. Die Erweiterung wird für MW1.31 in Version 1.4.0 angeboten und wird in das Verzeichnis "...\[wikiname]\extensions\" entpackt.

Alle Seiten, die mit "<Accesscontrol>...</Accesscontrol>" eingeleitet werden, müssen entsprechend mit dem neuen Schutz ausgestattet werden. Die Suche nach "Access" in der linken Navigation findet im Repositorium nur 10 Seiten, welche mit "access:..." geschützt wurden.

Bisher für bestimmte Gruppen geschützte Seiten, die im Repsoitorium ausfindig gemacht werden konnten:

  • access:RBK-luebeck
    • Ratsbierkeller_Lübeck
  • access:SIP
    • Probe0009, Probe0016, Probe0020, Probe0021, Probe0025, Probe0029, Probe0035, Probe0082. Probe0094
  • autor
    • Analyses, Analyses/de
    • Audios, Audios/de
    • Category_tree, Category_tree/de
    • Communication, Communication/de
    • Diagrams, Diagrams/de
    • Graphics, Graphics/de
    • Neue_Bilder
    • Photos, Photos/de
    • Physical-chemical_Datam, Physical-chemical_Data/de
    • Presentations, Presentations/de
    • Project_Data
    • Rights/de
    • Suche_Daten, Suche_Daten/de
    • Templates, Templates/de
    • Videos, Videos/de
  • autor, Projekte, Administrator
    • Projects, Projects/de
  • HAWK
    • Steinbergkapelle Hildesheim
  • SalzWiki
    • SalzWiki
  • SalzWiki, SIP
    • Forschungsverbund

BibManager (Extension-Code)[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
    • "SaltWiki", nach Anpassungen umbenannt in "BibManagerAdditionalPublications"
    • "SaltWikiUpload", nach Anpassungen umbenannt in "BibManagerUploadMetaData"

Mit der Erweiterung "SaltWiki" bzw. "BibManagerAdditionalPublications" können im SalzWiki/SaltWiki/Repository weitere Felder, die nicht im original "BibTeX" spezifiziert sind, wie DOI und Fulltext, verwendet werden.

Die Erweiterung "SaltWikiUpload" bzw. "BibManagerUploadMetaData" soll im Repositorium das Hochladen von Dateien mit BibTex-Angaben erleichtern, doch wird bei MW1.23LTS nur das MW-Standard-Upload-Formular angezeigt.

Version[Bearbeiten]

  • BibManager-REL1.31 weist in der Datei "version" einen Stand 2018-04-17 auf.
  • In der Datei "extension.json" ist Version 1.23.0 für MW>=1.29 angegeben.
  • Die Datei "BibManager.php" enthält ebenfalls einen Hinweis für die Verwendung mit MW1.29+.

Installation[Bearbeiten]

Bei der Installation werden die Erweiterungen in folgende Ordner kopiert:

  • "\extensions\BibManager\"
  • "\extensions\BibManagerAdditionalPublications\" "\extensions\SaltWiki\"
  • "\extensions\BibManagerUploadMetaData\" "\extensions\SaltWikiUpload\"
Anpassung SQL-Datei[Bearbeiten]

Für Wiki-Updates mit der MW-Datei "\maintenance\update.php" ist in der Datei "...\BibManager\maintenance\bibmanager_page_citation_rel.sql" 2 Mal das jeweilige Wiki-Präfix einzufügen.

SalzWiki/SaltWiki:

-- Add the Page <-> Citation relationship table for BibManager
CREATE TABLE /*_*/sw_bibmanager_page_citation_rel (
...
) /*$wgDBTableOptions*/;

CREATE INDEX /*i*/bmpc_bibtexCitationIDX ON /*_*/sw_bibmanager_page_citation_rel ( bmpc_bibtexCitation(50) );

Repository:

-- Add the Page <-> Citation relationship table for BibManager
CREATE TABLE /*_*/sr_bibmanager_page_citation_rel (
...
) /*$wgDBTableOptions*/;

CREATE INDEX /*i*/bmpc_bibtexCitationIDX ON /*_*/sr_bibmanager_page_citation_rel ( bmpc_bibtexCitation(50) );
Anpassung Sprachdateien[Bearbeiten]

Im Verzeichnis "[wikiname]\extensions\BibManager\i18n\" wird in den Sprachdateien Folgendes angepasst:

  • doppelte Anführungszeichen in HTML-Tags durch Apostrophs und in Texten durch &quot; bzw. durch „ und “ ersetzen
    • Z.16 "heading_create_type"
    • Z.22 "bm_list_welcome"
    • Z.38 "bm_create_back"
    • Z.60 "bm_bibtex_string_import_link"
    • Z.62 "bm_delete_confirm-delete"
    • Z.72 "bm_error_citation_exists"
    • Z.74 "bm_error_delete-fail"
    • Z.81 "bm_error_error-dataset"
    • Z.84 "bm_error_not-found"
    • Z.135 "bm_success_save-complete"
    • Z.136 "bm_success_delete"
    • Z.137 "bm_success_link-to-list"
  • im Abschnitt "SpecialPage List" den Text des Array-Elements "bm_list_welcome" für Hinweise zu Neueinträgen, Importen und den Anleitungen ergänzen
de.json[Bearbeiten]
...
 "heading_create_type": "BibManager: Eintrag "$1" anlegen",
...
 "bm_list_welcome" => "Willkommen ... $1 und $2. <br />Beim Bearbeiten von Einträgen füge bitte in das Feld "Sortierungsschlüssel" das Wort <b>"bearbeitet"</b>, beim Neuanlegen <b>"neu"</b> ein.<br />Weitere Hilfen: <a href='https://salzwiki.de/index.php/BibManager:Benutzerhandbuch'>Benutzerhandbuch</a>. ",
...
 "bm_create_back": "<a href='$1' title='Zurück'><< Zurück zur Auswahl</a>",
...
de-formal.json[Bearbeiten]
...
 "bm_list_welcome" => "Willkommen ... $1 und $2. <br />Beim Bearbeiten von Einträgen fügen Sie bitte in das Feld "Sortierungsschlüssel" das Wort <b>"bearbeitet"</b>, beim Neuanlegen <b>"neu"</b> ein.<br />Weitere Hilfen: <a href='https://salzwiki.de/index.php/BibManager:Benutzerhandbuch'>Benutzerhandbuch</a>. ",
...
en.json[Bearbeiten]
...
 "bm_list_welcome" => "Welcome ... $1 and $2 if you would like to add a new entry or import a BibTex-String.<br />Please add in the field "key" of a new reference the word <b>"new"</b>. If you are changing a reference, please add <b>"edited"</b> in the "key" field.<br />More Information: <a href='https://saltwiki.net/index.php/BibManager:User_manual'>User Manual</a>. ",
...
Anpassung "LocalSettings.php"[Bearbeiten]

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%, %fulltext%',
  '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%'
);

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.

Siehe [#Spezialseiten_mit_Gruppenberechtigung]

BibManager REL1.31 Datei-Anpassungen[Bearbeiten]
  • \i18n\ => \i18n_SW\
    • de.json
    • de-formal.json
    • en.json
    • qqq.json
  • \includes\
    • BibManagerPagerHooks.php =>BibManagerPagerHooks_SW.php
    • BibManagerPagerList.php =>BibManagerPagerList_SW.php
  • \includes\specials\
    • SpecialBibManagerDelete.php => SpecialBibManagerDelete_SW.php
    • SpecialBibManagerEdit.php => SpecialBibManagerEdit_SW.php
    • SpecialBibManagerList.php => SpecialBibManagerList_SW.php
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.

Fehler korrigieren (Extension-Code)[Bearbeiten]

Fehlende Icons für "edit" und "delete"[Bearbeiten]

In der BibManager-Übersicht ohne JavaScript sind rechts nur Text-Hyperlinks ohne Abstand für "edit" und "delete" anstatt Icons vorhanden; es sind in folgender Datei Anpassungen vorzunehmen:

  • "\extensions\BibManager\includes\BibManagerHooks.php"

Vor den Anpassungen ist die Datei mit dem Suffix "_original" zu speichern und von dieser Datei eine Kopie ohne Suffix für die Anpassungen zu erstellen. Nach den Anpassungen ist eine Kopie der veränderten Datei mit dem Suffix "_SW" zu speichern.

Bei "BibManagerHooks.php" ist in Funktion "onBeforePageDisplay(...)" am Anfang, vor Zeile 31 (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' );
Fehler im HTML-Code[Bearbeiten]

Bei der BibManager-Übesicht wird für jede Tabellenzeile am Ende ein statt eines erzeugt (auch schon in MW1.16). Im Verzeichnis "BibManager\includes\" in der Datei "bibManagerPagerList.php" in Zeile 140 den fehlenden Schrägstrich einfügen:

  $tablerow[] = '</tr>'; // Schrägstrich für schließendes Tag eingefügt 2012-09-17 G. Werner
Fehlende Hooks in Datei "Hooks.php"[Bearbeiten]

Folgende "Hooks" sind weder in der Datei "includes/BibManagerHooks.php" noch in einer anderen Datei vorhanden:

  • BibManagerBibTagBeforeTooltip, der in der Datei "BibManagerHooks.php" in der Funktion "getTooltip(...)" in Z.126 aufgerufen wird
  • BibManagerCreateBeforeTypeSelectFormCreate, der in der Datei "SpecialBibManagerCreate.php" in Z.50 aufgerufen wird
  • BibManagerEditBeforeFormCreate, der in der Datei "SpecialBibManagerEdit.php" in Z.106 aufgerufen wird
  • BibManagerGetFieldDefinitions, der in der Datei "BibManagerFieldsList.php" in der Funktion "getFieldDefinitions(..) in Z.158 aufgerufen wird
  • BibManagerGetTypeDefinitions, der in der Datei "BibManagerFieldsList.php" in der Funktion "getTypeDefinitions(..) in Z.237 aufgerufen wird
  • BibManagerValidateCitation, der in der Datei "BibManagerValidator.php" in der Funktion "validateCitation(...) in Z.49 aufgerufen wird
  • BibManagerGetIcons, der in der Datei "BibManagerHooks.php" in der Funktion "getIcons(...)" in Z.167 aufgerufen wird
  • BibManagerFormatEntry, der in der Datei "BibManagerHooks.php" in der Funktion "formatEntry(...)" in Z.350 aufgerufen wird
  • BibManagerPagerBeforeSearch, der in der Datei "BibManagerPagerList.php" in der Funktion "getQueryInfo(...)" in Z.18 aufgerufen wird

Folgende "Hooks"-Funktionen sind in der Datei "BibManagerHooks.php" vorhanden:

  • onLoadExtensionSchemaUpdates(...)
  • onBeforePageDisplay(...)
  • onParserFirstCallInit(...)
  • onBibTag(...)
  • getTooltip(...)
  • getIcons(...)
  • onBiblistTag(...)
  • onBibprintTag(...)
  • onSkinAfterContent(...)
  • formatEntry(...)
  • getTableEntry(...)
  • getTable(...)

Folgende "Hooks"-Funktionen aus der Datei "docs/Hooks.txt" sind nicht in der Datei "BibManagerHooks.php", sondern andernorts vorhanden:

  • validateCitation(...) in der Datei "includes/BibManagerValidator.php"
  • getFieldDefinitions(...) in der Datei "includes/BibManagerFieldsList.php"
  • getTypeDefinitions(...) in der Datei "includes/BibManagerFieldsList.php"

Folgende "Hooks"-Funktionen aus der Datei "docs/Hooks.txt" sind in keiner Datei vorhanden:

  • [BibTag]BeforeTooltip
  • [Create]BeforeTypeSelectFormCreate
  • [Edit]BeforeFormCreate
  • [Pager]BeforeSearch
Fehlerhafte Hyperlink-Erstellung bei Übersichtsseite[Bearbeiten]

Im Repositorium beim Willkommenstext oben auf der Seite "Bibliographien verwalten" erscheinen die Verweise "Bibliographieeintrag anlegen" und "Bibliographien importieren" als HTML-Code:

<a href="/index.php/Special:BibManagerCreate" title="Special:BibManagerCreate">Bibliographieeintrag anlegen
...
<a href="/index.php/Special:BibManagerImport" title="Special:BibManagerImport">

In der Datei "...\includes\specials\SpecialBibManagerList.php" wird in Z.30 "bm_list_welcome" nicht korrekt verarbeitet. Die Methode "->msg(...)" enthält 2 Parameter:

  • den Inhalt zu "bm_list_welcome" aus den Sprachdateien
  • die URLs, die die Angaben "$1" und "$2" in der Sprachdatei ersetzen soll

Die Methode "->escaped()" am Ende der Zeile muss geändert werden zu "->plain()"; auch "->text()" wäre möglich:

// for HAWK HHG changed 2018-12-07
$wgOut->addHTML( $this->msg( 'bm_list_welcome', $createLink, $importLink )->plain() ); //->escaped()

Anschließend ist eine Kopie der Datei mit dem Suffix "_SW" zu speichern.

Fehlerhafte Hyperlink-Erstellung bei neuem Eintrag und Eintragsbearbeitung[Bearbeiten]

Nach Betätigung der Schaltfläche "Speichern" erscheint der Verweis "Zurück zur Übersicht" als HTML-Code:

<a href="/salzwiki/index.php/Spezial:Bibliographieeintr%C3%A4ge_verwalten">Zurück zur Übersicht</a>

Der Fehler bei einem Neueintrag ist derselbe wie bei der Bearbeitung eines Eintrags, weil beim Speichern eines Neueintrags die Datei für Bearbeitungen "specialpages\BibManagerEdit.php" verwendet wird durch "Redirect" in Z.90ff.

Demnach wird in der Datei "SpecialBibManagerEdit.php" in Z.144 "bm_success_link-to-list" nicht korrekt verarbeitet. Die Methode "->msg(...)" enthält 2 Parameter:

  • den Inhalt zu "bm_success_link-to-list" aus den Sprachdateien
  • die URL, die die Angabe "$1" in der Sprachdatei ersetzen soll

Die Methode "->escaped()" am Ende der Zeile muss geändert werden zu "->plain()"; auch "->text()" wäre möglich:

// for HAWK HHG changed 2018-11-12
#$this->getOutput()->addHTML( $this->msg( 'bm_success_link-to-list', SpecialPage::getTitleFor( 'BibManagerList' )->getLocalURL() )->escaped() );
$this->getOutput()->addHTML( $this->msg( 'bm_success_link-to-list', SpecialPage::getTitleFor( 'BibManagerList' )->getLocalURL() )->plain() );

Anschließend ist eine Kopie der Datei mit dem Suffix "_SW" zu speichern.

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.

Ursache ist, dass im Formular zur Bearbeitung eines Eintrags das entsprechende Element den Attributnamen "wpbm_edit_mode" statt "bm_edit_mode" aufweist.

Deshalb wird in der Datei "\extensions\BibManager\includes\specials\SpecialBibManagerEdit.php" wie für MW1.23 in Z.69 "bm_edit_mode" zu "wpbm_edit_mode" geändert:

$editMode = $wgRequest->getBool( 'wpbm_edit_mode' ); #$editMode = $wgRequest->getBool( 'bm_edit_mode' ); für HAWK HHG geändert 2016-02-16

Vor den Änderungen wird die Datei "BibManagerEdit.php" in "BibManagerEdit_original.php" umbenannt und von dieser Datei eine Kopie namens "BibManagerEdit.php" für die Änderungen erstellt. Nach den Änderungen ist eine Kopie der veränderten Datei mit dem Suffix "_SW" zu speichern.

Das Formular enthält für den Zitatschlüssel ein weiteres Element mit dem Präfix "wpbm_..." statt "bm_..." im Attributnamen: "wpbm_bibtexCitation".

In der Datei "\extensions\BibManager\includes\specials\SpecialBibManagerEdit.php" wird in der Funktion "execute(...)" in den Zeilen 61ff und 79ff mit $formDescriptor die Bezeichnung "bibtexCitation" und "edit_mode" ohne "wp" am Anfang festgelegt, aber bei der Formularerzeugung mit "wp" versehen. Es erfolgt jedoch keine Änderung, weil es sonst beim Versuch einen neuen Eintrag mit bereits vorhandener Kennung zu speichern folgende Fehler gibt:

  • die neue Kennung im Formularfeld "mb_bibtexCitation" lässt sich nicht bearbeiten
  • mit "Speichern" wird der bereits vorhandene Eintrag überschrieben

Diese Fehler wurden durch folgende Änderungen in der Datei "SpecialBibManagerEdit.php" in den Zeilen 61ff und 79ff jeweils bei $formDescriptor mit der Ergänzung des Attribut-Schlüssels "name" hervorgerufen:

$formDescriptor['bm_bibtexCitation'] = array(
  'class' => 'HTMLTextField',
  'label-message' => 'bm_citation',
  'name' => 'bm_bibtexCitation', // to prevent "wpbm_bibtexCitation", G. Werner for HAWK HHG, 2018-11-13
  'section' => 'citation',
  'required' => true,
  'validation-callback' => 'BibManagerValidator::validateCitation'
);
...
$formDescriptor['bm_edit_mode'] = array(
  'class' => 'HTMLHiddenField',
  'name' => 'bm_edit_mode', // to prevent "wpbm_edit_mode", G. Werner for HAWK HHG, 2018-11-13
  'default' => 1
);
Falscher Info-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.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 "i18n_SW/" zu speichern.

//qqq.json Z.133f
  "bm_success_save-complete": "A success message",
  "bm_success_delete": "A success message",

//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 saved.</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",
  "bm_success_delete": "<div class=\"successbox\"><strong>The data were deleted.</strong></div><div class=\"visualClear\" id=\"mw-pref-clear\"></div>",

SpecialBibManagerDelete.php Z.92ff:

// for HAWK HHG changed to replace "save-complete" with "delete"-Text 2016-02-15
// and to replace "->escaped()" with "->plain()" 2018-11-12
if ( $result === true ) {
  $wgOut->addHtml( $this->msg( 'bm_success_delete')->plain() ); /*$this->msg( 'bm_success_save-complete')->escaped() );*/
  ...
}
Fehlerhafte Hyperlink-Erstellung nach Löschvorgang[Bearbeiten]

Wie in der Datei "SpecialBibManagerEdit.php" in Z.144 wird auch in der Datei "SpecialBibManagerDelete.php" in Z.98ff das Element "bm_success_link-to-list" nicht korrekt verarbeitet. Die Methode "->msg(...)" enthält 2 Parameter:

  • den Inhalt zu "bm_success_link-to-list" aus den Sprachdateien
  • die URL, die die Angabe "$1" in der Sprachdatei ersetzen soll

Die Methode "->escaped()" am Ende der Zeile muss geändert werden zu "->plain()"; auch "->text()" wäre möglich:

if ( $result ==== true ) {
 $wgOut->addHtml( $this->msg( 'bm_success_save-complete' )->plain()); /*$wgOut->addHtml( $this->msg( 'bm_success_save-complete' )->escaped() );*/
 $wgOut->addHtml(
  $this->msg(
   'bm_success_link-to-list',
   SpecialPage::getTitleFor( 'BibManagerList' )->getLocalURL() 
  )->plain() /* )->escaped() */
 );
}
Fehler beim Löschen[Bearbeiten]

Nach der Bestätigung zum Löschen erscheint die Fehlermeldung:

Der Datensatz "" wurde nicht gefunden!

Im Zwischenschritt "Sind Sie sicher ..." sind im Löschformular zwei versteckte Formularfelder enthalten:

  • id="mw-input-wpbm-delete" und name="wpbm_delete"
  • id="mw-input-wpbm_bibtexCitation" und name="wpbm_bibtexCitation" mit der Datensatz-Kennung

In der Datei "SpecialBibManagerDelete.php" wird in Z.59ff mit $formDescriptor die Bezeichnung ohne "wp" am Anfang festgelegt, aber bei der Formularerzeugung mit "wp" versehen. Somit weicht die Bezeichnung für das bestätigte Löschen von der Bezeichnung von der Zwischenseite ab. Denn in der BibManager-Übersicht wird für die Löschzwischenseite der Parameter "bm_bibtexCitation" mit der Datensatz-Kennung übermittelt.

Außerdem muss der Wahrheits-Wert aus dem Formular für "bm_delete" in Z.88 als String verglichen werden.

Deshalb wird in der Datei "\extensions\BibManager\includes\specials\SpecialBibManagerDelete.php" in der Funktion "execute(...)" in den Zeilen 60ff und 64ff jeweils $formDescriptor mit dem Attribut-Schlüssel "name" ergänzt sowie in der Funktion "formSubmit(...)" in Z.88 der String-Vergleich angepasst:

$formDescriptor = array(
 'bm_delete' => array(
  'class' => 'HTMLHiddenField',
  'default' => true,
  'name' => 'bm_delete', // to prevent "wpbm_delete", G. Werner for HAWK HHG, 2016-02-09
 ),
 'bm_bibtexCitation' = array(
  'class' => 'HTMLHiddenField',
  'default' => $citation,
  'name' => 'bm_bibtexCitation', // to prevent "wpbm_bibtexCitation", G. Werner for HAWK HHG, 2016-02-09
 )
);
...
if ( empty( $formData['bm_delete']) || $formData['bm_delete'] !== (string)true ) // for HAWK HHG completed with "(string)" 2016-12-09
...
Ehemals Fehler bei SpecialPageAliases[Bearbeiten]

Bei BibManager v1.1.0 mussten in der Datei "BibManager.alias.php" 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
Ehemals fehlerhafte Funktionen[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']
);

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

BibManagerAdditionalPublications (Extension-Code)[Bearbeiten]

Diese Erweiterung ergänzt die Erweiterung "BibManager" für Volltexte und DOIs bei den BibTex-Attributen.

"BibManagerAdditionalPublications" basiert auf der Erweiterung "SaltWiki" für MW1.16 und wurde für die Verwendung mit MW1.31 vom Hornemann Institut angepasst:

  • Dateistruktur
  • Dateibezeichnungen
  • Definitionen
  • php-Code

Dateistruktur[Bearbeiten]

Im Verzeichnis der Erweiterung "BibManagerAdditionalPublications\" befinden sich für MW1.31 folgende Dateien und Unterverzeichnisse:

  • BibManagerAdditionalPublications.php: neu, abgeleitet von der Datei "BibManager.php" der gleichnamigen Erweiterung
  • BibManagerAdditionalPublicationsHooks.php: neu als Klasse mit den Funktionen aus der Datei SaltWiki.php
  • extension.json: neu, abgeleitet von der gleichnamigen Datei aus der Erweiterung "BibManager" und von den Angaben in der Datei "SaltWiki.php"
  • i18n\: neu, Verzeichnis mit einzelnen json-Sprachdateien, abgeleitet aus den jeweiligen Sprachen-Blöcken der Datei "SaltWiki.i18n.php"
    • de.json
    • de-formal.json
    • en.json
    • qqq.json
  • patch-bibmanager_additionalpublications.sql: umbenannt von "patch-bibmanager.sql" in der Erweiterung "SaltWiki"
  • resources\: neu, nach Vorbild der Erweiterung "BibManager"
    • images\: neu für Icons, nach Vorbild der Erweiterung "BibManager"
      • link.png [Kopie aus Erweiterung "BibManager"]
      • link_error.png [Kopie aus Erweiterung "BibManager"]

In der Erweiterung "SaltWiki" für MW1.16 gab es folgende Dateien:

  • SaltWiki.php
  • SaltWiki.i18n.php
  • patch-bibmanager.sql

Installationshinweis[Bearbeiten]

Anpassung SQL-Datei[Bearbeiten]

Für Wiki-Updates mit der MW-Datei "\maintenance\update.php" ist in der Datei "patch-bibmanager_additionalpublications.sql" das jeweilige Wiki-Präfix einzufügen.

SalzWiki/SaltWiki:

-- Add addtional fields to the bibmanager table
ALTER TABLE /*$wgDBprefix*/sw_bibmanager
 ADD bm_fulltext text NOT NULL,
 ADD bm_doi text NOT NULL;

Repository:

-- Add addtional fields to the bibmanager table
ALTER TABLE /*$wgDBprefix*/sr_bibmanager
 ADD bm_fulltext text NOT NULL,
 ADD bm_doi text NOT NULL;

neue Datei "extension.json"[Bearbeiten]

{
 "name": "BibManagerAdditionalPublications",
 "version": "1.1",
 "author": [
  "HAWK HHG Hornemann Institut",
  "Hallo Welt! Medienwerkstatt GmbH",
  "Robert Vogel (Hallo Welt!)",
  "Tobias Weichart (Hallo Welt!)",
  "Gunnar Werner (HAWK HHG)"
 ],
 "url": "https://hallowelt.com",
 "descriptionmsg": "bm_additionalpublications-desc",
 "license-name": "GPL-2.0-or-later",
 "type": "specialpage",
 "requires": {
  "MediaWiki": ">= 1.29.0",
  "extensions": {
   "BibManager": "*"
  }
 },
 "MessagesDirs": {
  "BibManagerAdditionalPublications": [
   "i18n"
  ]
 },
 "AutoloadClasses": {
  "BibManagerAdditionalPublicationsHooks": "BibManagerAdditionalPublicationsHooks.php"
 },
 "Hooks": {
  "BibManagerBibTagBeforeTooltip": "BibManagerAdditionalPublicationsHooks::onBibManagerBibTagBeforeTooltip",
  "BibManagerValidateCitation": "BibManagerAdditionalPublicationsHooks::onBibManagerValidateCitation",
  "BibManagerGetFieldDefinitions": "BibManagerAdditionalPublicationsHooks::onBibManagerGetFieldDefinitions",
  "BibManagerGetTypeDefinitions": "BibManagerAdditionalPublicationsHooks::onBibManagerGetTypeDefinitions",
  "BibManagerGetIcons": "BibManagerAdditionalPublicationsHooks::onBibManagerGetIcons",
  "BibManagerFormatEntry": "BibManagerAdditionalPublicationsHooks::onBibManagerFormatEntry",
  "BibManagerPagerBeforeSearch": "BibManagerAdditionalPublicationsHooks::onBibManagerChangeSearchValues",
  "LoadExtensionSchemaUpdates": "BibManagerAdditionalPublicationsHooks::onLoadExtensionSchemaUpdates"		
 },
 "manifest_version": 2
}


neue "Hooks"-Klasse mit angepassten Methodennamen[Bearbeiten]

Für die "Hooks" wird die Datei "SaltWiki.php" zu "BibManagerAdditionalPublicationsHooks.php" umbenannt und werden die Funktionen zu Methoden in einer neuen Klasse "BibManagerAdditionalPublicationsHooks".

Die Funktionsnamen mit dem Präfix "sw_on..." werden geändert zu den Methodennamen "on...".

Außerdem werden wie bei "BibManager" einleitend die "MediaWikiServices" aufgerufen.

Um Fehlermeldungen zu vermeiden, wenn $entry['bm_fulltext'] ein Leerzeichen oder Steuerzeichen enthält, wird Z.107 mit einer zusätzlichen Bedingung unter Verwendung von "trim()" versehen.

use MediaWiki\MediaWikiServices;

class BibManagerAdditionalPublicationsHooks {

  public static function onBibManagerChangeSearchValues ( $sSearchType, $sSearchTerm, &$sCond ) {
    if ( (strtolower ( $sSearchType ) == "url" || strtolower ( $sSearchType ) == "doi" || strtolower ( $sSearchType ) == "fulltext") && empty ( $sSearchTerm ) ) {
      $sCond = "bm_" . $sSearchType . " != ''";
    }
    return true;
  }

  public static function onBibManagerBibTagBeforeTooltip ( &$aBibEntry ) {
    ...
  }

  public static function onBibManagerValidateCitation ( $citation, $allData, &$result ) {
		if ( strpos ( $citation, ':' ) === false ) {
			$result = wfMessage ( 'bm_additionalpublications-citation-format-error' )->escaped();
		}
		return true;
  }

  public static function onBibManagerGetFieldDefinitions ( &$fieldDefinitions ) {
    //TODO: Fields "DOI" und "fulltext" Felder von hier injizieren.
    $customFields = array (
      'doi' => array (
        'class' => 'HTMLTextField',
        'label' => wfMessage( 'bm_doi' )->escaped(),
        'default' => 'https://'
        //'validation-callback' => 'BibManagerValidator::validateUrl',
        //validate ?
      ), // Custom field by Hornemann Intitut
      'fulltext' => array (
        'rows' => 5,
        'class' => 'HTMLTextField',
        'label' => wfMessage( 'bm_fulltext' )->escaped(),
        #'default' => 'http://'
        //'validation-callback' => 'BibManagerFieldsList::validateUrl'
        //validate ?
      ) // Custom field by Hornemann Intitut
    );

    $fieldDefinitions = $fieldDefinitions + $customFields;
    return true;
  }
  ...
  public static function onLoadExtensionSchemaUpdates ( $updater = null ) {
    if ( $updater === null ) {
      // <= 1.16 support
      global $wgExtNewFields;
      $wgExtNewFields[] = array (
        'bibmanager',
        'bm_fulltext',
        dirname ( __FILE__ ) . '/patch-bibmanager_additionalpublications.sql'
      );
    } else {
      // >= 1.17 support
      $updater -> addExtensionUpdate (
        array (
          'addField',
          'bibmanager',
          dirname ( __FILE__ ) . '/patch-bibmanager_additionalpublications.sql',
          true
        )
      );
    }
    return true;
  }

  public static function onBibManagerGetIcons ( $entry, &$icons ) {
    global $wgScriptPath; #, $wgUser; // $wgUser->getSkin()->makeMediaLinkObj() for MW1.16
	
    // for HAWK HHG expanded with condition for space or control character 2019-04-12
    if ( isset ( $entry['bm_fulltext'] ) && !empty ( $entry['bm_fulltext'] ) && trim($entry['bm_fulltext'])!=="" ) {
      $icon = 'link_error.png';
      $file = RepoGroup::singleton () -> findFile ( $entry['bm_fulltext'] );
      $url = '';
      if ( $file === false ) {
        $fileTitle = Title::newFromText ( $entry['bm_fulltext'], NS_FILE );
        // TODO RBV (23.12.11 14:33): Hacky but okay...
        #$url = $wgUser -> getSkin () -> makeMediaLinkObj ( $fileTitle );
        $url = Linker::makeMediaLinkObj( $fileTitle );
        $url = preg_replace ( '#<a.*?href="(.*?)".*?</a>#si', '$1', $url );
      } else {
        $url = $file -> getTitle () -> getLinkURL ();
        $icon = 'link.png';
      }
      // for HAWK HHG und MW1.23LTS path changed from "client" to "resources", 2016-06-14
      $icons['fulltext'] = array (
        'src' => $wgScriptPath . '/extensions/BibManager/resources/images/' . $icon,
        'title' => 'bm_tooltip_fulltext',
        'href' => $url
      );
    }
    return true;
  }
  ...
}

Fehler (Extension-Code)[Bearbeiten]

Sprachdatei "de" enthält Sie-Form[Bearbeiten]

In der Sprachdatei "de.json" enthält das Element "saltwiki-citation-format-error" die Sie-Form wie bei "de-formal" und wird korrigiert:

'saltwiki-citation-format-error' => 'Unerlaubtes Format. Bitte gib das Zitat in der Form <em>Autor:Jahr</em> an, z.B. <em>Nachname:2011</em>.',
Fehlendes Icon "Link zum Volltext" bei Detailseite[Bearbeiten]

Da sich in der verwendeten BibManager-Version der Dateipfad für eine Grafik geändert hat, muss der Code angepasst werden.

Auf der Detailseite eines Bibliographieeintrags wird rechts statt des Icons nur der Alternativtext "Link zum Volltext" bzw. "Fulltext link" angezeigt, weil der Dateipfad nicht mehr stimmt. In der Funktion "sw_onBibManagerGetIcons(...)" wird 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; es ist folgende Datei anzupassen:

  • "\extensions\SaltWiki\SaltWiki.php"

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,
 ...
);
...

}

Veralteter Code[Bearbeiten]

Es werden in der Datei "SaltWiki.php" noch folgende Methoden verwendet:

  • "wfMsg()" anstatt von "wfMessage()->escaped()"
  • "$wgUser -> getSkin () -> makeMediaLinkObj ( $fileTitle )" anstatt von "Linker::makeMediaLinkObj( $fileTitle )
Fehler bei einzelnen Seiten[Bearbeiten]

Auf den Seiten "Halit" und "Test", zu erreichen über "Startseite => Chloride", wird eine Fehlermeldung erzeugt:

[f05c554c78bb93f1e7833805] /index.php/Test TypeError from line 783 of D:\noxampp\apache\htdocs\salzwiki\includes\Linker.php: Argument 1 passed to Linker::makeMediaLinkFile() must be an instance of Title, null given, called in D:\noxampp\apache\htdocs\salzwiki\includes\Linker.php on line 768

Backtrace:

#0 D:\noxampp\apache\htdocs\salzwiki\includes\Linker.php(768): Linker::makeMediaLinkFile(NULL, boolean, string)
#1 D:\noxampp\apache\htdocs\salzwiki\extensions\BibManagerAdditionalPublications\BibManagerAdditionalPublicationsHooks.php(115): Linker::makeMediaLinkObj(NULL)
#2 D:\noxampp\apache\htdocs\salzwiki\includes\Hooks.php(177): BibManagerAdditionalPublicationsHooks::onBibManagerGetIcons(array, array)
#3 D:\noxampp\apache\htdocs\salzwiki\includes\Hooks.php(205): Hooks::callHook(string, array, array, NULL)
#4 D:\noxampp\apache\htdocs\salzwiki\extensions\BibManager\includes\BibManagerHooks.php(170): Hooks::run(string, array)
#5 D:\noxampp\apache\htdocs\salzwiki\extensions\BibManager\includes\BibManagerHooks.php(402): BibManagerHooks::getIcons(array)
#6 D:\noxampp\apache\htdocs\salzwiki\extensions\BibManager\includes\BibManagerHooks.php(307): BibManagerHooks::getTable(array)
#7 D:\noxampp\apache\htdocs\salzwiki\includes\parser\Parser.php(3888): BibManagerHooks::onBibprintTag(NULL, array, Parser, PPFrame_DOM)
#8 D:\noxampp\apache\htdocs\salzwiki\includes\parser\Preprocessor_DOM.php(1362): Parser->extensionSubstitution(array, PPFrame_DOM)
#9 D:\noxampp\apache\htdocs\salzwiki\includes\parser\Parser.php(2942): PPFrame_DOM->expand(DOMElement, integer)
#10 D:\noxampp\apache\htdocs\salzwiki\includes\parser\Parser.php(1293): Parser->replaceVariables(string)
#11 D:\noxampp\apache\htdocs\salzwiki\includes\parser\Parser.php(443): Parser->internalParse(string)
#12 D:\noxampp\apache\htdocs\salzwiki\includes\content\WikitextContent.php(323): Parser->parse(string, Title, ParserOptions, boolean, boolean, integer)
#13 D:\noxampp\apache\htdocs\salzwiki\includes\content\AbstractContent.php(516): WikitextContent->fillParserOutput(Title, integer, ParserOptions, boolean, ParserOutput)
#14 D:\noxampp\apache\htdocs\salzwiki\includes\poolcounter\PoolWorkArticleView.php(144): AbstractContent->getParserOutput(Title, integer, ParserOptions)
#15 D:\noxampp\apache\htdocs\salzwiki\includes\poolcounter\PoolCounterWork.php(123): PoolWorkArticleView->doWork()
#16 D:\noxampp\apache\htdocs\salzwiki\includes\page\Article.php(604): PoolCounterWork->execute()
#17 D:\noxampp\apache\htdocs\salzwiki\includes\actions\ViewAction.php(68): Article->view()
#18 D:\noxampp\apache\htdocs\salzwiki\includes\MediaWiki.php(500): ViewAction->show()
#19 D:\noxampp\apache\htdocs\salzwiki\includes\MediaWiki.php(294): MediaWiki->performAction(Article, Title)
#20 D:\noxampp\apache\htdocs\salzwiki\includes\MediaWiki.php(861): MediaWiki->performRequest()
#21 D:\noxampp\apache\htdocs\salzwiki\includes\MediaWiki.php(524): MediaWiki->main()
#22 D:\noxampp\apache\htdocs\salzwiki\index.php(42): MediaWiki->run()
#23 {main}

BibManagerUploadMetaData[Bearbeiten]

Die Erweiterung "BibManagerUploadMetaData", ursprünglich "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;
}

Cite[Bearbeiten]

Die Erweiterung "Cite" dient zum Erstellen von Fußnoten in Wiki-Artikeln. In MW1.31 erzeugte die Core-Erweiterung "Cite" unter PHP 7.2.2 einen Fehler "Uncommitted DB writes".

  • Erweiterung unter http://www.mediawiki.org/wiki/Cite herunterladen.
  • Extrahieren der Dateien nach "\[wikiname]\extensions\Cite\"
  • Erweiterung in der Datei "LocalSettings.php" einfügen
wfLoadExtension( 'Cite' );

Siehe näheres zum Einfügen von Fußnoten unter https://salzwiki.de/index.php/Autor#Fu.C3.9Fnoten.

CiteThisPage[Bearbeiten]

Die Erweiterung "CiteThisPage" dient zum Erstellen von Zitierhilfen für Wiki-Artikel. Sie ist erst seit MW Version 1.24 einsetzbar und wurde in jener Version unter der Bezeichnung "Special:Cite" als Zusatzerweiterung zur Erweiterung "Cite" mit der Datei "SpecialCite.php" angeboten. Ab MW 1.25 handelt es sich bei "CiteThisPage" ("Zitierhilfe") um eine eigenständige Erweiterung, siehe https://www.mediawiki.org/wiki/MediaWiki_1.25/de-formal#Schwerwiegende_%C3%84nderungen.

Mit der Erweiterung wird im Menü links unter "Werkzeuge" bzw. "tools" ein Verweis "Seite zitieren" bzw. "Cite this page" zur Spezialseite "Special:CiteThisPage" angezeigt.

Damit die Spezialseite mit der Zitierhilfe auch ohne Anmeldung angezeigt wird, muss in der Datei "LocalSettings.php" ein zusätzlicher Eintrag im "Hook" vorgenommen werden.

// Spezialseiten-Inhalte nur für bestimmte Gruppen anzeigen, ansonsten nur den Seitentitel
...
  $aSpecialPages = array(
    ...
    "CiteThisPage" => "SpecialCiteThisPage",
  )
...
// MW1.31, MW1.35
wfLoadExtension( 'CiteThisPage' );
// MW1.24
require_once("$IP/extensions/CiteThisPage/CiteThisPage.php");

ConfirmEdit[Bearbeiten]

Registrierte Nutzer/innen dürfen auf die Diskussionseiten schreiben. Damit dies etwas sicherer vonstatten geht, wird mit ConfirmEdit das Captcha "QuestyCaptcha" eingeführt (bisher nur bei Salzwiki und Saltwiki, nicht bei Repositorium).

## MW 1.31
wfLoadExtensions(['ConfirmEdit', 'ConfirmEdit/QuestyCaptcha']);

## MW 1.23
#require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
...
## Erweiterung ConfirmEdit mit Captcha
#$wgCaptchaClass = 'QuestyCaptcha'; // für MW 1.23 und 1.16

ContactPage - Kontaktseite (Wiki-Code de-formal)[Bearbeiten]

ACHTUNG: Nach jedem MediaWiki-Update muss überprüft werden, ob die vorgenommenen Änderungen in den jeweiligen Dateien noch existieren. Deshalb ist von den geänderten Dateien jeweils eine Kopie "..._SW.json" bzw. "..._SW.php" zu speichern.

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 in der Datei "LocalSettings.php" ü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 "[wikiname]\languages\i18n\de-formal.json" ist um einen Eintrag für "emailccme" 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 von https://www.mediawiki.org/wiki/Extension:ContactPage herunterladen und die Dateien unter "Extensions/ContactPage" speichern.
  • In den Übersetzungsdateien Zeilen einfügen (siehe weiter unten); MW1.31 "de.json", MW1.23 auch "en.json" und "qqq.json"
  • In der Wiki-Systemtexte-Datei "[wikiname]\languages\i18n\de-formal.json" 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"
    • Bei 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 für $wgContactConfig in der Datei "LocalSettings.php" einfügen
    • Bei MW1.31 das Attribut "'cols' => 80," auskommentieren, weil sonst durch die MW-Datei "HTMLTextAreaField.php" mit der Funktion "getInputOOUI(...)" ein "OOUIHTMLForm"-Fehlerhinweis ausgegeben wird

MW 1.31[Bearbeiten]

MW 1.31 Code-Anpassungen[Bearbeiten]

Anzupassende Dateien:

  • "[wikiverzeichnis]\languages\i18n\de-formal.json"
  • "...\extensions\ContactPage\i18n\de.json", "...en.json"
  • "...\extensions\ContactPage\includes\SpecialContact.php"
  • "LocalSettings.php"

In der Datei "LocalSettings.php" muss bei MW1.31 die Anzahl der Reihen des Textfeldes auskommentiert werden:

## Kontakt-Formular, SpecialPage
wfLoadExtension("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.
);

In der Datei "\extensions\ContactPage\i18n\de.json" Ergänzung bei "authors" hinter "Umherirrender", außerdem zusätzliche Captcha-Texte einfügen:

{
  "metadata": {
    "authors": [
      ...
      "Umherirrender",
      "Gunnar Werner HAWK HHG"
    ]
  },
  ...
  "contactpage-captcha": "Um die Nachricht senden zu können, bitte das Captcha lösen ([[Special:Captcha/help|weitere Informationen]])",
  "contactpage-captcha-failed": "Captcha-Test nicht bestanden! ([[Special:Captcha/help|weitere Informationen]])",
}
...
if ( $this->useCaptcha() && !$wgCaptcha->passCaptchaFromRequest( $request, $user ) ) {
  return $this->msg( 'contactpage-captcha-error' )->plain();
}

In der Datei "\extensions\ContactPage\i18n\en.json" Ergänzung bei "authors" hinter "Umherirrender", außerdem zusätzliche Captcha-Texte einfügen:

{
  "metadata": {
    "authors": [
      ...
      "Umherirrender",
      "Gunnar Werner HAWK HHG"
    ]
  },
  ...
  "contactpage-captcha": "Please fill out to send the message ([[Special:Captcha/help|further information]])",
  "contactpage-captcha-failed": "Captcha-Test not right! ([[Special:Captcha/help|further information]])",
}
...
if ( $this->useCaptcha() && !$wgCaptcha->passCaptchaFromRequest( $request, $user ) ) {
  return $this->msg( 'contactpage-captcha-error' )->plain();
}

Folgende Anpassungen entfallen bei MW1.31 in Datei "...\includes\SpecialContact.php", da der Code enthalten ist in den Zeilen ab 196, 205, 268, 406, 410, 472:

...
 if ( $this->useCaptcha() ) {
  $formItems['Captcha'] = array(
    ...
  );
 }
...
 $form = HTMLForm::factory( 'ooui',
  $formItems, $this->getContext(), "contactpage-{$this->formType}"
 );
...
public function processInput( $formData ) {
  global $wgUserEmailUseReplyTo, $wgPasswordSender, $wgCaptcha;
...
  // Stolen from Special:EmailUser
  $error = '';
  ...
  private function getYesOrNoMsg( $value ) {
    return $this->msg( $value ? 'htmlform-yes' : 'htmlform-no' )->inContentLanguage()->text();
  }
  
  /**
  * @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' );
  }

  /**
  * @return string CAPTCHA form HTML
  */
  private function getCaptcha() {
    // NOTE: make sure we have a session. May be required for CAPTCHAs to work.
    \MediaWiki\Session\SessionManager::getGlobalSession()->persist();
 
    $captcha = ConfirmEditHooks::getInstance();
    $captcha->setTrigger( 'contactpage' );
    $captcha->setAction( 'contact' );
    ...
    return '<div class="captcha">' .
      $formInformation['html'] .
      "</div>\n";
  }

MW 1.27[Bearbeiten]

  • Datei "composer.json" fehlt
  • Datei "extension.json" fehlt
  • vorangegangene Angaben zu MW 1.23 für MW 1.27 anpassen

MW 1.23[Bearbeiten]

Für Upgrades von MW-Versionen bis einschließlich 1.22 zu neueren Versionen ab 1.23 sind die Angaben in der Datei "LocalSettings.php" anzupassen, siehe auch https://www.mediawiki.org/wiki/Extension:ContactPage.

MW 1.23 Code-Anpassungen[Bearbeiten]

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

Anzupassende Dateien:

  • "[wikiverzeichnis]\languages\i18n\de-formal.json"
  • "...\extensions\ContactPage\i18n\de.json", "...de-formal.json", "...en.json" und "...qqq.json"
  • "...\extensions\ContactPage\includes\ContactPage_body.php"

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.
);

DynamicPageList[Bearbeiten]

Es gibt 4 Erweiterungen mit der Bezeichnung "DynamicPageList", wobei die erste mit dem Alias "Intersection" nicht verwendet wird, siehe auch https://www.mediawiki.org/wiki/Extension:DynamicPageList.

Bei MW 1.16 wurde "DynamicPageList2" = "DynamicPageList (third party)" verwendet, ab MW 1.23 "DynamicPageList3", wobei das einzubindende Unterverzeichnis je nach Version "DynamicPageList" oder "DynamicPageList3" hieß.

Bei MW1.35 wird wieder "DynamicPageList3" mit dem gleichnamigen Verzeichnis eingesetzt, da "DynamicPageList2" für diese Version nicht mehr geeignet ist und "DynamicPageListEngine" bei Tests fehlerhafte Seiten erzeugte.

MediaWiki 1.35[Bearbeiten]

wfLoadExtension('DynamicPageList3');

Interwiki[Bearbeiten]

Die Erweiterung "Interwiki" ist in MediaWiki seit Version 1.21 enthalten und hieß ehemals "SpecialInterwiki", bevor sie umbenannt wurde. Sie ist in MW1.31 standardmäßig aktiviert und wird in SalzWiki, SaltWiki sowie im Repositorium verwendet. Die Erweiterung kann ansonsten bei https://www.mediawiki.org/wiki/Extension:Interwiki heruntergeladen und in das Verzeichnis "[wikiname]\extensions\Interwiki" extrahiert werden.

Diese Erweiterung fügt die Seite Special:Interwiki zu Mediawiki hinzu, um die Interwiki-Tabelle sehen und editieren zu können. Änderungen werden auch in der Datenbank-Tabelle "interwiki" übernommen.

Mit der 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", siehe auch https://www.mediawiki.org/wiki/Manual:$wgEnableScaryTranscluding.

Allerdings kommt es mit MW1.31 bei Seiten mit Vorschaubildern (Thumbnails) aus dem Repositorium zu Fehlermeldungen, wenn der Standardwert von $wgUseImageResize=true nicht angepasst wird; siehe auch https://www.mediawiki.org/wiki/Manual:$wgUseImageResize.

In der Datei "LocalSettings.php" eines jeden Wikis ist einzufügen:

...
$wgEnalbeUploads = false; # Salzwiki/Saltwiki: false, Repository: true
## Vorschaubilder von Repositorium-Dateien benötigen in SalzWiki/SaltWiki "UseImageResize=false"
$wgUseImageResize = false; # Salzwiki/Saltwiki: false, Repositorium: true
$wgUseImageMagick = true; # Salzwiki/Saltwiki: true, Repository: false
...
#$wgTranscludeCacheExpiry = 60;
$wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', @filemtime(__FILE__)) );
...
#$wgLocalInterwiki = strtolower( $wgSitename );
$wgLocalInterwikis = array("salzwiki", "saltwiki", "repository"); # ab MW1.31 Präfixe aus Tabelle von Seite Special:Interwiki
...
## Zulassen von Interwiki-Verweisen, für MW1.23 statt ".../Interwiki/SpecialInterwiki.php" bei MW1.16
## to allow interwiki-linking, für Version MW1.23 anderer Dateiname
#require_once("$IP/extensions/Interwiki/SpecialInterwiki.php"); ## MW1.16
#require_once("$IP/extensions/Interwiki/Interwiki.php"); ## MW1.23, ist bei MW1.31 Standard-Erweiterung
$wgEnableScaryTranscluding = true; ## Seiten von anderen Wikis können eingebunden werden
...
## to allow editing Special:Interwiki
$wgGroupPermissions['*']['interwiki'] = false;
$wgGroupPermissions['sysop']['interwiki'] = true; ## nur sysops können die InterWiki-Tabelle ändern und sehen

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

Lingo[Bearbeiten]

"Lingo" verursacht Fehler bei Tests mit MW1.35.8.

Die Erweiterung "Lingo" wird bei den Wikis seit dem Upgrade auf MW 1.23 als Ersatz für die Erweiterung "Terminology" verwendet und kann heruntergeladen werden bei https://www.mediawiki.org/wiki/Extension:Lingo.

Die Dateien werden entpackt in das Verzeichnis "extensions\Lingo".

In der Datei "LocalSettings.php" folgende Zeile einfügen:

wfLoadExtensions('Lingo');

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
    wfLoadExtensions( 'Math' );
  • 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/wiki/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:

## Vorschaubilder von Repositorium-Dateien benötigen in Salzwiki/Saltwiki "UseImageMagick=false"
$wgUseImageResize = false; # SalzWiki/SaltWiki: false, Repository: true;
$wgUseImageMagick = true; # Salzwiki/Saltwiki: true, Repository: auskommentiert
## ImageMagick
#$wgImageMagickConvertCommand = 'D:\texmf\imagick\convert.exe';
#$wgImageMagickIdentifyCommand = 'D:\texmf\imagick\identify.exe';
$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';
$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',
  'ImageMagick' => '"D:/texmf/imagick/convert.exe" -background white $input PNG:$output',
);
require_once "$IP/extensions/Math/Math.php";
$wgMathDisableTexFilter = true; // in Math.hooks.php

Veränderungen bei wesentlichen Math-Klassen[Bearbeiten]

  • MW1.31 mit "class MathLaTeXML extends MathMathML" und "class MathRenderer"
  • MW1.23 mit "class MathLatexRender extends MathRenderer"
  • MW1.16 mit "class LatexRender" und "class MathRenderer"

Restbase-Fehler[Bearbeiten]

Bei MW1.31 erscheint beispielsweise auf der Seite https://www.salzwiki.de/index.php/Hilfe:Latex eine Fehlermeldung "Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server ...". Dies kann folgende Ursachen haben:

Folgende RestbaseURL-Angabe in der Datei "LocalSettings.php" zeigte keine Wirkung:

wfLoadExtension("Math");
$wgMathDisableTexFilter = true; // in Math.hooks.php
$wgMathFullRestbaseURL= 'https://en.wikipedia.org/api/rest_';

Folgende Anpassung in der Datei "...\includes\libs\MultiHttpClient.php" in Z.378 zeigte keine Wirkung:

#if ( preg_match( "/^(HTTP\/1\.[01]) (\d{3}) (.*)/", $header, $matches ) ) {
if ( preg_match( "/^(HTTP\/[12](?:\.[01])?) (\d{3}) (.*)/", $header, $matches ) ) {
...
Anpassungen "Math.php" und "MathRenderer.php" (Wiki-Code)[Bearbeiten]

Anpassungen bei MW1.23 bzw. MW1.16:

  • 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" bei MW1.16 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.

MW1.16 mit "class LatexRender" und "class MathRenderer" MW1.23 mit "class MathLatexRender extends MathRenderer":

/**
 * 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\

Piwik Integration[Bearbeiten]

Die Statistik-Anwendung "Piwik" wurde im Januar 2018 in "Matomo" umbenannt, weshalb ab März 2018 die Erweiterung "Extension:Matomo" zur Verfügung stehen und verwendet werden soll.

Die Erweiterung "Extension: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
...
wfLoadExtension( 'Piwik' );
$wgPiwikURL = $_SERVER['SERVER_NAME']."/analytics/piwik"; # ohne Protokoll-Angabe und ohne Schrägstrich am Ende!
$wgPiwikIDSite = "1"; # SalzWiki=1, SaltWiki=2, Repository=3

QuestyCaptcha[Bearbeiten]

Das Plugin "QuestyCaptcha" ist ab MW1.27 im Dateien-Paket der Erweiterung "ConfirmEdit" enthalten und muss nicht mehr zusätzlich heruntergeladen werden.

Zusätzlich zur Erweiterung "Extension:ConfirmEdit" wird für die Salzwikis als Plugin das Captcha "Extension: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.

  • Überprüfen, ob im Verzeichnis "extensions\ConfirmEdit\" das Unterverzeichnis "QuestyCaptcha\" mit Dateien enthalten ist.
  • In der Datei "LocalSettings.php" nach "wfLoadExtension( 'Cite' );" einfügen:
##
## EXTENSIONS
...
wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/QuestyCaptcha' ]);
...
## Erweiterung ConfirmEdit mit Captcha
#$wgCaptchaClass = "QuestyCaptcha"; // entfällt in MW 1.27
# 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;

TimedMediaHandler (JavaScript)[Bearbeiten]

"TimedMediaHandler" beinhaltet den "Kaltura HTML5 Player" (JavaScript, http://www.html5video.org/kaltura-player/docs) und den experimentellen "VideoJS Player". Unterstützt werden Streaming, WebM und Ogg sowie gegebenenfalls getID3.

Einschränkung[Bearbeiten]

Die Erweiterung steht ab Mediawiki 1.17 zur Verfügung, zuletzt als Version 0.5.0 mit Datum 2015-12-08 (Stand 2018-03-02). Die Versionen REL1.27, REL1.29 und REL1.30 sind nicht für MW 1.27 geeignet, da die Datei "extension.json fehlt.

Nutzungsvoraussetzungen[Bearbeiten]

Die Erweiterung benötigt zusätzlich

  • bis einschließlich MW1.30 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" sollte in der PHP-Installation des Servers enthalten sein
      • "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.

Es ist noch zu klären, ob eventuell das MPEG Format für eine Hochschulanwendung lizenzfrei sein könnte. "FFmpeg" ist herunterzuladen von heise.de und wird dann gespeichert unter "D:\ffmpeg-wiki\".

Installation und Konfiguration[Bearbeiten]

## MW1.27 bis MW1.30: MwEmbedSupport und TimedMediaHandler
wfLoadExtensions("MwEmbedSupport");
require_once("$IP/extension/TimedMediaHandler/TimedMediaHandler.php");
## MW1.31: TimedMediaHandler
wfLoadExtensions("TimedMediaHandler");
## MW1.26 und älter: MwEmbedSupport und TimedMediaHandler
require_once("$IP/extension/MwEmbedSupport/MwEmbedSupport.php");
require_once("$IP/extension/TimedMediaHandler/TimedMediaHandler.php");

# FFmpeg auskommentiert, solange kostenfreie Lizenz für Hochschule ungeklärt ist
#$wgFFmpegLocation = "D:\ffmpeg-wiki\bin\ffmpeg";

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.

wfLoadExtensions( 'UserMerge' );
# Assign the usermerge right to a usergroup, i.e. to the bureaucrats:
$wgGroupPermissions['bureaucrat']['usermerge'] = true;

WhosOnline[Bearbeiten]