Перейти к содержанию

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

Материал из Horny Jail WIKI
Новая страница: «Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице: // Переключалка уровней хаоса на странице правил mw.hook('wikipage.content').add(function ($content) { var $tabs = $content.find('.hj-chaos-tabs'); if (!$tabs.length) return; $tabs.each(function () { var $container = $(this...»
 
Нет описания правки
 
(не показано 12 промежуточных версий этого же участника)
Строка 1: Строка 1:
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */
// Переключение вкладок и классов "chaos-*".
// Переключалка уровней хаоса на странице правил
mw.hook('wikipage.content').add(function ($root) {
mw.hook('wikipage.content').add(function ($content) {
  $root.find('.hj-chaos-container').each(function () {
     var $tabs = $content.find('.hj-chaos-tabs');
     var $container = $(this);
     if (!$tabs.length) return;
    var $buttons  = $container.find('.hj-chaos-tab-button');
     var $blocks    = $container.find('.hj-chaos-block');


     $tabs.each(function () {
     if (!$buttons.length || !$blocks.length) return;
        var $container = $(this);
        var $buttons = $container.find('.hj-chaos-tab-button');


        $buttons.on('click', function () {
    var CHAOS_CLASSES = 'chaos-overview chaos-calm chaos-medium chaos-high';
            var $btn = $(this);
            var key = $btn.data('chaos');


            // Переключаем активную кнопку
    function activate(key, $btn) {
            $buttons.removeClass('active');
      // активная кнопка
            $btn.addClass('active');
      $buttons.removeClass('active');
      $btn.addClass('active');


            // Ищем связанные блоки сразу после контейнера
      // активный блок
            var $blocks = $container.nextAll('.hj-chaos-block');
      $blocks.removeClass('active').hide();
            $blocks.removeClass('active');
      $blocks
            $blocks.filter('.hj-chaos-' + key).addClass('active');
        .filter('[data-chaos="' + key + '"]')
        });
        .addClass('active')
        .show();
 
      // класс на контейнере для раскраски рамок/фона
      $container
        .removeClass(CHAOS_CLASSES)
        .addClass('chaos-' + key);
    }
 
    // Инициализация
    var $activeBtn = $buttons.filter('.active').first();
    if ($activeBtn.length) {
      activate($activeBtn.data('chaos'), $activeBtn);
    } else {
      var $first = $buttons.first();
      activate($first.data('chaos'), $first);
    }
 
    // Клики
    $buttons.off('click.hjChaos').on('click.hjChaos', function () {
      var $btn = $(this);
      activate($btn.data('chaos'), $btn);
     });
     });
  });
});
});

Текущая версия от 23:37, 15 ноября 2025

// Переключение вкладок и классов "chaos-*".
mw.hook('wikipage.content').add(function ($root) {
  $root.find('.hj-chaos-container').each(function () {
    var $container = $(this);
    var $buttons   = $container.find('.hj-chaos-tab-button');
    var $blocks    = $container.find('.hj-chaos-block');

    if (!$buttons.length || !$blocks.length) return;

    var CHAOS_CLASSES = 'chaos-overview chaos-calm chaos-medium chaos-high';

    function activate(key, $btn) {
      // активная кнопка
      $buttons.removeClass('active');
      $btn.addClass('active');

      // активный блок
      $blocks.removeClass('active').hide();
      $blocks
        .filter('[data-chaos="' + key + '"]')
        .addClass('active')
        .show();

      // класс на контейнере для раскраски рамок/фона
      $container
        .removeClass(CHAOS_CLASSES)
        .addClass('chaos-' + key);
    }

    // Инициализация
    var $activeBtn = $buttons.filter('.active').first();
    if ($activeBtn.length) {
      activate($activeBtn.data('chaos'), $activeBtn);
    } else {
      var $first = $buttons.first();
      activate($first.data('chaos'), $first);
    }

    // Клики
    $buttons.off('click.hjChaos').on('click.hjChaos', function () {
      var $btn = $(this);
      activate($btn.data('chaos'), $btn);
    });
  });
});