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

Страница интерфейса MediaWiki
мНет описания правки
мНет описания правки
Строка 3: Строка 3:
// console.log("Привет");
// console.log("Привет");
/*_____________________*/
/*_____________________*/
// Проверяем загрузку jQuery
mw.loader.using('jquery').then(function() {
mw.loader.using('jquery').then(function() {
   $(function() {
   $(function() {
     // Инициализация кастомной панели
     // Создаем основные элементы
     const $header = $('.citizen-header');
     const $panel = $('.citizen-header__custom-bottom').length ?  
    const $customContainer = $('.citizen-header__custom-bottom').length ?  
       $('.citizen-header__custom-bottom') :  
       $('.citizen-header__custom-bottom') :  
       $('<div>').addClass('citizen-header__custom-bottom').appendTo($header);
       $('<div>').addClass('citizen-header__custom-bottom');
   
    const $overlay = $('<div>').addClass('citizen-panel-overlay');
    $('body').prepend($overlay, $panel);


    // Добавление оверлея
     // Инициализация содержимого
    const $overlay = $('<div>').addClass('citizen-overlay');
    $('body').append($overlay);
 
    // Закрытие элементов при клике на оверлей
    $overlay.on('click', function() {
      $header.removeClass('menu-open');
      $overlay.hide();
    });
 
     // Инициализация элементов управления
    $('[data-citizen-toggle]').on('click', function() {
      $header.toggleClass('menu-open');
      $overlay.toggle();
    });
 
    // Ваши кастомные элементы
     const items = [
     const items = [
       {  
       {  
        type: 'image',
         src: 'https://wiki.ss220.club/resources/assets/logo.png',
         src: 'https://wiki.ss220.club/resources/assets/logo.png',
         link: 'https://wiki.ss220.club',
         link: 'https://wiki.ss220.club',
         width: '20px'
         width: '32px'
       },
       },
       {
       {
        type: 'image',
         src: 'https://bs.ss220.club/resources/assets/logo.png',
         src: 'https://bs.ss220.club/resources/assets/logo.png',
         link: 'https://bs.ss220.club',
         link: 'https://bs.ss220.club',
         width: '20px'
         width: '32px'
       }
       }
     ];
     ];


     $customContainer.empty().append(
     $panel.empty().append(
       items.map(item =>  
       items.map(item =>  
         $('<a>')
         $('<a>')
           .attr('href', item.link)
           .attr({
            href: item.link,
            'aria-label': 'External link' // Для доступности
          })
           .append(
           .append(
             $('<img>')
             $('<img>')
               .attr('src', item.src)
               .attr({
              .css('width', item.width)
                src: item.src,
                alt: '',
                loading: 'lazy'
              })
              .css({
                width: item.width,
                height: 'auto',
                transition: 'transform 0.2s'
              })
          )
          .hover(
            function() { $(this).css('transform', 'scale(1.1)'); },
            function() { $(this).css('transform', 'none'); }
           )
           )
          .css({
            display: 'flex',
            alignItems: 'center',
            padding: '4px'
          })
       )
       )
     );
     );
    // Управление состоянием
    function togglePanel(state) {
      $panel.toggleClass('citizen-panel-active', state);
      $overlay.toggle(state);
    }
    // Закрытие по клику вне панели
    $overlay.on('click', () => togglePanel(false));
   
    // Закрытие по ESC
    $(document).on('keydown', e => {
      if (e.key === 'Escape') togglePanel(false);
    });
    // Для тестирования: добавьте кнопку активации
    $('<button>')
      .text('☰')
      .css({
        position: 'fixed',
        left: '20px',
        top: '20px',
        zIndex: '1001'
      })
      .click(() => togglePanel(true))
      .appendTo('body');
   });
   });
});
});

Версия от 06:03, 2 апреля 2025

/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */

// console.log("Привет");
/*_____________________*/
mw.loader.using('jquery').then(function() {
  $(function() {
    // Создаем основные элементы
    const $panel = $('.citizen-header__custom-bottom').length ? 
      $('.citizen-header__custom-bottom') : 
      $('<div>').addClass('citizen-header__custom-bottom');
    
    const $overlay = $('<div>').addClass('citizen-panel-overlay');
    $('body').prepend($overlay, $panel);

    // Инициализация содержимого
    const items = [
      { 
        src: 'https://wiki.ss220.club/resources/assets/logo.png',
        link: 'https://wiki.ss220.club',
        width: '32px'
      },
      {
        src: 'https://bs.ss220.club/resources/assets/logo.png',
        link: 'https://bs.ss220.club',
        width: '32px'
      }
    ];

    $panel.empty().append(
      items.map(item => 
        $('<a>')
          .attr({
            href: item.link,
            'aria-label': 'External link' // Для доступности
          })
          .append(
            $('<img>')
              .attr({
                src: item.src,
                alt: '',
                loading: 'lazy'
              })
              .css({
                width: item.width,
                height: 'auto',
                transition: 'transform 0.2s'
              })
          )
          .hover(
            function() { $(this).css('transform', 'scale(1.1)'); },
            function() { $(this).css('transform', 'none'); }
          )
      )
    );

    // Управление состоянием
    function togglePanel(state) {
      $panel.toggleClass('citizen-panel-active', state);
      $overlay.toggle(state);
    }

    // Закрытие по клику вне панели
    $overlay.on('click', () => togglePanel(false));
    
    // Закрытие по ESC
    $(document).on('keydown', e => {
      if (e.key === 'Escape') togglePanel(false);
    });

    // Для тестирования: добавьте кнопку активации
    $('<button>')
      .text('☰')
      .css({
        position: 'fixed',
        left: '20px',
        top: '20px',
        zIndex: '1001'
      })
      .click(() => togglePanel(true))
      .appendTo('body');
  });
});