Personnalisation

De Wiki de Jordan LE NUFF
Sauter à la navigation Sauter à la recherche

Présentation

Cette page a pour objet de décrire la configuration personnalisée de ce MediaWiki.

Fichier LocalSettings.php

Présentation

Le fichier LocalSettings.php offre les paramètres de configuration de base d'un MediaWiki (plus d'informations sur Manual:LocalSettings.php).

Il est accessible en se connectant directement au serveur. Il se trouve à la racine du dossier hébergeant les fichiers du MediaWiki.

Quelques variables

Pour information, voici la liste de quelques variables implémentées :

Variables générales :

$wgSitename = "Wiki de Jordan LE NUFF";
$wgMetaNamespace = "Wiki_de_Jordan_LE_NUFF";
$wgFavicon = "/images/favicon.png";
$wgScriptPath = "";
$wgArticlePath = "/$1";
$wgUsePathInfo = true;
$wgServer = "https://wiki.jordan-lenuff.com";
$wgResourceBasePath = $wgScriptPath;
$wgLogo = "$wgResourceBasePath/resources/assets/Logo_Jordan_LE-NUFF_200x200.png";
$wgEnableUploads = true;
$wgLanguageCode = "fr";

Variables pour désactiver le cache du MediaWiki :

$wgEnableParserCache = false;
$wgCachePages = false;

Variables pour les skins :

$wgDefaultSkin = "vector";
wfLoadSkin( 'MonoBook' );
wfLoadSkin( 'Vector' );

Variables pour charger les extensions :

wfLoadExtension( 'CategoryTree' );
wfLoadExtension( 'Cite' );
wfLoadExtension( 'CodeEditor' );
wfLoadExtension( 'ImageMap' );
wfLoadExtension( 'InputBox' );
wfLoadExtension( 'ParserFunctions' );
wfLoadExtension( 'PdfHandler' );
wfLoadExtension( 'Poem' );
wfLoadExtension( 'SyntaxHighlight_GeSHi' );
wfLoadExtension( 'WikiEditor' );
wfLoadExtension( 'LabeledSectionTransclusion' );
wfLoadExtension( 'MsUpload' );
wfLoadExtension( 'VisualEditor' );
require_once "$IP/extensions/ClipUpload/ClipUpload.php";

Variables pour se connecter à la base de données (valeurs volontairement cachées) :

$wgDBtype = "XXXXXX";
$wgDBserver = "XXXXXX";
$wgDBname = "XXXXXX";
$wgDBuser = "XXXXXX";
$wgDBpassword = "XXXXXX";
$wgDBprefix = "XXXXXX";
$wgDBTableOptions = "XXXXXX";

Variable pour l'utilisation de sous-pages :

$wgNamespacesWithSubpages[NS_MAIN] = true;


Namespace

Présentation

Un espace de noms (namespace) est une collection de pages qui partagent un sujet similaire, par exemple des pages dont l'utilisation est la même. Dans le cas de ce MediaWiki, nous utilisons les namespaces pour compartimenter les sujets liés à des clients différents et nous appliquons une restriction d'accès en fonction des groupes d'appartenance des utilisateurs.

Implémentation

A ce jour, les namespaces suivants sont installés de cette façon dans le fichier LocalSettings.php :

## Namespaces configuration
# Define constants for additional namespaces
#define("NS_ANAMESPACE", 3000);
#define("NS_OTHERNAMESPACE", 3100);
#define("NS_ANOTHERNAMESPACEAGAIN", 3200);

# Add personnal namespaces
#$wgExtraNamespaces[NS_ANAMESPACE] = "Un namespace";
#$wgExtraNamespaces[NS_OTHERNAMESPACE] = "Autre namespace";
#$wgExtraNamespaces[NS_ANOTHERNAMESPACEAGAIN] = "Encore un autre namespace";

