MediaWiki:Installation et configuration

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search
Flattr-badge-large.png

1 Introduction

Un wiki est un système de gestion de contenu de site Web qui rend les pages Web librement et également modifiables par tous les visiteurs autorisés. Les wikis sont utilisés pour faciliter l'écriture collaborative de documents avec un minimum de contrainte. Le wiki a été inventé par Ward Cunningham en 1995, pour une section d'un site sur la programmation informatique qu'il a appelée WikiWikiWeb. Le mot « wiki » vient du terme hawaiien wiki wiki, qui signifie « rapide » ou « informel ». Au milieu des années 2000, les wikis ont atteint un bon niveau de maturité et sont associés au Web 2.0. Créée en 2001, l'encyclopédie Wikipédia est devenue le wiki le plus visité au monde.

MediaWiki est un moteur de Wiki écrit en PHP et créé par Magnus Manske. Initialement développé pour Wikipédia (qui l'utilise depuis 2002), il sert également de base pour d'autres projets de la fondation WikiMedia (Wiktionnaire, Wikisource, Wikilivres ou Wikiquote). D'autres associations l'ont adopté (par exemple Wikitravel, Mozilla ou Ekopedia).

2 Installation

I'm describing here 2 ways to install Mediawiki. Choose the best for your needs, but I recommend the manual method.

2.1 Manual Method

First of all, download the current version with git :

Command git
git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git

Then list all versions :

Command git
git tag -l | sort -V

And choose the wished version you want to use. Example, I want to use 1.21 :

Command git
git checkout 1.21.0

2.1.1 Extentions install

I strongly recommend as well to use git to get all your extensions. You don't need to download all available as it takes some disk space, but you can choose them one by one like that :

Command
cd extensions
git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/<extension_name>.git

You can see the names here : https://gerrit.wikimedia.org/r/#/admin/projects/

2.2 Debian Method

Pour l'installer depuis les repository Debian :

Command aptitude
aptitude install mediawiki

Sinon vous pouvez l'installer à la main depuis le site principale.

2.2.1 PostgreSQL

Si à la suite de l'installation, vous ne souhaitez pas utiliser MySQL mais Postgres comme base de donnée, vous allez rencontrer certainement des soucis. Reportez vous donc à ce lien et regardez la FAQ. Si ca ne fonctionne toujours pas, que vous rencontrez d'autres types d'erreurs, alors testez ceci :

If you are using Postgres, you will need to either have a database and user created for you, or simply supply the name of a Postgres user with "superuser" privileges to the configuration form. Often, this is the database user named postgres.

The database that MediaWiki will use needs to have both plpgsql and tsearch2 installed. The installer script will try and install plpgsql, but you may need to install tsearch2 yourself. (tsearch2 is used for searching the text of your wiki). Here's one way to do most of the setup. This is for a Unix-like system, and assumes that you have already installed the plpgsql and tsearch2 modules. In this example, we'll create a database named wikidb, owned by a user named wikiuser. From the command-line, as the postgres user, perform the following steps.

createuser -S -D -R -P -E wikiuser (then enter the password)
createdb -O wikiuser wikidb
createlang plpgsql wikidb

Adding tsearch2 to the database is not a simple step, but hopefully it will already be done for you by whatever packaging process installed the tsearch2 module. In any case, the installer will let you know right away if it cannot find tsearch2.

The above steps are not all necessary, as the installer will try and do some of them for you if supplied with a superuser name and password.

For installing tsearch2 to the wikidb database under Windows, do the following steps:

  • Find tsearch2.sql (probably under .\PostgreSQL\8.x\share\contrib) and copy it to the postgresql\8.x\bin directory;
  • From a command prompt at the postgresql\8.x\bin directory, type :
psql wikidb < tsearch2.sql -U wikiuser
  • It will prompt you for the password for wikiuser;

That's it!

Point (2) seems only to work on windows, cause on debian linux 4.0 (etch) only user postgres is allowed to use language c. so there it must be called by:

su - postgres -c psql wikidb < tsearch2.sql

afterwards you must grant select rights to wikiuser to the tsearch tables and insert the correct locale.

su - postgres
psql -d wikidb -c "grant select on pg_ts_cfg to wikiuser;"
psql -d wikidb -c "grant select on pg_ts_cfgmap to wikiuser;"
psql -d wikidb -c "grant select on pg_ts_dict to wikiuser;"
psql -d wikidb -c "grant select on pg_ts_parser to wikiuser;"
psql -d wikidb -c "update pg_ts_cfg set locale = current_setting('lc_collate') where ts_name = 'default' and prs_name='default';"

If you receive an error similar to "ERROR: relation "pg_ts_cfg" does not exist" when executing the above statements, try installing tsearch2 to the wikidb database again, but instead use these two separate steps (and then try the grant statements again):

su - postgres
psql wikidb -f tsearch2.sql

3 Upgrade

To upgrade Mediawiki with git, go into your Mediawiki folder instance and check the version you're running on :

Command git
> cd /var/www/mediawiki
> git describe --tags
1.21.0

Then get the latest version of Mediawiki :

Command git
git fetch

Change your version to the desired version :

Command git
git checkout 1.21.1

and upgrade your instance with the database :

Command php
php maintenance/update.php

That's all, your MediaWiki core is now up to date. You now need look at extensions.

3.1 Extensions upgrade

To upgrade you extensions, you've used git, that's why it will be easy. Anyway, some of them may not be managed with git, but the old repository version (SVN). I've wrote a little script to handle that :

Command update_extensions.sh
#!/bin/sh
extensions=`pwd`
changes=0
for i in * ; do
    if [ -d $extensions/$i ] ; then
        echo ""
        echo "[+] $i"
        cd $extensions/$i
        # Git
        if [ -d .git ] ; then
            git pull
            changes=1
        # SVN
        elif [ -d .svn ] ; then
            svn up
            changes=1
        fi  
     fi  
done
 
# Reset rights
if [ $changes -eq 1 ] ; then
    chown -Rf www-data. .
fi

Simply copy it in your extension directory and launch it from there :

Command update_extensions.sh
> ./update_extensions.sh
 
[+] CharInsert
Already up-to-date.
 
[+] Cite
remote: Counting objects: 41, done
remote: Finding sources: 100% (6/6)
remote: Total 6 (delta 4), reused 6 (delta 4)
Unpacking objects: 100% (6/6), done.
From https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Cite
   22f4d9e..1e542ef  master     -> origin/master
Updating 22f4d9e..1e542ef
Fast-forward
 Cite.i18n.php |   35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 
[+] Gadgets
Already up-to-date.
 
[+] LdapAuthentication
Already up-to-date.
 
[+] MsUpload
Already up-to-date.
 
[+] MultiBoilerplate
At revision 115794.
 
[+] ParserFunctions
Already up-to-date.
 
[+] SyntaxHighlight_GeSHi
Already up-to-date.
 
[+] Vector
Already up-to-date.
 
[+] WikiEditor
Already up-to-date.

Everything is up to date now :-)

