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);
	});
}