Utente:Ricordisamoa/WikidataHelper.js
Questa pagina definisce alcuni parametri di aspetto e comportamento generale di tutte le pagine. Per personalizzarli vedi Aiuto:Stile utente.
Nota: dopo aver salvato è necessario pulire la cache del proprio browser per vedere i cambiamenti (per le pagine globali è comunque necessario attendere qualche minuto). Per Mozilla / Firefox / Safari: fare clic su Ricarica tenendo premuto il tasto delle maiuscole, oppure premere Ctrl-F5 o Ctrl-R (Command-R su Mac); per Chrome: premere Ctrl-Shift-R (Command-Shift-R su un Mac); per Konqueror: premere il pulsante Ricarica o il tasto F5; per Opera può essere necessario svuotare completamente la cache dal menù Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.
/* <nowiki>
*
* WikidataHelper.js by [[User:Ricordisamoa]]
* inspired by [[d:User:Tpt/slurpInterwiki.js]]
*
*/
function checkInterlinks(){
$.ajax({
url:"//www.wikidata.org/w/api.php",
data:{
format:"json",
action:"wbgetentities",
titles:wgPageName.replace(/_/g," "),
sites:wgDBname
},
cache:false,
dataType:"jsonp"
})
.done(function(data){
if(data.success&&data.entities[Object.keys(data.entities)[0]]){
var q=$.ucFirst(Object.keys(data.entities)[0]);
var sitelinks=data.entities[Object.keys(data.entities)[0]].sitelinks;
if(typeof sitelinks=="undefined"){
jsMsg("No sitelinks!");
return;
}
var sl={};// normalize sitelinks in form { en : "pageName" , it : "pageName" , lang : "pageName" }
$.map(sitelinks,function(e){
sl[e.site.replace(/_/g,"-").replace(/wiki$/g,"")]=e.title;
});
/*
$.ajax({
url:mw.util.wikiScript("api"),
data:{
format:"json",
action:"query",
titles:wgTitle,
prop:"langlinks",
lllimit:500
},
dataType:"jsonp"
})*/
$.get(
mw.util.wikiScript(),
{title:wgPageName,action:"raw"}
)
.done(function(d){
/*var langlinks=d.query.pages[Object.keys(d.query.pages)[0]].langlinks;
$.map(langlinks,function(e){
ll[e.lang]=e["*"];
});*/
var regex=/\[\[(simple|[a-z]{2,3}(\-[a-z]+){0,2}):([^\[\]\n\r]+)\]\]/g;
var langlinks=d.match(regex);
if(d.match(regex)==null&&$("#p-lang ul li").not(".wbc-editpage").length>0){
$("<div>")
.append("La voce non contiene più interlink.")
.dialog({
title:"WikidataHelper",
buttons:{
"OK":function(){
$(this).dialog("close");
}
}
});
return;
}
var ll={};// normalize sitelinks like langlinks
$.map(langlinks,function(e,i){
ll[e.match(/\[\[(simple|[a-z]{2,3}(\-[a-z]+){0,2}):/)[1]]=e.match(/:([^\[\]\n\r]+)\]\]/)[1];
});
/*meeeeeeee-wwwwwwwwwwwwwsl.blr="dummy :O";*/
console.log(ll);
console.log(sl);
// compact normalized objects in form [ "en:pageName" , "it:pageName" , "lang:pageName" ]
// to accurately compare them with jQuery.not()
var llu=$.map(ll,function(e,k){
return[k+":"+e];
});
var slu=$($.map(sl,function(e,k){
return[k+":"+e];
})).not([wgContentLanguage+":"+wgTitle]);
sl_not_ll=$(slu).not(llu)// sitelinks that are not in langlinks (can be imported into Wikipedia)
ll_not_sl=$(llu).not(slu);// langlinks that are not in sitelinks (can be imported into Wikidata)
$("<div>")
.append(
($.compareArray(slu,llu)?"Ottimo. Possiamo procedere con la rimozione degli interlink da Wikipedia.":
(sl_not_ll.length>0?(
"Attenzione: "+sl_not_ll.length+" sitelink"+(sl_not_ll.length>1?"s":"")+" in Wikidata non "+(sl_not_ll.length>1?"sono presenti":"è presente")+" come interlink su Wikipedia.<br/>"+sl_not_ll.get().join()+"<br/>"+
(ll_not_sl.length==0?"Si desidera procedere comunque alla rimozione?":"")
):"")+
(ll_not_sl.length>0?(
"Attenzione: "+ll_not_sl.length+" interlink"+(ll_not_sl.length>1?"s":"")+" in Wikipedia non "+(ll_not_sl.length>1?"sono presenti":"è presente")+" come sitelink su Wikidata.<br/>"+ll_not_sl.get().join()+"<br/>"
):"")
)
)
.dialog({
title:"WikidataHelper",
buttons:{
"Annulla":function(){
$(this).dialog("close");
},
"OK":function(){
$(this).dialog("close");
if($.compareArray(slu,llu)||ll_not_sl.length==0) removeInterlinks("watch",q);
}
}
});
});
} else {
alert("null");
}
})
.fail(function(){alert("null");});
}
function removeInterlinks(watch,q){
$.get(
mw.util.wikiScript(),
{title:wgPageName,action:"raw"},
function(d){
var regex=/\[\[(simple|[a-z]{2,3}(\-[a-z]+){0,2}):[^\[\]\n\r]+\]\](\n\r?)?/g;
console.log(d.match(regex));
d=d.replace(regex,"").replace(/\n\n$/,"\n");
console.log(d);
$.post(
mw.util.wikiScript("api"),
{
action:"edit",
text:d,
title:wgPageName,
summary:"[[Utente:Ricordisamoa/WikidataHelper|WikidataHelper]]: rimozione interlink perché già presenti su Wikidata"+
(q?" ([[wikidata:"+q+"|qui]])":""),
minor:true,
token:mw.user.tokens.get("editToken")
}
)
.done (function(data){
if(data&&data.error&&data.error.info) jsMsg("La query di modifica ha restituito un errore. =(\n"+data.error.info);
else jsMsg("Pagina modificata!");
})
.fail(function(){
jsMsg("La richiesta ajax è fallita.");
});
}
);
}
$(document).ready(function(){
$(mw.util.addPortletLink("p-tb","#","WikidataHelper","WikidataHelper","Procedura guidata di integrazione e rimozione degli interlink"))
.click(function(event){
event.preventDefault();
checkInterlinks();
});
});
//</nowiki>