4 Configuration

4.1 Serveur Web

4.1.1 Nginx

Pour une mise en place de Mediawiki avec Nginx et les URL courtes, voici la configuration à adopter. J'ai également mis du SSL et forcé les redirections de la page de login vers du SSL :

Configuration File /etc/nginx/sites-available/wiki.deimos.fr
server {
    include listen_port.conf;
    listen 443 ssl;
 
    ssl_certificate /etc/nginx/ssl/deimos.fr/server-unified.crt;
    ssl_certificate_key /etc/nginx/ssl/deimos.fr/server.key;
    ssl_session_timeout 5m;
 
    server_name wiki.deimos.fr wiki.m.deimos.fr;
    root /usr/share/nginx/www/deimos.fr/blocnotesinfo;
 
    client_max_body_size 5m;
    client_body_timeout 60;
 
    access_log /var/log/nginx/wiki.deimos.fr_access.log;
    error_log /var/log/nginx/wiki.deimos.fr_error.log;
 
    location / {
        rewrite ^/$ $scheme://$host/index.php permanent;
        # Short URL redirect
        try_files $uri $uri/ @rewrite;
    }
 
    location @rewrite {
        if (!-f $request_filename){
            rewrite ^/(.*)$ /index.php?title=$1&$args;
        }
    }
 
    # Force SSL Login
    set $ssl_requested 0;
    if ($arg_title ~ Sp%C3%A9cial:Connexion) {
        set $ssl_requested 1;
    }
    if ($scheme = https) {
        set $ssl_requested 0;
    }
    if ($ssl_requested = 1) {
        return 301 https://$host$request_uri;
    }
 
    # Drop config
    include drop.conf;
 
    # Deny direct access to specific folders
    location ^~ /(maintenance|images)/ {
        return 403;
    }
 
    location ~ \.php$ {
        fastcgi_cache mycache;
        fastcgi_cache_key $request_method$host$request_uri;
        fastcgi_cache_valid any 1h;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }
 
    location = /_.gif {
        expires max;
        empty_gif;
    }
 
    location ^~ /cache/ {
        deny all;
    }
 
    location /dumps {
        root /usr/share/nginx/www/deimos.fr/blocnotesinfo/local;
        autoindex on;
    }
 
    # BEGIN W3TC Browser Cache
    gzip on;
    gzip_types text/css application/x-javascript text/x-component text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
    location ~ \.(css|js|htc)$ {
        expires 31536000s;
        add_header Pragma "public";
        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        add_header X-Powered-By "W3 Total Cache/0.9.2.4";
    }
 
    location ~ \.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml)$ {
        expires 3600s;
        add_header Pragma "public";
        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        add_header X-Powered-By "W3 Total Cache/0.9.2.4";
    }
 
    location ~ \.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ {
        expires 31536000s;
        add_header Pragma "public";
        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        add_header X-Powered-By "W3 Total Cache/0.9.2.4";
        try_files $uri $uri/ @rewrite;
    }
    # END W3TC Browser Cache
}

