MediaWiki:Common.js: различия между версиями

м
м
Строка 133: Строка 133:
 
   $('[data-sort]').on('click', function() {
 
   $('[data-sort]').on('click', function() {
 
     var sortSelect = $(this),
 
     var sortSelect = $(this),
         sortSelects = $(this).parent(),
+
         sortSelects = sortSelect.parent(),
 
         sortTarget = sortSelect.attr('data-sort'),
 
         sortTarget = sortSelect.attr('data-sort'),
 
         sortValue = sortSelect.attr('data-sort-value'),
 
         sortValue = sortSelect.attr('data-sort-value'),

Версия 02:12, 30 июля 2020

var preloader = document.createElement('div');
preloader.className = 'preloader';
preloader.innerHTML = '<img class="preloader__image preloader__image--0" src="/static/images/preloader/preloader_00.png"><img class="preloader__image preloader__image--1" src="/static/images/preloader/preloader_01.png"><img class="preloader__image preloader__image--2" src="/static/images/preloader/preloader_02.png"><img class="preloader__image preloader__image--3" src="/static/images/preloader/preloader_03.png"><img class="preloader__image preloader__image--4" src="/static/images/preloader/preloader_04.png">';
document.body.prepend(preloader);
document.body.classList.add('preloader-active');

document.querySelector('link[href*="skins.vector.styles"]').remove();

var html = $('html'),
    head = $('head'),
    body = $('body');

head.prepend('<meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="HandheldFriendly" content="true"><meta name="MobileOptimized" content="width"><meta name="apple-mobile-web-app-capable" content="yes">');

var date = new Date();

$(function(){

  body.prepend('<div class="header"><a class="logo" href="/wiki/"></a></div>');

  var mwNav = $('#mw-navigation'),
      mwHead = $('#mw-head'),
      mwPanel = $('#mw-panel');

  mwHead.prepend('<a href="https://la.mail.ru/" id="god-game">Сайт игры</a><a href="https://support.my.games/la" id="god-support">Поддержка</a><a href="https://la.mail.ru/download" id="god-download">Скачать</a>');
  mwPanel.prepend('<a href="/wiki/">Главная</a><a href="/wiki/Special:Search">Поиск</a>');
  mwNav.after('<div class="navigation"><div class="navigation__hamburger"></div><div class="navigation__mobile"><nav class="navigation__menu"><div class="navigation__menu-list"><div class="navigation__menu-item"><a class="navigation__menu-link">Новичку <i class="icon icon-arrow"></i></a><ul class="navigation__menu-dropdown"><li><a href="/wiki/Начало_игры" class="navigation__menu-dropdown-link">Начало игры</a></li><li class="la-game_none"><a href="/wiki/Создание_героя" class="navigation__menu-dropdown-link">Создание героя</a></li><li><a href="/wiki/Настройки" class="navigation__menu-dropdown-link">Настройки</a></li></ul></div><div class="navigation__menu-dot"></div><div class="navigation__menu-item"><a class="navigation__menu-link">Основное <i class="icon icon-arrow"></i></a><ul class="navigation__menu-dropdown"><li><a href="/wiki/Классы" class="navigation__menu-dropdown-link">Классы</a></li><li><a href="/wiki/История_мира" class="navigation__menu-dropdown-link">История мира</a></li><li><a href="/wiki/Карта_мира" class="navigation__menu-dropdown-link">Карта мира</a></li><li><a href="/wiki/Телепортация" class="navigation__menu-dropdown-link">Странствия</a></li><li><a href="/wiki/Питомцы" class="navigation__menu-dropdown-link">Питомцы</a></li></ul></div><div class="navigation__menu-dot"></div><div class="navigation__menu-item"><a class="navigation__menu-link">Персонаж <i class="icon icon-arrow"></i></a><ul class="navigation__menu-dropdown"><li><a href="/wiki/Боевые_умения_и_эффекты_трипода" class="navigation__menu-dropdown-link">Бой</a></li><li><a href="/wiki/Ремесло" class="navigation__menu-dropdown-link">Ремесло</a></li><li><a href="/wiki/Наследие" class="navigation__menu-dropdown-link">Прогресс</a></li><li><a href="/wiki/Рейтинг_снаряжения" class="navigation__menu-dropdown-link">Снаряжение</a></li><li><a href="/wiki/Репутация" class="navigation__menu-dropdown-link">Репутация</a></li><li><a href="/wiki/Титулы" class="navigation__menu-dropdown-link">Титулы</a></li></ul></div><div class="navigation__menu-dot"></div><div class="navigation__menu-item"><a class="navigation__menu-link">Приключения <i class="icon icon-arrow"></i></a><ul class="navigation__menu-dropdown"><li><a href="/wiki/Задания" class="navigation__menu-dropdown-link">Задания</a></li><li><a href="/wiki/PvE" class="navigation__menu-dropdown-link">Инстансы</a></li><li><a href="/wiki/Мореплавание" class="navigation__menu-dropdown-link">Мореплавание</a></li><li><a href="/wiki/Атлас_Искателя" class="navigation__menu-dropdown-link">Атлас Искателя</a></li><li><a href="/wiki/PvP" class="navigation__menu-dropdown-link">PvP</a></li><li><a href="/wiki/Битвы_за_Сильмаэль" class="navigation__menu-dropdown-link">Битвы за Сильмаэль</a></li></ul></div><div class="navigation__menu-dot"></div><div class="navigation__menu-item"><a class="navigation__menu-link">Экономика <i class="icon icon-arrow"></i></a><ul class="navigation__menu-dropdown"><li><a href="/wiki/Магазин" class="navigation__menu-dropdown-link">Магазин</a></li><li><a href="/wiki/Чёрный_рынок" class="navigation__menu-dropdown-link">Чёрный рынок</a></li><li><a href="/wiki/Валюты" class="navigation__menu-dropdown-link">Валюты</a></li></ul></div><div class="navigation__menu-dot"></div><div class="navigation__menu-item"><a class="navigation__menu-link">Сообщество <i class="icon icon-arrow"></i></a><ul class="navigation__menu-dropdown"><li><a href="/wiki/Друзья" class="navigation__menu-dropdown-link">Друзья</a></li><li><a href="/wiki/Группы" class="navigation__menu-dropdown-link">Группы</a></li><li><a href="/wiki/Гильдия" class="navigation__menu-dropdown-link">Гильдия</a></li></ul></div></div></nav></div></div>');

  var nav = $('.navigation'),
      navHamburger = $('.navigation__hamburger'),
      navMenuLink = $('.navigation__menu-link');

  navHamburger.on('click', function() {
    navHamburger.toggleClass('type-opened');
    nav.toggleClass('type-opened');
  });

  navMenuLink.on('click', function() {
    if ($(window).width() <= 768) {
      $(this).parent().toggleClass('type-opened');
      return false;  
    };
  });

  var footer = $('#footer');

  footer.prepend('<div class="footer-social"><a href="https://vk.com/lostark" target="_blank"><i class="icon-social-vkontakte"></i></a><a href="https://www.youtube.com/LOSTARKRU" target="_blank"><i class="icon-social-youtube"></i></a><a href="https://discord.com/invite/lostarkru" target="_blank"><i class="icon-social-discord"></i></a><a href="https://www.instagram.com/lost.ark.ru" target="_blank"><i class="icon-social-instagram"></i></a><a href="https://ok.ru/group/54524030353588" target="_blank"><i class="icon-social-odnoklassniki"></i></a><a href="https://la.mail.ru/forums/" target="_blank"><i class="icon-social-forum"></i></a></div><div class="footer__groups"><div class="footer__group type-sg"><img src="/wiki/images/8/87/Footer-logo-smilegate.png"></div><a href="https://mail.ru/" target="_blank" class="footer__group type-mg"><img src="/wiki/images/a/ac/Footer-logo-mailru.png"></a><div class="footer-pegi"><span>12+</span></div></div><div class="footer__copyright"><p>© ' + date.getFullYear() + ' Smilegate RPG, Inc. Published by Mail.Ru LLC. All rights reserved.</p><p>All trademarks are the property of their respective owners.</p></div>');

  var content = $('#content'),
      header = $('.header');

  if ($('#error-page').length) {
    body
      .addClass('error-page-active')
      .prepend('<section class="error-page"><div class="error-page__wrap"><h1 class="error-page__title">Страница не существует или удалена</h1><p class="error-page__text"><a href="/wiki/">Вернуться на главную страницу</a></p><div class="error-page__num">404</div></div></section>');
  };

  var breadcrumbs = $('.breadcrumbs');
  if (breadcrumbs.length) {
    content.before(breadcrumbs);
    breadcrumbs.addClass('breadcrumbs_state_visible');
  };

  var searchForm = $('.search-form'),
      searchButton = $('#searchButton');
  if (searchForm.length) {
    searchForm.before($('#searchform'));
    $('#simpleSearch').append('<i class="icon icon-search search-form__icon"></i><button class="search-form__button button button--base"><span>Найти</span></button>');
    $('.search-form__button').append(searchButton);
  };

  var spoiler = function() {
    var spoilerTitle = $('.spoiler__title');
    spoilerTitle.on('click', function() {
      $(this).parent().toggleClass('type-opened');
    });
  };
  spoiler();

  var jsPopup = $('.js-popup').parent();
  jsPopup.on('click', function() {
    body
      .addClass('popup-opened')
      .append('<div class="popup"><div class="popup__overlay"><div class="popup__wrap"><div class="popup__image-wrapper"><div class="popup__image"><img src="' + $(this).attr('href') + '"></div></div><div class="popup__closer controller-close"></div></div></div></div>');
    return false;
  });
  body.on('click', '.popup__overlay, .popup__closer', function() {
    body.removeClass('popup-opened');
    $('.popup').remove();
  });

  $('.link_target_blank').on('click', 'a', function() {
    $(this).attr('target', '_blank');
  });

  if ($('.page-Служебная_Поиск').length) {
    $('#searchText input').attr('placeholder', 'Введите поисковый запрос');
    $('#search .oo-ui-actionFieldLayout-button button').before($('.mw-search-nonefound'));
  };

  if ($('.itemdic').length) {
    head.append('<link rel="stylesheet" href="/wiki/index.php?title=MediaWiki:Itemdic.css&ctype=text%2Fcss&action=raw">');
    $.getScript('/wiki/index.php?title=MediaWiki:Itemdic.js&ctype=text%2Fjavascript&action=raw');
  };

  if ($('[data-key]').length) {
    $.getScript('/wiki/index.php?title=MediaWiki:Data-json.js&ctype=text%2Fjavascript&action=raw');
  };

  if ($('[data-filter-target]').length) {
    $('[data-filter-target]').on('click', function() {
        var filterTarget = $(this).attr('data-filter-target'),
          filterParent = $(this).closest('[data-filter-parent='+filterTarget+']'),
            filterValue = $(this).attr('data-filter-value');
      filterParent.attr('data-filter-active', filterValue);
      filterParent.find('[data-filter-target='+filterTarget+']').removeClass('type-active');
      filterParent.find('[data-filter-target-'+filterTarget+']').hide();
      $(this).addClass('type-active');
      filterParent.find('[data-filter-target-'+filterTarget+'='+filterValue+']').show();
    });
  };

  if ($('#web-iframe').length) {
    html.addClass('web-iframe');
  };

  /* new (begin) */
  if ($('.dictionary').length) {
    head.append('<link rel="stylesheet" href="/wiki/index.php?title=Template:Css/dictionary&ctype=text%2Fcss&action=raw">');
    $.getScript('/wiki/index.php?title=MediaWiki:Js/dictionary&ctype=text%2Fjavascript&action=raw');
  };

  $('[data-sort]').on('click', function() {
    var sortSelect = $(this),
        sortSelects = sortSelect.parent(),
        sortTarget = sortSelect.attr('data-sort'),
        sortValue = sortSelect.attr('data-sort-value'),
        sortParent = sortSelect.closest('[data-sort-parent="' + sortTarget + '"]');
    sortSelects.children('.is-active').removeClass('is-active');
    sortSelect.addClass('is-active');
    sortParent.find('[data-sort-' + sortTarget + ']').hide();
    if (sortValue > 0) {
      sortParent.find('[data-sort-' + sortTarget + '*="' + sortValue + '"]').show();
    } else {
      sortParent.find('[data-sort-' + sortTarget + ']').show();
    };
  });
  /* new (end) */

  if ($('#pt-logout').length) {
    body.addClass('user-edit');
    head.prepend('<link rel="stylesheet" href="/wiki/load.php?modules=mediawiki.action.edit.styles%7Cmediawiki.editfont.styles%7Cmediawiki.widgets.styles&only=styles">');
    $('#p-tb ul').prepend($('#n-recentchanges'));
    $('#p-cactions ul').prepend($('#n-purge'));
  } else {
    body.addClass('user-anon');
  };

  function preloader() {
    $('.preloader').addClass('preloader--hidden');
    body.removeClass('preloader-active').css("display", "block");
    html.css("background", "transparent");
  }
  setTimeout(preloader, 2000);
  
});

/* (begin) legacy */
if (document.getElementById('la-iframe')) {
  document.querySelector('body').classList.add("la-iframe");
};

if (document.getElementById('la-wiki-1-0')) {
  document.querySelector('#bodyContent').classList.add("la-wiki-1-0-body");
};

$(document).on('click', '.js-title-type', function(){
	var parent = $(this).parent(),
			tabs = parent.find('.js-title-type')
			eq = tabs.index($(this)),
			targets = parent.next().find('.js-title-type-target');
	tabs.removeClass('active');
	$(this).addClass('active');
	targets.removeClass('active');
	targets.eq(eq).addClass('active');
});

$(document).on('click', '.js-title-gender', function(){
	var parent = $(this).parent(),
			tabs = parent.find('.js-title-gender')
			eq = tabs.index($(this)),
			targets = parent.next().find('.js-title-gender-target');
	tabs.removeClass('active');
	$(this).addClass('active');
	targets.removeClass('active');
	targets.eq(eq).addClass('active');
});

$(document).on('click', '.js-la-tab-one', function(){
	var parent = $(this).parent(),
			tabs = parent.find('.js-la-tab-one')
			eq = tabs.index($(this)),
			targets = parent.next().find('.js-la-target-one');
	tabs.removeClass('active');
	$(this).addClass('active');
	targets.removeClass('active');
	targets.eq(eq).addClass('active');
});

$(document).on('click', '.js-la-tab-two', function(){
	var parent = $(this).parent(),
			tabs = parent.find('.js-la-tab-two')
			eq = tabs.index($(this)),
			targets = parent.next().find('.js-la-target-two');
	tabs.removeClass('active');
	$(this).addClass('active');
	targets.removeClass('active');
	targets.eq(eq).addClass('active');
});

$(function(){
var laScrollBottom = document.getElementById("la-scroll_bottom");
laScrollBottom.scrollTop = laScrollBottom.scrollHeight;
});

$( "#la-calendar a" ).each(function( index, el ) {
   $(el).attr("target","_blank");
});
/* (end) legacy */