Adm:Einrichtung Wikis MW1.16
Dokumentation der Installation von „SalzWiki"
Allgemeines[Bearbeiten]
UÍn diesr Dokumentaion werden die Schitte und Extensions beschrieben, die in der Version 1.16.1 umgestzt sind.
Verzeichnisauflisten verboten[Bearbeiten]
apache\conf\httpd.conf
<Directory /> Options FollowSymLinks -Indexes AllowOverride None Order deny,allow Deny from all </Directory>
Suchmaschienen
[Bearbeiten]
Hschwarz 28.07.2009: Damit die Wikis während der Erprobungsphase nicht von Suchmaschinen durchsucht werden können, wurde eine
ROBOTS.txt in das htdocs-Verzeichnis gestellt.
robots.txt für das Salzwiki, kein Robot soll irgendetwas lesen können
User-agent: *
Disallow: /
Robots.txt neu am 13.2.2011 zu Beginn der Freischaltungder 16er VersionHschwarz 30.08.2010:
im Verzeichniss htdocs
- robots.txt für das Salzwiki, Robots sollen nur SalzWiki finden und keine Unterverzeichnisse und auch im Repositorium nicht lesen können.
User-agent: * Disallow:/salzwiki_1.16.1/bibtex/ Disallow:/salzwiki_1.16.1/bin/ Disallow:/salzwiki_1.16.1/config/ Disallow:/salzwiki_1.16.1/docs/ Disallow:/salzwiki_1.16.1/extensions/ Disallow:/salzwiki_1.16.1/images/ Disallow:/salzwiki_1.16.1/includes/ Disallow:/salzwiki_1.16.1/languages/ Disallow:/salzwiki_1.16.1/maintenance/ Disallow:/salzwiki_1.16.1/math/ Disallow:/salzwiki_1.16.1/serialized/ Disallow:/salzwiki_1.16.1/skins/ Disallow:/salzwiki_1.16.1/t/ Disallow:/salzwiki_1.16.1/tests/ Disallow:/de/salzwiki/bibtex/ Disallow:/de/salzwiki/bin/ Disallow:/de/salzwiki/config/ Disallow:/de/salzwiki/docs/ Disallow:/de/salzwiki/extensions/ Disallow:/de/salzwiki/images/ Disallow:/de/salzwiki/includes/ Disallow:/de/salzwiki/languages/ Disallow:/de/salzwiki/maintenance/ Disallow:/de/salzwiki/math/ Disallow:/de/salzwiki/serialized/ Disallow:/de/salzwiki/skins/ Disallow:/de/salzwiki/t/ Disallow:/de/salzwiki/tests/ Disallow:/repository_1.16.1/ Disallow:/repository/ Disallow:/repository-test/ Disallow:/repository-test02/ Disallow:/repository-test-20100712/ Disallow:/repository-Kopie/ Disallow:/salzwiki-test/ Disallow:/salzwiki-test02/ Disallow:/salzwiki-test16/ Disallow:/salzwiki-test-20100712/ Disallow:/Test/
Im Verzeichnis de/salzWiki
- robots.txt für das Salzwiki,Robots sollen nur SalzWiki finden und keien Unterverzeichnisse lesen
User-agent: *
Disallow:/bibtex/ Disallow:/bin/ Disallow:/config/ Disallow:/docs/ Disallow:/extensions/ Disallow:/images/ Disallow:/includes/ Disallow:/languages/ Disallow:/maintenance/ Disallow:/math/ Disallow:/serialized/ Disallow:/skins/ Disallow:/t/ Disallow:/tests/
......................................................................................
Edit by Risos: Das Verhindern von Robots ist für Google eine "verdächtige" Seite und kommt in die Blacklist (im Firefox eine große rote Warnseite für den Anwender), da Google diese Seiten nicht ausspähen kann (Google zeigt auch bestimme Seiten garnicht an, wenn sie Google nicht "gefallen"!). Dies ist wohl das resultat der macht von Google durch uns. Abhilfe schafft hier die Einstellung im Firefox, dass man nicht auf verdächtige Seiten hingewiesen werden soll - doch wer weiß das schon?
Hier müsste es explizit jetzt und später mit einem resetteten Firefox gestestet werden.
E-Mail-Versand[Bearbeiten]
die "localSettings.php" wurde in den Verzeichnissen
- salzwiki_1.16.1/
- repository_1.16.1/
folgendermaßen für E-Mail-Versand angepasst:
E-Mail-Versand angepasst 09.10.2009 G. Werner
/*
$wgEmergencyContact = "schwarz@hornemann-institut.de";
$wgPasswordSender = "schwarz@hornemann-institut.de";
- /
$wgEmergencyContact = "service@salzwiki.hawk-hhg.de";
$wgPasswordSender = "service@salzwiki.hawk-hhg.de";
$wgSMTP = array(
'host' => "10.104.1.2",
'IDHost' => "hawk-hhg.de",
'port' => "25",
'auth' => true,
'username' => "service@salzwiki.hawk-hhg.de",
'password' => "********"
);
SalzWiki[Bearbeiten]
Datenbank mittels XAMPP und phpmyAdmin anlegen:[Bearbeiten]
HSchwarz 13.07.2009: Es muss vor der Installation zuerst eine Datenbank angelegt werden.
salzwiki_1.16.1
Benutzer: hschwarz
Host: localhost
Global Rechte: all privileges
Grant : ja database table prefix: sw_
Mediawiki Installieren[Bearbeiten]
Nach Installationsanweisung mit folgenden Namen: „Salzwiki"
Lizenz für das Fachwiki[Bearbeiten]
HSchwarz 13.07.2009: Einfügen in LocalSettings.php
## For attaching licensing metadata to pages, and displaying an
## appropriate copyright notice / icon. GNU Free Documentation
## License and Creative Commons licenses are supported so far.
$wgEnableCreativeCommonsRdf = true;
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
$wgRightsUrl = "http://creativecommons.org/licenses/by-nc-sa/3.0/";
$wgRightsText = "Attribution-Noncommercial-Share Alike 3.0 Unported";
$wgRightsIcon = "http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png";
# $wgRightsCode = "[license_code]"; # Not yet used
Style/Skin[Bearbeiten]
Das Design für das Salzwiki basiert auf dem Stil (Skin) "monobook".
Dazu wird im Verzeichnis "skins/" das Verzeichnis "monobook/" sowie die Dateien "MonoBook.php" und "MonoBook.deps.php" kopiert und die Kopien umbenannt in "monobooksw" sowie in "MonoBookSW.php" und "MonoBookSW.deps.php".
In der Datei "MonoBookSW.php" werden dann alle Verweise und Bezeichnungen von "monobook" zu "monobooksw" geändert sowie die Klassennamen "SkinMonoBook" und "MonoBookTemplate" bei der Klassendefinition und den Klassenverwendungen geändert zu "SkinMonoBookSW" und "MonoBookSWTemplate".
Im Verzeichnis "monobooksw/" wird die Datei "headbg.jpg" durch ein eigenes Hintergrundbild mit gleichem Dateinamen ersetzt.
In der Datei "main.css" werden Anpassungen für Farben u. a. vorgenommen.
In der Datei "LocalSettings.php" heißt die entsprechende Zuweisung dann
$wgDefaultSkin = 'monobooksw';.
XEB Extra Edit Buttons Installation[Bearbeiten]
Die Funktionen des Editors wurden durch folgendes Skript erweitert:
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" )
Diesen Code entsprechend in das Toolbar array in der EditPage.php im Verzeichniss "includes" einfügen ( siehe auch http://meta.wikimedia.org/wiki/Help_talk:Edit_toolbar ). Die Bilder "Button_reflink.png" etc..in skins/common/images speichern. Fertig. Selbstredend, dass hier eigene Funktionen implementiert werden können!
Installieren mittel VPN auf dem Server des RZ
Logo[Bearbeiten]
Die Datei für das Logo ist hochzuladen und einzufügen in LocalSettings.php:
##LOGO
$wgLogo = "/salzwiki_1.16.1/skins/common/images/Logo.png";
[Bearbeiten]
Änderungen in MonoBookSW.php: Zeile 213 - 239 , als Pfad entweder salzwiki... oder repository...
<!-- 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="/[salzwiki_1.16.1|repository_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|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">
Sidebar anpassen[Bearbeiten]
Änderungen von Sven reher: 25.07.2010: Die Sidebar im Bereich Werkzeuge wird mit Hilfe von Javascript für alle Gruppen außer "autor", "admin" und "forschung" manipuliert. Dazu wird eine Erweiterung JavaScript (http://www.mediawiki.org/wiki/Extension:Javascript) eingebunden. Die Erweiterung funktionierte leider nicht out of the box. Folgende Änderungen habe ich vorgenommen:
Ab Zeile 32 wurden in der skin.php die folgende Zeilen hinzugefügt. Dies dient dazu auf dem Windows 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 "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) {
Um die Navigation Box anzupassen wurden folgende Änderungen an der "include/skin.php".
In der Funktion: "function buildSidebar()" In der zweiten Zeile die globale Variable "$wgUser" hinzufügen, um später die Gruppenrechte abzufragen zu können.
global $wgLang, $wgUser;
Nach der Zeile mit "$bar = array();" Z.2085 wird nun der folgende Code eingefügt:
//$wgHooks['SkinBuildSidebar'][] = 'customizeSidebar'; function customizeSidebar( $sidebar, &$bar) { global $wgUser; $groups = $wgUser->getEffectiveGroups(); ## add here admin support if (in_array("autor", $groups) || in_array("Administrators", $groups) || in_array("forschung", $groups)) { //$lines = explode( "\n", wfMsgForContent( 'autor_sidebar' ) ); $sidebar->addToSidebar( &$bar, 'autor_sidebar' ); } else { //$lines = explode( "\n", wfMsgForContent( 'sidebar' ) ); $sidebar->addToSidebar( &$bar, 'sidebar' ); } }
Die Zeile "$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );" muss auskommentiert oder gelöscht werden.
Nun gibt es zwei Sidebars die man unterschiedlich "bestücken" kann. ACHTUNG: Wenn das Mediawiki aktualisiert wird, muss diese Änderung wieder eingefügt werden, um die Funktionalität zu erhalten!!!
Für normale eingeloggte User: http://193.175.110.91/salzwiki_1.16.1/index.php/MediaWiki:Sidebar
Für Autoren, Administratoren und Forscher: http://193.175.110.91/salzwiki_1.16.1/index.php/MediaWiki:Autor_sidebar
Darstellung in einem Frame[Bearbeiten]
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';
* 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.
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]
Installation der Erweiterung "Approved_Revs".
- Die Extension wird heruntergeladen und nach dem Extrahieren in das Extensions-Verzeichnis von SalzWiki kopiert.
- Anlage einer Datenbank-Tabelle: Sie müssen für diese Extension eine Datenbanktabelle anlegen mit dem Namen "approved_revs". Hierzu gibt es zwei Möglichkeiten: Entweder Sie benutzen das Skript "update.php" in MediaWiki's /maintenance oder gehen direkt in die Datenbank und erstellen sie dort mit einem SQL Befehl, den Sie im File ApprovedRevs.sql finden. Achten Sie dabei auf ein mögliches DBprefix.
- Konfiguration von den Approved_Revs in der LocalSettings.php
require_once( "$IP/extensions/ApprovedRevs/ApprovedRevs.php" );
- Funktionsweise
Man kann Revisionen (Versionen einer SalzWiki-Seite) 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 markie
$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
Wenn nur die Autoren, Redakteure und Admins die History sehen sollen, ergänze folgendes:
- in der LocalSettings.php
## 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]
- Die Extension http://www.mediawiki.org/wiki/Extension:DynamicPageList_%28third-party%29 wird heruntergeladen und nach dem Extrahieren in das Extensions-Verzeichnis von SalzWiki kopiert.
- Einfügen in LocalSettings:
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.
- Extension unter http://www.mediawiki.org/wiki/Extension:Bibliography herunterladen und in den Extensionsordner kopieren.
- n den Localsettinge eingefügen.
require_once("$IP/extensions/bibliography/bibliography.php");
Das das bibtex Feld, "Abstracts" die Laufzeit der Extension deutlich erhört, wurde dieses Feld ausgeklammert, da es auch nicht benötigt wird.
Die Publikationstypen und auch die Bibtex-Variablen, die vorgeschlagen werden, wenn keine Literatur zu einer angegebenen Literaturstelle in der Bibliography vorhanden ist, wurde angepasst. Anpassungen in der Datei bibtex_fields.php.
Damit eine neue Literaturstelle mit einer Überschrift 2. Grades dargestellt wird, wurde die Datei bibliography.php in Zeile 16 angepasst:
$temp_textbox1= "==$entry_name==\n<bibentry>\n@".$entry_type.'{'.$entry_id.",\n";
Zur Darstellung der Literatureinträge erfolgrten weitere Anpassungen der Ausgaben ider bibliography.php:
Zeile 56ff:
$temp_return.="<a href='$wgScriptPath/?title=literature:Bibliography&action=edit§ion=0&bibliography=new&entry_id=$entry_id&entry_name=$entry_name&entry_type=".rawurlencode($val)."'>$val</a>, ";
Zeilen 194ff:
while(list($key,$val)=each($bibtex_entry_fields))
$$key=stripslashes($val); //variable variables now you have all the keys assigned as variable names, $author, $title etc...
if(isset($author) && $author!="") $author="$author ";
if(isset($editor) && $editor!="") $author="$editor (eds.)";
if(isset($year) && $year!="") $year="$year";
$return.="<a href='http://193.175.110.91/salzwiki_1.16.1/index.php/$bibtex_entry->key_identifier'>$author ($year): </a>";
## if(isset($bibtex_entry->key_identifier) && $bibtex_entry->key_identifier!="") $return.= "$bibtex_entry->key_identifier";//Ausgabe ID
if(isset($title) && $title!="") $return.="$title"; // HSChwarz Ausgabeformet geändert 18.10.2009
if(isset($booktitle) && $booktitle!="") $return.=". $booktitle";
if(isset($titleaddon) && $titleaddon!="") $return.=". $titleaddon";
if(isset($crossref) && $crossref!="") $return.=". In: <a href='http://193.175.110.91/salzwiki_1.16.1/index.php/Literature:Bibliography#$crossref'>$crossref</a>";
if(isset($school) && $school!="") $return.=", $school";
if(isset($howpublished) && $howpublished!="") $return.=" $howpublished";
if(isset($journal) && $journal!="") $return.=".<i> In: $journal</i>";
if(isset($publisher) && $publisher!="") $return.=", $publisher";
if(isset($address) && $address!="") $return.=", $address";
if(isset($volume) && $volume!="") $return.=", <b>$volume</b>";
if(isset($number ) && $number !="") $return.=" ($number)";
if(isset($series) && $series!="") $return.=" $series";
if(isset($edition) && $edition!="") $return.=", $edition";
if(isset($pages) && $pages!="") $return.=", pp. $pages";
if(isset($doi) && $doi!="") $return.=", DOI: <a href='http://dx.doi.org/$doi'>$doi</a>";
if(isset($url) && $url!="") $return.=", link: <a href='$url'>$url</a>";
if(isset($source) && $source!="") $return.=", link: <a href='$source'>$source</a>";
if(isset($fulltext) && $fulltext!="") $return.=", <a href='http://193.175.110.91/salzwiki_1.16.1/index.php/$fulltext'>Volltext</a>";
Zeilen 267ff:
switch($type){ case "intext": // Within a written article/paper switch($entry["entry_type"]){ case "book": if(isset($entry["year"]) && $entry["year"]!="") $entry_year=" ({$entry["year"]})"; if(isset($entry["publisher"]) && $entry["publisher"]!="") $entry_publisher=" <i>{$entry["publisher"]}.</i> "; $return="{$entry["author"]}$entry_year. <br>{$entry["title"]}.$entry_publisher".$bibliography_url; break; case "article": $return="{$entry["author"]} ({$entry["year"]}). <br>{$entry["title"]} {$entry["journal"]}.".$bibliography_url; break; case "misc": $return="{$entry["author"]} ({$entry["year"]}). <br>{$entry["title"]}.".$bibliography_url; break; break; default: //inproceedings, phdthesis, masterthesis, techreport, unpublished $return="{$entry["author"]} ({$entry["year"]}). <br><i>{$entry["title"]}</i>.".$bibliography_url; break; } return stripslashes($return); break; case "list": // As a list bei bibprint $start="<span class='bibprint'>"; $end="</span>\n"; if(!isset($entry["entry_name"]) || $entry["entry_name"]=="") //whenever an entry name is not available show at least the entry_id $entry["entry_name"]=$entry_id; $entry_name_url="<span class='bibprintwide' ><a href='$wgScriptPath/index.php?title=literature:Bibliography#".str_replace(' ','_',$entry_id)."'>[".$entry["entry_name"]."]:</a></span>"; // Literaturliste auf der Seite Hschwarz Namensraum ergänzt 18.10.2009 switch($entry["entry_type"]){ case "book": if(isset($entry["author"]) && $entry["author"]!="") $entry_author=" {$entry["author"]} "; if(isset($entry["editor"]) && $entry["editor"]!="") $entry_author=" {$entry["editor"]} (eds.)"; if(isset($entry["year"]) && $entry["year"]!="") $entry_year=" ({$entry["year"]})"; if(isset($entry["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 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 Repositporium wird bisher durchnumeriert durch Anlassung der zeilen:
$entry_name_url="# <span class='bibprintwide' ><a href='$wgScriptPath/index.php?title=literature:Bibliography#".str_replace(' ','_',$entry_id)."'>[".$entry["entry_name"]."]:</a></span>";
das "#" Ziechen führt zur Nummerierung
Caracter Escapes, LOParserFunktions, Control Strukture Funktions[Bearbeiten]
Notwendig für #if: und #switch-Anweisungen (zb beim einsetzen des Seitentitels im Kopf von Vorlage:Infobox_Salz
##Extension Character Escapes (Risos 1209.09) fuer Helppages require_once("extensions/CharacterEscapes/CharacterEscapes.php"); ##Extension LOParserFunctions (Risos 12.09.09) fuer Helppages require_once( "extensions/LOParserFunctions/LOParserFunctions.php" ); ##Extension ControlStructureFunctions (Risos 12.09.09) fuer Helppages require_once( "extensions/ControlStructureFunctions/ControlStructureFunctions.php" );
CategoryTree[Bearbeiten]
Einfügen in LocalSettings:
"## Extension CategoryTree (Risos 08.08.09)
$wgUseAjax = true;
require_once("{$IP}/extensions/CategoryTree/CategoryTree.php");
Cite[Bearbeiten]
HSchwarz 14.07.2009: Extrahieren der Dateien nach extensions/Cite
Einfügen in LocalSettings.php:
## Cite Extension instaliert SChwarz am 7.7.2009
require_once("extensions/Cite/Cite.php");
Javascript[Bearbeiten]
installiert durch Sven reher 25.07.2010
Sie dient dazu um den Navigationsberuch "Werkzeuge" entsprechend dem Anmeldestatus zu manipulieren. Siehe hierzu Sidebar anpassen
FCKEditor[Bearbeiten]
HSchwarz14.07.2009: Extrahieren der Dateien nach extensions/FCKEditor
Einfügen in LocalSettings.php:
## Installation des EDitors FCKEditor
## enable FCKeditor
require_once("extensions/FCKeditor/FCKeditor.php");
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
OGG[Bearbeiten]
OGG-Erweiterung Installiert. Fehler Behoben*. Anwendung: siehe Sandkasten.
Vorgehen: Upload in das Repositorium, Kopieren Dateiname, Einbinden mittels
<gallery>datei:Grand_canyon.ogg.ogv</gallery> oder: [[datei:Grand_canyon.ogg.ogv]]
OGV und OGA sollten jetzt auch laufen.
- Fehlerbehebung Localsettings -> Leerzeichen, Upload Path; doppelt XAMPP im Pfad gewesen:
Notiz: Herr Werner bescheid geben, bzw beachten. Er hatte dort wohl auch Probleme gehabt.
Pages[Bearbeiten]
"Lizenzvorlagen"-Seite erstellt
"Kategorie:Lizenzen" erstellt
Kleinere Fehler behoben
PDF Export[Bearbeiten]
Einfügen in LocalSettings:
"## PDFEXPORT Extension (RISOS 27.07.09)
require_once("extensions/PdfExport/PdfExport.php"); Umlaute funkionieren noch nicht. Vermutlich kann die ThirdParty-Anwendung nicht auf ein spezielles Verzeichnis (C:\Program Files\Easy Software Products") zugreifen. Ich kann dies mangels Sicherheitsrichtlinie nicht ändern. Herr Werner kümmert sich jetzt darum.
Terminology[Bearbeiten]
Einfügen in LocalSettings:
"## Terminology Extension
require_once( "$IP/extensions/terminology.php" );
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!!
TeX - Beseitigung von Problemen[Bearbeiten]
HSchwarz 12.3.2010: in der FCKeditorParser.body.php, das was unter "case 'math':" steht ersetzen durch:
case 'math': if($wgUseTeX){ //normal render $output = '<img _fckfakelement="true" class="FCK__MWMath" _fck_mw_math="'.$content.'" src="'.$wgScriptPath.'/skins/common/images/button_math.png" />'; }else //show fakeimage $output = $wgContLang->armourMath( MathRenderer::renderMath( $content ) ); break;
Zitat Alexander Risos: Den Parserfehler konnte ich auf den Grund gehen. Dieser Fehler ist in der alten Version nicht aufgetreten, da an stelle der "Parser"-Fehlermeldung ein Summensymbol auftreten sollte. Dies hängt mit der "TEX Box" zusammen. Leider wird auch in der 16er Version das Summensymbol nicht angezeigt.
Ich verweise hierauf bei Fehlern von http://193.175.110.91/salzwiki-test16/index.php/Spezial:Texbox. Sollte es reibungslos funktionieren (bei mir zeigt er grade nicht die Bilder zu den Formeln an) - Ignorieren. In der "Adm:Aenderungen_SalzWiki#Installation_gem.C3.A4.C3.9F_Mediawiki" hatten Sie eine kleine Anleitung reingestellt. Die Math.php hab ich ersetzt (der Parserfehler ist jetzt weg) und ich glaube Sie hatten dort einmal irgendetwas gemacht und mir Bescheid gegeben, das "Tex nun funktioniert". GGf steht in der README, dass ein Reboot die Pfade erkennen soll.. (?!)
User Merge - Benutzername löschen[Bearbeiten]
Dies geschieht durch das Zusammenführen des zu löschenden Benuztzernamens mit dem Benutzername "Testuser" zu "Testuser" mit Hilfe der Extension UserMerge. Hierzu ist in den localsettings einzufügen:
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]
Geschieht mit der Extension "Whoisonline"
- Dateien herunterladen und unter Extensions speichern, wie beschrieben.
- in localsettings einfügen:
require_once("$IP/extensions/WhosOnline/WhosOnline.php"); $wgWhosOnlineShowAnons = true;
in der Mysql Datenbank die Tabelle "sw_online" anlegen mit:
CREATE TABLE `salzwiki_test_db`.`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;
Kontaktseite[Bearbeiten]
Hierzu wird die Extension "ContactPage"benutzt.
- Dateien herunterladen und unter Extensions speichern.
- in localsettings einfügen:
require_once( "$IP/extensions/ContactPage/ContactPage.php" ); $wgContactUser = 'Hschwarz'; $wgContactSender = $wgPasswordSender; $wgContactSenderName = 'Contact Form SalzWiki ' . $wgSitename; $wgCaptchaTriggers['contactpage'] = true;
Zugangsberechtigungen[Bearbeiten]
Spezialseiten dürfen nur Autoren lesen[Bearbeiten]
in ..includes/SpecialPage.php einfügen
hier 'restrictusers' einfügen
'Specialpages' => array( 'UnlistedSpecialPage', 'Specialpages', 'restrictusers'),
in Localsettings.php einfügen:
$wgGroupPermissions['autor']['restrictusers'] = true;
Nur angemeldete Lesen und editieren[Bearbeiten]
HSchwarz-14.07.2009: Extrahieren der Dateien nach extensions/FCKEditor
Wenn SalzWiki installiert ist, aber nicht für alle freigegeben werden soll. Wie kann ich nur die erste Seite sichtbar machen!
## Nur die Startseite ist für alle zu lesen, ansonsten nur für angemeldete Nutzer!!!!!
## nur angelemdete dürfen lesen und Seiten bearbeiten
## für alle sind nur die Seiten „Main Page" und die mit dem Userlogin" zu sehen
$wgWhitelistRead = array(":Hauptseite", "Spezial:Userlogin");
$wgGroupPermissions[’*’][’read’] = false;
$wgGroupPermissions[’*’][’edit’] = false;
# Prevent new user registrations except by sysops
$wgWhitelistAccount = array ( "user" => 0, "sysop" => 1, "developer" => 1 );
$wgGroupPermissions[’*’][’createaccount’] = false;
Benutzer-Rechte in SalzWiki[Bearbeiten]
Risos hinzugefügt: 12.09.09
# alle duerfen lesen, alle duerfen nicht editieren $wgGroupPermissions['*']['read'] = true; $wgGroupPermissions['*']['edit'] = false; $wgGroupPermissions['*']['createpage'] = true; $wgGroupPermissions['*']['createtalk'] = false; $wgGroupPermissions['*']['writeapi'] = false; # benutzer duerfen: lesen, disskusionsseiten erstellen $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'] = false; $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']['read'] = true; $wgGroupPermissions['autor']['upload'] = true; $wgGroupPermissions['autor']['move'] = true; # Spezialgruppe redakteur #$wgGroupPermissions['redakteur']['delete'] = true;
Hochladen von Dateien[Bearbeiten]
HSchwarz-17.07.2009: Das Hochladen von Dateien geschieht immer in das Repositorium.
Hierzu Änderung in LocalSettings.php
$wgUploadNavigationUrl = "http://localhost/repository/index.php/Special:Upload";
HSchwarz-17.07.2009: Damit automatisch im Repository nach „Dateien" gesucht wird, wurde folgendes in den LocalSettings.php geändert:
## shared uploads: laden der Daten aus dem Repositorium
$wgUseSharedUploads = true;
$wgSharedUploadPath = "http://localhost/repository/images";
$wgSharedUploadDirectory = "D:/xampp/htdocs/repository/images/ ";
$wgHashedSharedUploadDirectory = true;
$wgSharedUploadDBname = "repository_db";
$wgSharedUploadDBprefix = "sr_";
ÄNDERUNGEN RISOS:
Salzwiki: $wgRepositoryBaseUrl = "http://193.175.110.91/repository/images:"; Repository test: $wgUploadDirectory = 'D:/XAMPP/htdocs/repository-test/images'; Salz-test: $wgRepositoryBaseUrl = "http://193.175.110.91/repository-test/image:"; $wgSharedUploadPath = "/repository-test/images"; $wgSharedUploadDirectory = "D:/xampp/htdocs/repository-test/images"; Accescontrol: $wgAdminCanReadAll = true; // sysop users can read all restricted pages (in der AccessControl.php zu ändern) $wgUseMediaWikiGroups = false;
Hier waren einige Fehler in den Pfaden. Betrifft hauptsächlich das Testsystem.
Eingabe von Formeln mittels Tex[Bearbeiten]
Die tatsächliche Installation erfolgte in Anlehnung an die alternative Methode auf der Mediawiki Seite
Installation gemäß Mediawiki[Bearbeiten]
- 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.)
- install the static (to be sure dependencies are embed) binary of ImageMagick in D:\texfm\imagick (ensure there are no spaces in the path you choose) (No: We installed the dynamic version wih administrator rights.)
- install AFPL GhostScript in D:\texfm\ghostscript
- copy D:\texfm\ghostscript\gs8.70\bin\gswin32c.exe to D:\texfm\ghostscript\gs8.70\bin\gs.exe (8.70 can be different depending on version you install)
- add to the windows PATH environnement variable this path: D:\texfm\ghostscript\gs8.70\bin (again, 8.70 can be different depending on version you install)
- If you installed MiKTeX for all users and are running IIS, you may also need to create MiKTeX folders under "C:\Documents and Settings\Default User\Application Data" and "C:\Documents and Settings\Default User\Local Settings\Application Data". Make sure the IIS working process account running PHP (IUSR_[whoever]) has both read and write permissions to these directories!
- open a command line (start -> execute -> cmd.exe)
- verify that the following commands are working:
- latex
- dvips
- convert (not the microsoft convert)
- gs
- [edit] Settings
(your wiki directory = $)
- replace the file $/includes/Math.php with this _STIMMT_
- uncomment or insert in $/LocalSettings.php:
$wgUseTeX= true;
insert in $/LocalSettings.php:
- ImageMagick
$wgImageMagickConvertCommand = 'D:\wikitex\imagick\convert.exe';
$wgImageMagickIdentifyCommand = 'D:\wikitex\imagick\identify.exe';
- Tex
$wgLaTexCommand = 'D:\wikitex\miktex\miktex\bin\latex.exe';
$wgDvipsCommand = 'D:\wikitex\miktex\miktex\bin\dvips.exe';
10. reboot if needed so that paths variables are updated for your services too
Tatsächliche Installation[Bearbeiten]
Die Applikationen als Administrator für alle User im Verzeichnis "D:\texmf\" installieren:
- GhostScript im Unterverzeichnis "ghostscript/" für alle User installieren
- aus dem Unterverzeichnis "bin/" die Datei "gswin32c.exe" kopieren und die Kopie umbenennen zu "gs.exe"
- Im ServerManager bei "Systemeigenschaften ändern/Erweitert/Umgebungsvariablen" die Systemvariable "path" erweitern mit "D:\texmf\ghostscript\gs8.70\bin;"
- ImageMagick im Unterverzeichnis "imagick/" installieren
- ImageMagick-6.5.9-0-Q16.dll (bei vorhandener Windows-Server-Konfigurationsberechtigung), sonst "static" (nur XAMPP-Zugriffsberechtigungen), inkl. "zum Systempfad hinzufügen" und "header für C/C++ Developement"
- 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
- Für PHP die VC6-kompilierte Datei "php_imagick_dyn-Q16.dll" in das PHP-Unterverzeichnis "ext/" kopieren und umbenennen zu "php_imagick_dyn_Q16.dll"
- In der Datei "php.ini" die Datei "php_imagick_dyn_Q16.dll" einbinden
- MikTex im Unterverzeichnis "miktex/" installieren
- Für Sophos-Antivirus eine Ausnahme festlegen:
- Konfigurieren->On-Access-Überprüfung->Ausnahmen -> "D:\texmf\Miktex\" hinzufügen
- Für Sophos-Antivirus eine Ausnahme festlegen:
in unseren localsettings.php ist jeweils einzufügen:
$wgUseTeX = true;
#ImageMagick
- $wgImageMagickConvertCommand = 'D:\texmf\imagick\convert.exe';
- $wgImageMagickIdentifyCommand = 'D:\texmf\imagick\identify.exe';
#Tex
- $wgLaTexCommand = 'D:\texmf\miktex\miktex\bin\latex.exe';
- $wgDvipsCommand = 'D:\texmf\miktex\miktex\bin\dvips.exe';
Einrichten von Namensräumen
[Bearbeiten]
HSchwarz 17.7.2009: Es wurde ein Namensraum für Dokumente der Administratoren einrerichtet, den nur diese Bearbeiten können.
##Einrichten eien Namensraumes Administrator
define("NS_ADM", 100);
define("NS_ADM_TALK", 101);
## Create namespaces
$wgExtraNamespaces = array(
NS_ADM => 'Adm',
NS_ADM_TALK => 'Adm_talk'
);
$wgNamespaceProtection[NS_ADM] = array( 'editadm' ); #permission "editadmin" required to edit the Adm namespace
$wgNamespacesWithSubpages[NS_ADM] = true; #subpages enabled for the Adm namespace
$wgGroupPermissions['administrator']['editadm'] = true;
Metadaten von Dateien im Wiki sichtbar[Bearbeiten]
Bearbeitet von Sven Reher: Alle Dateien wie z.B Fotos liegen im Repositorium. Wenn ein Leser sich dieses Foto ansieht, muss er auch Zugriff auf alle Metadaden haben, die dazu gehören. Damit dies möglich ist, sind folgende Einstellungen vorzunehmen.
Einstellungen zum Zugriff auf das Datei Repository: Findet das Salzwiki eine Datei/Bild nicht im eigenen Wiki, schaut es in dem Shared Einstellungen nach und sucht dort nach Bildern.
$wgUseSharedUploads = true; $wgSharedUploadPath = "/repository/images"; $wgSharedUploadDirectory = "D:/xampp/htdocs/repository/images"; $wgHashedSharedUploadDirectory = true; $wgSharedUploadDBname = "repository_db"; $wgSharedUploadDBprefix = "sr_"; $wgRepositoryBaseUrl = 'http://193.175.110.91/repository/index.php/Datei:';
Einstellung, um das Holen der Beschreibungstexte von Bildern in das lokale Wiki zu ermöglichen: Es findet ein Zugriff über http statt, um den Text zu dem Bild aus dem Repository zu holen. Dazu muss der anonyme User Zugriff auf die Beschreibungstexte erhalten.
$wgFetchCommonsDescriptions = true;
Änderung/Prüfung der Einstellung in der "php.ini": Sorgt dafür, dass der Befehl fopen ausgeführt wird, um die Beschreibungsdaten von dem Repository Wiki zu holen.
allow_url_fopen = On
Zugriff auf ein geschütztes Repository[Bearbeiten]
Die beschriebene Vorgehenssweise erlaubt es, auf ein für den normalen User gesperrtes Wiki = Repositorium zuzugreifen und die Metadaten der Abbildungen/Dateien auszulesen und in SalzWiki widerzugeben.
- Hierzu ist zunächst die Datei httpFunctions.php im Verzeichnis includes von SalzWiki zu modifizieren. Folgender Programmcode ist für die Mediawiki Version 15.3 einzufügen:
--- HttpFunctions.php 2009-01-08 07:56:11.000000000 +0100 +++ HttpFunctions_new.php 2010-11-01 11:47:57.000000000 +0100 @@ -78,6 +78,65 @@ } } + global $wgAuthenticatedRepository, $wgAuthenticatedRepositoryUser, $wgAuthenticatedRepositoryPassword, $wgShowAuthenticatedRepositoryError; + $text = ''; + if ( $wgAuthenticatedRepository ) { + require_once 'extensions/Snoopy-1.2.4/Snoopy.class.php'; + $index = ''; + $login = ''; + + $wikiPath = ""; + if (!preg_match('/(.*)\/index.php\/(.*)\?(.*)/', $url, $matches)) { + echo "nicht gefunden"; + } else { + $wikiPath = $matches[1]; + } + + $apiPath = "$wikiPath/api.php"; + $indexPath = "$wikiPath/index.php"; + $title = $wgTitle->mPrefixedText; + + $snoopy = new Snoopy; + + $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword, 'format' => 'php'); + if(!$snoopy->submit($apiPath, $request_vars)) + die("Snoopy error: {$snoopy->error}"); + + // We're only really interested in the cookies + $snoopy->setcookies(); + $token = unserialize($snoopy->results); + $error = true; + $token2 = array(); + + if ( $token['login']['result'] == 'NeedToken') { + $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword, 'lgtoken' => $token['login']['token'], 'format' => 'php'); + if(!$snoopy->submit($apiPath, $request_vars)) + die("Snoopy error: {$snoopy->error}"); + $token2 = unserialize($snoopy->results); + } + else if ( ($token['login']['result'] == 'NoName') ) { + wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" ); + if ( $wgShowAuthenticatedRepositoryError ) $text = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>"; + } + + + if ( ($token2['login']['result'] == 'Success') or ($token['login']['result'] == 'Success') ) { + $request_vars = array('action' => 'render', 'title'=>$title, 'lgtoken' => $token['login']['token'], 'format' => 'php'); + if(!$snoopy->submit($indexPath, $request_vars)) + die("Snoopy error: {$snoopy->error}"); + $text = $snoopy->results; + } + else if ( ($token2['login']['result'] == 'WrongPass') or ($token2['login']['result'] == 'WrongPluginPass') or ($token2['login']['result'] == 'EmptyPass') ) { + wfDebug( __METHOD__ . ": Wrong or no Password for wgAuthenticatedRepositoryPassword in the LocalSetting." ); + if ( $wgShowAuthenticatedRepositoryError ) $text = "Wrong or no Password for <i>wgAuthenticatedRepositoryPassword</i> in the LocalSetting.<br/>"; + } + else if ( ($token2['login']['result'] == 'NotExists') ) { + wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" ); + if ( $wgShowAuthenticatedRepositoryError ) $text = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>"; + } + } + else + { ob_start(); curl_exec( $c ); $text = ob_get_contents(); @@ -97,6 +156,7 @@ $text = false; } curl_close( $c ); + } } else { # Otherwise use file_get_contents... # This doesn't have local fetch capabilities...
- Folgender Programmcode ist für die Mediawiki Version 16.0 einzufügen:
- Es sind hauptsächlich Anpassungen gemacht wurden, die den Text zurückgeben, sowie an der Abarbeitung von Fehlern. Für das korrekte Bearbeiten von Sonderzeichen in der url wurde rawurldecode() hinzugefügt.
--- HttpFunctions.php 2010-06-09 05:49:34.000000000 +0200 +++ HttpFunctions_new.php 2010-11-22 17:09:33.000000000 +0100 @@ -744,7 +744,7 @@ $this->curlOptions[CURLOPT_CUSTOMREQUEST] = $this->method; } - $this->curlOptions[CURLOPT_HTTPHEADER] = $this->getHeaderList(); + $this->curlOptions[CURLOPT_HTTPHEADER] = $this->getHeaderList(); $curlHandle = curl_init( $this->url ); if ( !curl_setopt_array( $curlHandle, $this->curlOptions ) ) { @@ -755,24 +755,118 @@ /* Continue the processing. If it were in curl_setopt_array, processing would have halted on its entry */ } - if ( false === curl_exec( $curlHandle ) ) { - $code = curl_error( $curlHandle ); - - if ( isset( self::$curlMessageMap[$code] ) ) { - $this->status->fatal( self::$curlMessageMap[$code] ); - } else { - $this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) ); - } - } else { - $this->headerList = explode("\r\n", $this->headerText); - } - - curl_close( $curlHandle ); - + /* + * START: + * Add code to access restricted repositories. + * Add the following line in the LocalSettings.php + * $wgAuthenticatedRepository = true; + * $wgAuthenticatedRepositoryUser = 'WikiSysop'; + * $wgAuthenticatedRepositoryPassword = 'dev2010wer'; + * $wgShowAuthenticatedRepositoryError = true; + */ + + global $wgAuthenticatedRepository, $wgAuthenticatedRepositoryUser, $wgAuthenticatedRepositoryPassword, $wgShowAuthenticatedRepositoryError; + $error = true; + $text = ''; + $token2 = array(); + + /* run the code only if the user activate is in the LocalSettings.php*/ + if ( $wgAuthenticatedRepository ) { + require_once 'extensions/Snoopy-1.2.4/Snoopy.class.php'; + $index = ''; + $login = ''; + + /* Get all relevat url informations */ + /* URL: http://localhost/mediawiki/mediawiki-repository/index.php/File:MediawikiExampleImageFlower.jpg?action=render&uselang=en */ + $wikiPath = ""; + if (!preg_match('/(.*)\/index.php\/(.*)\?(.*)/', $this->url, $matches)) { + echo "nicht gefunden"; + } else { + $wikiPath = $matches[1]; + /* If the url contains special characters, when these characters must be convert */ + $title = rawurldecode($matches[2]); + } + + $apiPath = "$wikiPath/api.php"; + $indexPath = "$wikiPath/index.php"; + + $snoopy = new Snoopy; + /* Start request to get an token */ + $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword, 'format' => 'php'); + if(!$snoopy->submit($apiPath, $request_vars)) + $this->status->fatal("Snoopy error: {$snoopy->error}"); + + // We're only really interested in the cookies + $snoopy->setcookies(); + $token = unserialize($snoopy->results); + + /* Use the Token to login */ + if ( $token['login']['result'] == 'NeedToken') { + $request_vars = array('action' => 'login', 'lgname' => $wgAuthenticatedRepositoryUser, 'lgpassword' => $wgAuthenticatedRepositoryPassword, 'lgtoken' => $token['login']['token'], 'format' => 'php'); + if(!$snoopy->submit($apiPath, $request_vars)) + $this->status->fatal("Snoopy error: {$snoopy->error}"); + $token2 = unserialize($snoopy->results); + } + else if ( ($token['login']['result'] == 'NoName') ) { + wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" ); + if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>"; + } + + /* If the login was successful, get the Information from the File Description */ + if ( ($token2['login']['result'] == 'Success') or ($token['login']['result'] == 'Success') ) { + $request_vars = array('action' => 'render', 'title'=> $title, 'lgtoken' => $token['login']['token'], 'format' => 'php'); + if(!$snoopy->submit($indexPath, $request_vars)) + $this->status->fatal("Snoopy error: {$snoopy->error}"); + $this->content = $snoopy->results; + } + else if ( ($token2['login']['result'] == 'WrongPass') or ($token2['login']['result'] == 'WrongPluginPass') or ($token2['login']['result'] == 'EmptyPass') ) { + wfDebug( __METHOD__ . ": Wrong or no Password for wgAuthenticatedRepositoryPassword in the LocalSetting." ); + if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no Password for <i>wgAuthenticatedRepositoryPassword</i> in the LocalSetting.<br/>"; + } + else if ( ($token2['login']['result'] == 'NotExists') ) { + wfDebug( __METHOD__ . ": Wrong or no User for wgAuthenticatedRepositoryUser in the LocalSetting. \n" ); + if ( $wgShowAuthenticatedRepositoryError ) $this->content = "Wrong or no User for <i>wgAuthenticatedRepositoryUser</i> in the LocalSetting.<br/>"; + } + $this->headerList = explode("\r\n", $this->headerText); + } + else + { + /* + * START: + * Original Code - now in a if statement + * + */ + + if ( false === curl_exec( $curlHandle ) ) { + $code = curl_error( $curlHandle ); + + if ( isset( self::$curlMessageMap[$code] ) ) { + $this->status->fatal( self::$curlMessageMap[$code] ); + } else { + $this->status->fatal( 'http-curl-error', curl_error( $curlHandle ) ); + } + } else { + $this->headerList = explode("\r\n", $this->headerText); + } + curl_close( $curlHandle ); + + /* + * END: + * Original Code - now in a if statement + * + */ + } + + /* + * END: + * Add code to access restricted repositories + * + */ + $this->parseHeader(); $this->setStatus(); return $this->status; - } + } } class PhpHttpRequest extends HttpRequest {
- die Extension "Snoopy-1.2.4" ist in das Extensions-Verzeichnis zu kopieren.
- curl muss beim Apache aktiviert sein, dazu kommentiert man die folgende Zeile in der PHP.ini ein:
extension=php_curl.dll
apache neu starten, damit die Änderungen wirksam werden.
- Der Zugriff auf das Mediawiki Repository wird gesperrt?
$wgGroupPermissions['*']['read'] = false;
- LocalSettings.php - Konfiguration
Einstellungen, um den Zugriff auf ein gesichertes Repository durchführen zu können.
$wgAuthenticatedRepository = true; $wgAuthenticatedRepositoryUser = 'WikiSysop'; $wgAuthenticatedRepositoryPassword = 'xxx'; $wgShowAuthenticatedRepositoryError = false;
wgAuthenticatedRepository - aktiviert den Zugriff auf ein gesichertes Repository. Wenn dies nicht
notwendig ist, bitte abstellen, da die Funktion zusätzliche Abfragen schickt, was die Zugriff bei hoher Last verlangsamen kann.
wgShowAuthenticatedRepositoryError - Gibt Fehlermeldungen in die Log Dateien. Für den Live Betrieb bitte
abstellen.
- Konfiguration für das Mediawiki, um die Daten aus der Datenbank zu holen.
$wgForeignFileRepos[] = array( 'class' => 'ForeignDBRepo', 'name' => 'mediawiki-repository', 'url' => $wgSharedUploadPath, 'directory' => $wgSharedUploadDirectory, 'hashLevels' => 2, // This must be the same for the other family member 'dbType' => $wgDBtype, 'dbServer' => $wgDBserver, 'dbUser' => $wgDBuser, 'dbPassword' => $wgDBpassword, 'dbFlags' => DBO_DEFAULT, 'dbName' => $wgSharedUploadDBname, 'tablePrefix' => $wgSharedUploadDBprefix, 'hasSharedCache' => false, 'descBaseUrl' => $wgRepositoryBaseUrl, 'fetchDescription' => $wgFetchCommonsDescriptions );
Repositorium[Bearbeiten]
Datenbank mittel XAMPP und phpmyAdmin anlegen[Bearbeiten]
HSchwarz 13.07.2009: Es muss vor der Installation zuerst eine Datenbank angelegt werden.
repository_db
Benutzer: hschwarz
Host: localhost
Global Rechte: all privileges
Grant : ja
Mediawiki Installieren[Bearbeiten]
HSchwarz 13.07.2009: Nach Installationsanweisung mit folgenden Namen: : RepositoryConservationScience
Lizenz für das Fachwiki[Bearbeiten]
HSchwarz13.07.2009 :
Einfügen in LocalSettings.php
## For attaching licensing metadata to pages, and displaying an
## appropriate copyright notice / icon. GNU Free Documentation
## License and Creative Commons licenses are supported so far.
$wgEnableCreativeCommonsRdf = true;
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
$wgRightsUrl = "http://creativecommons.org/licenses/by-nc-sa/3.0/";
$wgRightsText = "Attribution-Noncommercial-Share Alike 3.0 Unported";
$wgRightsIcon = "http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png";
# $wgRightsCode = "[license_code]"; # Not yet used
Style/Skin[Bearbeiten]
Logo[Bearbeiten]
Die Datei für das Logo ist noch hochzuladen und einzufügen in LocalSettings.php:
##LOGO
##$wgLogo = "http://localhost/repository/skins/common/images/Logo.png";
[Bearbeiten]
Extensions[Bearbeiten]
OGG[Bearbeiten]
OGG-Erweiterung Installiert. Fehler Behoben. Anwendung: siehe Sandkasten.
Siehe weiteres beim Wiki oben.
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
Pages[Bearbeiten]
"Lizensvorlagen"-Seite erstellt
"Kategorie:Lizenzen" erstellt
Kleinere Fehler behoben
Terminology[Bearbeiten]
Einfügen in LocalSettings:
"## Terminology Extension (RISOS 27.07.09)
require_once( "$IP/extensions/terminology.php" );
AccessControl, CategoryTree[Bearbeiten]
Einfügen in LocalSettings:
"## Extension AccessControl (Risos 05.08.09)
require_once("extensions/accesscontrol-1.1/AccessControl.php");
"## Extension CategoryTree (Risos 08.08.09)
$wgUseAjax = true;
require_once("{$IP}/extensions/CategoryTree/CategoryTree.php");
BibWiki[Bearbeiten]
BibWiki wurde deaktiviert' Hschwarz 14:29, 9. Dez. 2009 (UTC), da es z.Z Probleme mit anderen Extensions gibt und durch die Extension Bibliography ersetzt.
HSchwarz 14.07.2009: Zip-File herunterladen und nach BibWiki extrahieren
Einfügen in LocalSettings:
In der Datei Bibwiki.i18n.php beim Sprachenteil „de" die deutsche Übersetzung in bibliography umwandeln
FCKEditor[Bearbeiten]
HSchwarz 14.07.2009: Extrahieren der Dateien nach extensions/FCKEditor
Einfügen in LocalSettings.php:
## Installation des EDitors FCKEditor
## enable FCKeditor
require_once("extensions/FCKeditor/FCKeditor.php");
Cite[Bearbeiten]
HSchwarz 14.07.2009: Extrahieren der Dateien nach extensions/Cite
Einfügen in LocalSettings.php:
## Cite Extension instaliert SChwarz am 7.7.2009
require_once("extensions/Cite/Cite.php");
Bibliography[Bearbeiten]
Diese Extension wird zum Erstellen von Literaturhinweisen und der Bibliographie eingesetzt.Hschwarz 15:52, 25. Nov. 2009 (UTC)
Hierzu wurde in den Localsettinge eingefügt: require_once("$IP/extensions/bibliography/bibliography.php");
Benutzername löschen[Bearbeiten]
Dies geschieht durch das Zusammenführen des zu löschenden Benuztzernamens mit dem Benutzername "Testuser" zu "Testuser" mit Hilfe der Extension UserMerge. Hierzu ist in den localsettings einzufügen:
require_once( "$IP/extensions/UserMerge/UserMerge.php" ); # Assign the usermerge right to a usergroup, i.e. to the bureaucrats: $wgGroupPermissions['bureaucrat']['usermerge'] = true;
Zugangsberechtigungen[Bearbeiten]
Nur angemeldete Lesen und editieren[Bearbeiten]
HSchwarz 16.07.2009: Wenn SalzWiki installiert ist, aber nicht für alle freigegeben werden soll. Wie kann ich nur die erste Seite sichtbar machen!
## Nur die Startseite ist für alle zu lesen, ansonsten nur für angemeldete Nutzer!!!!!
## nur angelemdete dürfen lesen und Seiten bearbeiten
## für alle sind nur die Seiten „Main Page" und die mit dem Userlogin" zu sehen
$wgWhitelistRead = array(":Main Page", "Spezial:Userlogin");
$wgGroupPermissions[’*’][’read’] = false;
$wgGroupPermissions[’*’][’edit’] = false;
# Prevent new user registrations except by sysops
$wgWhitelistAccount = array ( "user" => 0, "sysop" => 1, "developer" => 1 );
$wgGroupPermissions[’*’][’createaccount’] = false;
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 ändern, sind sowohl im Repositorium als auch im SalzWiki 2 Eingriffe notwendig:
- Im Verzeichnis "images/" ist eine ".htaccess"-Datei, für die der Webserver nur Leserechte hat, mit folgendem Inhalt zu speichern:
Order deny,allow
Deny from all
Allow from 193.175.110.91 - Die "LocalSettings.php"-Datei ist wie folgt zu modifizieren:
Oberhalb der Zeile
$wgEnableUploads = true;
sind folgende Zeilen einzufügen:
$wgUploadPath = "$wgScriptPath/img_auth.php"; $wgUploadDirectory = 'D:/XAMPP/xampp/htdocs/repository-test/images';
in der httpd.conf des Apache
<Directory "D:/xampp/htdocs">
# # 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