Utilisateur:Dr Brains/NavigationBistro.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.
/* jshint laxbreak: true */
/* globals mw, $ */

if((mw.config.get('wgPageName').indexOf('Wikipédia:Le_Bistro/')!=-1)&&(mw.config.get('wgAction')=="view")){
    mw.loader.addStyleTag(
        '.Navigation_Bistro {'
        +'margin:0.5em 0;'
        +'padding-left:1em;'
        +'padding-right:1em;'
        +'border:1px solid silver;'
        +'}'
    );
    mw.loader.using('mediawiki.util', function () {
        $(NavigationBistro);
    });
}

function NavigationBistro($){
    var Content = document.getElementById('mw-content-text');
    if(!Content) return;

    var FirstTable = Content.getElementsByTagName('table')[0];
    if(!FirstTable) return;
    var SelfLink = FirstTable.getElementsByClassName('mw-selflink')[0];
    if(!SelfLink) return;
    var CurrentPage = SelfLink.parentNode;
    if(CurrentPage.tagName!='TD') return;

    var PreviousLink;
    var NextLink;
    var TDs = FirstTable.getElementsByTagName('td');
    var TDsLength = TDs.length;
    for(var b=0;b<TDsLength;b++){
        if(TDs[b] == CurrentPage){
            var Curseur, Link;
            for(Curseur=b-1;Curseur>=0;Curseur--){
                Link = TDs[Curseur].getElementsByTagName('a')[0];
                if(Link && Link.href.indexOf('#')==-1){
                    PreviousLink = Link;
                    break;
                }
            }
            for(Curseur=b+1;Curseur<TDsLength;Curseur++){
                Link = TDs[Curseur].getElementsByTagName('a')[0];
                if(Link && Link.href.indexOf('#')==-1){
                    NextLink = Link;
                    break;
                }
            }
            break;
        }
    }
    if(!PreviousLink||!NextLink){
        return;
    }

    var PreviousPageHref = PreviousLink.href;
    var PreviousPageTitle = PreviousLink.title;

    var NextPageHref = NextLink.href;
    var NextPageTitle = NextLink.title;

    var CurrentPageHref = mw.util.getUrl();
    var CurrentPageTitle = mw.config.get('wgPageName').replace(/_/g, ' ');

    var LinksHTML = '<div style="overflow:auto;" class="noprint">'
                   +'<span style="float:left;">'
                   +'<a href="'+mw.html.escape(PreviousPageHref)+'" title="'+mw.html.escape(PreviousPageTitle)+'">'
                   +'<img src="https://upload.wikimedia.org/wikipedia/commons/1/16/Crystal_Clear_action_2leftarrow.png" height="50" width="50" alt="Page '+mw.html.escape(PreviousPageTitle)+'" />'
                   +'</a>'
                   +'</span>'
                   +'<span style="float:right;">'
                   +'<a href="'+mw.html.escape(NextPageHref)+'" title="'+mw.html.escape(NextPageTitle)+'">'
                   +'<img src="https://upload.wikimedia.org/wikipedia/commons/4/45/Crystal_Clear_action_2rightarrow.png" height="50" width="50" alt="'+mw.html.escape(NextPageTitle)+'" />'
                   +'</a>'
                   +'</span>'
                   +'<center>'
                   +'<a href="'+mw.html.escape(CurrentPageHref)+'" title="'+mw.html.escape(CurrentPageTitle)+'">'
                   +'<img src="https://upload.wikimedia.org/wikipedia/commons/2/2c/Crystal_Clear_action_1uparrow.png" height="50" width="50" alt="Page '+mw.html.escape(CurrentPageTitle)+'" />'
                   +'</a>'
                   +'</center>'
                   +'</div>';

    var Titre = document.getElementsByClassName('mw-first-heading')[0];
    if(Titre){
        var NavigDivTop = document.createElement('div');
        NavigDivTop.className = "Navigation_Bistro";
        NavigDivTop.innerHTML = LinksHTML;
        Titre.parentNode.insertBefore(NavigDivTop, Titre);
    }

    var Printfooter = document.getElementsByClassName('printfooter')[0];
    if(Printfooter){
        var NavigDivBottom = document.createElement('div');
        NavigDivBottom.className = "Navigation_Bistro";
        NavigDivBottom.innerHTML = LinksHTML;
        Printfooter.parentNode.insertBefore(NavigDivBottom, Printfooter);
    }
}