MediaWiki:Common.js

Материал из Anekdot.me
Перейти к навигацииПерейти к поиску

Замечание. Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl-F5 или Ctrl-R (⌘-R на Mac)
  • Google Chrome: Нажмите Ctrl-Shift-R (⌘-Shift-R на Mac)
  • Internet Explorer: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl-F5
  • Opera: Перейдите в Menu → Настройки (Opera → Настройки на Mac), а затем Безопасность → Очистить историю посещений → Кэшированные изображения и файлы
/* Google Analytics 4 */
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-4G6VDYXS0M');
$('head').append($('<script/>').attr('async', 1).attr('src', 'https://www.googletagmanager.com/gtag/js?id=G-4G6VDYXS0M'));
/* /Google Analytics 4 */

$.ajax({ /* http://absurdopedia.net/wiki/MediaWiki:Gadget-friends.js */
  url: '//absurdopedia.net/w/load.php?debug=false&lang=ru&modules=ext.gadget.friends&skin=monobook',
  dataType: 'script',
  cache: true
});

/** Morph LM Edition *************************************
  *
  *  Description: слайдер скрытого контента
  *  Stolen^W Made by:  hikki-zadrot, Tachikoma, Anotubus
  *  Стырено из Лукоморья (http://lurkmore.to/?oldid=1236836)
  */
 
function createMorphObjects() {
	var morphTargets = new Array(), morphLinks = new Array(), currentMorph = new Array();
 
	function morphHandler(cont, num) {
		return function() {
			currentMorph[cont].curr = num;
			var t = morphTargets[cont];
                        var l = morphLinks[cont];
			for(i in t) if(currentMorph[cont].ms != null) t[i].style.display = t[i].className.match(l[num].className.replace(/.*morphlink\s+morph(\S+).*/, '$1'))? "" : "none"; else t[i].style.display = i==num ? "" : "none";
			var h = currentMorph[cont].hilight, d = currentMorph[cont].defstyle;
			for(i in l) l[i].setAttribute('style', (i!=num)?d:h);
		};
	};
 
	function morphNext(cont) {
		return function() {
			var t = currentMorph[cont]; 
			morphHandler(cont, t.curr<(t.max-1)?t.curr+1:0)();
		}
	}
 
	function morphPrev(cont) {
		return function() {
			var t = currentMorph[cont]; 
			morphHandler(cont, t.curr>0?t.curr-1:t.max-1)();
		}
	}
 
	var morphContainers = document.querySelectorAll(".morphcontainer");
	for(var i = 0; i<morphContainers.length; i++) {
		var this_ = morphContainers[i];
		morphTargets[i] = {};
		morphLinks[i] = {};
 
		var isHover = this_.className.match(/\bhover\b/);
                var isManualsort = this_.className.match(/\bmanualsort\b/);
 
		var morphCs = this_.querySelectorAll(".morphcontent");
		var morphLs = this_.querySelectorAll(".morphlink");
		var h = this_.querySelector(".morphlink_hilight");
 
		h = h ? h.getAttribute('style') : "color:blue; text-decoration:underline; cursor: pointer;";
		var def = this_.querySelector(".morphlink_default");
		def = def ? def.getAttribute('style') : "color:blue; cursor: pointer;";
		currentMorph[i] = {max: morphLs.length, curr: 0, hilight: h, defstyle: def, ms: isManualsort};
 
		for(var m = 0; m<morphLs.length; m++) {
			morphLinks[i][m] = morphLs[m];
			$(morphLs[m]).on(isHover?'mouseover':'click',morphHandler(i, m));
                        morphLs[m].setAttribute('style', m?def:h);
		};
 
                for(var m = 0; m<morphCs.length; m++) {
			morphTargets[i][m] = morphCs[m];
                        if (isManualsort != null) morphCs[m].style.display = morphCs[m].className.match(morphLs[0].className.replace(/.*morphlink\s+morph(\S+).*/, '$1'))? "" : "none"; else morphCs[m].style.display = m ? "none" : "";
		};
 
		if (this_.querySelector(".morphprev")) $(this_.querySelector(".morphprev")).click(morphPrev(i));
		if (this_.querySelector(".morphnext")) $(this_.querySelector(".morphnext")).click(morphNext(i));
	}
}
 
$(createMorphObjects);

/*Добавляем кнопку викификатора*/
mw.hook( 'wikieditor.toolbar.wikificator' ).add(function(){
	// Переместить кнопку в начало.
	$('.group-format').prepend( $('a[title*="Викификатор"]') )
});
mw.loader.load('https://ru.wikipedia.org/w/index.php?title=MediaWiki:Gadget-wikificator.js&action=raw&ctype=text/javascript&oldid=114525856')

/* nologo */
$(function() { if($('#nologo').length) $('#p-logo').hide(); });

/*
 * Scrolling to top -- 23 November 2012
 * Stolen from http://habrahabr.ru/post/146049/
 * Вместе с предшествующими комментариями спёрто из http://ru.wikipedia.org/?oldid=50093825 и слегка изменено
 */

/* 
   Навигация по стрелочкам
   http://forum.php-myadmin.ru/viewtopic.php?id=1811
*/

$(window).on('keydown', function(event){
    var arrow = false;

    if (event.ctrlKey) {
        var tag = event.target.tagName;
        // Проверяем где находится курсор. Если в текстовом поле, то перелистывать нельзя,
        // чтобы не портить перемещение по тексту, где тоже используется сочетание клавиш Ctrl+стрелочка.
        if (tag != 'INPUT' && tag != 'TEXTAREA') {
            // Код клавиши 37 - значит нажата стрелочка влево.
            if (event.which == 37) {
                // Помещаем в переменную id ссылку на тег <a> отвечающий за переход на предыдущую страницу.
                arrow = $(".anekdot-js-navheader a:first-child");
            }
            // Код клавиши 39 - значит нажата стрелочка вправо.
            if(event.which == 39) {
                // Помещаем в переменную id ссылку на тег <a> отвечающий за переход на следующую страницу.
                arrow = $(".anekdot-js-navheader a:last-child");
            }
            // Проверяем существует ли объект.
            if (arrow.length !== 0) {
                // Осуществляем переход по ссылке указанной в свойстве href.
                // Это и есть цель данной функции, она осуществляет переход.
                location.href = arrow.attr('href');
            }
        }
    }
});