Utilisateur:Alphos/abuseFilterHelper2.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./*
abuseFilterHelper2.js
Author : [[fr:w:User:Alphos]]
*/
function toggleAbuseFilterPatternDisplay(a) {
var abf2PatternContentId = "abf-filterinfo-" + a + "-patterncontent";
var abf2PatternContent = document.getElementById(abf2PatternContentId);
if (abf2PatternContent) {
if (abf2PatternContent.style.display == "none") { abf2PatternContent.style.display = "inline"; }
else { abf2PatternContent.style.display = "none"; }
}
return true;
}
function addAbuseFilterTrigger() {
if (mw.config.get('wgNamespaceNumber') < 1) { return false; }
var abf2links = document.getElementById("content").getElementsByTagName("a");
var abf2length = abf2links.length;
var abf2LinkRegex = /(https?:)?\/\/fr.wiki.x.io\/wiki\/Sp(é|%C3%A9|e)cial:(Filtre_antiabus|AbuseFilter)\/\d+$/
for (i=0 ; i < abf2length ; i++) {
if (abf2LinkRegex.test(abf2links[i])) {
var abf2FilterId = abf2links[i].getAttribute("href").match(/\d+$/);
if (window.addEventListener) { abf2links[i].addEventListener("mouseover",getAbuseFilterInfo,false); }
else if (window.attachEvent) { abf2links[i].attachEvent("onmouseover",getAbuseFilterInfo); }
abf2links[i].id = "abf-filterlink-" + i;
}
}
return true;
}
function getAbuseFilterInfo() {
if (window.XMLHttpRequest) {
xhttp=new XMLHttpRequest();
}
else {
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var abf2FilterLinkId = this.id.match(/\d+$/);//id html
var abf2FilterInfoCheck = document.getElementById("abf-filterinfo-" + abf2FilterLinkId);
if (abf2FilterInfoCheck) {
if (document.getElementById("abf-filterinfo-" + abf2FilterLinkId).style.display == "none") {
document.getElementById("abf-filterinfo-" + abf2FilterLinkId).style.display = "inline";
document.getElementById("abf-filterlink-" + abf2FilterLinkId).removeEventListener("mouseover",getAbuseFilterInfo,false);
}
else {
document.getElementById("abf-filterinfo-" + abf2FilterLinkId).style.display = "none";
document.getElementById("abf-filterlink-" + abf2FilterLinkId).addEventListener("mouseover",getAbuseFilterInfo,false);
}
return true;
}
var abf2FilterHref = this.getAttribute("href");
var abf2FilterId = abf2FilterHref.match(/\d+$/);
xhttp.open("GET","//fr.wiki.x.io/w/api.php?action=query&list=abusefilters&abflimit=1&abfprop=id|description|pattern|hits&format=xml&abfstartid=" + abf2FilterId,false);
xhttp.send("null");
var abf2APIXML = xhttp.responseXML;
var abf2XMLFilterId = abf2APIXML.getElementsByTagName('api')[0].getElementsByTagName('query')[0].getElementsByTagName('abusefilters')[0].getElementsByTagName('filter')[0].getAttribute('id');
if (abf2XMLFilterId == abf2FilterId) {
//obtention des infos à partir de l'API, si le filtre correspond bien
var abf2XMLDescr = abf2APIXML.getElementsByTagName('api')[0].getElementsByTagName('query')[0].getElementsByTagName('abusefilters')[0].getElementsByTagName('filter')[0].getAttribute('description');
var abf2XMLPattern = abf2APIXML.getElementsByTagName('api')[0].getElementsByTagName('query')[0].getElementsByTagName('abusefilters')[0].getElementsByTagName('filter')[0].getAttribute('pattern');
var abf2XMLHits = abf2APIXML.getElementsByTagName('api')[0].getElementsByTagName('query')[0].getElementsByTagName('abusefilters')[0].getElementsByTagName('filter')[0].getAttribute('hits');
var abf2FilterInfo = document.createElement('span');
abf2FilterInfo.id = "abf-filterinfo-" + abf2FilterLinkId;
abf2FilterInfo.style.fontSize = ".85em";
var abf2BullInitial = document.createElement('span');
abf2BullInitial.innerHTML = " • ";
abf2FilterInfo.appendChild(abf2BullInitial);
var abf2FilterInfoHide = document.createElement('span');
abf2FilterInfoHide.id = "abf-filterinfo-hide-" + abf2FilterLinkId;
abf2FilterInfoHide.innerHTML = "masquer";
abf2FilterInfoHide.title = "cliquer pour masquer les informations de ce filtre";
abf2FilterInfoHide.addEventListener("click",getAbuseFilterInfo,false);
abf2FilterInfo.appendChild(abf2FilterInfoHide);
var abf2FilterInfoDescr = document.createElement('span');
abf2FilterInfoDescr.id = "abf-filterinfo-" + abf2FilterLinkId + "-descr";
abf2FilterInfoDescr.style.fontStyle = "italic";
abf2FilterInfoDescr.title = abf2XMLDescr;
abf2FilterInfoDescr.innerHTML = " • descr";
abf2FilterInfo.appendChild(abf2FilterInfoDescr);
var abf2FilterInfoPattern = document.createElement('span');
abf2FilterInfoPattern.id = "abf-filterinfo-" + abf2FilterLinkId + "-pattern";
abf2FilterInfoPattern.innerHTML = " • <span onclick=\"toggleAbuseFilterPatternDisplay(" + abf2FilterLinkId + ");\">règle</span>";
abf2FilterInfo.appendChild(abf2FilterInfoPattern);
var abf2FilterInfoPatternContent = document.createElement('span');
abf2FilterInfoPatternContent.id = "abf-filterinfo-" + abf2FilterLinkId + "-patterncontent";
abf2FilterInfoPatternContent.style.display = "none";
abf2FilterInfoPatternContent.style.fontSize = ".85em";
abf2FilterInfoPatternContent.style.color = "#888888";
abf2FilterInfoPatternContent.innerHTML = " : " + abf2XMLPattern;
abf2FilterInfoPattern.appendChild(abf2FilterInfoPatternContent);
var abf2FilterInfoHits = document.createElement('span');
abf2FilterInfoHits.id = "abf-filterinfo-" + abf2FilterLinkId + "-hits";
abf2FilterInfoHits.innerHTML = " • <a href=\"//fr.wiki.x.io/w/index.php?title=Sp%C3%A9cial:Journal_du_filtre_antiabus&wpSearchFilter=" + abf2FilterId + "\">" + abf2XMLHits + " hits</a>";
abf2FilterInfo.appendChild(abf2FilterInfoHits);
var abf2FilterInfoLinks = document.createElement('span');
abf2FilterInfoLinks.id = "abf-filterinfo-" + abf2FilterLinkId + "-links";
abf2FilterInfoLinks.innerHTML = " • <a href=\"//fr.wiki.x.io/wiki/Sp%C3%A9cial:Filtre_antiabus/history/" + abf2FilterId + "\" title=\"history\">h</a> • " +
"<a href=\"//fr.wiki.x.io/wiki/Sp%C3%A9cial:Filtre_antiabus/test/" + abf2FilterId + "\" title=\"test\">t</a>";
abf2FilterInfo.appendChild(abf2FilterInfoLinks);
document.getElementById("abf-filterlink-" + abf2FilterLinkId).parentNode.insertBefore(abf2FilterInfo,document.getElementById("abf-filterlink-" + abf2FilterLinkId).nextSibling);
this.removeEventListener("mouseover",getAbuseFilterInfo,false);
}
return true;
}
$(addAbuseFilterTrigger);