Configuration MediaWiki pour Intranet + LDAP partie 3
Par WorldWarrior le vendredi, septembre 25 2009, 19:43 - Logiciel - Lien permanent
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.
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 :
- 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....