Geavaheaddji:Jeblad/iwcheck.js

Wikipedia'as/is

Fuomáš: Maŋŋel go almmuhat, soaitá leat dárbbašlaš sihkkut neahttalohkkii gaskaráju vai oainnat rievdadusaid. 

  • Firefox / Safari: Doala Shift dan botta go deattát Reload, dahje deaddil Ctrl-F5 dahje Ctrl-R (⌘-R Mac'as)
  • Google Chrome: Deaddil Ctrl-Shift-R (⌘-Shift-R Mac'as)
  • Internet Explorer / Edge: Doala Ctrl dan botta go deattát Álggat ođđasit, dahje deaddil Ctrl-F5
  • Opera: deaddil Ctrl-F5.
/* Check if external link targets exists **************************************
 *
 * Description: Make external iw-links through stylyng and make them blue again if they exists
 * Maintainers: [[User:Jeblad]]
 */
 
(function(mw, $, undefined){

    if (!mw.config.get( 'wgIsArticle' )) return;
    if (mw.config.get( 'wgNamespaceNumber' ) != 0) return;
    if (!/^(view)$/.test(mw.config.get( 'wgAction' ))) return;

    var found = 0;
    for (var x in mw.config.get('wgCategories')) {
        if (mw.config.get('wgCategories')[x] == 'IW-check' && ++found) break;
    }
    if (!found) return;

    var sec = ( mw.config.get( 'wgServer' ) == 'https://secure.wikimedia.org' && !(window.disableSecureLinks===true) );
    var api = sec ? 'https://secure.wikimedia.org/wikipedia/%%/w/api.php' : 'http://%%.wikipedia.org/w/api.php';
    var languages = { 'nn' : {}, 'no' : {}, 'sv' : {}, 'da' : {} };
    var lang = 'se';
    var numtitles = 50;
    var maxtitles = 500;
    var query = {
        'action': 'query',
        'prop' : 'info',
        'format': 'json',
        'maxage': 15*60,
        'smaxage': 24*60*60
    };

    $(function(){
        var iwcheck = $('.iwcheck').find('a.extiw');
        if (!iwcheck || !iwcheck.length) return;
        for (var x in languages) {
            languages[x].titles = {},
            languages[x].found = 0
        }
        iwcheck.each(function(i, el){
            if (el.title) {
                var matches = el.title.match(/^(.*?):(.*)$/);
                if (matches.length == 3 && languages[matches[1]] != undefined) {
                    languages[matches[1]].titles[matches[2]] = true;
                    languages[matches[1]].found++;
                }
            }
        });
        var plang = $('#p-lang');
        for (var x in languages) {
            if (!languages[x].found) continue;
            if (x === lang) continue;
            var a = [];
            for (var y in languages[x].titles)
                if (languages[x].titles[y]) a.push(y);
            var a = a.slice(0, maxtitles-1);
            for (var i = 0; i < a.length; i+=numtitles) {
                var titles = a.slice(i, (i+numtitles<a.length ? i+numtitles : a.length-1)).join('|');
                $.ajax({
                    url: api.replace(/%%/, x),
                    dataType: 'jsonp',
                    data: jQuery.extend({'titles': titles, requestid: x}, query),
                    cache: true,
                    context: document.body,
                    success: function(data, textStatus){

                        if (textStatus === null && textStatus != 'success') {
                            alert('Success, but with "' + textStatus + '"');
                            return;
                        }

                        // this shouldn't happen
                        if (!languages[data.requestid] && !languages[data.requestid].found) return;

                        var a = [];
                        for (var x in data.query.pages) {
                            if (x<0) continue;
                            if (languages[data.requestid].titles[data.query.pages[x].title])
                                a.push('[title="' + data.requestid + ':' + data.query.pages[x].title + '"]');
                        }
                        iwcheck.filter(a.join(',')).addClass('exist');
                    }
                });
            }
        }
    });
})(mediaWiki, jQuery);