4.2 Menu de gauche (Sidebar)

  • Pour éditer votre menu à gauche :

Accédez aux modifications via ce lien :

https://wiki.deimos.fr/index.php?title=MediaWiki:Sidebar

Ensuite, vous pourrez l'éditez en mettant "le lien|le nom"

Voici un exemple :

* navigation
** mainpage|mainpage
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** helppage|help
** sitesupport-url|sitesupport
 
* navigation rapide
** linux|Linux
** unix|Unix
** Mac OS X|Mac OS X
** windows|Windows
** serveurs|Serveurs
** réseaux|Réseaux
** divers|Divers
  • Pour créer un lien interwiki :

[[Monlien#Interwiki|Le nom que je veux donner]]

4.3 Une instance, plusieurs wiki (multi-tenant / wiki-family)

4.3.1 Méthode 1

Si par exemple vous voulez faire du multi languages ou tout simplement avoir plusieurs bases de données et ne pas faire n mises à jours pour chacune de vos bases, alors optez pour cette solution.

Le but est de modifier le code du fichier LocalSettings.php, afin de pouvoir détecter dans l'entete http (URL), une succession de cacatère pouvant faire référence à une base ou à une autre.

Procédez comme ceci :

  • Lancez un setup du wiki. Une fois le fichier LocalSettings.php créer, renommez le en fr.php par exemple.
  • Relancez un setup du wiki. Une fois le fichier LocalSettings.php créer, renommez le en en.php par exemple.
  • Créez le fichier LocalSettings.php, puis insérez et adaptez ce qui suit :
<?php

$callingurl = strtolower($_SERVER['SERVER_NAME']); // identify the asking url

if ( $callingurl == "fr.deimos.fr" ) {
        require_once( 'fr.php' );
}

if ( $callingurl == "en.deimos.fr" ) {
        require_once( 'en.php' );
}
 
?>

Dans cette configuration, si l'url correspond par exemple à http://fr.deimos.fr/mediawiki/index.php, alors ce sera le fichier fr.php qui sera pris en compte.

4.3.2 Méthode 2

Voici une autre méthode qui permet de choisir un fichier de configuration différent en fonction du premier paramètre suivant l'url. Exemple :

Modifiez le fichier LocalSettings.php :

Configuration File LocalSettings.php
<?php
list($null, $toplevel, $dontcare) = explode('/', strtolower($_SERVER['REQUEST_URI']));
 
if (is_file("LocalSettings-$toplevel.php"))
{
    require_once("LocalSettings-$toplevel.php");
}
else
{
    print <<<EOF
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11-flat.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>wiki not found </title>
</head>
<body>
<p>The wiki you were looking for was not found.</p>
</body>
EOF;
}
?>

Il ne vous reste plus qu'à créer vos configurations de ce type :

  • LocalSettings-wiki1.php
  • LocalSettings-wiki2.php
  • LocalSettings-wiki3.php

4.4 Changement d'url

Vous avez peut etre voulu commencer un wiki avec un certain nom et vouloir changer le nom du dossier ensuite. Ce qui fait que l'url a changer. Je m'explique :

J'ai installé media wiki et ca pointe sur :

http://www.deimos.fr/mediawiki

J'ai déjà créer des articles. Je souhaiterais maintenant renommer ceci en :

http://www.deimos.fr/blocnotesinfo

Le problème c'est que les anciens articles ont gardé en mémoire la première url. Pour mettre a jour tout ceci faites :

cd /usr/share/mediawiki/maintenance
php clear_interwiki_cache.php
php alltrans.php
php refreshLinks.php 

Essayez maintenant et ca devrait aller beaucoup mieux :-)

4.5 Rafraichir son cache

Pour rafraichir son cache, il suffit de rajouter ?action=purge à la fin de l'url du wiki. Ex :

https://wiki.deimos.fr/index.php?action=purge

4.6 Flux RSS

Pour avoir un lien avec ces flux RSS, c'est assez simple, je vous laisse juger par vous même :

  • Changements récents :
https://wiki.deimos.fr/index.php?title=Special:Recentchanges&feed=rss
https://wiki.deimos.fr/index.php?title=Special:Recentchanges&feed=atom
  • Nouvelles Pages :
https://wiki.deimos.fr/index.php?title=Special:Newpages&feed=rss
https://wiki.deimos.fr/index.php?title=Special:Newpages&feed=atom
  • Historique des pages (MW1.7+) :
https://wiki.deimos.fr/index.php?title=MediaWiki:Installation_et_configuration&action=history&feed=atom

4.7 Autoriser les recherches à partir de 2 caractères

Par défaut, la recherche de terme dans mediawiki ne prend pas en compte les mot de 3 lettres et moins. Or en informatique, des mots comme XEN, VNC, etc. sont très fréquent.

Mediawiki utilise pour ses recherche la fonctionnalité de recherche en texte intégral (fulltext) de mysql. Cette option permet d'indexer certains champs texte pour y faire des recherches évolué respectant certaines contraintes de la langue. Pour que les indexes ne prennent pas trop de place, la configuration par défaut ignore les mots de moins de 4 lettres. C'est le paramètre ft_min_word_len

  • Modifier le fichier /etc/mysql/my.cnf pour modifier le paramètre ft_min_word_len
[mysqld]
ft_min_word_len=3
  • relancer mysql
  • se connecter sur la base et lancer une réparation des index :
mysql -u root -p wikidb
mysql> REPAIR TABLE searchindex;

Voilà, c'est fait, maintenant vous pouvez chercher des mots de 2 lettres dans votre wiki.

4.8 Suppression du titre sur la page principale

Après avoir longuement cherché, j'ai fini par trouver un petit javascript qui supprime le titre "Accueil" de la page de démarrage :-).

4.8.1 Version < 1.12.0

Insérez ces lignes dans votre fichier MediaWiki:Common.js (https://wiki.deimos.fr/MediaWiki:Common.js) et insérez ces lignes :

/* hide heading on [[Main_Page]] */
   var mpTitle = "Accueil";
   var isMainPage = (document.title.substr(0, document.title.lastIndexOf(" - ")) == mpTitle);
   var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1));

   if (isMainPage && !isDiff) {
      document.write('<style type="text/css">/*<![CDATA[*/ #lastmod, #siteSub, #contentSub, h1.firstHeading { display: none !important; } /*]]>*/</style>');
   }
