Jump to content

MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 2: Line 2:




// 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 () {
mw.loader.using(['mediawiki.util', 'jquery'], function () {
   
     function setupAtlasDropdown() {
     function setupAtlasDropdown() {
         var $sidebar = $('.vector-main-menu, #mw-panel, .mw-table-of-contents-container');
        // 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;
         if (!$sidebar.length) return;


         // 1. Identifica e esconde as subpáginas
         // 1. Identifica e esconde as subpáginas apenas no menu lateral
         $sidebar.find('li').each(function() {
         $sidebar.find('li').each(function() {
             var $li = $(this);
             var $li = $(this);
            var text = $li.text().trim();
           
            // Verifica se apanha as subpáginas pelo URL ou pelo texto exato
             var hasSubpage = $li.find('a[href*="SENSBLUE_ATLAS/"], .mw-selflink[href*="SENSBLUE_ATLAS/"]').length > 0  
             var hasSubpage = $li.find('a[href*="SENSBLUE_ATLAS/"], .mw-selflink[href*="SENSBLUE_ATLAS/"]').length > 0  
                             || $li.text().includes('Datasheet')
                             || text === 'Datasheet'  
                             || $li.text().includes('Release Notes');
                             || text === 'Release Notes';
              
              
             if (hasSubpage && !$li.text().includes('SENSBLUE ATLAS')) {
             if (hasSubpage && !text.includes('SENSBLUE ATLAS')) {
                 $li.addClass('atlas-submenu');
                 $li.addClass('atlas-submenu');
             }
             }
         });
         });


         // 2. Procura o item pai (SENSBLUE ATLAS)
         // 2. Procura o item pai (SENSBLUE ATLAS) na barra lateral
         var $mainAtlasLi = $sidebar.find('li').filter(function() {
         var $mainAtlasLi = $sidebar.find('li').filter(function() {
             var text = $(this).clone().children().remove().end().text().trim() || $(this).text().trim();
             var text = $(this).clone().children().remove().end().text().trim() || $(this).text().trim();
Line 25: Line 31:
         }).first();
         }).first();


         // Se encontrou e ainda não tem a seta
         // 3. Injeta a seta nativa se encontrar o link
         if ($mainAtlasLi.length && !$mainAtlasLi.find('.atlas-toggle-btn').length) {
         if ($mainAtlasLi.length && !$mainAtlasLi.find('.atlas-toggle-btn').length) {
              
              
Line 39: Line 45:
             });
             });


            // 3. Cria o elemento do botão (vazio, pois o CSS vai colocar a imagem idêntica à Datasheet)
             var $toggleBtn = $('<span class="atlas-toggle-btn"></span>');
             var $toggleBtn = $('<span class="atlas-toggle-btn"></span>');
           
            // Coloca do lado direito
             $mainAtlasLi.append($toggleBtn);  
             $mainAtlasLi.append($toggleBtn);  


            // 4. Evento do clique
             $toggleBtn.on('click', function(e) {
             $toggleBtn.on('click', function(e) {
                 e.preventDefault();
                 e.preventDefault();
                 e.stopPropagation();
                 e.stopPropagation();
                  
                  
                // Abre/fecha o menu e roda a seta ao mesmo tempo via CSS
                 $('.atlas-submenu').toggleClass('is-open');
                 $('.atlas-submenu').toggleClass('is-open');
                 $(this).toggleClass('is-active');
                 $(this).toggleClass('is-active');
Line 57: Line 58:
     }
     }


    // GATILHO COMPATÍVEL COM ANÓNIMOS: Executa em múltiplos estágios do carregamento
     $(document).ready(setupAtlasDropdown);
     $(document).ready(setupAtlasDropdown);
     $(window).on('load', setupAtlasDropdown);
     $(window).on('load', setupAtlasDropdown);
    mw.hook('wikipage.content').add(setupAtlasDropdown);
});
});