Wikipedysta:Rzuwig/monobook.js/massOpener.js
Wygląd
Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.
- Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
- Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
- Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
- Opera: Naciśnij klawisze Ctrl+F5.
//kopia z [[MediaWiki:Gadget-pendingChangesHelper.js]] z drobnymi przeróbkami
var massOpener= {
version: 2,
limit: 5,
openCaption: 'Otwórz pierwsze $number stron',
init: function() {
var that = this;
var list = this.getList();
if (!list)
return;
var callback = function() {
that.openPages();
return false;
};
var caption = this.openCaption.replace("$number", this.limit);
mw.util.addPortletLink('p-cactions', '#', caption, 'portlet-open-ten-pages');
var portlet = document.getElementById('portlet-open-ten-pages');
if (portlet) {
portlet.onclick = callback;
}
var a = document.createElement('a');
a.style.fontWeight = 'bold';
a.href = '#';
a.onclick = callback;
a.appendChild(document.createTextNode(caption));
var p = document.createElement('p');
p.appendChild(a);
list.parentNode.insertBefore(p, list);
},
getList: function() {
var bodyContent = document.getElementById('bodyContent');
if (!bodyContent)
return null;
var list = bodyContent.getElementsByTagName('ul');
if (list.length < 1)
return null;
return list[0];
},
getListItems: function() {
var list = this.getList();
if (!list)
return [];
return list.getElementsByTagName('li');
},
openPages: function() {
this.openNewPages();
},
openNewPages: function() {
var listItems = this.getListItems();
if (!listItems.length)
return;
var i = 0;
var done = 0;
while (i < listItems.length && done < this.limit) {
var item = listItems[i];
i++;
if (this.wasVisited(item))
continue;
var links = jQuery(item).children('a');
//if (!links[0].length)
// continue;
window.open(links[0].href)
this.markAsVisited(item);
done++;
}
},
markAsVisited: function(item) {
item.style.backgroundColor = 'orange';
},
wasVisited: function(item) {
return item.style.backgroundColor != '';
}
};
if (mw.config.get('wgCanonicalSpecialPageName') == "Whatlinkshere")
jQuery(document).ready(function() { massOpener.init() });