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

Aus Salzwiki
Zur Navigation springen Zur Suche springen
Zeile 1.644: Zeile 1.644:
-->
-->


=== Lizenzen im Upload-Formular des Repositoriums ===
== Lizenzen im Upload-Formular des Repositoriums ==


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

Version vom 21. März 2011, 14:38 Uhr

Dokumentation der Installation von "SalzWiki"


Allgemeines[Bearbeiten]

In dieser Dokumentation werden die Installation und Konfiguration des Salzwikis (3 Wikisysteme) und der Erweiterungen (Extensions) beschrieben, die in der Mediawiki-Version 1.16.1 umgesetzt sind.

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

Sprachvarianten[Bearbeiten]

  • Das deutsche SalzWiki ist einsprachig "Deutsch".
  • Das englische Saltwiki ist einsprachig "English".
  • Das Repositorium ist einsprachig "Deutsch" und soll 2-sprachig "Deutsch/English" werden.

Apache-Webserver - Verzeichnisauflistungen verhindern[Bearbeiten]

Um Verzeichnisauflistungen für Browser zu verbieten, ist in der Datei "apache\conf\httpd.conf" folgende Konfiguration erforderlich:

Z.192ff

<Directory />
    Options -Indexes FollowSymLinks
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>

Z.209ff

<Directory "D:/xampp/htdocs">
...
Options -Indexes FollowSymLinks Includes ExecCGI
...
AllowOverride All
...
Order deny,allow
Allow from all
</Directory>

Suchmaschinen[Bearbeiten]

Hschwarz 28.07.2009: Damit die Wikis während der Erprobungsphase nicht von Suchmaschinen durchsucht werden können, wurde eine Datei
"robots.txt" in das htdocs-Verzeichnis gestellt.
Damit kein Robot irgendetwas liest:

User-agent: *
Disallow:

Robots.txt neu am 13.2.2011 zu Beginn der Freischaltung der 16er Version und angepasst am 01.03.2011 wegen Installation von "saltwiki": im Verzeichnis "htdocs"

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

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


Im Verzeichnis de/salzWiki

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

User-agent: *

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

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


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

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

E-Mail-Versand[Bearbeiten]

die Datei "localSettings.php" wurde in den Verzeichnissen

  • salzwiki_1.16.1/
  • repository_1.16.1/
  • saltwiki/

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

## E-Mail-Versand angepasst 09.10.2009 G. Werner
$wgEmergencyContact = "service@salzwiki.hawk-hhg.de";
$wgPasswordSender = "service@salzwiki.hawk-hhg.de"; 

$wgSMTP = array( 
'host' => "10.104.1.2", 
'IDHost' => "hawk-hhg.de", 
'port' => "25", 
'auth' => true, 
'username' => "service@salzwiki.hawk-hhg.de", 
'password' => "********" 
);

$wgEnotifUserTalk = true; # UPO
$wgEnotifWatchlist = true; # UPO
$wgEmailAuthentication = true;

SalzWiki[Bearbeiten]

Datenbank mittels XAMPP und phpmyAdmin anlegen:[Bearbeiten]

Bei der Mediawiki-Version 1.15 muss vor der Installation des Wikis zuerst für das jeweilige Wiki eine Datenbank angelegt werden.
Bei der Version 1.16.1 kann die jeweilige Datenbank während der Installation mittels Browser (/[wikiverzeichnis]/config/index.php) angelegt werden, sofern der Superuser-Account (Datenbank-Hauptadministrator) bekannt ist:

salzwiki[Bearbeiten]

salzwiki_1.16.1 
Benutzer: hschwarz 
Host: localhost 
Global Rechte: all privileges 
Grant: ja 
database table prefix: sw_

repository[Bearbeiten]

repository_1.16.1 
Benutzer: hschwarz 
Host: localhost 
Global Rechte: all privileges 
Grant: ja 
database table prefix: sr_

saltwiki[Bearbeiten]

saltwiki 
Benutzer: hschwarz 
Host: localhost 
Global Rechte: all privileges 
Grant: ja 
database table prefix: sw_

Mediawiki Installieren[Bearbeiten]

  • Für die jeweiligen Wikis einen entsprechenden Wiki- und Verzeichnisnamen festlegen: "salzwiki", "repository", "saltwiki".
  • Die Dateien und Verzeichnisse aus der tar.gz-Datei in das jeweilige Wiki-Verzeichnis entpacken:
"D:\xampp\htdocs\[wikiverzeichnisname]\"
  • Nach Installationsanweisung das jeweilige Wiki installieren; hierzu im Browser die Adresse "D:\xampp\htdocs\[wikiverzeichnisname]\config\index.php" aufrufen.

Lizenz für das Fachwiki[Bearbeiten]

HSchwarz 13.07.2009: Einfügen in LocalSettings.php

## For attaching licensing metadata to pages, and displaying an 
## appropriate copyright notice / icon. GNU Free Documentation 
## License and Creative Commons licenses are supported so far. 
$wgEnableCreativeCommonsRdf = true; 
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright 
## English
$wgRightsUrl = "http://creativecommons.org/licenses/by-nc-sa/3.0/"; 
$wgRightsText = "Attribution-Noncommercial-Share Alike 3.0 Unported"; 
$wgRightsIcon = "http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png"; 
## Deutsch
#$wgRightsUrl = "http://creativecommons.org/licenses/by-nc-sa/3.0/de/"; 
#$wgRightsText = "Namensnennung-Nicht-kommerziell-Weitergabe unter gleichen Bedingungen 3.0 Deutschland"; 
#$wgRightsIcon = "http://i.creativecommons.org/l/by-nc-sa/3.0/de/88x31.png"; 
# $wgRightsCode = "[license_code]"; # Not yet used

