Utilisateur:Od1n/Codes modèles siècles.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function () {

    var modeles = ['S', 'S-', '-s', '-s-', 'Sav', 'Sav-', 'Sap', 'S mini', 'S mini-', '-s mini', '-s mini-', 'S2', 'S2-', '-s2', '-s2-', 'Sp', 'Sp-', '-sp', '-sp-', 'Spa'];

    var nsModeles = modeles.map(function (name) {
        return 'Modèle:' + name;
    });

    var contents = {};

    new mw.Api()
        .get({
            action: 'query',
            titles: nsModeles,
            prop: 'revisions',
            rvprop: 'content',
            formatversion: 2,
        })
        .done(function (data) {
            data.query.pages.forEach(function (page) {

                var content = page.revisions[0].content
                    .replace(/^<includeonly>/, '')
                    .replace(/(<!--\n\n-->)?<\/includeonly><noinclude>\n?\{\{Documentation\}\}\n?<\/noinclude>$/, '');

                contents[page.title] = content;
            });

            $(render);
        });

    function render($) {

        var $output = $('<div>');

        nsModeles.forEach(function (title) {

            var $link = $('<a>')
                .attr('href', mw.util.getUrl(title))
                .text(title.replace(/^Modèle:/, ''));

            var $h4 = $('<h4>').append($link);
            var $pre = $('<pre>').text(contents[title]);

            $output.append($h4, $pre);
        });

        var placeholder = $('#codes-modeles-siecles');

        if (placeholder.length) {
            placeholder.append($output);
        } else {
            $('#mw-content-text').prepend($output);
        }
    }

});