Utilisateur:Maloq/LTOS.js
Apparence
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.//Link To Other nameSpace
if(mw.config.get('wgUserName') == 'Maloq')
{
if (mw.config.get('wgTitle') == "Maloq/LTOS" && mw.config.get('wgAction') == "view")
{
//constante pour les messages
var LTOS_END = 0
var LTOS_START = 1
var LTOS_EMPTY_LIST = 2
var LTOS_DOMPARSER_FAILURE = 3
var LTOS_CANT_EXTRACT_PAGENAME_FROM_HREF = 4
var LTOS_list
$(LTOS_launch);
}
}
function LTOS_launch()
{
var req=new XMLHttpRequest()
document.getElementById('contentSub').style.whiteSpace='nowrap'
req.onreadystatechange = function()
{
if(req.readyState == 4)
if(req.status==200)
LTOS_solve(req.responseText)
}
req.open("GET","/w/index.php?title=Special:CrossNamespaceLinks&limit=5000&offset=0", true)
req.send(null)
}
function LTOS_getAnchorPage(Page)
{
var a = document.createElement('a')
a.textContent = Page
a.href = "/w/index.php?title=" + encodeURIComponent(Page)
return a
}
function LTOS_getAnchorPageEdit(Page)
{
var a = document.createElement('a')
a.textContent = "edit"
a.href = "/w/index.php?title=" + encodeURIComponent(Page) & "&action=edit"
return a
}
function LTOS_newMessage(type, args)
{
var div = document.getElementById('contentSub')
switch(type)
{
case (LTOS_DOMPARSER_FAILURE):
{
div.appendChild(document.createTextNode('erreur lors du parsing de la page source'))
break
}
case (LTOS_EMPTY_LIST):
{
div.appendChild(document.createTextNode('liste de double redirection vide'))
break
}
case (LTOS_START):
{
div.appendChild(document.createTextNode('Job commencé:' + LTOS_list.length + " à traiter"))
break
}
case (LTOS_END):
{
div.appendChild(document.createTextNode('Job fini!'))
break
}
case (LTOS_CANT_EXTRACT_PAGENAME_FROM_HREF):
{
div.appendChild(document.createTextNode(args.i + ": href bizzare: "))
div.appendChild(LTOS_getAnchorPage(args.anchor.cloneNode(true)))
break
}
case (LTOS_SUCCESS):
{
div.appendChild(document.createTextNode(args.i + ": "))
div.appendChild(LTOS_getAnchorPage(args.target))
div.appendChild(document.createTextNode(" a un lien vers "))
div.appendChild(LTOS_getAnchorPage("User:" + args.user))
div.appendChild(document.createTextNode(" "))
div.appendChild(LTOS_getAnchorPageEdit(args.target))
break
}
default:
div.appendChild(document.createTextNode("Unknow message type: " + type))
}
div.appendChild(document.createElement('br'))
return false
}
function LTOS_solve(htmlPage)
{
var parser = new DOMParser();
var doc = parser.parseFromString(htmlPage, "text/xml");
var div
if(!doc) return LTOS_newMessage(LTOS_DOMPARSER_FAILURE)
div = doc.getElementById("bodyContent")
LTOS_list = div.getElementsByTagName("ol")
if(LTOS_list.length == 0) return LTOS_newMessage(LTOS_EMPTY_LIST)
LTOS_list = LTOS_list[0].getElementsByTagName("li")
LTOS_newMessage(LTOS_START)
LTOS_solveNumber(0)
}
function LTOS_getPageFromHref(href)
{
var reg = new RegExp(/\/wiki\/(.*)/)
var match = reg.exec(href)
if(match) return decodeURIComponent(match[1]).replace(/_/g, " ")
return false
}
function LTOS_preIsUserSpaceLink(textcontent)
{
return (textcontent.indexOf("Utilisateur")!=-1)
}
function LTOS_solveNumber(i)
{
if(i>=LTOS_list.length) return LTOS_newMessage(LTOS_END)
var anchors = LTOS_list[i].getElementsByTagName("a")
var data = new Object()
var nexti = i+1
if(anchors)
{
data.anchor = anchors[0]
data.target = LTOS_getPageFromHref(data.anchor.href)
data.i = i
if(data.target != false)
{
if(LTOS_preIsUserSpaceLink(LTOS_list[i].textContent))
LTOS_getPage(data)
}
else
{
LTOS_newMessage(LTOS_CANT_EXTRACT_PAGENAME_FROM_HREF, data)
setTimeout("LTOS_solveNumber(" + nexti + ")", 0)
}
}
}
function LTOS_getPage(data)
{
var req=new XMLHttpRequest()
req.data=data
req.onreadystatechange = function()
{
if(req.readyState == 4)
if(req.status==200)
{
req.data.text = req.responseText
LTOS_compareData(req.data)
}
}
req.open("GET","/w/index.php?title=" + encodeURIComponent(data.target) + "&action=raw", true)
req.send(null)
}
function LTOS_getUserLinkInWikiCode(wikiCode)
{
var reg = new RegExp(/\[\[(User|Utilisateur|user|utilisateur):([^\]]*)\]\]/)
var match = reg.exec(wikiCode)
if(match) return match[2]
return false
}
function LTOS_compareData(data)
{
var nexti = data.i+1
data.user = LTOS_getUserLinkInWikiCode(data.text)
if(data.user) LTOS_newMessage(LTOS_SUCCESS, data)
LTOS_solveNumber(nexti)
}