Aller au contenu

MediaWiki:JSScripts/Tableau

Un livre de Wikilivres.

/*

Ce script ajoute un bouton pour la création de tableaux. Ce bouton ouvre une nouvelle fenêtre pour entrer les paramètres du tableau et insérer le code wiki correspondant.

Utilisation

Ajoutez la ligne suivante dans votre monobook.js :

obtenir('Tableau');

Source

*/

/**
 * Générateur de tableaux
 * @author: fr:user:dake, fr:user:DavidL
 * @version: 0.2
 */
function generateTableau(nbCol, nbRow, border, styleHeader, styleLine) {

    var code = "\n{| " +
        ((styleHeader==1) ? 'class="wikitable"' : '')+
        ' border="' + border + '"\n|+ Titre du tableau\n';

    var elements = "";
    for (var i=0;i<nbCol;i++) {
        code += '! en-tête ' + i + '\n';
        elements += '| élément\n';
    }

    for (var j=0;j<nbRow;j++)
        code += ( (j%2==1 && styleLine==1)
              ? '|-{'+'{ligne grise}'+'}\n'
              : '|-----\n'
            ) + elements ;

    code += '|}';
    insertTags('','', code); 
}

/**
 * English: Open a popup with parameters to generate an array. 
 * The number of rows/columns can be modified. Some additional
 * parameters are related to templates available on :fr
 *
 * @author: fr:user:dake, fr:user:DavidL
 * @version: 0.2
 */
function popupTableau() {
    var popup = window.open('','name','height=210,width=290');

    popup.document.write(
        '<html><head><title>Paramètres du tableau</title>' +
        '<script type="text\/javascript" src="\/skins-1.5\/common\/wikibits.js"><!-- wikibits js --><\/script>'+
        '<style type="text\/css" media="screen,projection">/*<![CDATA[*/ @import "\/skins-1.5\/monobook\/main.css?5"; /*]]>*/<\/style>'+
        '<script type="text\/javascript">function insertCode(){'+
        'window.opener.generateTableau('+
            'parseInt(document.paramForm.inputCol.value),'+
            'parseInt(document.paramForm.inputRow.value),'+
            'parseInt(document.paramForm.inputBorder.value),'+
            'document.paramForm.inputHeader.checked,'+
            'document.paramForm.inputLine.checked);'+
        '}<\/script>'+
        '</head><body>'+
        '<p>Veuillez entrer les paramètres du tableau : </p>'+
        '<form name="paramForm">'+
        'Nombre de lignes : <input type="text" name="inputRow" value="3" ><p>'+
        'Nombre de colonnes : <input type="text" name="inputCol" value="3" ><p>'+
        'Largeur de la bordure : <input type="text" name="inputBorder" value="1" ><p>'+
        'En-tête en gris (style « charte graphique ») : <input type="checkbox" name="inputHeader" checked="1" ><p>'+
        'Lignes grises alternées (style « charte graphique ») : <input type="checkbox" name="inputLine" checked="1" ><p>'+
        '</form">'+
        '<p><a href="javascript:insertCode()"> Insérer le code dans la fenêtre d\'édition</a></p>'+
        '<p><a href="javascript:self.close()"> Fermer</a></p>'+
        '</body></html>');
    popup.document.close();
}

//Ressemble à la fonction de /skins-1.5/commons/wikibits.js pour insérer un autre lien que insertTags
function marqueTab() {
    var toolbar = document.getElementById('toolbar');
    if (!toolbar) return false;

    var textbox = document.getElementById('wpTextbox1');

    if (!textbox) return false;
 
    if (!document.selection && textbox.selectionStart == null) return false;
 
    var image = document.createElement("img");
    image.width = 23;
    image.height = 22;
    image.src = '//upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png';
    image.border = 0;
    image.alt = 'Tableau';
    image.title = 'Tableau';
    image.style.cursor = "pointer";
    image.onclick = function() {
        popupTableau();
        return false;
    }
    toolbar.appendChild(image);
}

addOnloadHook(marqueTab);
//