# Enable subpages in the namespaces
$wgNamespacesWithSubpages[NS_MAIN] = true;
#$wgNamespacesWithSubpages[NS_ANAMESPACE] = true;
#$wgNamespacesWithSubpages[NS_OTHERNAMESPACE] = true;
#$wgNamespacesWithSubpages[NS_ANOTHERNAMESPACEAGAIN] = true;

## End of Namespaces configuration

Groupes Active Directory

Présentation

Afin d'avoir une meilleure maîtrise des accès aux différentes ressources informatiques de l'entreprise, la création de certains groupes a été nécessaire dans l'Active Directory.

Méthode

Afin de faciliter l'administration des groupes dans l'Active Directory, il est recommandé d'appliquer la méthode AGDLP dans la gestion des droits d'accès aux ressources.

Implémentation

Ainsi, tels que définis par la variable $wgLDAPRequiredGroups décrite dans la section Paramétrage de l'extension LDAP Authentication Plugin, seuls les groupes suivants sont autorisés à se connecter au MediaWiki :

  • MyGroup

Gestion des droits d'accès

Présentation

Une fois la restriction d'accès générale mise en place au travers de la variable $wgLDAPRequiredGroups, il est possible d'affiner les droits selon les groupes.

Implémentation

La configuration des droits d'accès se fait dans le fichier LocalSettings.php. La configuration actuelle est la suivante :

## Permissions configuration
# Création des groupes de l'Active Directory sur la base des groupes existants
$wgGroupPermissions['MyGroup'] = array_merge(
	$wgGroupPermissions['sysop'],
	$wgGroupPermissions['interface-admin'],
	$wgGroupPermissions['user'],
);
#$wgGroupPermissions['Groupe_AD_de_simples_utilisateurs_du_Wiki'] = $wgGroupPermissions['user'];

# Affinage des droits
#$wgGroupPermissions['Groupe_AD_de_simples_utilisateurs_du_Wiki']['move'] = false;
#$wgGroupPermissions['Groupe_AD_de_simples_utilisateurs_du_Wiki']['move-subpages'] = false;
#$wgGroupPermissions['Groupe_AD_de_simples_utilisateurs_du_Wiki']['move-rootuserpages'] = false;
#$wgGroupPermissions['Groupe_AD_de_simples_utilisateurs_du_Wiki']['move-categorypages'] = false;
#$wgGroupPermissions['Groupe_AD_de_simples_utilisateurs_du_Wiki']['movefile'] = false;
$wgGroupPermissions['*']['autocreateaccount'] = true;
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['*']['read'] = false;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createtalk'] = false;
$wgGroupPermissions['*']['writeapi'] = false;
$wgGroupPermissions['*']['editmyusercss'] = false;
$wgGroupPermissions['*']['editmyuserjs'] = false;
$wgGroupPermissions['*']['viewmywatchlist'] = false;
$wgGroupPermissions['*']['editmywatchlist'] = false;
$wgGroupPermissions['*']['viewmyprivateinfo'] = false;
$wgGroupPermissions['*']['editmyprivateinfo'] = false;
$wgGroupPermissions['*']['editmyoptions'] = false;

# Trick to VisualEditor 401 error
if ( !isset( $_SERVER['REMOTE_ADDR'] ) OR $_SERVER['REMOTE_ADDR'] == '127.0.0.1' OR $_SERVER['REMOTE_ADDR'] == 'localhost' OR $_SERVER['REMOTE_ADDR'] == 'monnomdeserveur') {
	$wgGroupPermissions['*']['read'] = true;
	$wgGroupPermissions['*']['edit'] = true;
}

# Filtrage pour l'extension Lockdown
$wgNamespacePermissionLockdown[NS_ANAMESPACE]['*'] = [ 'MyGroup' ];
#$wgNamespacePermissionLockdown[NS_OTHERNAMESPACE]['*'] = [ 'Un_groupe_AD_de_users' ];
#$wgNamespacePermissionLockdown[NS_ANOTHERNAMESPACEAGAIN]['*'] = [ 'Un_autre_groupe_AD_de_users' ];

