MediaWiki:Common.js: mudanças entre as edições

Ir para navegação Ir para pesquisar
sem sumário de edição
Sem resumo de edição
Sem resumo de edição
Linha 184: Linha 184:
});
});


// --- SISTEMA DE BANDEIRAS, CACHE E REDIRECIONAMENTO ---
// --- SISTEMA DE BANDEIRAS, CACHE E REDIRECIONAMENTO (VERSÃO TURBO) ---
mw.loader.using(['mediawiki.util']).then(function() {
(function() {
     var pageName = mw.config.get('wgPageName');
     var pageName = mw.config.get('wgPageName');
      
      
     // 1. Identifica em qual idioma o jogador está agora (pela URL)
     // 1. Identifica o idioma atual
     var match = pageName.match(/\/(en|es|pl)$/);
     var match = pageName.match(/\/(en|es|pl)$/);
     var urlLang = match ? match[1] : 'pt'; // Se não tem sufixo, assumimos PT
     var urlLang = match ? match[1] : 'pt';
     var basePageName = pageName.replace(/\/(en|es|pl)$/, '');  
     var basePageName = pageName.replace(/\/(en|es|pl)$/, '');  


     // 2. Lógica de Redirecionamento Automático
     // 2. Lógica de Redirecionamento Automático
     if (urlLang === 'pt') { // Só redireciona se ele tentar acessar a página raiz (em português)
     if (urlLang === 'pt') {  
       
        // Tenta pegar o idioma salvo. Se não tiver, pega o idioma nativo do Google Chrome/PC dele
         var prefLang = localStorage.getItem('otp_lang');
         var prefLang = localStorage.getItem('otp_lang');
         if (!prefLang) {
         if (!prefLang) {
Linha 205: Linha 203:
         }
         }


        // Se a preferência dele for estrangeira, manda ele pra página traduzida instantaneamente!
         if (prefLang && ['en', 'es', 'pl'].includes(prefLang)) {
         if (prefLang && ['en', 'es', 'pl'].includes(prefLang)) {
             var redirectUrl = mw.util.getUrl(basePageName + '/' + prefLang) + '?uselang=' + prefLang;
             // Redirecionamento ultrarrápido antes de a página renderizar
            window.location.replace(redirectUrl);
            window.location.replace('/' + basePageName + '/' + prefLang + '?uselang=' + prefLang);
             return; // Para o script aqui para não carregar mais nada
             return;  
         }
         }
     }
     }


     // 3. Monta as URLs para as bandeiras
     // 3. Monta as URLs diretas (Sem depender de pacotes externos do MediaWiki)
     var urlPT = mw.util.getUrl(basePageName) + '?uselang=pt-br';
     var urlPT = '/' + basePageName + '?uselang=pt-br';
     var urlEN = mw.util.getUrl(basePageName + '/en') + '?uselang=en';
     var urlEN = '/' + basePageName + '/en?uselang=en';
     var urlES = mw.util.getUrl(basePageName + '/es') + '?uselang=es';
     var urlES = '/' + basePageName + '/es?uselang=es';
     var urlPL = mw.util.getUrl(basePageName + '/pl') + '?uselang=pl';
     var urlPL = '/' + basePageName + '/pl?uselang=pl';


    // Cria o HTML adicionando um "ID" para cada bandeira
     var flags = '<div id="wiki-flags" style="text-align:center; padding:15px 0 5px 0; margin-bottom:10px;">' +
     var flags = '<div id="wiki-flags" style="text-align:center; padding:15px 0 5px 0; margin-bottom:10px;">' +
         '<a href="' + urlPT + '" id="flag-pt" style="font-size:26px; margin:0 4px; text-decoration:none; display:inline-block; padding:3px;" title="Português">🇧🇷</a>' +
         '<a href="' + urlPT + '" id="flag-pt" style="font-size:26px; margin:0 4px; text-decoration:none; display:inline-block; padding:3px;" title="Português">🇧🇷</a>' +
Linha 227: Linha 223:
         '</div>';
         '</div>';


     // Injeta as bandeiras na barra lateral
     // 4. Injeta as bandeiras no exato milissegundo que o menu surgir na tela
     $('#p-navigation').before(flags);
     var checkExist = setInterval(function() {
        if ($('#p-navigation').length) {
            $('#p-navigation').before(flags);
            $('#flag-' + urlLang).addClass('flag-ativa');


    // 4. Aplica a classe CSS (borda/brilho) na bandeira do idioma atual
            // Salva a escolha do jogador
    $('#flag-' + urlLang).addClass('flag-ativa');
            $('#wiki-flags a').on('click', function() {
                var clickedLang = $(this).attr('id').replace('flag-', '');
                localStorage.setItem('otp_lang', clickedLang);
            });


    // 5. Salva a escolha no PC do jogador quando ele clica em uma bandeira
            clearInterval(checkExist); // Para o timer de verificação
    $('#wiki-flags a').on('click', function() {
         }
        var clickedLang = $(this).attr('id').replace('flag-', '');
     }, 10); // Checa a cada 10 milissegundos
         localStorage.setItem('otp_lang', clickedLang);
})();
     });
});

Menu de navegação