MediaWiki:Gadget-LiensRouges.js

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.
/**
 * Liens rouges
 *
 * Ajoute deux liens vers [http://www.google.com/search?num=100&q=page+site:fr.wikipedia.org Google] et les [[Special:Whatlinkshere/page|pages liées]] aux liens rouges pour trouver rapidement un titre approchant
 *   ou vérifier si le titre est (très) demandé.
 * Par défaut, le script ne s'exécute automatiquement qu'en prévisualisation dans l'espace principal (articles encyclopédiques)
 *   et un lien dans la boîte à outils permet de l'exécuter ailleurs.
 * Les conditions d'ouverture sont personnalisables.
 *
 * Exemple : [[page]]<sup class="exposant plainlinks">([http://www.google.com/search?num=100&q=page+site:fr.wikipedia.org gg]|[[Special:Whatlinkshere/page|pl]])</sup>
 *
 * Auteurs : Seb35, Dake
 *
 * Dernière révision : 19 mai 2007
 * {{Catégorisation JS|LiensRouges}}
 */

/* jshint laxbreak: true */
/* globals mw, $ */

////////////////////// ZONE PERSONNALISABLE //////////////////////

// Le script est automatiquement lancé si l'espace de nom ''et'' l'action sont dans les variables suivantes
if ( typeof liensRougesNSOuvrir === 'undefined' ) var liensRougesNSOuvrir = [ 0 ];
if ( typeof liensRougesActionOuvrir === 'undefined' ) var liensRougesActionOuvrir = [ 'submit' ];

// Les liens pointant vers les espaces de nom suivants ne sont jamais traités
if ( typeof liensRougesNSExclus === 'undefined' ) var liensRougesNSExclus = 'Discussion|Discussion .+';

///////////////// FIN DE LA ZONE PERSONNALISABLE /////////////////

if ( mw.config.get( 'wgNamespaceNumber' ) !== -1 ) {
    $.when( mw.loader.using( 'mediawiki.util' ), $.ready ).then( function () {
        'use strict';

        var node = mw.util.addPortletLink( 'p-tb', '#', 'Liens rouges', null, 'Afficher des liens utiles sur les liens rouges' );
        $( node ).click( function ( e ) {
            e.preventDefault();
            processLinks();
        } );

        if ( liensRougesNSOuvrir.indexOf( mw.config.get( 'wgNamespaceNumber' ) ) !== -1
        && liensRougesActionOuvrir.indexOf( mw.config.get( 'wgAction' ) ) !== -1 ) {
            processLinks();
        }

        function processLinks() {
            var allLinks = document.getElementById( 'mw-content-text' ).getElementsByTagName( 'a' );
            var regexNSExclus = new RegExp( '^(' + liensRougesNSExclus + '):', 'i' );
            for ( var i = 0, l = allLinks.length; i < l; i++ ) {
                var link = allLinks[ i ];
                if ( link.classList.contains( 'new' ) ) {
                    var titre;
                    try {
                        titre = new URL( link.href ).searchParams.get( 'title' ).replace( /_/g, ' ' );
                    } catch ( e ) {
                    }
                    if ( !titre ) {
                        titre = link.textContent;
                    }
                    if ( regexNSExclus.test( titre ) ) {
                        continue;
                    }
                    var newElement = document.createElement( 'sup' );
                    newElement.className = 'exposant';
                    newElement.innerHTML = ''
                                         + '(<a href="https://www.google.com/search?num=100&q=' + encodeURIComponent( titre ) + '+site:fr.wikipedia.org" title="Rechercher sur Google ce lien rouge">gg</a>'
                                         + '|<a href="' + mw.util.getUrl( 'Special:Whatlinkshere/' + titre ) + '" title="Pages liées de ce lien rouge">pl</a>)';
                    link.parentNode.insertBefore( newElement, link.nextSibling );
                }
            }
        }
    } );
}