Comment ajouter une « version imprimable » au menu de navigation MediaWiki

Comment ajouter une « version imprimable » au menu de navigation MediaWiki
Comment ajouter une « version imprimable » au menu de navigation MediaWiki

Améliorer votre menu de navigation MediaWiki

La personnalisation de votre menu de navigation MediaWiki peut améliorer considérablement l'expérience utilisateur, permettant des outils plus accessibles et fonctionnels. Si vous utilisez MediaWiki 1.39 avec le thème Timeless, vous aurez peut-être du mal à ajouter des options spécifiques telles que la « Version imprimable ». Cette tâche n'est pas simple en raison des configurations uniques du menu de la barre latérale.

L'un des objectifs communs des administrateurs est de fournir aux utilisateurs un moyen rapide d'accéder aux pages imprimables. Cette fonctionnalité est essentielle pour les environnements dans lesquels des documents hors ligne ou sur papier sont souvent référencés, tels que les wikis universitaires ou d'entreprise. Cependant, nombreux sont ceux qui trouvent le processus moins intuitif que prévu. 🖨️

Dans ce guide, nous explorerons comment intégrer le lien « Version imprimable » dans le menu de navigation, en particulier sous l'option « Page aléatoire ». L'utilisation de MediaWiki:Sidebar pour des modifications nécessite une solide compréhension de sa syntaxe et de son comportement dans le thème Timeless.

Si vous êtes bloqué ou rencontrez des problèmes, ne vous inquiétez pas ! À la fin de cette procédure pas à pas, vous saurez non seulement comment implémenter le changement, mais vous aurez également un aperçu du fonctionnement de la barre latérale MediaWiki. Passons à cette amélioration pratique. 🌟

Commande Exemple d'utilisation
$wgHooks['SkinBuildSidebar'][] Cette commande enregistre un hook personnalisé dans MediaWiki qui permet de modifier la structure de la barre latérale lors de son rendu. Elle est spécifique à la personnalisation dynamique des menus de navigation.
$skin->$skin->msg() Récupère des messages ou des liens localisés dans MediaWiki. Dans ce contexte, il récupère dynamiquement l'URL de la fonctionnalité « Version imprimable » à l'aide des paramètres de langue intégrés.
document.addEventListener('DOMContentLoaded') Garantit que la logique JavaScript s'exécute uniquement une fois le DOM complètement chargé, ce qui est essentiel pour modifier dynamiquement un menu de navigation existant.
document.createElement() Crée de nouveaux éléments HTML, tels que les balises li et a, qui sont ajoutés dynamiquement au menu de navigation dans la solution frontale.
arrayHasKey Utilisé dans les tests unitaires pour vérifier si une clé particulière existe dans un tableau, garantissant que l'option "Version imprimable" a été correctement ajoutée à la structure de la barre latérale.
if (!defined('MEDIAWIKI')) Garantit que le script est exécuté dans le cadre MediaWiki, empêchant toute exécution non autorisée ou autonome.
$GLOBALS['wgHooks'] Accède aux hooks globaux au sein de MediaWiki, permettant aux développeurs d'ajouter ou de modifier des fonctionnalités de manière dynamique à des moments spécifiques du cycle de vie de l'application.
link.href Définit dynamiquement l'URL d'un lien hypertexte nouvellement créé en JavaScript, en ajoutant des paramètres de requête tels que ?printable=yes pour activer la version imprimable.
SkinBuildSidebar Un hook MediaWiki spécifique qui permet une manipulation directe des éléments de la barre latérale, ce qui le rend très pertinent pour l'ajout de nouveaux liens ou éléments de menu.
TestCase::createMock() Crée des objets fictifs pour les tests unitaires, simulant la classe Skin de MediaWiki pour valider les modifications de la barre latérale sans nécessiter une instance MediaWiki complète.

Comment personnaliser le menu de navigation MediaWiki

Les scripts fournis ci-dessus se concentrent sur l'amélioration du menu de navigation MediaWiki en ajoutant une option « Version imprimable » sous le lien « Page aléatoire ». Cette modification peut être réalisée via une personnalisation du backend à l'aide de hooks ou de scripts frontend avec JavaScript. Par exemple, le script PHP exploite le $wgHooks array et le hook "SkinBuildSidebar" pour insérer dynamiquement un nouvel élément de navigation. Cette approche garantit que l'ajout s'intègre parfaitement à la structure de la barre latérale existante, s'adaptant à différents skins comme le thème Timeless. 🖥️

