Aller au contenu

Utilisateur:Alphos/abuseFilterHelper.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.
/*
abusefilterhelp.js
Author : [[fr:w:User:Alphos]]
*/

window.toggleAbuseFilterPatternDisplay = function (a) {
    var abfPatternContentId = "abf-filterinfo-" + a + "-patterncontent";
    var abfPatternContent = document.getElementById(abfPatternContentId);
    if (abfPatternContent) {
        if (abfPatternContent.style.display == "none") {
            abfPatternContent.style.display = "inline";
        } else {
            abfPatternContent.style.display = "none";
        }
    }
    return true;
};

function getAbuseFilterInfo() {

    var abfLinkRegex = /^https:\/\/fr.wikipedia.org\/wiki\/Sp(é|%C3%A9|e)cial:(Filtre_antiabus|AbuseFilter)\/\d+$/;

    var api = new mw.Api();

    $("#mw-content-text").find("a").each(function (i, abflink) {
        if (!abfLinkRegex.test(abflink)) {
            return;
        }

        var abfFilterId = abflink.href.match(/\d+$/);

        api
            .get({
                action: 'query',
                list: 'abusefilters',
                abfstartid: abfFilterId,
                abflimit: 1,
                abfprop: 'id|description|pattern|hits',
                formatversion: 2,
            })
            .done(function (data) {
                var filter = data.query.abusefilters[0];

                // on vérifie qu'un filtre a été retourné et qu'il s'agit de celui voulu
                if (!filter || filter.id !== parseInt(abfFilterId)) {
                    return;
                }

                var abfFilterInfo = document.createElement('span');
                abfFilterInfo.id = "abf-filterinfo-" + i;
                abfFilterInfo.style.fontSize = ".85em";
                abfFilterInfo.innerHTML = " ";

                var abfFilterInfoDescr = document.createElement('span');
                abfFilterInfoDescr.id = "abf-filterinfo-" + i + "-descr";
                abfFilterInfoDescr.style.fontStyle = "italic";
                abfFilterInfoDescr.style.cursor = "help";
                abfFilterInfoDescr.title = filter.description;
                abfFilterInfoDescr.innerHTML = "descr";
                abfFilterInfo.appendChild(abfFilterInfoDescr);

                var abfFilterInfoPattern = document.createElement('span');
                abfFilterInfoPattern.id = "abf-filterinfo-" + i + "-pattern";
                abfFilterInfoPattern.innerHTML = " &bull; <span onclick=\"toggleAbuseFilterPatternDisplay(" + i + ");\" style=\"cursor:pointer\">règle</span>";
                abfFilterInfo.appendChild(abfFilterInfoPattern);

                var abfFilterInfoPatternContent = document.createElement('span');
                abfFilterInfoPatternContent.id = "abf-filterinfo-" + i + "-patterncontent";
                abfFilterInfoPatternContent.style.display = "none";
                abfFilterInfoPatternContent.style.fontSize = ".85em";
                abfFilterInfoPatternContent.style.color = "#888888";
                abfFilterInfoPatternContent.innerHTML = "&nbsp;: " + filter.pattern;
                abfFilterInfoPattern.appendChild(abfFilterInfoPatternContent);

                var abfFilterInfoHits = document.createElement('span');
                abfFilterInfoHits.id = "abf-filterinfo-" + i + "-hits";
                abfFilterInfoHits.innerHTML = " &bull; <a href=\"https://fr.wikipedia.org/w/index.php?title=Sp%C3%A9cial:Journal_du_filtre_antiabus&wpSearchFilter=" + abfFilterId + "\">" + filter.hits + "&nbsp;hits</a>";
                abfFilterInfo.appendChild(abfFilterInfoHits);

                var abfFilterInfoLinks = document.createElement('span');
                abfFilterInfoLinks.id = "abf-filterinfo-" + i + "-links";
                abfFilterInfoLinks.innerHTML = " &bull; <a href=\"https://fr.wikipedia.org/wiki/Sp%C3%A9cial:Filtre_antiabus/history/" + abfFilterId + "\" title=\"history\">h</a> &bull; " +
                "<a href=\"https://fr.wikipedia.org/wiki/Sp%C3%A9cial:Filtre_antiabus/test/" + abfFilterId + "\" title=\"test\">t</a>";
                abfFilterInfo.appendChild(abfFilterInfoLinks);

                abflink.parentNode.insertBefore(abfFilterInfo, abflink.nextSibling);
            });
    });
}

{
    let namespace = mw.config.get('wgNamespaceNumber');
    if (namespace === 4 || namespace === 5) {
        mw.loader.using('mediawiki.api', function () {
            $(function ($) {
                getAbuseFilterInfo();
            });
        });
    }
}