Style/Skin[Bearbeiten]

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

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

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

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

[Bearbeiten]

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

##LOGO
$wgLogo = "/[wikiverzeichnisname]/skins/common/images/Logo.png";

Logos mit Verlinkung (und Footerlinks angepasst)[Bearbeiten]

  • Änderungen in MonoBookSW.php: Zeile 213 - 239
</div><!-- end of the left (by default at least) column -->

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

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

  // Generate additional footer links, entfernt: "'lastmod',  'copyright',  'viewcount', 'numberofwatchingusers',"
  $footerlinks = array(
   'credits',
   'privacy', 'about', 'disclaimer', 'tagline', 'Hallo', 
  );
  $validFooterLinks = array();
  foreach( $footerlinks as $aLink ) {
   if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
    $validFooterLinks[] = $aLink;
   }
  }
  if ( count( $validFooterLinks ) > 0 ) {
?>  <ul id="f-list">
  • Änderungen an "Aboutsite" und "Aboutpage", damit im "Footer" anstelle von "Über SalzWiki" der "Forschungsverbund" angezeigt und verlinkt wird:

"MediaWiki:Aboutsite" für den Link-Text bearbeiten:

Forschungsverbund
<!--Über {{SITENAME}}-->

"MediaWiki:Aboutpage" für den Seitenname, zu dem verlinkt wird, bearbeiten:

Project:Über

ersetzen durch

Forschungsverbund

Favicon[Bearbeiten]

Damit in der Browser-Adresszeile ein Favicon dargestellt wird, ist eine Datei "salzwiki.ico" in das jeweilige Wiki-Verzeichnis hochzuladen und folgender Eintrag in der jeweiligen Datei "LocalSettings.php" vorzunehmen:

$wgFavicon = "/[wikiverzeichnisname]/salzwiki.ico";

Darstellung in einem Frame[Bearbeiten]

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

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

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

$wgEditPageFrameOptions = 'false'; 

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

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

Wiki-Konfiguration[Bearbeiten]

Zugangsberechtigungen[Bearbeiten]

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

Damit die unten beschriebenen Rechtevergaben umgesetzt werden können, erhält der Sysop zunächst den Zugang zu den SpecialPages, um auch nach Änderung der Datei "SpecialPage.php" Zugriff auf die Spezialseiten zu haben. Folgende Zeile ist in "LocalSettings.php" einzufügen:

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

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

Benutzer-Rechte in SalzWiki[Bearbeiten]

Die aktuelle Benutzerrechteschema ist:

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


Spezialseiten dürfen nur AutorInnen lesen[Bearbeiten]

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

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

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

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

in LocalSettings.php einfügen:

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

und folgende Zeile wieder auskommentieren:

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


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

Navigation links mit 2 Varianten[Bearbeiten]

Es gibt zwei Varianten; die Standardvariante für angemeldete Standard-User und die Autor-Variante für AutorInnen, AdministratorInnen und ForscherInnen. Nicht-angemeldete User können Wiki-Seiten nur ansehen.

  • Die Standardvariante ist zu erreichen über:
    http://193.175.110.91/[wikiverzeichnis]/index.php/MediaWiki:Sidebar
<!-- Salzwiki -->
*navigation 
**Hauptseite|Home 
**Salzwiki:Portal|SalzWiki:Portal
**Aktuelles|Aktuelles
**Bibliographie|Bibliographie 
**Glossar|Glossar
<!--**Autorenanmeldung|Autorenanmedlung-->
**special:contact|Kontakt
**Hilfe:Contents/de|Hilfe

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

*TOOLBOX 
*LANGUAGES
<-- Repositorium -->
*Navigation 
**Hauptseite|Home
**http://193.175.110.91/salzwiki_1.16.1|Zum SalzWiki
<-- Saltwiki -->
* navigation
** mainpage|mainpage-description
** portal-url|SaltWiki-Portal
** currentevents-url|currentevents
** Bibliography|Literature
** Glossary|Glossary
** special:contact|Contact
** recentchanges-url|recentchanges 
** helppage|help
* SEARCH
* TOOLBOX
* LANGUAGES
  • Die Autor-Variante muss durch Erstellung einer neuen Seite (Adminrechte erforderlich) erfolgen:
    • Erst folgende Adresse im Browser eingeben:
      http://193.175.110.91/[wikiverzeichnis]/index.php/MediaWiki:Autor_sidebar
    • Danach mit Karteikarte "Erstellen" folgenden Quelltext eingeben:
<!-- Salzwiki -->
*navigation
**hauptseite|Home 
**SalzWiki:Portal|SalzWiki:Portal 
**Aktuelles|Aktuelles
**http://193.175.110.91/repository_1.16.1/index.php/Main_Page|Zum Repositorium
**Bibliographie|Literatur  
**Glossar|Glossar
<!--**Autorenanmeldung|Autorenanmeldung-->
**special:contact|Kontakt
**recentchanges-url|recentchanges 
**help:contents/de|help
*Umfrage
**http://www.worktogether51.net/gc/wsl.php?I=Y4TTY7YTOTTYT47TTUTTBT4NTTYT4BT40ON84RMK758E |Ihre Meinung als Autor zu SalzWiki 
**http://www.worktogether51.net/gc/wsl.php?I=Y4TTY7YTOTTYT47TTUTTBT4NTTYT4BT40 |Ihre Meinung als Nutzer zu SalzWiki 

* Autoren-Seiten
**Autoren|Autoren/innen
**Redaktion_SalzWiki|Redaktion
**Review|Review
**Kategorie|Kategorienbaum
**literature:Bibliography|Zur Bibliographie 
**Vorlagen|Vorlagen
**Nutzungsrechte|Nutzungsrechte
<!--**sandkasten|Sandbox-->

*SEARCH 
*TOOLBOX
*LANGUAGES
<-- Repositorium -->
*Navigation 
**Mainpage|Home
**Repositorium-Portal|Repositorium
**Aktuelles| Aktuelles
**http://193.175.110.91/salzwiki_1.16.1/index.php/ |Zum SalzWiki
**Literaturverzeichnis| Literatur
**terminology|Glossar 
**recentchanges-url|recentchanges 
**help:Contents|help

*SEARCH

*Autoren/innen
**Kategorienbaum|Kategorienbaum
**Nutzungsrechte|Nutzungsrechte
**Vorlagen|Vorlagen
**http://193.175.110.91/salzwiki_1.16.1/index.php/literature:Bibliographie| Zur Bibliographie

*VRE
**laufende Projekte |Projekte
**Marktplatz| Marktplatz
**Publizieren| Publizieren

*TOOLBOX
*LANGUAGES
<-- Saltwiki -->
*navigation
**Mainpage|Home 
**Saltwiki:Community_portal|SaltWiki:Portal 
**News|News
**http://193.175.110.91/repository_1.16.1/index.php/Main_Page|Repository
**Bibliography|Literature  
**Glossary| Glossary
**special:contact|Contact
**recentchanges-url|recentchanges 
**helppage|help

* Author-Pages
**Authors|Authors
**Review|Review
**categories|Categorytree
**literature:Bibliography|Bibliography 
**Templates|Templates
**Nutzungsrechte|Rights of Use 
<!--**sandbox|Sandbox-->

*SEARCH 
*TOOLBOX
*LANGUAGES

Navigationsbereich "Werkzeuge" mit Nutzungsrechten versehen (Wiki-Code, JS)[Bearbeiten]

Die Sidebar im Bereich "Werkzeuge" wird mit Hilfe von Javascript und Eingriff in den Wiki-Code bei "includes/Skin.php" für alle Gruppen außer "autor", "admin" und "forschung" manipuliert.
Achtung: Funktioniert nur bei Browsern mit aktiviertem JavaScript und muss in "includes/Skin.php" nach jedem mediawiki-Update auf Vorhandensein überprüft werden!

  1. Die Erweiterung "JavaScript" einbinden - siehe hierzu weiter unten bei "Extensions/JavaScript".
  2. Die Datei "customizeSidebar.js" von S. Reher in das Extensions-Unterverzeichnis "JavaScript" kopieren und an die Sprachvariante anpassen - siehe ebenfalls bei "Extensions/JavaScript".
  3. Die Datei "include/Skin.php" für linke Navigation wie nachfolgend beschrieben anpassen.

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

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

global $wgLang, $wgUser;

Nach der Zeile mit "$bar = array();" Z.2085 folgende Zeile auskommentieren:

#$this->addToSidebar( $bar, 'sidebar' );

und folgenden Code einfügen:

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

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

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

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

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

Repositorium-Dateien im SalzWiki[Bearbeiten]

Hochladen von Dateien[Bearbeiten]

Das Hochladen von Dateien geschieht immer in das Repositorium.

Hierzu sind Änderungen in der Datei "LocalSettings.php" des SalzWikis vorzunehmen:

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

Übergreifende Suche im SalzWiki und Repositorium[Bearbeiten]

Für den Zugriff vom SalzWiki auf das Repositorium mittels "http" durch anonyme User ist in der Datei "LocalSettings.php" des SalzWikis folgender Code hinzuzufügen:

$wgFetchCommonsDescriptions  = true;

Findet das Salzwiki eine Datei oder ein Bild nicht im eigenen Wiki, schaut es mit Hilfe von Shared-Einstellungen automatisch im Repositorium nach und sucht dort. Dazu wurde in der Datei "LocalSettings.php" des SalzWikis folgender Code hinzugefügt:

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

Metadaten aus Repositoriumsdateien im SalzWiki sichtbar[Bearbeiten]

Da alle Dateien wie z.B Fotos im Repositorium liegen, muss vom SalzWiki aus der Zugriff nicht nur auf die Dateien, sondern auch auf die dazugehörigen Metadaten erfolgen. Dazu ist nicht nur
$wgFetchCommonsDescriptions = true;
erforderlich, sondern auch eine Änderung in der PHP-Konfigurationsdatei "php.ini" in Zeile 523:

allow_url_fopen = On

So kann fopen() ausgeführt werden, um Beschreibungsdaten vom Repositorium zu holen.

Zugriff auf ein geschütztes Repository (Wiki-Code)[Bearbeiten]

Die beschriebene Vorgehenssweise erlaubt es, auf ein für den normalen User gesperrtes Wiki = Repositorium zuzugreifen und die Metadaten der Abbildungen/Dateien auszulesen und in SalzWiki widerzugeben. Nach jedem mediawiki-Update muss die Datei "includes/httpFunctions.php" auf Änderungen überprüft werden!

  • Zunächst ist die Datei "httpFunctions.php" im Verzeichnis includes von SalzWiki zu modifizieren. Dazu wird von der Datei eine Kopie "httpFunctions_original.php" gespeichert. Danach wird folgender Code eingefügt:
    • für die Mediawiki-Version 15.3:
--- HttpFunctions.php	2009-01-08 07:56:11.000000000 +0100
+++ HttpFunctions_new.php	2010-11-01 11:47:57.000000000 +0100
@@ -78,6 +78,65 @@
 				}
 			}

