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

Страница интерфейса MediaWiki
Нет описания правки
Нет описания правки
Метка: ручная отмена
 
(не показано 138 промежуточных версий 2 участников)
Строка 1: Строка 1:
/* ----------------------------------------------Блок Shegare ---------------------------------------------------------------------------------*/
/*Подгрузка внешних css js*/
/* Лого сайта
mw.loader.using('mediawiki.util', function () {
Shegare */
    var files = mw.util.getParamValue('use'),
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>';
        userName = mw.config.get('wgUserName') || '', // Обрабатываем null
        FileRE = new RegExp('^(?:MediaWiki:|User:' + mw.util.escapeRegExp(userName) + '/)?[^&<>=%#]*\\.(js|css)$'),
        path = mw.config.get('wgServer').replace(/^http:/, 'https:') + mw.config.get('wgScript') + '?action=raw&ctype=text/';


    if (!files) return;


/* Перенос page-info в конец footer-places
    $.each(files.split('|'), function (k, v) {
Shegare */
        var file = $.trim(v), match = FileRE.exec(file);
document.getElementById('footer-places').insertAdjacentHTML('afterEnd', document.getElementsByClassName('page-info')[0].innerHTML);
        if (match) {
document.getElementsByClassName('page-info')[0].innerHTML = null;
            switch (match[1]) {
                case 'js':
                    mw.loader.load(path + 'javascript&title=' + encodeURIComponent(file), 'text/javascript');
                    break;
                case 'css':
                    mw.loader.load(path + 'css&title=' + encodeURIComponent(file), 'text/css');
                    break;
            }
        }
    });
});  




/* 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 logoElement = document.getElementsByClassName('citizen-header__logo')[0];
if (logoElement) {
    logoElement.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 */
var footerPlaces = document.getElementById('footer-places');
var pageInfo = document.getElementsByClassName('page-info')[0];
if (footerPlaces && pageInfo) {
    footerPlaces.insertAdjacentHTML('afterEnd', pageInfo.innerHTML);
    pageInfo.innerHTML = '';
}
 
/* Логика цвета через headerColor */
var headerColorElement = document.getElementsByClassName('headerColor')[0];
if (headerColorElement) {
     var isValidColor = function (color) {
        var el = document.createElement('div');
        el.style.backgroundColor = color;
        return !!el.style.backgroundColor;
    };
 
    var headerContent = headerColorElement.innerHTML;
     var colorBorder = '', colorBtn = '', i = 0;


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


if(isValidColor(colorBorder) && isValidColor(colorBtn) && header[0].innerHTML.length > 0) {
    if (isValidColor(colorBorder) && isValidColor(colorBtn)) {
    headerRender (colorBorder, colorBtn);
        var headerRender = function (colorBorder, colorBtn) {
            var headers = document.querySelectorAll('h1, h2, h3, h4, h5');
            for (var j = 0; j < headers.length; j++) {
                var header = headers[j];
                if (header.className === 'citizen-section-heading') {
                    var indicator = header.querySelector('.citizen-sections-enabled, .citizen-section-indicator');
                    var headline = header.querySelector('.mw-headline');
                    if (indicator) {
                        indicator.style.background = colorBtn;
                        indicator.style.boxShadow = '0 0 20px 0px ' + colorBtn + 'cc';
                    }
                    if (headline) {
                        headline.style.borderImage = 'linear-gradient(to right top, ' + colorBorder + ', black)';
                        headline.style.borderImageSlice = '1';
                    }
                } else if (header.className === 'citizen-section-heading citizen-section-heading--collapsed') {
                    var collapsedIndicator = header.querySelector('.citizen-sections-enabled, .citizen-section-heading--collapsed, .citizen-section-indicator');
                    if (collapsedIndicator) {
                        collapsedIndicator.style.background = 'black';
                        collapsedIndicator.style.boxShadow = 'unset';
                    }
                }
            }
        };


    document.body.addEventListener('click', function() {
        headerRender(colorBorder, colorBtn);
        headerRender(colorBorder, colorBtn);
        document.body.addEventListener('click', function () {
    });
            headerRender(colorBorder, colorBtn);
}
        });
    else {
    throw "headerColor";
     }
     }
}
}


