Utente:AlessioMela/LinksWikidataInfo.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.
/*
* For each wikilink writes down the number of interlink for that page
*
* Author: [[:it:User:AlessioMela]]
*
* Inspired by Yair's WikidataInfo:
* https://www.wikidata.org/w/index.php?title=User:Yair%20rand/WikidataInfo.js
*/
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
function wikidata (title, callback) {
$.ajax({
url: '//www.wikidata.org/w/api.php',
data: {
'format': 'json',
'action': 'wbgetentities',
'sites': mw.config.get('wgDBname'),
'titles': title,
'props': 'sitelinks',
'languages': mw.config.get('wgContentLanguage'),
'maxage': mw.config.get("wgUserName") === null ? 900 : 30,
'smaxage': mw.config.get("wgUserName") === null ? 900 : 30,
'maxlag': 1
},
dataType: 'jsonp',
success: function (data) {
if (data.success) {
for (var i in data.entities) {
if (i == -1) {
callback(0);
} else {
var item = data.entities[i];
callback(Object.size(item.sitelinks));
}
}
}
}
});
}
function link () {
var parent = $(this);
var href = parent.attr('href');
var title = parent.attr('title');
if (href !== undefined && href.indexOf('#') !== 0 && href.indexOf('/wiki/File:') !==0) {
//console.log('found: '+title);
wikidata(title, function(num) {
console.log(title+': '+num);
if (num < LinksWikidataInfoLimit) {
console.log("Inside 1");
if (num === 0 || num === 1) {
parent.after('<sub><small>[<b>'+num+'</b>]</small></sub>');
} else {
parent.after('<sub><small>['+num+']</small></sub>');
}
}
});
}
}
if (mw.config.get('wgNamespaceNumber', 0 ) === 0 && typeof LinksWikidataInfoLimit !== 'undefined') {
mw.hook('wikipage.content').add( function ( $content ) {
mw.util.$content.find('a').not('#lead *, .navbox *, .mw-editsection *, .mw-history-histlinks *').each(link);
});
}