Użytkownik:SH3VEK/nplus-linki.js

Z Nonsensopedii, polskiej encyklopedii humoru
< Użytkownik:SH3VEK
To jest najnowsza wersja artykułu edytowana „22:53, 14 kwi 2019” przez „SH3VEK (dyskusja • edycje)”.
(różn.) ← przejdź do poprzedniej wersji • przejdź do aktualnej wersji (różn.) • przejdź do następnej wersji → (różn.)

Uwaga: aby zobaczyć zmiany po zapisaniu, 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: Przytrzymaj Ctrl jednocześnie klikając Odśwież lub naciśnij klawisze Ctrl+F5
  • Konqueror: Kliknij polecenie Odśwież lub naciśnij klawisz F5
  • Opera: Wyczyść pamięć podręczną w Narzędzia → Preferencje
/* <nowiki>
 * Linki do akcji na OZ
 * Wystarczy przetrzymać kliknięcie myszką na 1/4 sekundy (konfigurowalne), aby linki się pojawiły.
 * Można skonfigurować te przyciski następującym sposobem
	mw.config.set("npPrzyciskiOZ", [
		{
			title: "Nazwa przycisku, widoczna po wskazaniu myszą",
			icon: "Nazwa ikony (trudno znaleźć konkretną, trzeba pokombinować)",
			url: function(p) {return "Adres"}
			rights: "Uprawnienia, nazwy muszą być zgodne z zapisanymi w 'Specjalna:Uprawnienia grup użytkowników'"
		}
	]);
 * Konfiguracja musi się znaleźć PRZED importem skryptu.
 * Autor: SH3VEK
 */
if (mw.config.get("wgCanonicalSpecialPageName") == "Recentchanges") mw.loader.using(["jquery", "oojs-ui"], function() {
	var to = mw.config.get("npLongClick", 250),
		uTimer = 0,
		linkTarget = mw.config.get("npLinkOZ", "a.mw-changeslist-title");
	var przyciski = [
		// Tutaj mogą pojawić się dowolne akcje, których przyciski będą widoczne, jeśli użytkownik posiada dane uprawnienia
		{title: "Edytuj", icon: "edit", url: function(p) {return mw.util.getUrl(p, {action: "edit"})}, rights: "edit"},
		{title: "Przenieś", icon: "move", url: function(p) {return mw.util.getUrl("Special:MovePage/" + p)}, rights: "move"},
		{title: "Usuń", icon: "trash", url: function(p) {return mw.util.getUrl(p, {action: "delete"})}, rights: "delete"}
	];
	var pp = mw.config.get("npPrzyciskiOZ");
	if (pp !== null && $.isArray(pp)) przyciski = przyciski.concat(pp);
	przyciski.forEach(function(v) {v.ui = new OO.ui.ButtonWidget({icon: v.icon, title: v.title})});
	var btnGroup = new OO.ui.ButtonGroupWidget();
	var pu = new OO.ui.PopupWidget({
			$content: btnGroup.$element,
			$container: mw.util.$content,
			padded: false,
			align: "forwards",
			position: "before",
			autoClose: true,
			width: null,
		}),
		updatePopup = function(e) {
			uTimer = 0;
			pu.toggle(false);
			pu.$floatableContainer = $(e.target);
			przyciski.forEach(function(v) {v.ui.setHref(v.url(e.target.title))});
			pu.position();
			//pu.computePosition();
			pu.toggle(true);
		};
	
	btnGroup.$element.css("font-size", "14px");
	$(document.body).append(pu.$element);
	mw.user.getRights().then(function(r) {
		przyciski = przyciski.filter(function(v) {return r.indexOf(v.rights) != -1});
		btnGroup.addItems(przyciski.map(function(v) {return v.ui}));
	});
	mw.util.$content
		.on("mousedown", linkTarget, function(e) {uTimer = setTimeout(function() {updatePopup(e)}, to)})
		.on("click", linkTarget, function(e) {
			if (uTimer === 0) {
				e.preventDefault();
				pu.toggle(true);
				return;
			}
			clearTimeout(uTimer);
			uTimer = 0;
		});
});