Wikipedysta:Rzuwig/monobook.js/massOpener.js

Z Wikipedii, wolnej encyklopedii

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