+		  global $wgAuthenticatedRepository, $wgAuthenticatedRepositoryUser, $wgAuthenticatedRepositoryPassword, $wgShowAuthenticatedRepositoryError;
+      $text = '';
+			if ( $wgAuthenticatedRepository ) {
+			  require_once 'extensions/Snoopy-1.2.4/Snoopy.class.php';
+        $index = '';
+        $login = '';
+			  
+			  $wikiPath = "";
+			  if (!preg_match('/(.*)\/index.php\/(.*)\?(.*)/', $url, $matches)) {
+			      echo "nicht gefunden";
+			  } else {
+			      $wikiPath = $matches[1];
+			  }
+			  
+			  $apiPath = "$wikiPath/api.php";
+			  $indexPath = "$wikiPath/index.php";
+			  $title = $wgTitle->mPrefixedText;
+			  			  		
+			  $snoopy = new Snoopy;
+			  	  
+			  $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword, 'format' => 'php');
+			  if(!$snoopy->submit($apiPath, $request_vars))
+			          die("Snoopy error: {$snoopy->error}");
+			  
+			  // We're only really interested in the cookies
+			  $snoopy->setcookies();
+			  $token = unserialize($snoopy->results);
+        $error = true;
+			  $token2 = array();
+			  
+			  if ( $token['login']['result'] == 'NeedToken') { 
+  			  $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword,  'lgtoken' => $token['login']['token'], 'format' => 'php');
+  			  if(!$snoopy->submit($apiPath, $request_vars))
+  			          die("Snoopy error: {$snoopy->error}");
+  			  $token2 = unserialize($snoopy->results);
+			  }
+			  else if ( ($token['login']['result'] == 'NoName') ) {
+			    wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" );
+          if ( $wgShowAuthenticatedRepositoryError ) $text = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>";
+			  }
+			  
+			  
+			  if ( ($token2['login']['result'] == 'Success') or ($token['login']['result'] == 'Success') ) { 
+  			  $request_vars = array('action' => 'render', 'title'=>$title, 'lgtoken' => $token['login']['token'], 'format' => 'php');
+  			  if(!$snoopy->submit($indexPath, $request_vars))
+  			          die("Snoopy error: {$snoopy->error}");
+  			  $text = $snoopy->results;
+        }
+        else if ( ($token2['login']['result'] == 'WrongPass') or ($token2['login']['result'] == 'WrongPluginPass') or ($token2['login']['result'] == 'EmptyPass') ) {
+          wfDebug( __METHOD__ . ": Wrong or no Password for wgAuthenticatedRepositoryPassword in the LocalSetting." );
+          if ( $wgShowAuthenticatedRepositoryError ) $text = "Wrong or no Password for <i>wgAuthenticatedRepositoryPassword</i> in the LocalSetting.<br/>";
+        }
+        else if ( ($token2['login']['result'] == 'NotExists') ) {
+          wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" );
+          if ( $wgShowAuthenticatedRepositoryError ) $text = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>";
+        }
+			}
+			else 
+			{
 			ob_start();
 			curl_exec( $c );
 			$text = ob_get_contents();
@@ -97,6 +156,7 @@
 				$text = false;
 			}
 			curl_close( $c );
