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

Страница интерфейса MediaWiki
Нет описания правки
Нет описания правки
Строка 90: Строка 90:
  */
  */
mw.loader.using('mediawiki.util', function () {
mw.loader.using('mediawiki.util', function () {
     var files = mw.util.getParamValue('use'), user, FileRE, ExtRE, path;
     var files = mw.util.getParamValue('use');
    if (!files) return;


     if (!files) {
     var user = mw.util.escapeRegExp(mw.config.get('wgUserName', ''));
        return;
    var fileRegex = new RegExp('^(?:MediaWiki:' + (user ? '|User:' + user + '/' : '') + ')[^&<>=%#]*\\.(js|css)$');
     }
     var extRegex = /^ext\.[^,]+$/;


     user = mw.util.escapeRegExp(mw.config.get('wgUserName', ''));
     var basePath = mw.config.get('wgScript') + '?action=raw&ctype=text/';
    FileRE = new RegExp('^(?:MediaWiki:' + (user ? '|User:' + user + '/' : '') + ')[^&<>=%#]*\\.(js|css)$');
    ExtRE = new RegExp('^ext\\.[^,]+$');
    path = 'https://spacestories.club' + mw.config.get('wgScript') + '?action=raw&ctype=text/';


     $.each(files.split('|'), function (k, v) {
     $.each(files.split('|'), function (index, value) {
         var f = $.trim(v), what = FileRE.exec(f) || ['', ''];
         var fileName = $.trim(value);
         switch (what[1]) {
        var match = fileRegex.exec(fileName) || ['', ''];
 
         switch (match[1]) {
             case 'js':
             case 'js':
                 mw.loader.load(path + 'javascript&title=' + encodeURIComponent(f));
                 mw.loader.load(basePath + 'javascript&title=' + encodeURIComponent(fileName));
                 break;
                 break;
             case 'css':
             case 'css':
                 mw.loader.load(path + 'css&title=' + encodeURIComponent(f));
                 mw.loader.load(basePath + 'css&title=' + encodeURIComponent(fileName), 'text/css');
                 break;
                 break;
             default:
             default:
                 if (ExtRE.exec(f)) {
                 if (extRegex.test(fileName)) {
                     mw.loader.load(f);
                     mw.loader.load(fileName);
                 }
                 }
         }
         }
     });
     });
});
});

Версия от 05:15, 17 января 2025

/* ----------------------------------------------Блок Shegare ---------------------------------------------------------------------------------*/
/* Лого сайта
Shegare */
document.getElementsByClassName('citizen-header__logo')[0].innerHTML = '<div class="logo1"><a href="https://spacestories.club/index.php?title=Заглавная страница" class="mw-logo citizen-header__button" title="Перейти на заглавную страницу"><img class="mw-logo-icon" src="/resources/assets/logo.png" alt="" aria-hidden="true" height="32" width="32"></a></div><div class="logo2"><a href="https://spacestories.club/index.php?title=Colonial_Marines" class="mw-logo citizen-header__button" title="Перейти на заглавную страницу CM"><img class="mw-logo-icon" src="/images/0/0d/CMlog.png" alt="" aria-hidden="true" height="32" width="32"></a></div>';

/* Перенос page-info в конец footer-places
Shegare */
document.getElementById('footer-places').insertAdjacentHTML('afterEnd', document.getElementsByClassName('page-info')[0].innerHTML);
document.getElementsByClassName('page-info')[0].innerHTML = null;