/*

4.8.2 Version >= 1.12.0

Editez votre fichier https://wiki.deimos.fr/MediaWiki:Common.css et insérez ceci :

Configuration File Common.css
/** Le CSS placé ici sera appliqué à toutes les apparences. */
 
.page-Accueil * .firstHeading, .page-Accueil * h3#siteSub,
.page-Accueil * #contentSub {
display:none;
}

4.9 Limitation de création d'utilisateurs

Ceci va interdire la création des utilisateurs, et l'édition depuis lesp ostes anonymes. A mettre dans votre fichier LocalSettings.php :

# This snippet prevents new registrations from anonymous users
# (Sysops can still create user accounts)
$wgGroupPermissions['*']['createaccount'] = false;
 
# This snippet prevents editing from anonymous users
$wgGroupPermissions['*']['edit'] = false;
require_once( "includes/DefaultSettings.php" );

4.10 Importation de fichiers

Pour autoriser certaines extentions, editez ces quelques lignes dans votre fichier LocalSettings.php :

Configuration File LocalSettings.php
## To enable image uploads, make sure the 'images' directory
## is writable, then set this to true:
$wgEnableUploads       = true;
$wgCheckFileExtensions = false;
$wgStrictFileExtensions = true;
$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'ogg', 'zip', 'pdf', 'gz', 'tgz', 'sxw', 'ipcc');
$wgVerifyMimeType = false;
$wgUseImageResize = false;
$wgUseImageMagick = true;
$wgImageMagickConvertCommand = "/usr/bin/convert";