+			}
 		} else {
 			# Otherwise use file_get_contents...
 			# This doesn't have local fetch capabilities...
    • für die Mediawiki-Version 16.0:
--- HttpFunctions.php	2010-06-09 05:49:34.000000000 +0200
+++ HttpFunctions_new.php	2010-11-22 17:09:33.000000000 +0100
@@ -744,7 +744,7 @@
 			$this->curlOptions[CURLOPT_CUSTOMREQUEST] = $this->method;
 		}
 
-		$this->curlOptions[CURLOPT_HTTPHEADER] = $this->getHeaderList();
+  		$this->curlOptions[CURLOPT_HTTPHEADER] = $this->getHeaderList();
 
 		$curlHandle = curl_init( $this->url );
 		if ( !curl_setopt_array( $curlHandle, $this->curlOptions ) ) {
@@ -755,24 +755,118 @@
 			/* Continue the processing. If it were in curl_setopt_array, processing would have halted on its entry */
 		}
 
-		if ( false === curl_exec( $curlHandle ) ) {
-			$code = curl_error( $curlHandle );
-
-			if ( isset( self::$curlMessageMap[$code] ) ) {
-				$this->status->fatal( self::$curlMessageMap[$code] );
-			} else {
-				$this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) );
-			}
-		} else {
-			$this->headerList = explode("\r\n", $this->headerText);
-		}
-
-		curl_close( $curlHandle );
-
+		/*
+		 *  START:
+		 *  Add code to access restricted repositories. 
+		 *  Add the following line in the LocalSettings.php 		 
+		 * 		$wgAuthenticatedRepository = true;
+		 * 		$wgAuthenticatedRepositoryUser = 'WikiSysop';
+		 * 		$wgAuthenticatedRepositoryPassword = 'dev2010wer';
+		 * 		$wgShowAuthenticatedRepositoryError = true;
+		 */
+
+    global $wgAuthenticatedRepository, $wgAuthenticatedRepositoryUser, $wgAuthenticatedRepositoryPassword, $wgShowAuthenticatedRepositoryError;
+    $error = true;
+    $text = '';
+    $token2 = array();
+
+		/* run the code only if the user activate is in the LocalSettings.php*/
+    if ( $wgAuthenticatedRepository ) {
+      require_once 'extensions/Snoopy-1.2.4/Snoopy.class.php';
+      $index = '';
+      $login = '';
+      
+      /* Get all relevat url informations */
+      /* URL: http://localhost/mediawiki/mediawiki-repository/index.php/File:MediawikiExampleImageFlower.jpg?action=render&uselang=en */
+      $wikiPath = "";
+      if (!preg_match('/(.*)\/index.php\/(.*)\?(.*)/', $this->url, $matches)) {
+          echo "nicht gefunden";
+      } else {
+          $wikiPath = $matches[1];
+				  /* If the url contains special characters, when these characters must be convert */
+			  	$title = rawurldecode($matches[2]);
+      }
+      
+      $apiPath = "$wikiPath/api.php";
+      $indexPath = "$wikiPath/index.php";
+
+      $snoopy = new Snoopy;
+      /* Start request to get an token */
+      $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword, 'format' => 'php');
+      if(!$snoopy->submit($apiPath, $request_vars))
+      	$this->status->fatal("Snoopy error: {$snoopy->error}");
+      
+      // We're only really interested in the cookies
+      $snoopy->setcookies();
+      $token = unserialize($snoopy->results);
+      
+      /* Use the Token to login */
+      if ( $token['login']['result'] == 'NeedToken') { 
+    	  $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword,  'lgtoken' => $token['login']['token'], 'format' => 'php');
+    	  if(!$snoopy->submit($apiPath, $request_vars))
+   				$this->status->fatal("Snoopy error: {$snoopy->error}");
+    	  $token2 = unserialize($snoopy->results);
+      }
+      else if ( ($token['login']['result'] == 'NoName') ) {
+        wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" );
+        if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>";
+      }
+            
+      /* If the login was successful, get the Information from the File Description */
+      if ( ($token2['login']['result'] == 'Success') or ($token['login']['result'] == 'Success') ) { 
+    	  $request_vars = array('action' => 'render', 'title'=> $title, 'lgtoken' => $token['login']['token'], 'format' => 'php');
+    	  if(!$snoopy->submit($indexPath, $request_vars))
+   				$this->status->fatal("Snoopy error: {$snoopy->error}");
+    	  $this->content = $snoopy->results;
+      }
+      else if ( ($token2['login']['result'] == 'WrongPass') or ($token2['login']['result'] == 'WrongPluginPass') or ($token2['login']['result'] == 'EmptyPass') ) {
+        wfDebug( __METHOD__ . ": Wrong or no Password for wgAuthenticatedRepositoryPassword in the LocalSetting." );
+        if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no Password for <i>wgAuthenticatedRepositoryPassword</i> in the LocalSetting.<br/>";
+      }
+      else if ( ($token2['login']['result'] == 'NotExists') ) {
+        wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" );
+        if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>";
+      }
+      $this->headerList = explode("\r\n", $this->headerText);      
+    }
+    else 
+    {    
+			/*
+			 *  START:
+			 *  Original Code - now in a if statement
+			 * 
+			 */
+
+  		if ( false === curl_exec( $curlHandle ) ) {
+  			$code = curl_error( $curlHandle );
+  
+  			if ( isset( self::$curlMessageMap[$code] ) ) {
+  				$this->status->fatal( self::$curlMessageMap[$code] );
+  			} else {
+  				$this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) );
+  			}
+  		} else {
+  			$this->headerList = explode("\r\n", $this->headerText);
+  		}
+  		curl_close( $curlHandle );
+  		
+			/*
+			 *  END:
+			 *  Original Code - now in a if statement
+			 * 
+			 */
+  	}
+  	
+		/*
+		 *  END:
+		 *  Add code to access restricted repositories
+		 * 
+		 */
+  
 		$this->parseHeader();
 		$this->setStatus();
 		return $this->status;
