Utilisateur:MonsieurChocolat/vector.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) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.mw.loader.using('mediawiki.util', function () {
// {{Catégorisation JS|VerifHomon}}
$(function(){
mw.util.addPortletLink('p-tb', 'javascript:verifierHomonymies_init();', 'Vérif. homonymies', 't-homon', "Vérifier les liens de cette page menant vers des pages d'homonymie");
});
var verifierHomonymies_goodLinks = new Array();
var verifierHomonymies_compteurHomon = 0;
function verifierHomonymies_init(){
var Content = document.getElementById('bodyContent'); // monobook, chick, myskin, simple, vector
if(!Content) Content = document.getElementById('mw_contentholder'); //modern
if(!Content) Content = document.getElementById('article'); // cologneblue, nostalgia, standard
if(!Content) return;
var allLinks = Content.getElementsByTagName('a');
for (i=0; i<allLinks.length; i++){
if (!(!allLinks[i].href || $(allLinks[i].parentNode).hasClass('editsection') || $(allLinks[i].parentNode).hasClass('cachelinks') || $(allLinks[i]).hasClass('noprint') || $(allLinks[i]).hasClass('external') || allLinks[i].href.indexOf('javascript:') == 0 || allLinks[i].className == 'new' || allLinks[i].className == 'image' || allLinks[i].parentNode.parentNode.id == 'mw-normal-catlinks' || allLinks[i].parentNode.id == 'mw-normal-catlinks' || allLinks[i].href == mw.config.get('wgServer')+'/wiki/'+encodeURI(mw.config.get('wgPageName')) || allLinks[i].href.indexOf(mw.config.get('wgServer')+'/wiki/'+encodeURI(mw.config.get('wgPageName'))+'#') == 0 || allLinks[i].parentNode.className == 'subpages' || allLinks[i].parentNode.id == 'contentSub' )) {
verifierHomonymies_goodLinks.push(allLinks[i]);
}
}
if (!confirm(verifierHomonymies_goodLinks.length + " liens vont être analysés.")) return;
verifierHomonymies_getTemplates();
}
function verifierHomonymies_getTemplates(){
var Templates = new Array();
var Aj = new XMLHttpRequest();
Aj.open('GET', mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&prop=links&pllimit=499&titles=MediaWiki:Disambiguationspage', true);
Aj.onreadystatechange = function() {
if (Aj.readyState != 4 || Aj.status != 200) return;
var AllLinks = Aj.responseXML.documentElement.getElementsByTagName('pl');
for(var a=0,l=AllLinks.length;a<l;a++){
Templates.push(AllLinks[a].getAttribute("title"));
}
verifierHomonymies(Templates, 0);
}
Aj.send(null);
}
function verifierHomonymies(Templates, position, TlContinue) {
if(!position) position=0;
if(!TlContinue) TlContinue="";
var tempLink = verifierHomonymies_goodLinks[position];
if(!tempLink){
verifierHomonymies_Msg();
return;
}
var tempTitle = tempLink.title;
var Aj = new XMLHttpRequest();
Aj.open('GET', mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&prop=templates&redirects&format=xml&tllimit=499&titles=' + encodeURIComponent(tempTitle).replace(/&/g, "%26") + TlContinue, true);
Aj.onreadystatechange = function() {
if (Aj.readyState != 4 || Aj.status != 200) return;
var FoundHomon = false;
verifierHomonymies_goodLinks[position].style.backgroundColor = '#C8FFC8';
var Alltemplates = Aj.responseXML.documentElement.getElementsByTagName('tl');
for (j=0; j<Alltemplates.length; j++){
var ThisTemplate = Alltemplates[j].getAttribute("title");
if (Templates.indexOf(ThisTemplate)!=-1){
FoundHomon = true;
verifierHomonymies_goodLinks[position].style.backgroundColor = '#FFCCCC';
verifierHomonymies_compteurHomon++;
break;
}
}
var QueryContinue = Aj.responseXML.documentElement.getElementsByTagName('query-continue')[0];
if(!FoundHomon && QueryContinue){
var NewTlContinue = "&tlcontinue=" + QueryContinue.firstChild.getAttribute("tlcontinue").replace(/&/g, "%26");
verifierHomonymies(Templates, position, NewTlContinue);
}else{
verifierHomonymies(Templates, (position+1));
}
}
Aj.send(null);
}
function verifierHomonymies_Msg(){
// Message de fin.
var msg = "";
if (verifierHomonymies_compteurHomon == 0)
msg = "Aucun lien vers une page d’homonymie n’a été trouvé.";
else if (verifierHomonymies_compteurHomon == 1)
msg = "Un lien vers une page d’homonymie a été trouvé.";
else
msg = verifierHomonymies_compteurHomon + " liens vers des pages d’homonymie ont été trouvés.";
alert(msg);
}
});