4.11 Améliorer la facilité de recherche

Ajoutez ces lignes dans votre fichier LocalSettings pour avoir des options de recherche avancée. Pour avoir la recherche à la google suggestion :

Configuration File LocalSettings
# Drop-down AJAX search suggestions
$wgEnableMWSuggest  = true;

Et pour que les recherches soient plus pertinantes :

Configuration File LocalSettings
# More relevant search snippets
$wgAdvancedSearchHighlighting = true;

4.12 Ajouter du texte sur la partie login

Je souhaites par exemple ajouter du texte pour proposer une connexion en SSL. Il aut éditer la Page Loginend :

https://wiki.deimos.fr/blocnotesinfo/index.php?title=MediaWiki:Loginend

Et nous pouvons mettre du texte comme celui ci par exemple :

<div style="clear:both; font-size:.85em; line-height:1.4em; margin-left:2em"><u>Note</u> : Les informations envoyées lors de cette connexion ne seront pas chiffrées.<br/>
Pour plus de sécurité, il est possible de se connecter via le [https://{{SERVERNAME}}/blocnotesinfo/index.php?title=Sp%C3%A9cial:Connexion&returnto=Accueil serveur sécurisé].
 
---
 
<u>Note</u> : The information sent during this connection will not be encrypted.<br />
For more security, it is possible to connect through the [https://{{SERVERNAME}}/blocnotesinfo/index.php?title=Sp%C3%A9cial:Connexion&returnto=Accueil secure server].
</div>

4.13 Rester en SSL

La valeur $wgServer permet de définir l'adresse du wiki, qui va être régulièrement utilisée pour accéder à certaines pages. Si comme moi, vous avez forcé l'authentification en SSL, vous remarquerez que vous repassez en non chiffré juste après la connexion. Et ce n'est pas forcément le cas souhaité. Si vous souhaitez rester en SSL lorsque vous commencez à l'utiliser, éditez votre configuration sur la partie $wgServer et remplacez là par ceci :

Configuration File LocalSettings.php
if ( !empty( $_SERVER['HTTPS'] ) ) { 
    $wgServer           = "https://wiki.deimos.fr";
}else{
    $wgServer           = "http://wiki.deimos.fr";
}

4.14 Modifier le header de tous les articles

Si vous avez besoin de modifier toutes les pages de votre wiki pour que le header soit identique partout, il faut alors utiliser des hooks. Pour ce hook (ArticlePageDataBefore), il suffit d'ajouter ceci à la fin du fichier LocalSettings.php :

Configuration File LocalSettings.php
# Article Header
function MyArticleHeader( $article, $fields )
{
    global $wgOut;
    $wgOut->addWikiText('{{Template:ArticleHeader}}');
    return true;
}
$wgHooks['ArticlePageDataBefore'][] = 'MyArticleHeader';

Ici j'ai donc un modèle ArticleHeader qui s'affichera dans tous les articles.

4.15 Cacher les informations de versions

4.15.1 Pour les utilisateurs non connectés

Vous n'avez pas forcément envie que tout le monde puisse obtenir des informations sur la plateforme sur laquelle tourne MediaWiki, ou bien des informations sur la version de MediaWiki en lui même. Voici comment supprimer la page Version pour les personnes non connectées :

Configuration File LocalSettings.php
# Hide Version Special Page
function DisableSpecialPages(&$SpecialPageslist)
{
    global $wgUser;
    if ( $wgUser->isAnon() )
    {   
        unset( $SpecialPageslist['Version'] );
        return true;
    }   
    return true;
}
$wgHooks['SpecialPage_initList'][]='DisableSpecialPages';

4.15.2 Pour les utilisateurs non admin

Si vous souhaitez que seul les administrateurs aient accès à la page Version :

Configuration File LocalSettings.php
# Hide Version Special Page
function DisableSpecialPages(&$SpecialPageslist)
{
    global $wgUser;
    if ( !$wgUser->isAllowed('protect') )
    {   
        unset( $SpecialPageslist['Version'] );
        return true;
    }
    return true;
}
$wgHooks['SpecialPage_initList'][]='DisableSpecialPages';

4.16 Cacher la sidebar lors des modifications

Il est possible de cacher la sidebar lorsqu'un utilisateur connecté fait des modifications. J'ai trouvé cette solution là utilisant JavaScript qui me plaisait bien. Le soucis c'est que c'est pour chaque utilisateur, il faut éditer un fichier qui leur est propre. J'ai donc quelque peu modifié ce JavaScript pour qu'il fonctionne pour tous les utilisateurs une fois installé. J'ai également rajouté un onglet (tab) pour permettre l'upload de fichiers. Pour le mettre en place, c'est assez simple et je vous rappelle que ça n'est compatible qu'avec le thème Vector. Éditez cette page https://wiki.deimos.fr/MediaWiki:Vector.js et insérez ceci :

Configuration File https://wiki.deimos.fr/MediaWiki:Vector.js
/* hide-vector-sidebar.js: Adds a button to toggle visibility of the Vector sidebar.
   Written by PleaseStand. Public domain; all copyright claims waived as described
   in http://en.wikipedia.org/wiki/Template:PD-self
   Modified by Deimosfr <deimos@deimos.fr>
*/
 
/*global document, window, addOnloadHook, addPortletLink, skin*/
 
var sidebarSwitch;
 
function sidebarHide() {
    document.getElementById("mw-panel").style.visibility = "hidden";
    document.getElementById("mw-head-base").style.marginLeft = "0";
    document.getElementById("content").style.marginLeft = "0";
    document.getElementById("left-navigation").style.left = "0";
    document.getElementById("footer").style.marginLeft = "0";
    if(typeof sidebarSwitch == "object") {
        sidebarSwitch.parentNode.removeChild(sidebarSwitch);
    }
    sidebarSwitch = addPortletLink("p-cactions", "javascript:sidebarShow()", "Show sidebar", "ca-sidebar", "Show the navigation links", "a");
}
 
function sidebarShow() {
    document.getElementById("mw-panel").style.visibility = "";
    document.getElementById("mw-head-base").style.marginLeft = "";
    document.getElementById("content").style.marginLeft = "";
    document.getElementById("left-navigation").style.left = "";
    document.getElementById("footer").style.marginLeft = "";
    if(typeof sidebarSwitch == "object") {
        sidebarSwitch.parentNode.removeChild(sidebarSwitch);
    }
    sidebarSwitch = addPortletLink("p-cactions", "javascript:sidebarHide()", "Hide sidebar", "ca-sidebar", "Hide the navigation links", "a");
}
 
function createTab() {
 addPortletLink( 'p-cactions', wgArticlePath.replace( '$1', 'Special:Upload' ), 'Importer un fichier');
}
 
// Only activate on Vector skin
if(skin == "vector") {
    addOnloadHook(function() {
        if ( document.getElementById( 'editform' ) ) {
            // Change this if you want to show the sidebar by default
            sidebarHide();
            // Add custom tab
            addOnloadHook( createTab );
        }
    });
}

Et voilà :-). Éditez une page pour voir le résultat ! Vous avez la possibilité d'afficher et cacher simplement la sidebar depuis les onglets.

4.17 URL plus courte

Il est possible de faire des URL plus courte pour passer par exemple de http://www.domainname.com/wiki/index.php?title=Accueil à http://wiki.domainname.com/Accueil. C'est mieux non ? Vous allez voir que ce n'est pas très compliqué. Tout d'abord dans votre fichier de configuration de Mediawiki, veillez à avoir ces lignes :

Configuration File LocalSettings.php
[...]
$wgMetaNamespace = "Nom de mon wiki";
$wgScriptPath = "";
$wgArticlePath = "/$1";
$wgScriptExtension = ".php";
[...]

Et ensuite, pour la partie Apache, ajoutez ceci à votre VirtualHost pour votre wiki :

Configuration File /etc/apache2/sites-enabled/wiki
[...]
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/index.php [L,QSA]
[...]

Redémarrez votre Apache et c'est bon :-)

4.18 Supprimer les pages de discussion

Il est possible de supprimer les pages de discussion (Talk pages) en ajoutant ce Hook dans votre configuration :

Configuration File LocalSettings.php
# Remove talkpage tab
function RemoveVectorTabs( SkinTemplate &$sktemplate, array &$links ) { 
        global $wgUser, $wgHVTFUUviewsToRemove;
        if ( isset( $links['namespaces']['talk'] ))
                unset( $links['namespaces']['talk'] );
        return true;
}
$wgHooks['SkinTemplateNavigation'][] = 'RemoveVectorTabs';

4.19 Activer le mode Debug

Il est possible de galérer quelque peu pour la mise en place de certaines extensions. Pour palier à ceci, il faut activer le superbe mode debug en ajoutant ces lignes dans votre LocalSettings.php :

Configuration File LocalSettings.php
# Debug mode
error_reporting( -1 );
ini_set( 'display_errors', 1 );
$wbDebugLogFile = '/tmp/debug.log';
$wgDebugComments = true;
$wgDebugToolbar = true;

4.20 Ouvrir un lien dans une nouvelle fenêtre

Si vous souhaitez ouvrir de manière permanente les liens externe dans une nouvelle fenêtre/nouvel onglet, placez ceci dans votre configuration :

Configuration File LocalSettings.php
[...]
$wgExternalLinkTarget = '_blank';
[...]

Sinon, si vous souhaitez uniquement ouvrir un lien particulier dans une nouvelle fenêtre/nouvel onglet, il va falloir ajouter un JavaScript dans la page MediaWiki:Common.js :

Configuration File MediaWiki:Common.js
addOnloadHook( function() {
     var pops = function( elems ) {
         for (var i=0; i<elems.length; i++) {
             if ( !(' '+elems[i].className+' ').match( / pops / ) ) continue;
             var anchs = elems[i].getElementsByTagName('a');
             for (var j=0; j<anchs.length; j++) anchs[j].target = '_blank';
         }
     };
     var bc = document.getElementById('bodyContent');
     var tags = ['span', 'div', 'table', 'td', 'th'];
     for (var i=0; i<tags.length; i++) pops( bc.getElementsByTagName( tags[i] ) );
 } );

Puis ajouter votre nouveau lien dans une page comme ceci :

<span class="pops">http://www.deimos.fr</span>

5 Utiliser des fenêtres d'informations

Vous avez certainement vu sur Wikipedia ou autre mediawiki des fenêtres en haut à gauche des articles présentants certaines informations. Ceci s'appelle une infobox. En parcourant le web, j'ai pu voir des infobox plus compliquées les unes que les autres nécessitant des plugins alors qu'en fait il est possible d'en créer de très belles sans plugins.

Pour ceux que ça intéresse, voici la mienne : http://www.deimos.fr/blocnotesinfo/index.php?title=Template:Infobox

Et voici comment l'utiliser. insérez ceci dans une page :

{{Infobox
| infobox_image       = [[Image:logo.png|220px|Name]]
| infobox_softversion = x.x
| infobox_os          = OS
| infobox_website     = [http://www.deimos.fr/ Deimos Website]
| infobox_others      =
}}

6 Affichage Monobook

Pour changer le CSS de Monobook pour tous les utilisateurs, ajoutez ceci à votre url :

https://wiki.deimos.fr/blocnotesinfo/index.php/MediaWiki:Monobook.css

Ensuite, niveau CSS, voici ce que j'ai mis :

Configuration File https://wiki.deimos.fr/blocnotesinfo/index.php/MediaWiki:Monobook.css
/* Le CSS placé ici sera appliqué à toutes les apparences. */
 
/* Hide Acceuil page on the main page */
.page-Accueil * .firstHeading, .page-Accueil * h3#siteSub,
.page-Accueil * #contentSub {
display:none;
}
 
/* Set default colors for geshi addon */
div.mw-geshi {
  background-color: #f9f9f9;
  padding: 1em; 
  margin:1em 0; 
  border: 1px dashed #2f6fab;
}
 
/* Change default background image */
body {
  background: white url("images/a/a6/Headbg.jpg") 0px 0px no-repeat;
}
 
/* Rounding corners for Firefox and Mozilla browser. Warning : This could make your website slower */
 
.pBody {
  padding: 0.3em 0.3em;
  -moz-border-radius-topright: 0.5em;
  -moz-border-radius-bottomright: 0.5em;
}
 
.portlet h5 {
   -moz-border-radius-topright: 0.5em;
}
 
#p-cactions ul li, #p-cactions ul li a {  
  -moz-border-radius-topright: 0.5em;
  -moz-border-radius-topleft: 0.5em;
}
 