-	}
+  }
 }
 
 class PhpHttpRequest extends HttpRequest {

Es wurden hauptsächlich Anpassungen gemacht, die den Text zurückgeben, sowie an der Abarbeitung von Fehlern.
Für das korrekte Bearbeiten von Sonderzeichen in der url wurde rawurldecode() hinzugefügt.

  • Die geänderte Datei "httpFunctions.php" als Sicherung für Mediawiki-Updates kopieren und speichern als "httpFunctions_sw.php".
  • Die Erweiterung "Snoopy-1.2.4" in das Verzeichnis "extensions" des SalzWikis kopieren.
  • "curl" muss beim Apache aktiviert sein, dazu kommentiert man die folgende Zeile in der PHP.ini ein:
extension=php_curl.dll 

apache neu starten, damit die Änderungen wirksam werden.

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


Einstellungen, um den Zugriff auf das geschützte Repositorium durchführen zu können:

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

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

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

Vorlagen[Bearbeiten]

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

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

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

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

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

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

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

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

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

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

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

Einrichten von Namensräumen
[Bearbeiten]

Es werden 3 Namensräume eingerichtet:

  1. für Dokumente der Administratoren (ADM), den nur diese bearbeiten können,
  2. für die Bibliographie (Literatur)
  3. zum erstmaligen Erstellen von Dokumenten (Bearbeitung), die kein Leser sehen soll
# Einrichten eines Namensraumes Adm, Bearbeitung und Literature
define("NS_ADM", 100);
define("NS_ADM_TALK", 101);
define("NS_Bearbeitung", 120);
define("NS_Bearbeitung_TALK", 121);
define("NS_Literature", 110);
define("NS_Literature_TALK", 111);
# Create namespaces
$wgExtraNamespaces = array(
NS_ADM => 'Adm',
NS_ADM_TALK => 'Adm_talk',
NS_Bearbeitung => 'Bearbeitung',
NS_Bearbeitung_TALK => 'Bearbeitung_talk',
NS_Literature => 'Literature',
NS_Literature_TALK => 'Literature _talk'
);
$wgNamespacesWithSubpages[NS_HELP] = true;            #subpages enabled for the Heplnamespace
$wgNamespaceProtection[NS_ADM] = array( 'editadm' ); #permission "editadmin" required to edit the Adm namespace
$wgNamespacesWithSubpages[NS_ADM] = true;            #subpages enabled for the ADM namespace
$wgGroupPermissions['Administrator']['editadm'] = true;

Hilfeseiten[Bearbeiten]

Die Dateien, Abbildungen und Vorlagen entsprechend den Anweisungen in http://www.mediawiki.org/wiki/Project:PD_help/Copying in ein Verzeichnis exportieren und von dort in das entsprechende Wiki importieren. Aktuelle Dateien vom 16.3.2011 sind unter D:\Dokumente\Hilfe-Dateien auf dem SalzWiki-Server gespeichert.

Bisher werden aus Mediawiki die deutschen Hilfeseiten nicht automatisch mit aufgelistet, deshalb muss neben den englischen Dateien (MediaWiki-help-en.xml) eine zweite Exportdatei für die deutschen Dateien erstellt werden (MediaWiki-Hilfe-de.xml). Als Dateien wählt man dazu alle aus dem Namensaum "help/de" aus.

Die Abbildungen habe ich in Abwandlung der Hinweise direkt aus Mediawiki im Verzeichnis D:\Dokumente\Hilfe-Dateien gespeichert und von dort hochgeladen. Auf die z.T unterschiedlichen Lizenzen ist beim Hochladen bei der Eingabe der Metadaten zu achten.

Den Link im Sidebar ist auf help:Contents zu setzen wenn zuerst auf die englische Version verlinkt werden soll. Soll zuerst auf die deutsche Version verlinkt ist dieser auf help:contents/de zu setzen.

Die Extension ParserFunktions wird benötigt.

Extensions[Bearbeiten]

JavaScript[Bearbeiten]

Diese Erweiterung dient zusammen mit der von S. Reher gelieferten Datei "customizeSidebar.js" dazu, den Navigationsbereich "Werkzeuge" in der Sidebar entsprechend dem Anmeldestatus zu manipulieren - siehe hierzu Sidebar anpassen.

Installation von "JavaScript.php"

  • Quelltext der Erweiterung "JavaScript" unter "http://www.mediawiki.org/wiki/Extension:Javascript -> Download" kopieren
  • Code am Ende mit "?>" ergänzen und speichern unter "extensions/JavaScript/JavaScript.php"
  • In der Datei "LocalSettings.php" einfügen:
include("$IP/extensions/JavaScript/JavaScript.php");

Code-Anpassungen in der Datei "JavaScript.php"

Die Erweiterung in der Version 2.1.3 für "saltwiki" hat zusätzlichen Code für CSS (StyleSheets). Die Erweiterung in der Version 2.1.1 funktionierte in "salzwiki" leider nicht out of the box. Deshalb wurden von S. Reher (25.07.2010) Änderungen vorgenommen. In der Datei "JavaScript.php" werden die Zeilen 33 bis 34 auskommentiert:

 #$file = preg_replace( "|^.*/extensions/|", "$wgScriptPath/extensions/", $file );
 #$out->addScript( "<script src='$file' type='$wgJsMimeType'></script>" );

Stattdessen werden die folgenden Zeilen hinzugefügt, um auf dem Window-System die Pfade korrekt anzupassen:

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

Das Javascript lädt alle Dateien aus dem Verzeichnis, in diesem Falle die Datei "customizeSidebar.js".

Code-Anpassungen in der Datei "customizeSidebar.js"

Die Funktion "CustomizeModificationsOfSidebar()" entfernt mittels der nachfolgenden Zeilen Einträge aus dem Werkzeug-Kasten.

Deutsche Version:

  ModifySidebar("remove", "toolbox", "Hochladen", wgServer+"/repository_1.16.1/index.php/Spezial:Hochladen");
  ModifySidebar("remove", "toolbox", "Änderungen an verlinkten Seiten", wgServer+wgScriptPath+"/index.php/Spezial:%C3%84nderungen_an_verlinkten_Seiten");
  ModifySidebar("remove", "toolbox", "Permanentlink", wgServer+wgScriptPath+"/index.php?title=Salztransportmodellierung&oldid=1658");
  ModifySidebar("remove", "toolbox", "Spezialseiten", wgServer+wgScriptPath+"/index.php/Spezial:Spezialseiten");

Englische Version:

  ModifySidebar("remove", "toolbox", "Hochladen", wgServer+"/repository_1.16.1/index.php/Special:Upload");
  ModifySidebar("remove", "toolbox", "Änderungen an verlinkten Seiten", wgServer+wgScriptPath+"/index.php/Special:RecentChangesLinked");
  ModifySidebar("remove", "toolbox", "Permanentlink", wgServer+wgScriptPath+"/index.php?title=Salztransportmodellierung&oldid=1658");
  ModifySidebar("remove", "toolbox", "Spezialseiten", wgServer+wgScriptPath+"/index.php/Special:SpecialPages");

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

/*if the user is not autor or admin, there should be displayed only necessary links*/
if (isArray(wgUserGroups)) {
  if (wgUserGroups.Contains('autor') || wgUserGroups.Contains('Administrators') || wgUserGroups.Contains('forschung')) {
    /*Nothing*/
  }
  else {
    /*Administrators,autor,sysop,*,user,autoconfirmed*/
    /*alert(wgUserGroups);*/
    addOnloadHook(CustomizeModificationsOfSidebar);
  }
}
/*if the user is guest, there should be displayed only necessary links*/
if (wgUserName == null) {
  addOnloadHook(CustomizeModificationsOfSidebar);
}

AccessControl[Bearbeiten]

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

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

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

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

Damit nur Mitglieder der Gruppe "parole" Zugang zu einer Seite erhalten, wird auf der jeweiligen Seite oben folgende Zeile eingegeben (siehe dazu auch http://www.mediawiki.org/wiki/Extension:AccessControl):

<accesscontrol>parole</accesscontrol>

Die Datei "AccessControl.php" ist wie folgt zu bearbeiten:
In Zeile 68 das & bei "&$parser" entfernen, damit es nicht zu Problemen zwischen den Extensions "AccessControl" und "DymanicPageList" kommt:

function doControlUserAccess( $input, $argv, &$parser ) {

In Zeile 193 "if(is_array($allow)){" zur Verhinderung einer php-Warnung mit "isset($allow) &&" ergänzen:

if(isset($allow) && is_array($allow)){

Approved_Revs[Bearbeiten]

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

Installation der Erweiterung "Approved_Revs"

  • Die Extension wird heruntergeladen und nach dem Extrahieren in das Extensions-Verzeichnis von SalzWiki bzw. Saltwiki kopiert; im Repositorium wird die Erweiterung nicht installiert.
  • Es wird eine Datenbank-Tabelle mit dem Präfix "sw_" und dem Namen "approved_revs" angelegt. 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.
  • Konfiguration von den Approved_Revs in der LocalSettings.php
require_once( "$IP/extensions/ApprovedRevs/ApprovedRevs.php" );
Approved Revs-1.jpg

Funktionsweise

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

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

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

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

Ausblenden von der History (wurde nicht aktiviert)

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

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

DynamicPagesList[Bearbeiten]

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

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

Bibliography[Bearbeiten]

Basisinformationen[Bearbeiten]

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

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

Anpassungen in der Datei "bibtex_fields.php"[Bearbeiten]

Das das bibtex-Feld "Abstracts" die Laufzeit der Extension deutlich erhöht, wurde dieses Feld ausgeklammert, zumal es nicht benötigt wird.
Die Publikationstypen und auch die Bibtex-Variablen, die vorgeschlagen werden, wenn keine Literatur zu einer angegebenen Literaturstelle in der Bibliography vorhanden ist, wurden angepasst:

 ? ? ? 

Anpassungen in der Datei "bibliography.php"[Bearbeiten]

Damit eine neue Literaturstelle mit einer Überschrift 2. Grades dargestellt wird, wurde Zeile 16 angepasst:

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

Zur Darstellung der Literatureinträge erfolgten weitere Anpassungen der Ausgaben:
Zeilen 56ff:

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

Zeilen 194ff:

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

Zeile 245 mit if-Abfrage ergänzen, um php-Warnung für nicht existierenden Array-Schlüssel zu verhindern:

if(array_key_exists('file', $args)){$file = $args["file"];} //ergänzt 2011-03-18 für Hornemann Institut

Zeilen 267ff:

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

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

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

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

Das "#" Zeichen führt zur Nummerierung.

CharacterEscapes, LOParserFunctions, ControlStructureFunctions[Bearbeiten]

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

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

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

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

CategoryTree[Bearbeiten]

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

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

Cite[Bearbeiten]

Dient zum Erstellen von Fußnoten in SalzWiki Artikeln.

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

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


OGG[Bearbeiten]

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

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

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

Installation der Erweiterung:

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

Terminology[Bearbeiten]

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

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

User Merge - Benutzername löschen[Bearbeiten]

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

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

WhosOnline - Wer ist online[Bearbeiten]

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

  • Dateien unter http://www.mediawiki.org/wiki/Extension:WhosOnline herunterladen und extrahieren
  • Verzeichnis "WhosOnline" unter "Extensions" speichern
  • SQL-Befehl in der Extension-Datei "WhosOnline.sql" für neue Datenbank-Tabelle anpassen (siehe weiter unten)
  • Mit "phpMyAdmin" und geändertem SQL-Befehl eine neue Datenbank-Tabelle erstellen (siehe weiter unten)
  • In der Datei "LocalSettings.php" einfügen:
require_once("$IP/extensions/WhosOnline/WhosOnline.php");
$wgWhosOnlineShowAnons = true;

Datei "WhosOnline.sql" anpassen

Den SQL-Befehl in der Extension-Datei "WhosOnline.sql" für die neue Datenbank-Tabelle in der ersten Zeile z. B. wie folgt angepasst:

CREATE TABLE `saltwiki`.`sw_online` (

Datenbank-Tabelle erstellen

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

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

ConfirmEdit[Bearbeiten]

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

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

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

ContactPage - Kontaktseite[Bearbeiten]

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

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


Eingabe von Formeln mittels Tex (Wiki-Code)[Bearbeiten]

Damit z.B mathematische und auch chemische Formeln dargestellt werden können, wird in Mediawiki TEX benutzt. Nach jedem mediawiki-Update muss die Datei "includes/Math.php" auf Windows-Kompatibilität überprüft werden!

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

Tatsächliche Installation[Bearbeiten]

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

  1. GhostScript im Unterverzeichnis "ghostscript/" für alle User installieren
    1. aus dem Unterverzeichnis "bin/" die Datei "gswin32c.exe" kopieren und die Kopie umbenennen zu "gs.exe"
    2. Im ServerManager bei "Systemeigenschaften ändern/Erweitert/Umgebungsvariablen" die Systemvariable "path" erweitern mit "D:\texmf\ghostscript\gs8.70\bin;"
  2. ImageMagick im Unterverzeichnis "imagick/" installieren
    1. ImageMagick-6.5.9-0-Q16.dll (bei vorhandener Windows-Server-Konfigurationsberechtigung), sonst "static" (nur XAMPP-Zugriffsberechtigungen), inkl. "Desktop-Icon", "zum Systempfad hinzufügen" und "header für C/C++ Developement"
    2. Testen mit der "Eingabeaufforderung/Konsole" durch Eingabe von
      • convert logo: logo.miff [=>Enter drücken]
      • imdisplay logo.miff [=>Enter drücken]
      • = > ein Bild soll angezeigt werden
    3. Für PHP die VC6-kompilierte Datei "php_imagick_dyn-Q16.dll" von valukova.org herunterladen und in das PHP-Unterverzeichnis "ext/" kopieren und umbenennen zu "php_imagick_dyn_Q16.dll"
    4. In der Datei "php.ini" im Bereich Windows Extensions die Datei "php_imagick_dyn_Q16.dll" einbinden:
      extension=php_imagick_dyn_Q16.dll
  3. MikTex im Unterverzeichnis "miktex/" installieren
  4. Für Sophos-Antivirus eine Ausnahme festlegen:
    Konfigurieren->On-Access-Überprüfung->Ausnahmen -> "D:\texmf\Miktex\" hinzufügen
  5. Im Verzeichnis "includes" des Wikis die Datei "Math.php" umbenennen in "Math_original.php" und ersetzen durch eine neue Datei "Math.php" mit Code von www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Windows/math.php; danach von der neuen Datei "Math.php" für MediaWiki-Updates eine Sicherungskopie speichern als "Math_sw.php".
  6. In der Datei "LocalSettings.php" ist jeweils einzufügen:
 $wgUseTeX = true;
 # ImageMagick
 $wgImageMagickConvertCommand = 'D:\texmf\imagick\convert.exe';<br> 
 $wgImageMagickIdentifyCommand = 'D:\texmf\imagick\identify.exe';<br>
 # Tex
 $wgLaTexCommand = 'D:\texmf\miktex\miktex\bin\latex.exe'; 
 $wgDvipsCommand = 'D:\texmf\miktex\miktex\bin\dvips.exe';

Alternative Installationsmethode gemäß Mediawiki[Bearbeiten]

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

replace the file $/includes/Math.php with code from http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Windows/math.php

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

- ImageMagick

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

- Tex

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


Lizenzen im Upload-Formular des Repositoriums[Bearbeiten]

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

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

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

Repositorium[Bearbeiten]

Zur Installation wurden fogende Einstellungen und Extensions eingestzt:

Datenbank mittel XAMPP und phpmyAdmin anlegen[Bearbeiten]

Es muss vor der Installation zuerst eine Datenbank angelegt werden.

database name: repository_1.16.1 datbase table prefix: sr_

Benutzer: hschwarz

Host: localhost

Global Rechte: all privileges

Grant : ja

Mediawiki Installieren[Bearbeiten]

Nach Installationsanweisung mit folgenden Namen: : Repository

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


Lizenz für das Repositorium[Bearbeiten]

Einfügen in LocalSettings.php

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

Style/Skin[Bearbeiten]

siehe oben bei "SalzWiki

Logo[Bearbeiten]

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

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

Logos mit Verlinkung (und Footerlinks angepasst)[Bearbeiten]

Änderungen in MonoBookSW.php: Zeile 213 - 239

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

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

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

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

Favicon[Bearbeiten]

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

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

Lizenzvorlagen[Bearbeiten]

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

"Kategorie:Lizenzenvorlagen" erstellt.


Lizenzen im Upload-Formular[Bearbeiten]

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

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

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

Extensions[Bearbeiten]

AccessControl[Bearbeiten]

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

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

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

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

Approved_Revs[Bearbeiten]

Ist noch zu installieren.

DynamicPagesList[Bearbeiten]

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

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

Bibliography[Bearbeiten]

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

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

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

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

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

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


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

Zeile 56ff:

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

Zeilen 194ff:

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

Zeilen 267ff:

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

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


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

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

Das "#" Zeichen führt zur Nummerierung.

OGG[Bearbeiten]

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

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

Hilfeseiten[Bearbeiten]

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

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

Templates der Hilfeseiten Korrigiert, Bilder unter Beachtung der Lizenzen hochgeladen


Javascript[Bearbeiten]

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

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

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

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

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

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

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

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

Terminology[Bearbeiten]

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

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

;

CategoryTree[Bearbeiten]

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

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

Cite[Bearbeiten]

Dient zum Erstellen von Fußnoten in SalzWiki Artikeln.

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

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

User Merge - Benutzername löschen[Bearbeiten]

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

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

Eingabe von Formeln mittels Tex[Bearbeiten]

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

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

Siehe im entsprechenden Kapitel unter SalzWiki


Hochladen von Dateien[Bearbeiten]

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

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

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

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

Mehrsprachigkeit von Seiten[Bearbeiten]

Jede Seite muss für jeder gewünschten Sprache erstellt werden (siehe Hilfeseiten). Die Grundsprache wird für das Repositorium Englisch sein, so dass der Seitenname zunächst in Englisch angelegt wird, z.B. "DummyPage". Für jede Sprachversion, z.B für Deutsch, wird eine Subpage der englischen Seite mit dem Sprachenkürzel erstellt, wie z.B. DummyPage/de.

An das Ende jeder Seite schreibt man nun

{{Languages|Namensraum:Seitennamename}} 

im obigen Fall wäre dies

{{Languages|Dummypage}}

da sich die Seite im Stammverzeichnis befindet.

Mit dem Installieren der Hilfetexte wurden bereits alle Vorlagen mit installiert, die benötigt werden. um jetzt aus den unterschiedlichen Subpages am unteren Ende einer Seite die Schaltflächen zur Auswahl der gewünschten Sprache zur Verfügung zu stellen.

durch {{languages}} erzeugte Schaltflächen zur Auswahl einer Sprache


Zugangsberechtigungen[Bearbeiten]

Nur Autoren können lesen und editieren[Bearbeiten]

Das aktuelle Nutzerschema lautet:

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

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

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


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

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

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

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


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

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

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