La solution JavaScript frontend offre une alternative plus dynamique, ciblant le menu de navigation une fois le DOM complètement chargé. En utilisant des commandes comme document.createElement et en ajoutant des éléments de liste nouvellement créés au menu de navigation, cette méthode ne nécessite pas de modifier le code backend. Par exemple, un wiki universitaire pourrait déployer rapidement la fonctionnalité « Version imprimable » pour les étudiants accédant au matériel de cours, garantissant ainsi une perturbation minimale du site en direct. Cette flexibilité le rend idéal pour les situations où l'accès au backend est limité ou indisponible. 📄

Un autre aspect clé des scripts fournis est leur modularité et leur concentration sur les meilleures pratiques. Le script PHP inclut une gestion des erreurs pour garantir qu'il s'exécute uniquement dans le cadre MediaWiki. De même, la logique JavaScript valide la présence du menu de navigation avant de tenter de le modifier, réduisant ainsi les risques d'erreurs d'exécution. Par exemple, dans un wiki d'entreprise, garantir la fiabilité est crucial car la barre latérale est souvent une plate-forme de navigation centrale pour les employés accédant aux documents ou aux rapports du projet.

Les tests unitaires complètent les scripts en vérifiant que le lien "Version imprimable" est correctement ajouté dans différents scénarios. En simulant l'environnement MediaWiki à l'aide d'objets fictifs, ces tests garantissent que la solution fonctionne dans diverses configurations. Ce processus de test est particulièrement utile pour les développeurs gérant plusieurs wikis, car il fournit une protection contre les problèmes de déploiement. En fin de compte, que ce soit via des hooks backend PHP, du JavaScript frontend ou des tests unitaires robustes, les scripts offrent des méthodes polyvalentes pour améliorer la navigation MediaWiki avec des performances et une fiabilité optimales. 🌟

Ajout d'une option "Version imprimable" dans la navigation MediaWiki

Script côté serveur pour modifier la configuration de la barre latérale MediaWiki à l'aide de PHP.

<?php
// Load MediaWiki's core files
if ( !defined( 'MEDIAWIKI' ) ) {
    die( 'This script must be run from within MediaWiki.' );
}

// Hook into the Sidebar generation
$wgHooks['SkinBuildSidebar'][] = function ( &$sidebar, $skin ) {
    // Add the "Printable version" link below "Random page"
    $sidebar['navigation'][] = [
        'text' => 'Printable version',
        'href' => $skin->msg( 'printable' )->inContentLanguage()->text(),
        'id' => 'n-printable-version'
    ];
    return true;
};

// Save this script in a custom extension or LocalSettings.php
?>

Utilisation de la configuration de la barre latérale MediaWiki pour ajouter de nouveaux liens

Méthode manuelle pour modifier la page MediaWiki:Sidebar dans le thème Timeless.

* navigation
 mainpage|mainpage-description
 recentchanges-url|recentchanges
 randompage-url|randompage
 printable-version|Printable version
* SEARCH
* TOOLBOX
// Save changes in the MediaWiki:Sidebar special page.
// Ensure "printable-version" message key is properly defined.

Solution JavaScript frontale dynamique

Script côté client utilisant JavaScript pour ajouter dynamiquement l'option "Version imprimable".

document.addEventListener('DOMContentLoaded', function () {
    const navList = document.querySelector('.mw-portlet-navigation ul');
    if (navList) {
        const printableItem = document.createElement('li');
        printableItem.id = 'n-printable-version';
        const link = document.createElement('a');
        link.href = window.location.href + '?printable=yes';
        link.textContent = 'Printable version';
        printableItem.appendChild(link);
        navList.appendChild(printableItem);
    }
});

Tests unitaires pour les modifications de la barre latérale

Tests unitaires PHP pour valider l'intégration "Version imprimable" sur le backend.

use PHPUnit\Framework\TestCase;

class SidebarTest extends TestCase {
    public function testPrintableVersionLinkExists() {
        $sidebar = []; // Simulate Sidebar data structure
        $skinMock = $this->createMock(Skin::class);
        $callback = $GLOBALS['wgHooks']['SkinBuildSidebar'][0];
        $this->assertTrue($callback($sidebar, $skinMock));
        $this->assertArrayHasKey('Printable version', $sidebar['navigation']);
    }
}
// Run using PHPUnit to ensure robust testing.