# Suppression des groupes inutiles
unset( $wgGroupPermissions['user'] );
unset( $wgRevokePermissions['user'] );
unset( $wgAddGroups['user'] );
unset( $wgRemoveGroups['user'] );
unset( $wgGroupsAddToSelf['user'] );
unset( $wgGroupsRemoveFromSelf['user'] );
unset( $wgGroupPermissions['autoconfirmed'] );
unset( $wgRevokePermissions['autoconfirmed'] );
unset( $wgAddGroups['autoconfirmed'] );
unset( $wgRemoveGroups['autoconfirmed'] );
unset( $wgGroupsAddToSelf['autoconfirmed'] );
unset( $wgGroupsRemoveFromSelf['autoconfirmed'] );
unset( $wgGroupPermissions['bot'] );
unset( $wgRevokePermissions['bot'] );
unset( $wgAddGroups['bot'] );
unset( $wgRemoveGroups['bot'] );
unset( $wgGroupsAddToSelf['bot'] );
unset( $wgGroupsRemoveFromSelf['bot'] );
unset( $wgGroupPermissions['sysop'] );
unset( $wgRevokePermissions['sysop'] );
unset( $wgAddGroups['sysop'] );
unset( $wgRemoveGroups['sysop'] );
unset( $wgGroupsAddToSelf['sysop'] );
unset( $wgGroupsRemoveFromSelf['sysop'] );
unset( $wgGroupPermissions['bureaucrat'] );
unset( $wgRevokePermissions['bureaucrat'] );
unset( $wgAddGroups['bureaucrat'] );
unset( $wgRemoveGroups['bureaucrat'] );
unset( $wgGroupsAddToSelf['bureaucrat'] );
unset( $wgGroupsRemoveFromSelf['bureaucrat'] );

## End of permissions configuration

Charte graphique

Présentation

Il est possible de personnaliser l'apparence du MediaWiki. Cela se fait au travers de pages de code CSS (plus d'informations sur Manuel:CSS).

Implémentation

A ce jour, les personnalisations d'apparence du MediaWiki se trouve dans les pages suivantes :

MediaWiki:Common.css

Pour modifier une personnalisation d'apparence, il suffit simplement de modifier le code CSS de la page en question.

Titre des sous-pages

Présentation

En temps normal, l'activation des sous-pages via la variable $wgNamespacesWithSubpages donne des titres de pages reprenant l'arborescence de la page. Ainsi, la sous-page accessible à l'adresse https://wiki.jordan-lenuff.com/Technique/Stockage/Hitachi (par exemple) se nommerait donc Technique/Stockage/Hitachi, ce qui est moins convivial que simplement Hitachi.

Implémentation

Afin d'obtenir un titre de sous-page convivial, il est nécessaire de modifier un fichier de la skin utilisée par le MediaWiki.

Dans la cas de ce MediaWiki, la skin utilisée est Vector. Il faut donc modifier le fichier skins/Vector/includes/VectorTemplate.php.

Le titre d'une page est identifié par un id et/ou une classe nommé firstHeading. Une fois cette occurrence trouvée dans le fichier template de la skin Vector, il faut remplacer la ligne $this->get( 'title' ) (ligne 85) par $this->getSkin()->getTitle()->getSubpageText().

Cela donne au final :

76 // Loose comparison with '!=' is intentional, to catch null and false too, but not '0'
77 if ( $this->data['title'] != '' ) {
78         echo Html::rawElement( 'h1',
79                 [
80                         'id' => 'firstHeading',
81                         'class' => 'firstHeading',
82                         'lang' => $this->get( 'pageLanguage' ),
83                 ],
84                 // Raw HTML
85                 //$this->get( 'title' )
86                 $this->getSkin()->getTitle()->getSubpageText()
87         );
88 }