Personnalisation
(2 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 112 : | Ligne 112 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
--> | --> | ||
+ | |||
+ | == URL Courtes == | ||
+ | === Présentation === | ||
+ | Les URLs courtes, ou les réécritures d'URL, masquent l'adresse des pages des fichiers php. Cela permet un affichage plus convivial des URL du MediaWiki. | ||
+ | |||
+ | === Implémentation === | ||
+ | ==== Serveur ==== | ||
+ | Dans le cas de ce MediaWiki, tous les fichiers ont été déposés dans un dossier "'''mediawiki'''". | ||
+ | |||
+ | ==== Apache ==== | ||
+ | La configuration Apache du serveur est donc la suivante : | ||
+ | <syntaxhighlight lang="apache"> | ||
+ | Alias /mediawiki /data/www/mediawiki/current | ||
+ | Alias /wiki /data/www/mediawiki/current/index.php | ||
+ | <Directory "/data/www/mediawiki/current"> | ||
+ | Options FollowSymLinks | ||
+ | RewriteEngine On | ||
+ | RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L] | ||
+ | DirectoryIndex index.php | ||
+ | AllowOverride All | ||
+ | Require all granted | ||
+ | <FilesMatch \.php$> | ||
+ | SetHandler "proxy:fcgi://127.0.0.1:9007" | ||
+ | </FilesMatch> | ||
+ | </Directory> | ||
+ | Alias /wk_ressources /data/www/mediawiki/wk_ressources | ||
+ | <Directory "/data/www/mediawiki/wk_ressources"> | ||
+ | Require all granted | ||
+ | </Directory> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== Fichier LocalSettings.php ==== | ||
+ | Modification et/ou ajout des variables suivantes : | ||
+ | <syntaxhighlight lang="php"> | ||
+ | $wgScriptPath = "/w"; | ||
+ | $wgScriptExtension = ".php"; | ||
+ | $wgArticlePath = "/wiki/$1"; | ||
+ | $wgUsePathInfo = true; | ||
+ | </syntaxhighlight> | ||
== Namespace == | == Namespace == | ||
Ligne 253 : | Ligne 292 : | ||
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. | 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 | + | Dans la cas de ce MediaWiki, la skin utilisée est '''Vector'''. Il faut donc modifier le fichier <code>skins/Vector/includes/VectorTemplate.php</code>. |
+ | ==== Version 1.32 du Mediawiki ==== | ||
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 <code>$this->get( 'title' )</code> (ligne 85) par <code>$this->getSkin()->getTitle()->getSubpageText()</code>. | 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 <code>$this->get( 'title' )</code> (ligne 85) par <code>$this->getSkin()->getTitle()->getSubpageText()</code>. | ||
Ligne 272 : | Ligne 312 : | ||
); | ); | ||
} | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== Version 1.34 du Mediawiki ==== | ||
+ | Pour la version 1.34 du Mediawiki, toujours dans le fichier <code>skins/Vector/includes/VectorTemplate.php</code>, il faut aller à la ligne 67 et corriger la clé ''html-title'' : | ||
+ | <syntaxhighlight lang="php" line start=64 highlight=4-5> | ||
+ | ... | ||
+ | // Remember that the string '0' is a valid title. | ||
+ | // From OutputPage::getPageTitle, via ::setPageTitle(). | ||
+ | //'html-title' => $this->get( 'title', '' ), | ||
+ | 'html-title' => $this->getSkin()->getTitle()->getSubpageText(), | ||
+ | |||
+ | 'html-prebodyhtml' => $this->get( 'prebodyhtml', '' ), | ||
+ | ... | ||
</syntaxhighlight> | </syntaxhighlight> |
Version actuelle datée du 7 janvier 2020 à 22:46
Sommaire
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;
URL Courtes
Présentation
Les URLs courtes, ou les réécritures d'URL, masquent l'adresse des pages des fichiers php. Cela permet un affichage plus convivial des URL du MediaWiki.
Implémentation
Serveur
Dans le cas de ce MediaWiki, tous les fichiers ont été déposés dans un dossier "mediawiki".
Apache
La configuration Apache du serveur est donc la suivante :
Alias /mediawiki /data/www/mediawiki/current
Alias /wiki /data/www/mediawiki/current/index.php
<Directory "/data/www/mediawiki/current">
Options FollowSymLinks
RewriteEngine On
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]
DirectoryIndex index.php
AllowOverride All
Require all granted
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9007"
</FilesMatch>
</Directory>
Alias /wk_ressources /data/www/mediawiki/wk_ressources
<Directory "/data/www/mediawiki/wk_ressources">
Require all granted
</Directory>
Fichier LocalSettings.php
Modification et/ou ajout des variables suivantes :
$wgScriptPath = "/w";
$wgScriptExtension = ".php";
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = 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 :
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
.
Version 1.32 du Mediawiki
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 }
Version 1.34 du Mediawiki
Pour la version 1.34 du Mediawiki, toujours dans le fichier skins/Vector/includes/VectorTemplate.php
, il faut aller à la ligne 67 et corriger la clé html-title :
64 ...
65 // Remember that the string '0' is a valid title.
66 // From OutputPage::getPageTitle, via ::setPageTitle().
67 //'html-title' => $this->get( 'title', '' ),
68 'html-title' => $this->getSkin()->getTitle()->getSubpageText(),
69
70 'html-prebodyhtml' => $this->get( 'prebodyhtml', '' ),
71 ...