MediaWiki:Gadget-CatsaGauche.js

Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/**
 * Catégories à Gauche
 *
 * Met les catégories dans un panneau de navigation
 *
 * Auteur : Jmfayard
 * Dernière révision : 7 décembre 2014
 * {{Catégorisation JS|CatsaGauche}}
 */

function CategoriesAGauche() {
    var catlinks = document.getElementById("catlinks");
    if (!catlinks) { return; }
    var categories = catlinks.getElementsByTagName("a") ;

    var h3_cats = document.createElement( "h3" );
    h3_cats.textContent = "Catégories";

    var div_cats = document.createElement( "div" );

    var ul = document.createElement( "ul" );
    var a_debut = 1 ; // évitons le lien Categories:
    var hiddenli = false;
    for (var i = a_debut ; i < categories.length ; i++ ) {
        var a = categories[i].cloneNode(1);
        if(a.id && a.id.indexOf("hotcat")!=-1) continue; // évitons les liens de hotcats
        var li = document.createElement( "li" ) ;
        if(hiddenli){
            li.className = "hiddencat";
            li.style.display = "none";
        }
        if(a.id === "mw-hidden-cats-link"){
            hiddenli = li;
	    a.onclick = function(){ CategoriesAGauche_toggleHiddenCats(this); };            
        }
        li.appendChild( a ) ;
        ul.appendChild( li );
    }
    div_cats.appendChild( ul ) ;

    var portlet = document.createElement( "div" ) ;
    portlet.setAttribute( "id", "p-cat" ) ;
    portlet.appendChild( h3_cats ) ;
    portlet.appendChild( div_cats ) ;

    var div_ptb = document.getElementById( "p-tb" );
    if (!div_ptb) { return; }
    portlet.setAttribute( "class", div_ptb.className );
    div_cats.setAttribute( "class", div_ptb.getElementsByTagName('div')[0].className );        
    div_ptb.parentNode.insertBefore( portlet, div_ptb);
}
 
function CategoriesAGauche_toggleHiddenCats(e) {
    var $pcats = $("#p-cat").find( 'li.hiddencat' );
    var link = e.target;
    var hidden = false;
    $pcats.each(function (_, li) {
        hidden = (li.style.display == "none");
        if(hidden){
            li.style.display = "";
        }else{
            li.style.display = "none";
        }
    });
    if(hidden){
        $(link).text('[–]');
    }else{
        $(link).text('[+]');
    }
}

$( CategoriesAGauche ) ;