Aller au contenu

Utilisateur:Alexisdepris/Mes scripts/NoDetectSource.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) ;

Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
// NoSource.js

(function ($) {
    function addRedBorderToLink(link) {
        $(link).css({
            'border': '3px solid red',
            'padding': '2px 5px',
            'border-radius': '3px'
        });
    }

    function processPageContent(data, link) {
        if (data && data.parse && data.parse.wikitext) {
            const content = data.parse.wikitext['*'];

            if (isSansSource(content)) {
                addRedBorderToLink(link);
            }
        }
    }

    function getPageContent(title, link) {
        const apiEndpoint = mw.util.wikiScript('api');
        const requestData = {
            action: "parse",
            page: title,
            format: "json",
            prop: "wikitext"
        };

        $.getJSON(apiEndpoint, requestData)
            .done(function (data) {
                processPageContent(data, link);
            })
            .fail(function (error) {
                console.error(`Error fetching page content for ${title}:`, error);
            });
    }

    function isSansSource(content) {
        return /\{\{Sans\s+source/i.test(content);
    }

    function addBorders() {
        const $links = $("#mw-content-text a[href^='/wiki/']");

        $links.each(function () {
            const title = $(this).attr('title');
            if (title) {
                getPageContent(title, this);
            }
        });
    }

    $(document).ready(function () {
        const conditionsMet = (
            mw.config.get("wgCanonicalNamespace") === "" &&
            mw.config.get('wgAction') === 'view' &&
            !mw.config.get('wgDiffOldId') &&
            mw.config.get('wgArticleId') &&
            !$('html').hasClass('ve-active')
        );

        if (conditionsMet) {
            addBorders();
        }
    });

})(jQuery);