MediaWiki:Gadget-LeftPaneSwitch.js

Note : après avoir publié vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
  • Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
  • Internet Explorer / Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
  • Opera : appuyez sur Ctrl + F5.
/**
 * LeftPaneSwitch
 *
 * Ajoute un bouton permettant d'afficher/masquer le menu latéral de gauche.
 *
 * Auteur : Od1n
 * {{Projet:JavaScript/Script|LeftPaneSwitch}}
 */

// <nowiki>

mw.loader.using('mediawiki.storage', function () {

    $(function ($) {
        'use strict';

        // actuellement, compatible uniquement avec la skin Vector
        // (et avant son remaniement de 2021, cf. https://www.mediawiki.org/wiki/Skin:Vector)
       	var newVectorSkin = document.getElementById('mw-sidebar-button');
        if (mw.config.get('skin') !== 'vector' || newVectorSkin !== null) {
            return;
        }

        mw.loader.addStyleTag(
            '#left-pane-switch {padding:6px; background:#E4E4E4; position:absolute; left:10em; cursor:pointer; z-index:100}'
            + '@media (min-width:982px) { #left-pane-switch {left:11em} }'
            + '.left-pane-closed #mw-panel {display:none}'
            + '.left-pane-closed #content {margin-left:0}'
            + '.left-pane-closed #p-personal ul {padding-left:0}'
            + '.left-pane-closed #left-navigation {margin-left:0}'
            + '.left-pane-closed #left-pane-switch {left:0}'
            + '.left-pane-closed #footer {margin-left:0}'
        );

        var paneSwitch = document.createElement('div');
        paneSwitch.id = 'left-pane-switch';
        paneSwitch.textContent = '‹‹';

        var paneClosed = false;

        function closePane() {
            document.body.classList.add('left-pane-closed');
            paneSwitch.textContent = '››';
            paneClosed = true;
        }

        function openPane() {
            document.body.classList.remove('left-pane-closed');
            paneSwitch.textContent = '‹‹';
            paneClosed = false;
        }

        paneSwitch.addEventListener('click', function () {
            if (!paneClosed) {
                closePane();
                mw.storage.set('LeftPane', '0');
            } else {
                openPane();
                mw.storage.set('LeftPane', '1');
            }
        });

        if (mw.storage.get('LeftPane') === '0') {
            closePane();
        }

        var mwHead = document.getElementById('mw-head');
        if (mwHead) {
            mwHead.appendChild(paneSwitch);
        }
    });
});

// </nowiki>