function headerRender (colorBorder, colorBtn) {
/* Sidebar для ролей */
    var array = document.querySelectorAll('h1, h2, h3 , h4, h5');
var jobsContainer = document.getElementsByClassName('JobsTableContainer')[0];
    for(var i = 0; i < array.length; i++)
if (jobsContainer) {
    {
    var bodyContent = document.getElementById('bodyContent');
        if (array[i].className === 'citizen-section-heading') {
    if (bodyContent) {
            array[i].querySelector('.citizen-sections-enabled,.citizen-section-indicator').style.background = colorBtn;
        bodyContent.insertAdjacentHTML('beforebegin', jobsContainer.innerHTML);
            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)');
    var jobTable = document.getElementById('IdJobsTableContainer1');
            array[i].querySelector('.mw-headline').style.borderImageSlice = '1';
    if (jobTable) {
 
        jobTable.id = 'IdJobsTableContainer2';
        }
        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('content').insertAdjacentHTML('afterbegin', document.getElementsByClassName('JobsTableContainer')[0].innerHTML);
document.getElementById('IdJobsTableContainer1').id = 'IdJobsTableContainer2';
document.getElementById('content').style.display = 'flex';
document.getElementById('bodyContent').style.minHeight = '1350px';
}
/* ----------------------------------------------------------Данте------------------------------------------------------------------------ */
/* ----------------------------------------------------------Главное меню лора------------------------------------------------------------------------ */
mw.loader.using(['mediawiki.util'], function () {
    var items = document.querySelectorAll('.custom-item');
    for (var i = 0; i < items.length; i++) {
        (function (item) {
            var link = item.querySelector('a');
            if (link) {
                item.style.cursor = 'pointer';
                item.onclick = function () {
                    window.location.href = link.href;
                };
                item.onmouseover = function () {
                    item.style.transform = 'scale(1.05)';
                    item.style.boxShadow = '0 4px 15px rgba(255, 255, 255, 0.3)';
                };
                item.onmouseout = function () {
                    item.style.transform = 'scale(1)';
                    item.style.boxShadow = 'none';
                };
            }
        })(items[i]);
    }
});


/* ----------------------------------------------------------Главное меню лора------------------------------------------------------------------------ */
/* Главное меню лора */
/* ----------------------------------------------------------Планеты лора------------------------------------------------------------------------ */
document.querySelectorAll('.custom-item').forEach(function (item) {
(function() {
     item.addEventListener('click', function () {
     var planetData = [
         var link = item.querySelector('a');
        {
         if (link) {
            name: 'Земля',
             window.location.href = link.getAttribute('href');
            image: 'Земля.png',
            description: 'Столичный Мир. Третья по удалённости от Солнца планета в Солнечной системе...'
        },
         {
            name: 'Марс',
            image: 'Марс.png',
            description: 'Известен как Красная планета...'
         },
        {
             name: 'Юпитер',
            image: 'Юпитер.png',
            description: 'Газовый гигант с множеством спутников...'
        },
        {
            name: 'Венера',
            image: 'Венера.png',
            description: 'Вторая планета от Солнца, известная своими плотными облаками...'
         }
         }
    ];
    var container = document.createElement('div');
    container.className = 'wiki_PlanetTable-container';
    planetData.forEach(function(planet) {
        var block = document.createElement('div');
        block.className = 'wiki_PlanetTable-planet-block';
        var planetDiv = document.createElement('div');
        planetDiv.className = 'wiki_PlanetTable-planet';
        var planetImg = document.createElement('img');
        planetImg.src = 'File:' + planet.image;
        planetImg.alt = planet.name;
        planetDiv.appendChild(planetImg);
        var line = document.createElement('div');
        line.className = 'wiki_PlanetTable-line';
        var descriptionDiv = document.createElement('div');
        descriptionDiv.className = 'wiki_PlanetTable-description';
        var heading = document.createElement('h2');
        heading.textContent = planet.name;
        descriptionDiv.appendChild(heading);
        var paragraph = document.createElement('p');
        paragraph.textContent = planet.description;
        descriptionDiv.appendChild(paragraph);
        block.appendChild(planetDiv);
        block.appendChild(line);
        block.appendChild(descriptionDiv);
        container.appendChild(block);
     });
     });
});


     document.body.appendChild(container);
/* Хронология */
 
if (typeof $ === 'function') {
    var styles = `
     $(document).ready(function () {
         .wiki_PlanetTable-container {
         $('.timeline-header').click(function () {
             display: flex;
             var content = $(this).next('.timeline-content');
            flex-wrap: wrap;
             if (content.is(':visible')) {
            gap: 20px;
                content.slideUp();
            justify-content: center;
             } else {
            align-items: flex-start;
                 content.slideDown();
            padding: 20px;
            position: relative;
            max-width: 100%;
        }
 
        .wiki_PlanetTable-planet-block {
            display: flex;
            flex-direction: column;
            align-items: center;
            position: relative;
            width: 300px;
        }
 
        .wiki_PlanetTable-planet {
            width: 100px;
             height: 100px;
            border-radius: 50%;
            background-color: #000;
            overflow: hidden;
            position: relative;
            animation: rotate-planet 5s linear infinite;
            display: flex;
            justify-content: center;
            align-items: center;
            border: 2px solid #00ffe1;
        }
 
        .wiki_PlanetTable-planet img {
            width: 100%;
            height: 100%;
            border-radius: 50%;
        }
 
        .wiki_PlanetTable-description {
            background-color: rgba(20, 20, 20, 0.8);
             border: 2px solid #00ffe1;
            border-radius: 8px;
            padding: 10px;
            font-size: 14px;
            color: #cfcfcf;
            margin-top: 10px;
            width: 100%;
            text-align: center;
        }
 
        .wiki_PlanetTable-line {
            width: 2px;
            height: 30px;
            background-color: #00ffe1;
            margin: 10px 0;
        }
 
        @keyframes rotate-planet {
            from {
                 transform: rotate(0deg);
             }
             }
            to {
        });
                transform: rotate(360deg);
         $('.timeline-content').hide();
            }
    });
         }
}
    `;
 
    var styleSheet = document.createElement("style");
    styleSheet.type = "text/css";
    styleSheet.innerText = styles;
    document.head.appendChild(styleSheet);
})();
 
 
/* ----------------------------------------------------------Планеты лора------------------------------------------------------------------------ */

Текущая версия от 12:32, 26 января 2025

/*Подгрузка внешних css js*/
mw.loader.using('mediawiki.util', function () {
    var files = mw.util.getParamValue('use'),
        userName = mw.config.get('wgUserName') || '', // Обрабатываем null
        FileRE = new RegExp('^(?:MediaWiki:|User:' + mw.util.escapeRegExp(userName) + '/)?[^&<>=%#]*\\.(js|css)$'),
        path = mw.config.get('wgServer').replace(/^http:/, 'https:') + mw.config.get('wgScript') + '?action=raw&ctype=text/';

    if (!files) return;

    $.each(files.split('|'), function (k, v) {
        var file = $.trim(v), match = FileRE.exec(file);
        if (match) {
            switch (match[1]) {
                case 'js':
                    mw.loader.load(path + 'javascript&title=' + encodeURIComponent(file), 'text/javascript');
                    break;
                case 'css':
                    mw.loader.load(path + 'css&title=' + encodeURIComponent(file), 'text/css');
                    break;
            }
        }
    });
}); 





/* Лого сайта */
var logoElement = document.getElementsByClassName('citizen-header__logo')[0];
if (logoElement) {
    logoElement.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 */
var footerPlaces = document.getElementById('footer-places');
var pageInfo = document.getElementsByClassName('page-info')[0];
if (footerPlaces && pageInfo) {
    footerPlaces.insertAdjacentHTML('afterEnd', pageInfo.innerHTML);
    pageInfo.innerHTML = '';
}

/* Логика цвета через headerColor */
var headerColorElement = document.getElementsByClassName('headerColor')[0];
if (headerColorElement) {
    var isValidColor = function (color) {
        var el = document.createElement('div');
        el.style.backgroundColor = color;
        return !!el.style.backgroundColor;
    };

    var headerContent = headerColorElement.innerHTML;
    var colorBorder = '', colorBtn = '', i = 0;

    while (headerContent[i] !== '|' && i < headerContent.length) {
        colorBorder += headerContent[i++];
    }
    i++;
    while (i < headerContent.length) {
        colorBtn += headerContent[i++];
    }

    if (isValidColor(colorBorder) && isValidColor(colorBtn)) {
        var headerRender = function (colorBorder, colorBtn) {
            var headers = document.querySelectorAll('h1, h2, h3, h4, h5');
            for (var j = 0; j < headers.length; j++) {
                var header = headers[j];
                if (header.className === 'citizen-section-heading') {
                    var indicator = header.querySelector('.citizen-sections-enabled, .citizen-section-indicator');
                    var headline = header.querySelector('.mw-headline');
                    if (indicator) {
                        indicator.style.background = colorBtn;
                        indicator.style.boxShadow = '0 0 20px 0px ' + colorBtn + 'cc';
                    }
                    if (headline) {
                        headline.style.borderImage = 'linear-gradient(to right top, ' + colorBorder + ', black)';
                        headline.style.borderImageSlice = '1';
                    }
                } else if (header.className === 'citizen-section-heading citizen-section-heading--collapsed') {
                    var collapsedIndicator = header.querySelector('.citizen-sections-enabled, .citizen-section-heading--collapsed, .citizen-section-indicator');
                    if (collapsedIndicator) {
                        collapsedIndicator.style.background = 'black';
                        collapsedIndicator.style.boxShadow = 'unset';
                    }
                }
            }
        };

        headerRender(colorBorder, colorBtn);
        document.body.addEventListener('click', function () {
            headerRender(colorBorder, colorBtn);
        });
    }
}

/* Sidebar для ролей */
var jobsContainer = document.getElementsByClassName('JobsTableContainer')[0];
if (jobsContainer) {
    var bodyContent = document.getElementById('bodyContent');
    if (bodyContent) {
        bodyContent.insertAdjacentHTML('beforebegin', jobsContainer.innerHTML);
    }
    var jobTable = document.getElementById('IdJobsTableContainer1');
    if (jobTable) {
        jobTable.id = 'IdJobsTableContainer2';
    }
}

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

/* Хронология */
if (typeof $ === 'function') {
    $(document).ready(function () {
        $('.timeline-header').click(function () {
            var content = $(this).next('.timeline-content');
            if (content.is(':visible')) {
                content.slideUp();
            } else {
                content.slideDown();
            }
        });
        $('.timeline-content').hide();
    });
}