MediaWiki:Common.js: Różnice pomiędzy wersjami

Z Nonsensopedii, polskiej encyklopedii humoru
Linia 108: Linia 108:
(function() {
(function() {
'use strict';
'use strict';
if (mw.config.get("wgPageName") !== "Specjalna:Ostatnie_zmiany" || document.cookie.indexOf("pedia__śniegDisabled") !== -1)
return;
var NUM_FLAKES = 40;
var NUM_FLAKES = 40;
var status = true, handle, SBTN, flakes, Flake, PI_2, canvas, context, drawCircle, i, range, resizeWindow, xpos;
var status = true, handle, SBTN, flakes, Flake, PI_2, canvas, context, drawCircle, i, range, resizeWindow, xpos;

Wersja z 17:31, 1 kwi 2020

/* <pre><nowiki> */
/** COMMON.JS **
 * Plik zawiera funkcje używane w innych skryptach. Edytuj ostrożnie!
**/

/** UWAGI Z LIPCA 2019 **
 * Ten plik jest stosunkowo krótki, ale jeśli cokolwiek się zepsuje, pamiętaj, PAMIĘTAJ, aby sprawdzić gadżety.
 * Lista gadżetów dostępna jest tutaj: [[MediaWiki:Gadgets-definition]]. Jeśli o tym nie wiedziałeś, to nie ruszaj – pewnie i tak nie zrozumiesz co jest od czego.
 * Common.js NIE działa na skórce mobilnej. Jeśli coś ma działać na skórce mobilnej, masz dwa wyjścia:
 ** albo wrzucić do do MediaWiki:Mobile.js (lub na jednego usera (np do testów) do Użytkownik:Nazwa/Minerva.js – ja też nie wiem czemu tak), nie będzie wtedy działać na desktopowych
 ** albo – zalecana opcja, zwłaszcza jak ma działać i na desktopie, i na mobilce – dać do gadżetu.
 * a, i jak robisz coś zwławszcza dla mobilnej, to ograniczaj doładowywanie rzeczy typu mw.loader.load, bo niby spowalnia ładowanie.
**/

/* Archiwizacja Porum – ten brzydki komunikat nad wątkiem */
function zipForum() {
    if (!("Forum" != mw.config.get('wgCanonicalNamespace') || "view" != mw.config.get("wgAction") || "Strona główna" == mw.config.get("wgTitle")))
        if (!document.getElementById("naglowekforum") || document.getElementById("nieodkopuj")) {
        	var groups = mw.config.get('wgUserGroups');
        	if (groups.indexOf("bot") == -1 && groups.indexOf("content-moderator") == -1 && groups.indexOf("sysop") == -1) {
	            $("#ca-edit a")
    	        .css("color", "DarkKhaki")
        	    .attr("href", "")
            	.attr("title", "Ten wątek jest archiwalny, prosimy o nieedytowanie go.");
        	}
        }
}
$(zipForum);

/*
	Informacje o zabezpieczeniu (typu: "Strona zabezpieczona przed edytowaniem, półzabezpieczona przed przeniesieniem")
	…chyba nie działa.
*/
function Zab() {
		if (mw.config.get('wgRestrictionEdit')[0] === undefined && mw.config.get('wgRestrictionMove')[0] === undefined) return;
		var zabezpieczenie = '';
		var editRestriction = 'brak';
		var moveRestriction = "brak";
		if (mw.config.get('wgRestrictionEdit')[0] !== undefined) editRestriction = mw.config.get('wgRestrictionEdit')[0];
		if (mw.config.get('wgRestrictionMove')[0] !== undefined) moveRestriction = mw.config.get('wgRestrictionMove')[0];
		var klucz = {autoconfirmed: "półzabezpieczona", sysop: "zabezpieczona"};
		if (editRestriction == moveRestriction) {
			zabezpieczenie = klucz[editRestriction];
		} else {
			if (editRestriction != 'brak') {
				zabezpieczenie += klucz[editRestriction] + " przed edycją";
				if (moveRestriction != "brak") zabezpieczenie += ", ";
			}
			if (moveRestriction != 'brak') {
				zabezpieczenie += klucz[moveRestriction] + " przed przeniesieniem";
			}
		}
	
	    $("<span class='restr'>Strona " + zabezpieczenie + ".</span>").css({
	        float: "right"
	    }).appendTo("#contentSub");
}
if (mw.config.get('wgRestrictionEdit') !== null && mw.config.get('wgRestrictionMove') !== null) jQuery(document).ready(Zab);

/**
 * Skrypt dla Szablon:Galeria
 * Źródło: [[wikipedia:pl:MediaWiki:Common.js]]
 */
function toggleImage (group, remindex, shwindex) {
	jQuery("#ImageGroupsGr" + group + "Im" + remindex).hide();
	jQuery("#ImageGroupsGr" + group + "Im" + shwindex).show();
}
function ImageGroup() {
	if (mw.config.values.skin === "minerva") return;	//nie powinno się ładować na mobilce
	jQuery('div.ImageGroup').each(function(i, group) {
		var unitnode = jQuery('div.ImageGroupUnits', group).get(0);
		if (unitnode === undefined) {
			return 1;
		}
		var units = jQuery(unitnode).children('.center');
		var count = units.get().length;
		if (count <= 1) {
			return 1;
		}
		units.each(function(j, currentimage) {
			jQuery(currentimage).attr('id', "ImageGroupsGr" + i + "Im" + j);
			var leftlink = jQuery('<a href="#"/>');
			if (j !== 0) {
				leftlink.text('◀').click(function() {
					toggleImage(i, j, j - 1); return false;
				});
			}
			var rightlink = jQuery('<a href="#"/>');
			if (j != count - 1) {
				rightlink.text('▶').click(function() {
					toggleImage(i, j, j + 1); return false;
				});
			}
			jQuery('<div/>').css({ 'font-size' : '110%', 'font-weight' : 'bold' })
				.addClass('disabled-user-selection')
				.append(leftlink)
				.append('<tt>(' + (j + 1) + '/' + count +  ')</tt>')
				.append(rightlink)
				.prependTo(jQuery(currentimage));
			if (j !== 0) {
				jQuery(currentimage).hide().addClass('noprint');
			}
		});
	});
}
$(ImageGroup);

(function() {
	'use strict';
	if (mw.config.get("wgPageName") !== "Specjalna:Ostatnie_zmiany" || document.cookie.indexOf("pedia__śniegDisabled") !== -1)
		return;
	var NUM_FLAKES = 40;
	var status = true, handle, SBTN, flakes, Flake, PI_2, canvas, context, drawCircle, i, range, resizeWindow, xpos;
	SBTN = $('<button id="snieg-switch">Przełącz śnieg</button>').appendTo("div#content");
	SBTN.click(function(){
		status = !status;
		if (status) 
			handle = requestAnimationFrame(step);
		else {
			cancelAnimationFrame(handle);
			context.clearRect(0, 0, w, h);
		}
	});	
	PI_2 = 2 * Math.PI;
	canvas = $('<canvas style="z-index: 500; pointer-events: none; position: fixed; top: 0; left: 0;" id="snieg"></canvas>').appendTo("body")[0];
	context = canvas.getContext("2d");
	window.w = 0;
	window.h = 0;
	resizeWindow = function() {
		window.w = canvas.width = window.innerWidth;
		return (window.h = canvas.height = window.innerHeight);
	};
	window.addEventListener('resize', resizeWindow, false);
	$(function() {return setTimeout(resizeWindow, 0);});
	range = function(a, b) {return (b - a) * Math.random() + a;};
	drawCircle = function(x, y, r) {
		context.beginPath();
		context.arc(x, y, r, 0, PI_2, false);
		context.fill();
		context.stroke();
	};
	xpos = 0.5;
	document.onmousemove = function(e) {return (xpos = e.pageX / w);};
	window.requestAnimationFrame = (function() {
		return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) {
			return window.setTimeout(callback, 1000 / 60);
		};
	})();
	Flake = (function() {
		function Flake() {
			this.r = ~~range(4, 8);
			this.r2 = 2 * this.r;
			this.replace();
		}
		Flake.prototype.replace = function() {
			this.x = range(-this.r2, w - this.r2);
			this.y = range(-20, h - this.r2);
			this.xmax = w - this.r;
			this.ymax = h - this.r;
			this.vx = range(0, 2) + 8 * xpos - 5;
			this.vy = 0.5 * this.r + range(-0.5, 0.5);
		};
		Flake.prototype.draw = function() {
			var f;
			this.x += this.vx;
			this.y += this.vy;
			if (this.y > this.ymax) {
				this.replace();
			}
			if (!((0 < (f = this.x) && f < this.xmax))) {
				this.x = (this.x + this.xmax) % this.xmax;
			}
			drawCircle(~~this.x, ~~this.y, this.r);
		};
		return Flake;
	})();
	flakes = (function() {
		var i, a = [];
		for (i = 0; i < NUM_FLAKES; i++)
			a.push(new Flake());
		return a;
	})();
	window.step = function() {
		var i, len;
		context.clearRect(0, 0, w, h);
		context.fillStyle = "rgba(255, 251, 153, 1)";
		context.lineWidth = 2;
		context.strokeStyle = "rgba(0,0,0,0.25)";
		for (i = 0, len = flakes.length; i < len; i++)
			flakes[i].draw();
		handle = requestAnimationFrame(step);
	};
	handle = requestAnimationFrame(step);
	console.log("Załadowano śnieg");
})();
/* </pre></nowiki> */