MediaWiki:JSScripts/Sidebox

/*

Ce script permet d'ajouter de nouvelles boîtes de liens sur le coté des pages.

Utilisation

Dans votre script monobook.js :

  1. Ajoutez la ligne de code suivante :
    obtenir("Sidebox");
  2. Créez une fonction de configuration pour cette extension :
    function maBoite()
    {
    ...
    }
    addSetup("Sidebox",maBoite);
  3. Dans cette fonction, créez la boîte en appelant la fonction createLinkbox en lui attribuant un identifiant unique, un titre, et un prefixe unique.
    • Exemple :
      var mybox = createLinkbox("MYBOX","Ma boîte","mb");
      
  4. Ajoutez les liens en appelant les méthodes de l'objet retourné :
    addLink(id_suffix, text, title, url, akey)
    Ajouter un lien.
    addWikiLink(id_suffix, text, title, url, akey)
    Ajouter un lien wiki.
    Exemple :
mybox.addWikiLink('random', 'Une page au hasard',
    'Afficher une page au hasard', 'Special:Random', 'x');

Les paramètres sont :

id_suffix
Identifiant unique pour le lien,
text
Texte du lien,
title
Texte affiché au survol du lien,
url
URL,
akey
Touche d'accès, ex: 'x'.

Exemple de script

obtenir("Sidebox");

function maBoite()
{
    var mybox = createLinkbox("MYBOX","Ma boîte","mb");

    mybox.addWikiLink('random', 'Une page au hasard',
        'Afficher une page au hasard', 'Special:Random', 'x');
}
addSetup("Sidebox",maBoite);

Source

 */

/***********************************/
/* Boîte de liens (auteur: DavidL) */
/***********************************/

var linkboxes=[];
function createLinkbox(id,title,idliprefix)
{
    var node=document.createElement("div");
    node.setAttribute("id",id);
    node.setAttribute("title",title);
    node.setAttribute("class","portlet");
    node.setAttribute("className","portlet");

    var titlenode=document.createElement("h5");
    titlenode.appendChild(document.createTextNode(title));
    node.appendChild(titlenode);

    var bodynode=document.createElement("div");
    bodynode.setAttribute("class","pBody");
    bodynode.setAttribute("className","pBody");
    node.appendChild(bodynode);

    var ulnode=document.createElement("ul");
    bodynode.appendChild(ulnode);

    var linkbox={ "node": node, "ulnode": ulnode, "idliprefix": idliprefix,
        "addLink": function(id_suffix, text, title, url, akey)
            {
                var linode = document.createElement("li");
                node.setAttribute("id",this.idliprefix+"-"+id_suffix);
                var link = document.createElement("a");
                link.setAttribute("href", url);
                if (akey)
                {
                    title+=" ["+akey+"]";
                    link.setAttribute("accesskey", akey);
                }
                link.setAttribute("title", title);
                link.appendChild( document.createTextNode( text ) );
                linode.appendChild(link);
                this.ulnode.appendChild(linode);
            },
        "addWikiLink": function(id_suffix, text, title, url, akey)
            {this.addLink(id_suffix, text, title, wgArticlePath.replace("$1", url.replace("?", "%3F")), akey);}
        };
    linkboxes.push(linkbox);
    return linkbox;
}
function openLinkboxes()
{
    if (linkboxes.length>0)
    {
        var tc=document.getElementById("column-one");
        if (tc==null) return;
        for(var i in linkboxes)
        {
            var t=linkboxes[i];
            tc.appendChild(t.node);
        }
    }
    linkboxes=[];
}
$(openLinkboxes);
doSetup("Sidebox");

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

*/