/* Begin логика цвета через headerColor
Shegare */
if (document.getElementsByClassName('headerColor').length >= 1) {

  var isValidColor = function (color) {
    var el = document.createElement('div');
    el.style.backgroundColor = color;
    return el.style.backgroundColor ? true : false;
  };

  var header = document.getElementsByClassName('headerColor');
  var colorBorder = '';
  var colorBtn = '';
  var i = 0;

  for (; header[0].innerHTML[i] !== '|' && i < header[0].innerHTML.length; i++) {
    colorBorder += header[0].innerHTML[i];
  }
  i++;
  for (; i < header[0].innerHTML.length; i++) {
    colorBtn += header[0].innerHTML[i];
  }

  if (isValidColor(colorBorder) && isValidColor(colorBtn) && header[0].innerHTML.length > 0) {
    headerRender(colorBorder, colorBtn);
    document.body.addEventListener('click', function () {
      headerRender(colorBorder, colorBtn);
    });
  } else {
    throw "headerColor";
  }
}

function headerRender(colorBorder, colorBtn) {
  var array = document.querySelectorAll('h1, h2, h3 , h4, h5');
  for (var i = 0; i < array.length; i++) {
    if (array[i].className === 'citizen-section-heading') {
      array[i].querySelector('.citizen-sections-enabled,.citizen-section-indicator').style.background = colorBtn;
      array[i].querySelector('.citizen-sections-enabled,.citizen-section-indicator').style.boxShadow = ('0 0 20px 0px ' + colorBtn + 'cc');
      array[i].querySelector('.mw-headline').style.borderImage = ('linear-gradient(to right top, ' + colorBorder + ', black)');
      array[i].querySelector('.mw-headline').style.borderImageSlice = '1';
    } else if (array[i].className === 'citizen-section-heading citizen-section-heading--collapsed') {
      array[i].querySelector('.citizen-sections-enabled,.citizen-section-heading--collapsed,.citizen-section-indicator').style.background = 'black';
      array[i].querySelector('.citizen-sections-enabled,.citizen-section-heading--collapsed,.citizen-section-indicator').style.boxShadow = 'unset';
    }
  }
}
/* End логика цвета через headerColor
Shegare */

/* Begin sidebar для ролей
Shegare */
if (document.getElementsByClassName('JobsTableContainer').length >= 1) {
    document.getElementById('bodyContent').insertAdjacentHTML('beforebegin', document.getElementsByClassName('JobsTableContainer')[0].innerHTML);
    document.getElementById('IdJobsTableContainer1').id = 'IdJobsTableContainer2';
}

/* End sidebar для ролей
Shegare */

/* ----------------------------------------------------------Данте------------------------------------------------------------------------ */

/* ----------------------------------------------------------Главное меню лора------------------------------------------------------------------------ */
document.querySelectorAll('.custom-item').forEach(function(item) {
  item.addEventListener('click', function() {
    window.location.href = item.querySelector('a').getAttribute('href');
  });
});

/*------------------------------------------------Полигон-----------------------------------------------------------------------------*/

/* Внешние JS файлы?
/**
 * Load CSS and JS files temporarily through URL.
 * &use=File1.css|File2.css|File3.js
 *
 * Required modules: mediawiki.util
 * @source https://www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL#Load_multiple_files
 * @revision 2023-09-24
 */
mw.loader.using('mediawiki.util', function () {
    var files = mw.util.getParamValue('use');
    if (!files) return;

    var user = mw.util.escapeRegExp(mw.config.get('wgUserName', ''));
    var fileRegex = new RegExp('^(?:MediaWiki:' + (user ? '|User:' + user + '/' : '') + ')[^&<>=%#]*\\.(js|css)$');
    var extRegex = /^ext\.[^,]+$/;

    var basePath = mw.config.get('wgScript') + '?action=raw&ctype=text/';

    $.each(files.split('|'), function (index, value) {
        var fileName = $.trim(value);
        var match = fileRegex.exec(fileName) || ['', ''];

        switch (match[1]) {
            case 'js':
                mw.loader.load(basePath + 'javascript&title=' + encodeURIComponent(fileName));
                break;
            case 'css':
                mw.loader.load(basePath + 'css&title=' + encodeURIComponent(fileName), 'text/css');
                break;
            default:
                if (extRegex.test(fileName)) {
                    mw.loader.load(fileName);
                }
        }
    });
});