MediaWiki:Gadget-mark-disambigs.js
Позначка: По уложіню мусите вымазати кеш вашого перезерача, інакше зміны не будете видїти. Mozilla / Firefox / Safari: При кликнутю на Актуалізовати тримайте Shift, або стиснийте Ctrl-F5 або Ctrl-R (на Macintosh Command-R); Opera: Вымажте обсяг кеш в меню Інштрументы → Наставлїня; Internet Explorer: При кликнутю на Актуалізовати тримайте Ctrl, або стиснийте Ctrl-F5.
// z [[:pl:MediaWiki:Gadget-mark-disambigs.js]]
// expose to window as its used by jsonp so needs to be global
window.markDisambigsGadget = {
pageLoaded: false,
dataLoaded: false,
disambig: {},
uniqueLinks: 0,
links: 0
};
markDisambigsGadget.request = function(clcontinue) {
var query = {
action: 'query',
titles: mw.config.get('wgPageName'),
prop: 'categories',
cllimit: 'max',
gpllimit: 'max',
generator: 'links',
callback: 'markDisambigsGadget.processResponse',
requestid: new Date().getTime()
};
if (clcontinue) {
query['clcontinue'] = clcontinue;
}
beau$callAPI(query);
}
markDisambigsGadget.isDisambig = function(categories) {
for (var key in categories) {
if (categories[key].title == 'Kategória:Rozlišovacie stránky')
return true;
}
return false;
}
markDisambigsGadget.processResponse = function(data) {
if (! data.query)
return;
document.data = data;
for (var pageid in data.query.pages) {
var page = data.query.pages[pageid];
if (page.categories && this.isDisambig(page.categories))
{
if (this.disambig[page.title])
continue;
this.disambig[page.title] = true;
this.uniqueLinks++;
}
}
if (data['query-continue'] && data['query-continue']['categories']) {
this.request(data['query-continue']['categories']['clcontinue'])
}
else if (this.pageLoaded)
this.doColor();
else
this.dataLoaded = true;
}
markDisambigsGadget.doColor = function() {
if (! this.uniqueLinks)
return;
var links = document.getElementsByTagName('a');
this.disambig['Wikipédia:Rozlišovacia stránka'] = false;
for (var i = 0; i < links.length; i++)
{
var link = links[i];
if (this.disambig[link.title]) {
this.links++;
if (link.text == 'rozlišovacia stránka')
continue;
if (link.parentNode && link.parentNode.className.match(/\bdisambig\b/))
continue;
link.className = 'mw-disambig';
}
}
}
markDisambigsGadget.init = function() {
this.pageLoaded = true;
if (this.dataLoaded)
this.doColor();
}
if (mw.config.get('wgNamespaceNumber') >= 0 && mw.config.get('wgAction') == 'view' && !document.location.href.match(/printable=yes/)) {
markDisambigsGadget.request();
$(document).ready(function() { markDisambigsGadget.init() });
}