Configuration MediaWiki pour Intranet + LDAP partie 3

Je vais continuer la configuration du Wiki pour un Intranet, plusieurs fonctionnalités peuvent être rajoutées, comme par exemple l'affichage en arborescence ou une module explicite d'ajout d'une page dans une catégorie.

Module arborescence : niceCategory et CategoryTree

Fichiers des modules

Ce module va permettre d'afficher les catégories et articles sous forme d'une arborescence et trié par lettre.

Il faut récupérer les fichiers suivants : Extension NiceCategoryList

UN fichier : 'NiceCategoryList.php' Extension CategoryTree

Plusieurs fichiers :

|-- CategoryTree 
|   |-- CategoryPageSubclass.php 
|   |-- CategoryTree.css 
|   |-- CategoryTree.i18n.php 
|   |-- CategoryTree.js 
|   |-- CategoryTree.php 
|   |-- CategoryTree.rtl.css 
|   |-- CategoryTreeFunctions.php 
|   |-- CategoryTreeIE.css 
|   |-- CategoryTreePage.i18n.alias.php 
|   |-- CategoryTreePage.php 
|   |-- README 
|   `-- install.settings

Installation et activation des modules dans le fichier LocalSettings.php :

#Module nicecategory
require_once("$IP/extensions/nicecategory/NiceCategoryList.php"); 
$wgUseAjax = true; 
#plugin CategoryTree
require_once( '$IP/extensions/CategoryTree/CategoryTree.php' );

Il faut aussi modifier le fichier CategoryTree.php en remplaçant cette ligne :

$wgCategoryTreeCategoryPageMode = CT_MODE_CATEGORIES;

Par celle là :

$wgCategoryTreeCategoryPageMode = CT_MODE_PAGES;

Lien répertoriant les FIX de l'extension CategoryTree, on a parfois bien besoin ;-) : Extension_talk CategoryTree

Extension : articletocategory

Pour cette application, c'est un peu différent car on a du modifier le code pour l'adapter à notre utilisation.
Cette extension est basée sur une autre extension située ici :

Extension Add_Article_to_Category

Ajout d'une page dans une catégorie

Cette extension va permettre de mettre en place un champs dédié pour l'ajout de nouvelles catégories et/ou articles.Pour activer ce module, ajouter cela à la fin du 'LocalSettings.php' :

#plugin article to category
require_once("extensions/articletocategory/articletocategory.php");

Cependant par défaut, cette extension ne permet pas la création de catégorie de manière ergonomique. Il faut donc la modifier :
Avant :

<!-- Add Article Extension Start - P by BiGreat-->
<script type="text/javascript">
function clearText(thefield){
if (thefield.defaultValue==thefield.value)
thefield.value = ""
}
function addText(thefield){
        if (thefield.value=="")
        thefield.value = thefield.defaultValue
}
</script>
<table border="0" align="right" width="423" cellspacing="0" cellpadding="0">
<tr>
<td width="100%" align="right" bgcolor="">
<form name="createbox" action="{$Action}" method="get" class="createbox">
        <input type='hidden' name="action" value="edit">
        <input type='hidden' name="new" value="1">
        <input type='hidden' name="category" value="{$catpage->mTitle->getText()}">
        <input class="createboxInput" name="title" type="text" value="{$boxtext}" size="30" style="color:#666;" onfocus="clearText(this);" onblur="addText(this);"/>   
        <input type='submit' name="create" class="createboxButton" value="{$btext}"/>   
</form>
</td>
</tr>
</table>
<!-- Add Article Extension End - P by BiGreat-->

Après :

<!-- Add Article and Categorie Extension Start - P by BiGreat - Wjean - WorldWarrior-->
<script type="text/javascript">
function clearText(thefield){
if (thefield.defaultValue==thefield.value)
thefield.value = ""
}
function addText(thefield){

        thefield.value = thefield.value.replace(/\./g,"_")
        thefield.value = thefield.value.replace(/\//g,"_")

        if (thefield.value=="")
        thefield.value = ""
}

function articleORcategory(){
        if (eval(document.getElementById("type_test").checked == true))
                document.getElementById("title").value = "category:"+document.getElementById("title").value

}
</script>
<table border="0" align="right" width="423" cellspacing="0" cellpadding="0">
<tr>
<td width="100%" align="right" bgcolor="">
<form name="createbox" action="{$Action}" method="get" class="createbox">
        <input type='hidden' name="action" value="edit"/>
        <input type='hidden' name="new" value="1"/>
        <input type='hidden' name="category" value="{$catpage->mTitle->getText()}"/>
        Categorie : <INPUT type=checkbox id="type_test" name="type_test"/><br />
        <input class="createboxInput" name="title" id="title" type="text" value="{$boxtext}" size="37" style="color:#666;" onfocus="clearText(this);" onblur="addText(this);"/>
        <input type='submit' onclick="articleORcategory();" name="create" class="createboxButton" value="{$btext}"/>
</form>
</td>
</tr>
</table>
<!-- Add Article Extension End - P by BiGreat - Wjean - WorldWarrior -->

Texte inscrit par défaut dans une nouvelle page

Repérer cette fonction et modifiez la comme suit :
Avant

function addcategory(&$text)
{
        $cname = $_GET['category'];
        $wnew = $_GET['new'];
        $isCategorie= $_GET['type_test'];

        if ($wnew==1)
        {
                 if( ! $isCategorie)
                 {
                 $temp1 ="$isCategorie\n\n[[category:".$cname."]]\n</noinclude>";
                 $text=$temp1;
                 }
                 else
                 {
                 $temp1 ="{{pdf}} \n \n Ajouter votre texte ici \n\n [[category:".$cname."]]";
                 $text=$temp1;
                 }
        }
        return true;
}

Après :

function addcategory(&$text)
{
        $cname = $_GET['category'];
        $wnew = $_GET['new'];
        $isCategorie= $_GET['type_test'];

        if ($wnew==1)
        {
                 if( ! $isCategorie)
                 {
                 $temp1 ="$isCategorie{{resume|text=Taper votre résumé ici}}\n\nAjouter votre texte ici ! ATTENTION : Laissez bien les 3 lignes suivantes en fin de votre document.\n \n \n<noinclude>\n[[category:".$cname."]]\n</noinclude>";
                 $text=$temp1;
                 }
                 else
                 {
                 $temp1 ="{{pdf}} \n \n Ajouter votre texte ici \n\n [[category:".$cname."]]";
                 $text=$temp1;
                 }
        }
        return true;
}

Ajout du Logo

Voici l'adresse du Logo : '/var/www/wiki/skins/common/images /wiki.png'. Il suffit de remplacer ce fichier.

Activation de l'import de fichiers et d'images

Ajouter ces lignes à la fin du LocalSettings.php :

###Importation de fichiers###
#activation ajout d'images et de fichiers.
$wgEnableUploads=true;
#Détermine si l'extension du ficher doît être vérifiée.
$wgCheckFileExtensions=true;
#Autorise les téléchargements et affiche un lien vers la page de téléchargement
$wgFileExtensions = array( 'png','svg', 'jpg', 'jpeg', 'ogg','doc','xls','ppt','mp3','sxc','pdf' ,'txt', 'odt' ,'ods' ,'odp' ,'dia', 'tar', 'tar.gz', 'zip', 'bz2', 'odg' );
#Autorise l'import de fichiers depuis une URL, pas seulement les fichiers locaux.
$wgAllowCopyUploads = true;
#Si faux, les utilisateurs peuvent quand même importés des fichiers qui n'ont pas une extension définie dans Manual:$wgFileExtensions.
$wgStrictFileExtensions = true; 
#Avertissement si le fichier téléchargé est plus grand que cette limite.
$wgUploadSizeWarning = true;
#Permet d'ajouter des liens externes en tant qu'image ou fichier
$wgAllowExternalImages = true;
#Permet d'autoriser explicitement le serveur de fichier de JPSYSTEM
$wgAllowExternalImagesFrom = "https://fileserver.jpsystem.info" ;
#Permet de désactiver la vérification du Mime pour tous les fichiers : utile pour les fichiers OpenOffice notamment.
$wgVerifyMimeType = false;

Une fois, ce module activé, une nouvelle entrée apparaît à gauche "Importer un fichier".
Bien suivre les instructions d'import.
Plus d'information sur Manual Configuring_file_uploads

Extension Extra edit buttons

Activer de nouveaux boutons

Il suffit de créer une nouvelle page dans le Wiki nommée : "Mediawiki:Common.js" avec un compte Administrateur et y insérer le code présent sur cette page : Extraeditbuttons.js. On obtient ensuite plusieurs boutons qui va permettre d'éditer nos pages plus facilement. On peut facilement en activer d'autres.

Ajout de boutons personnalisés

Il faut éditer le fichier mediawiki:monobook.js en ajoutant ceci par exemple :

myButtons={'_ZZ':['http://wiki.jpsystem.info/extensions/icones_XEB/extrabuttons/Button_code.png','Code','<source enclose="div" lang="php">','</source>','Taper votre code ici']};

Et ne pas oublier d'activer le bouton dans le fichier 'mediawiki:common.js' en ajoutant '_ZZ' dans la fonction 'initButtons()'.

Coloration syntaxique extension SyntaxHighlight_GeSHi

Mise en place

Modification du code

Edition du fichier : extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php pour corriger un défaut de style<br /> Avant :

  // "Enclose" parameter 
                 $enclose = $pre; 
                     if ( isset( $args['enclose'] ) ) { 
                            if ( $args['enclose'] === 'div' ) { 
                                 $enclose = GESHI_HEADER_DIV; 
                               } elseif ( $args['enclose'] === 'none' ) { 
                                 $enclose = GESHI_HEADER_NONE; 
                         } 
                 }

Après :

  // "Enclose" parameter 
                 $enclose = $pre; 
                     if ( isset( $args['enclose'] ) ) {  
                           if ( $args['enclose'] === 'div' ) { 
                                 $enclose = GESHI_HEADER_DIV; 
                               } elseif ( $args['enclose'] === 'none' ) {  
                                 $enclose = GESHI_HEADER_NONE; 
                               } elseif ( $args['enclose'] === 'pre' ) { 
                                 $enclose = GESHI_HEADER_PRE; 
                         } 
                 } 

Nocoloration

Pour les besoins des templates de lignes de commande (root et user), on utilise les balises "source" et on ne veut pas de coloration.<br /> Pour cela, il faut créer un fichier dans le dossier 'extensions/SyntaxHighlight_GeSHi/geshi' :

cd /var/www/wiki/extensions/SyntaxHighlight_GeSHi/geshi
cp dos.php nocoloration.php

Editer ensuite le fichier pour remplacer tous les codes couleurs par #000000 avec cette regexp :

 :%s/color: #......;/color: #000000;/g

Ensuite il faut éditer le fichier '/var/www/wiki/extensions/SyntaxHighlight_GeSHi/geshi.php' à la ligne 1377 et rajouter ceci :

'nocoloration' => array()

Ensuite sur le Wiki, il faut éditer la page mediawiki:monobook.js et mettre ceci dans le bon bouton :

 lang="nocoloration"

Ainsi, il n'y a plus de coloration pour les buttons.

Liens :

Extension SyntaxHighlight_GeSHi

Extension_talk SyntaxHighlight_GeSHi

Autocomplétion dans formulaire de recherche

Ajouter cela à la fin du LocalSettings.php :

#active l'autocompletion dans le formulaire de recherche
$wgEnableMWSuggest= true;

Extension Cite.php pour les références

Cette extension va permettre de rajouter la possibilité de mettre des références dans les pages.

Ce sont les balises <ref/>qui sont utilisées mais elles ne sont pas interprétées par défaut, il faut donc ajouter cette extension.

Attention de bien prendre la version compatible avec la version actuelle du Wiki.

Extension Cite.php

Extension Cite.php FR

Heure dans Mediawiki

Par rapport à l'heure du serveur, Mediawiki prend l'heure GMT, ce qui fait qu'il affiche toujours une "heure serveur" décalée de une heure. Ce qu'il nous faut c'est une heure locale correcte.

Pour cela il faut ajouter ceci dans le fichier 'LocalSettings.php' :

#pour régler l'heure correctement
$wgLocalTZoffset = date("Z") / 60;
$wgLocaltimezone = "Europe/Paris";

Notification par email pour toutes les modifications du wiki

Il faut ajouter ces lignes en fin de fichier :

#ajout de l'envoi de mail a chaque modification du wiki
$wgEnotifWatchlist = true;
# Declare this twice so it works for all versions
$wgUsersNotifiedOnAllChanges =
$wgUsersNotifedOnAllChanges = array( 'worlwarrior','slayerfromhell' );

La dernière variable doit contenir un tableau avec les logins. <br /> Ainsi chaque fois qu'une modification sera faite sur le Wiki, un mail sera envoyé aux personnes présentes dans ce tableau.

Extension UsageStatistics

Cette extension permet d'avoir des statistiques sur l'utilisation du Wiki. Il faut télécharger les fichiers de l'extension ici

Ensuite il faut installer GnuPlot :

apt-get install gnuplot

Puis il faut ajouter ceci au fichier 'LocalSettings.php' :

#ajout de gnuplot pour l'extension UsageStatistics
include("extensions/Gnuplot/Gnuplot.php");
$wgGnuplotCommand = '/usr/bin/gnuplot';

Enfin il faut éditer les pages 'mediawiki:common.js' et 'mediawiki:common.css' pour ajouter le contenu de ces deux pages :

MediaWiki:Common.js

MediaWiki:Common.css

  • Pour la page 'mediawiki:common.js', le nouveau code doit être ajouté après le code existant au risque de perdre les ExtraEditButtons.
  • Le format de la date est MM/JJ/AAAA.
  • Bug : La Box qui sert à sélectionner la date ne fonctionne pas correctement pour l'instant sous Firefox.

Voila pour cette 3ème partie de la configuration d'un Wiki, n'hésitez pas à laisser vos commentaires si ce tuto vous à aider ;-). La suite dans une quatrième partie....

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet