MediaWiki:Gadget-Tableau.js

Attention : Depuis MediaWiki 1.18 les pages se terminant avec l'extension .js ou .css sont interprétées comme des pages wiki ! En particulier les modèles (subst ou non) et les liens. Vous devez donc migrer le code source et effectuer vos changements en évitant ces éléments de syntaxe wiki (peu importe leurs emplacements dans le code source : commentaire, chaine) :

  • Double accolades ouvrantes (en particulier avec subst:) : séparer les deux accolades "{"+"{" du reste de la chaine
  • Double crochets ouvrants : même technique de séparation.
  • Signature (tildes ~ multiples) : même technique de séparation.

Note : après avoir enregistré vos préférences, vous devrez attendre que le serveur mette à jour la feuille de style globale avant de forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
  • Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
  • Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
  • Konqueror : Cliquez sur Actualiser ou pressez F5 ;
  • Opera : Videz le cache dans Outils → Préférences.
wgfrwikibooks_Gadget_TableauJsVersion = "20200518001";
///////////////////////////////////////////////////
// Générateur de tableaux                        //
// --------------------------------------------- //
// Le code original est ici sur fr.wikibooks.org //
// --------------------------------------------- //
// Modifications :              Auteurs :        //
// - version initiale           - Dake (w:fr)    //
// - corrections diverses       - DavidL (b:fr)  //
// - ajout d'options et RyCx    - DavidL (b:fr)  //
///////////////////////////////////////////////////

// Remarques :
//   - Le texte par défaut des cellules (entêteRh1Ch2 par exemple) ne doit comporter
//     aucun autre caractère que des lettres ou chiffres afin de pouvoir sélectionner
//     tout ce texte facilement par double-clic pour le remplacer par le véritable texte.

function generateRowHeader(nbHCol, row_i)
{
    var code = "";
    for (var i=0;i<nbHCol;i++)
        code += "! entêteR"+row_i+"Ch"+(i+1)+"\n";
    return code;
}

/**
 * Générateur de tableaux
 * @author: fr:user:dake, fr:user:DavidL
 * @version: 0.3
 */
function generateTableau(nbCol, nbRow, nbHCol, nbHRow, border, styleHeader, styleLine, arrayTitle)
{
    var code = "\n{| " +
        (  styleLine==1 ? 'class="altlines1'+((styleHeader==1) ? ' wikitable"' : '"') :
            ((styleHeader==1) ? 'class="wikitable"' : '')  )
        +
        ' border="' + border + '"\n'+(arrayTitle.length>0?'|+ '+arrayTitle+'\n':'');

    for (var y=0;y<nbHRow;y++)
    {
        var y_coord = 'h'+(y+1);
        if (y>0) code += '|-----\n';
        code += generateRowHeader(nbHCol, y_coord);
        for (var i=0;i<nbCol;i++)
        {
            code += '! entêteR'+y_coord+'C'+(i+1)+'\n';
        }
    }

    for (var j=0;j<nbRow;j++)
    {
        var y_coord = (j+1);
        code += '|-\n';
        code += generateRowHeader(nbHCol, y_coord);
        for (var i=0;i<nbCol;i++)
        {
            code += '| élémentR'+y_coord+'C'+(i+1)+'\n';
        }
    }

    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','width=550,height=300');

    popup.document.write(
        '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'+
        '<title>Table Unicode</title><script type="text\/javascript">'+
        '\nwgBreakFrames=1;\nvar stylepath = "'+stylepath+'";\nvar wgContentLanguage = "'+wgContentLanguage+'";\n</script>'+
        '<script type="text\/javascript" src="'+stylepath+'\/common\/wikibits.js"><!-- wikibits js --><\/script>'+
        '<style type="text\/css" media="screen,projection">/*<![CDATA[*/ @import "'+stylepath+'\/monobook\/main.css"; /*]]>*/<\/style>'+
        '<style type="text\/css">body, td { font-size: 12pt; }<\/style>'+
        '<script type="text\/javascript">function insertCode(){'+
        'window.opener.generateTableau('+
            'parseInt(document.paramForm.inputCol.value),'+
            'parseInt(document.paramForm.inputRow.value),'+
            'parseInt(document.paramForm.inputColHeader.value),'+
            'parseInt(document.paramForm.inputRowHeader.value),'+
            'parseInt(document.paramForm.inputBorder.value),'+
            'document.paramForm.inputHeader.checked,'+
            'document.paramForm.inputLine.checked,'+
            'document.paramForm.arrayTitle.value);'+
        '}<\/script>'+
        '</head><body>'+
        '<p>Veuillez entrer les paramètres du tableau : </p>'+
        '<form name="paramForm"><table>'+
        '<tr><td>Paramètres</td><td>En-tête</td><td>Normal</td></tr>'+
        '<tr><td>Lignes :</td><td><input type="text" name="inputRowHeader" value="1" title="Nombre de lignes d\'en-tête"></td>'+
        '<td><input type="text" name="inputRow" value="3" ></td></tr>'+
        '<tr><td>Colonnes :</td><td><input type="text" name="inputColHeader" value="0" title="Nombre de colonnes d\'en-tête"></td>'+
        '<td><input type="text" name="inputCol" value="3" ></td></tr>'+
        '<tr><td>Largeur de la bordure :</td><td colspan="2"><input type="text" name="inputBorder" value="1" ></td></tr>'+
        '<tr><td colspan="3">Titre du tableau :<input type="text" name="arrayTitle" value="" size="40" style="width:400px;"></td></tr>'+
        '<tr><td colspan="2"><input type="checkbox" id="inputHeader" name="inputHeader" checked="1" >'+
        ' <label for="inputHeader">En-tête en gris (style « charte graphique »)</label></td></tr>'+
        '<tr><td colspan="2"><input type="checkbox" id="inputLine" name="inputLine" checked="1" >'+
        ' <label for="inputLine">Lignes grises alternées (style « charte graphique »)</td></tr>'+
        '<tr><td><input type="button" onclick="insertCode()" value="Insérer" title="Insérer le code wiki dans la fenêtre d\'édition"></td>'+
        '<td><input type="button" onclick="javascript:self.close()" value="Fermer"></td></tr>'+
        '</table></form">'+
        '</body></html>');
    popup.document.close();
}

//Ressemble à la fonction de /w/skins/common/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 = url_wpcm+'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);
}

if (!wgIsScriptPage) // pas sur une page de script (*.js, *.css)
    $(marqueTab);