MediaWiki:JSScripts/CollapsePortlet

/*

Ce script permet de montrer et cacher les boîtes de liens sur le coté des pages.

Utilisation

Dans votre script monobook.js :

  1. Créez éventuellement un tableau contenant les identifiants des boîtes à cacher par défaut :
    var collapsed_porlets=["p-lang"];
  2. Ajoutez la ligne de code suivante :
    obtenir("CollapsePorlet");

Compatibilité

Si l'extension MediaWiki:JSScripts/Sidebox est également utilisée, l'appel à obtenir("CollapsePorlet"); doit se faire après l'appel à obtenir("Sidebox");.

Exemple de script

var collapsed_porlets=["p-lang"];
obtenir("CollapsePorlet");

Source

 */

/***********************************/

function portletSwitch(idnode)
{
  var node=document.getElementById("body"+idnode);
  var opened = (node.style.display == "none");
  node.style.display = opened ? "block" : "none";

  node=document.getElementById("l"+idnode);
  node.firstChild.data = opened?"▲":"▼";

  return false;
}

var anon_id=0;
function collapsePortlet(node)
{
    var name=node.getAttribute("id") || ""+(++anon_id);

    var opened = 1;
    for(var i in collapsed_porlets)
        if (collapsed_porlets[i]===name) {opened=0;break;}

    var alink=document.createElement("a");
    alink.setAttribute("id","l"+name);
    alink.setAttribute("href","#");
    alink.setAttribute("onclick","return portletSwitch('"+name+"');");
    if (document.all)
    { alink.onclick = function(){return portletSwitch(name);} }
    alink.appendChild(document.createTextNode(opened?"▲":"▼"));
    for ( var PChild = node.firstChild;
              PChild != null;
              PChild = PChild.nextSibling )
        if ( hasClass(PChild,'pBody') )
        {
            PChild.setAttribute("id","body"+name);
            if (!opened) PChild.style.display = 'none';
        }
        else if ( equalsAa(PChild.nodeName,"h5") )
        {
            PChild.setAttribute("id","t"+name);
            PChild.appendChild(alink);
        }
}

if ( typeof ( collapsed_porlets ) == "undefined" )
    collapsed_porlets=[]; /* Par défaut */

function collapsePortlets()
{
    var portlets = document.getElementsByTagName("div");
    for(i=0;i<portlets.length;i++)
        if (hasClass(portlets[i], "portlet"))
            collapsePortlet(portlets[i]);
}

addOnloadHook(collapsePortlets);

/***********************************/
/*

*/