Améliorer MediaWiki avec des personnalisations avancées

L'ajout de fonctionnalités personnalisées à une instance MediaWiki peut aller au-delà de simples modifications du menu de navigation. Par exemple, les administrateurs recherchent souvent des moyens d'améliorer les fonctionnalités pour répondre aux besoins spécifiques des utilisateurs, comme l'intégration d'options d'exportation ou la personnalisation des présentations en fonction des rôles des utilisateurs. Ces améliorations, notamment l'ajout d'une « version imprimable », sont essentielles pour rendre les wikis plus dynamiques et plus conviviaux. L'intégration de nouveaux liens dans le Barre latérale MediaWiki peut être adapté pour répondre aux exigences uniques d’un portail universitaire ou de la documentation interne d’une entreprise.

Un domaine qui mérite d’être exploré est la localisation des options de menu nouvellement ajoutées. Par exemple, garantir que l'étiquette « Version imprimable » est traduite dynamiquement en fonction des préférences linguistiques de l'utilisateur ajoute une couche d'inclusivité. En utilisant les méthodes de localisation intégrées de MediaWiki, telles que $skin->msg(), permet aux développeurs d'aligner leurs personnalisations sur les normes mondiales de MediaWiki. Ceci est particulièrement utile dans les organisations multinationales où les employés ou les contributeurs accèdent au wiki dans plusieurs langues. 🌍

Une autre considération importante est l'interaction entre les personnalisations et le thème MediaWiki sélectionné. Le Thème intemporel, par exemple, utilise une structure unique qui nécessite de tester minutieusement toutes les modifications pour garantir la compatibilité. Par exemple, un élément de navigation visuellement important tel que « Version imprimable » peut nécessiter des ajustements CSS supplémentaires pour conserver son apparence sur tous les appareils. Ces modifications nuancées garantissent que l’interface reste intuitive et professionnelle quel que soit l’appareil ou la taille de l’écran de l’utilisateur. 📱

Questions fréquemment posées sur la personnalisation de MediaWiki

  1. Comment puis-je modifier la barre latérale MediaWiki ?
  2. Vous pouvez modifier la barre latérale en modifiant la page MediaWiki:Sidebar. Utilisez des commandes comme * navigation et option|label pour définir de nouveaux liens.
  3. Qu'est-ce que le thème « Intemporel » et quel est son impact sur la personnalisation ?
  4. Le thème Timeless est un skin MediaWiki moderne avec un design réactif. Les personnalisations telles que les modifications de la barre latérale peuvent nécessiter des tests supplémentaires pour garantir qu'elles s'affichent correctement.
  5. Est-il possible d'ajouter la localisation pour les nouvelles options de la barre latérale ?
  6. Oui, vous pouvez utiliser $skin->msg() pour récupérer des étiquettes localisées pour vos éléments de menu, garantissant ainsi la compatibilité avec les wikis multilingues.
  7. Puis-je ajouter de nouvelles fonctionnalités sans modifier le code backend ?
  8. Oui, les solutions JavaScript frontales comme l'utilisation document.createElement() vous permettent d'ajouter dynamiquement des liens ou des fonctionnalités sans modifications du backend.
  9. Comment tester les nouvelles fonctionnalités de la barre latérale ?
  10. À l'aide de tests unitaires PHP ou d'un framework de test comme PHPUnit, simulez les modifications de la barre latérale pour vous assurer qu'elles fonctionnent comme prévu.

Affiner votre navigation MediaWiki

L'ajout de l'option « Version imprimable » à la navigation MediaWiki apporte une plus grande convivialité et une plus grande organisation à votre wiki. Avec les approches détaillées ici, du script PHP au JavaScript, la personnalisation est accessible et efficace pour tous les administrateurs.

En donnant la priorité à la localisation et à la compatibilité des thèmes, votre wiki devient une ressource fiable pour des publics divers. Ces améliorations améliorent non seulement les fonctionnalités, mais offrent également une expérience conviviale, reflétant une plateforme bien entretenue et accessible. 🌟

Sources et références
  1. Documentation officielle MediaWiki sur la personnalisation de la barre latérale : Manuel de la barre latérale MediaWiki
  2. Discussion communautaire et exemples de configurations de thèmes Timeless : Thème intemporel de MediaWiki
  3. Exemple d'image illustrant la disposition du menu de navigation : Exemple de menu de navigation
  4. Documentation PHP pour les hooks et les extensions : Manuel PHP