#content {
  -moz-border-radius-topleft: 0.5em;
  -moz-border-radius-bottomleft: 0.5em;
}
 
/* Changing background opacity */
.ns-0 * #content, .ns-0 * #p-cactions li, .ns-0 * #p-cactions li a {
  filter:alpha(opacity=90);
}

7 Désactiver des skins

Pour désactiver des skins, c'est très simple, il suffit par exemple d'ajouter ceci dans votre LocalSettings :

Configuration File LocalSettings.php
# To remove various skins from the User Preferences choices
$wgSkipSkins = array("standard", "cologneblue", "modern", "monobook", "myskin", "nostalgia", "simple");

8 FAQ

Voici les infos du site : Consultez le Guide de l'utilisateur pour plus d'informations sur l'utilisation de ce logiciel.

Please see documentation on customizing the interface and the User's Guide for usage and configuration help.

8.1 Connaitre sa version

Pour connaitre sa version, il suffit de rajouter Special:version après "title=" dans votre URL :

https://wiki.deimos.fr/index.php?title=Special:version

8.2 Problème divers après une mise à jour

Vous rencontrez des soucis suite à une mise à jour de MediaWiki ? Essayer ceci, ça règle pas mal de problèmes :

Command php
php maintenance/update.php

9 Ressources

Votre base de connaissance avec Mediawiki