Jump to content

MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
 
(35 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
/* Any JavaScript here will be loaded for all users on every page load. */
/* Widget de Tradução GTranslate */
$(document).ready(function() {
  if ($('#p-navigation').length) {
    if (!$('.gtranslate_wrapper').length) {
      $('#p-navigation').prepend('<div class="gtranslate_wrapper"></div>');
    }
    window.gtranslateSettings = {
      "default_language": "en",
      "languages": ["en", "pt", "es", "fr", "de", "it", "nl", "pl", "ja"],
      "wrapper_selector": ".gtranslate_wrapper"
    };
    $.getScript('https://cdn.gtranslate.net/widgets/latest/dropdown.js');
  }
});
// Buy now novo separador
$(document).ready(function () {
    $('.button-buy-now a').attr('target', '_blank').attr('rel', 'noopener noreferrer');
});




$(document).ready(function() {
// Força o menu lateral a expandir (Vector 2022) se estiver colapsado
     // 1. Procura todas as subpáginas do Atlas no menu lateral e esconde-as
mw.hook('wikipage.content').add(function () {
    $('.mw-table-of-contents-container, .vector-main-menu')
     if (document.documentElement.classList.contains('vector-feature-main-menu-pinned-disabled')) {
         .find('a[href*="SENSBLUE_ATLAS/"]')
        var pinButton = document.getElementById('vector-main-menu-dropdown-checkbox');
        .closest('li')
        if (pinButton) {
        .addClass('atlas-submenu');
            // Remove a classe de desativado e força o estado expandido
            document.documentElement.classList.remove('vector-feature-main-menu-pinned-disabled');
            document.documentElement.classList.add('vector-feature-main-menu-pinned-enabled');
        }
    }
});
 
 
// Força o MediaWiki a carregar os módulos básicos em qualquer tipo de sessão (anónima ou registada)
mw.loader.using(['mediawiki.util', 'jquery'], function () {
 
    // Lista de secções principais com subpáginas.
    // Para adicionares uma nova secção no futuro, basta acrescentar o nome aqui.
    var sidebarSections = ['SENSBLUE MONARCH', 'SENSBLUE ATLAS'];
 
    function setupSidebarDropdowns() {
        // Alvo exclusivo: Apenas o menu de navegação da skin, ignorando o índice de conteúdos (Contents) da página
        var $sidebar = $('.vector-main-menu, #mw-panel');
        if (!$sidebar.length) return;
 
         sidebarSections.forEach(function (sectionName) {
            var slug = sectionName.replace(/ /g, '_');
 
            // 1. Identifica as subpáginas desta secção pelo URL (funciona para qualquer subpágina, incluindo novas)
            $sidebar.find('li').each(function () {
                var $li = $(this);
                var $link = $li.find('a, .mw-selflink').first();
                var href = $link.attr('href') || '';
                var isSubpage = href.indexOf(slug + '/') !== -1;
 
                if (isSubpage) {
                    $li.addClass('wiki-submenu').attr('data-group', slug);
                }
            });
 
            // 2. Procura o item pai (ex: "SENSBLUE MONARCH") na barra lateral
            var $parentLi = $sidebar.find('li').filter(function () {
                var text = $(this).clone().children().remove().end().text().trim() || $(this).text().trim();
                return text === sectionName;
            }).first();
 
            // 3. Injeta a seta nativa se encontrar o link e ainda não a tiver
            if ($parentLi.length && !$parentLi.find('.wiki-toggle-btn').length) {
 
                $parentLi.css({
                    'display': 'flex',
                    'align-items': 'center',
                    'justify-content': 'flex-start'
                });


    // 2. Encontra o item de lista (li) que contém o link principal do Atlas
                $parentLi.find('a, .mw-selflink, span').css({
    var $mainAtlasLi = $('.mw-table-of-contents-container, .vector-main-menu')
                    'display': 'inline',
        .find('a[href$="SENSBLUE_ATLAS"]')
                    'width': 'auto'
        .closest('li');
                });


    if ($mainAtlasLi.length) {
                var $toggleBtn = $('<span class="wiki-toggle-btn"></span>');
        // Alinha o conteúdo original para podermos meter a seta ao lado
                $parentLi.append($toggleBtn);
        $mainAtlasLi.css('display', 'flex').css('align-items', 'center');


        // 3. Injeta a seta ao lado do link principal
                $toggleBtn.on('click', function (e) {
        var $toggleBtn = $('<span class="atlas-toggle-btn">▶</span>');
                    e.preventDefault();
        $mainAtlasLi.append($toggleBtn);
                    e.stopPropagation();


        // 4. Lógica de clique para abrir/fechar
                    $sidebar.find('.wiki-submenu[data-group="' + slug + '"]').toggleClass('is-open');
        $toggleBtn.on('click', function(e) {
                    $(this).toggleClass('is-active');
            e.preventDefault();
                });
            e.stopPropagation();
           
            // Abre ou fecha o submenu
            $('.atlas-submenu').toggleClass('is-open');
           
            // Alterna o símbolo da seta
            if ($(this).text() === '▶') {
                $(this).text('▼');
            } else {
                $(this).text('▶');
             }
             }
         });
         });
     }
     }
    // GATILHO COMPATÍVEL COM ANÓNIMOS: Executa em múltiplos estágios do carregamento
    $(document).ready(setupSidebarDropdowns);
    $(window).on('load', setupSidebarDropdowns);
    mw.hook('wikipage.content').add(setupSidebarDropdowns);
});
});