Utilisateur:KompoZer/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[modifier | modifier le wikicode]

Ajoutez la ligne suivante dans votre monobook.js :

obtenir('Tableau');

Source[modifier | modifier le wikicode]

*/

/**
 * 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=400,width=500');

    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 = 'http://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);
//