Mudanças entre as edições de "Widget:Droflax"

De Wiki Gla
Ir para navegação Ir para pesquisar
Linha 1: Linha 1:
<!DOCTYPE html>
<script>
<html lang="pt-BR">
$(function () {
<head>
  const langs = ['pt', 'en', 'es', 'pl'];
   <meta charset="UTF-8">
   const langFlags = {
  <title>Botões de Idioma - Wiki GLA</title>
    pt: 'https://upload.wikimedia.org/wikipedia/en/0/05/Flag_of_Brazil.svg',
  <style>
    en: 'https://upload.wikimedia.org/wikipedia/en/a/a4/Flag_of_the_United_States.svg',
     body {
     es: 'https://upload.wikimedia.org/wikipedia/en/9/9a/Flag_of_Spain.svg',
      font-family: Arial, sans-serif;
    pl: 'https://upload.wikimedia.org/wikipedia/en/1/12/Flag_of_Poland.svg'
      padding: 40px;
  };
      background-color: #f9f9f9;
    }


    .language-buttons {
  const currentTitle = mw.config.get('wgPageName'); // Ej: Chefões, Chefões/en
      position: fixed;
  const baseTitle = currentTitle.replace(/\/(pt|en|es|pl)$/, ''); // sin sufijo
      top: 20px;
  const currentLang = currentTitle.match(/\/(pt|en|es|pl)$/)?.[1] || 'pt';
      right: 20px;
      display: flex;
      gap: 10px;
      background-color: #ffffffcc;
      padding: 6px 10px;
      border-radius: 8px;
      box-shadow: 0 0 6px rgba(0, 0, 0, 0.2);
      z-index: 999;
    }


    .language-buttons a img {
  // Redirección automática si se eligió un idioma anteriormente
      width: 40px;
  const preferedLang = localStorage.getItem('preferedLang');
      height: 28px;
  const alreadyInLang = currentLang === preferedLang;
      border-radius: 6px;
  const redirected = sessionStorage.getItem('langRedirectDone');
      border: 1px solid #ccc;
      transition: transform 0.2s ease;
      object-fit: cover;
    }


     .language-buttons a img:hover {
  if (preferedLang && !alreadyInLang && !redirected) {
      transform: scale(1.1);
     const targetTitle = baseTitle + (preferedLang === 'pt' ? '' : '/' + preferedLang);
      cursor: pointer;
    sessionStorage.setItem('langRedirectDone', '1');
      border-color: #888;
    window.location.href = mw.util.getUrl(targetTitle);
    }
    return;
  </style>
  }
</head>
<body>


   <div class="language-buttons">
   // Crear contenedor de botones
    <a href="#" onclick="goToLang('pt')" title="Português">
  const $container = $('<div>').addClass('language-buttons').css({
      <img src="https://upload.wikimedia.org/wikipedia/en/0/05/Flag_of_Brazil.svg" alt="Português">
     position: 'fixed',
     </a>
     top: '20px',
     <a href="#" onclick="goToLang('en')" title="English">
    right: '20px',
      <img src="https://upload.wikimedia.org/wikipedia/en/a/a4/Flag_of_the_United_States.svg" alt="English">
     display: 'flex',
     </a>
     gap: '8px',
     <a href="#" onclick="goToLang('es')" title="Español">
    background: '#ffffffcc',
      <img src="https://upload.wikimedia.org/wikipedia/en/9/9a/Flag_of_Spain.svg" alt="Español">
     padding: '6px 10px',
     </a>
     borderRadius: '8px',
     <a href="#" onclick="goToLang('pl')" title="Polski">
    boxShadow: '0 0 6px rgba(0,0,0,0.2)',
      <img src="https://upload.wikimedia.org/wikipedia/en/1/12/Flag_of_Poland.svg" alt="Polski">
     zIndex: 999
     </a>
   });
   </div>


   <script>
   langs.forEach(lang => {
     const pageMap = {
     const pageTitle = baseTitle + (lang === 'pt' ? '' : '/' + lang);
      'Chefões': {
    const $link = $('<a>')
        en: 'Bosses',
       .attr('href', mw.util.getUrl(pageTitle))
        es: 'Jefes',
       .attr('title', lang.toUpperCase())
        pl: 'Bossowie',
       .on('click', function () {
        pt: 'Chefões'
         localStorage.setItem('preferedLang', lang);
      },
         sessionStorage.removeItem('langRedirectDone');
       'Bosses': {
       });
        pt: 'Chefões',
        es: 'Jefes',
        pl: 'Bossowie',
        en: 'Bosses'
      },
       'Jefes': {
        pt: 'Chefões',
        en: 'Bosses',
        pl: 'Bossowie',
        es: 'Jefes'
       },
      'Bossowie': {
        pt: 'Chefões',
        en: 'Bosses',
        es: 'Jefes',
        pl: 'Bossowie'
      },
      'Página_em_Português': {
         en: 'Page_in_English',
        es: 'Pagina_en_Espanol',
        pl: 'Strona_po_Polsku',
         pt: 'Página_em_Português'
       }
    };


     function goToLang(lang) {
     const $img = $('<img>')
      const path = window.location.pathname;
      .attr('src', langFlags[lang])
      const currentPage = decodeURIComponent(path.split('/').pop());
      .css({
      console.log(path);
        width: '32px',
       console.log(currentPage);
        height: '24px',
        borderRadius: '6px',
        border: lang === currentLang ? '2px solid #333' : '1px solid #ccc',
        transition: 'transform 0.2s',
        objectFit: 'cover'
      })
      .hover(
        function () { $(this).css('transform', 'scale(1.1)'); },
        function () { $(this).css('transform', 'scale(1)'); }
       );


      const mapping = pageMap[currentPage];
    $link.append($img);
      if (mapping && mapping[lang]) {
    $container.append($link);
        const newPage = mapping[lang];
  });
        const newPath = path.replace(currentPage, encodeURIComponent(newPage));
        window.location.pathname = newPath;
      } else {
        alert('Tradução não disponível para esta página.');
      }
    }
  </script>


</body>
  $('body').append($container);
</html>
});
</script>

Edição das 00h09min de 1 de julho de 2025

<script> $(function () {

 const langs = ['pt', 'en', 'es', 'pl'];
 const langFlags = {
   pt: 'https://upload.wikimedia.org/wikipedia/en/0/05/Flag_of_Brazil.svg',
   en: 'https://upload.wikimedia.org/wikipedia/en/a/a4/Flag_of_the_United_States.svg',
   es: 'https://upload.wikimedia.org/wikipedia/en/9/9a/Flag_of_Spain.svg',
   pl: 'https://upload.wikimedia.org/wikipedia/en/1/12/Flag_of_Poland.svg'
 };
 const currentTitle = mw.config.get('wgPageName'); // Ej: Chefões, Chefões/en
 const baseTitle = currentTitle.replace(/\/(pt|en|es|pl)$/, ); // sin sufijo
 const currentLang = currentTitle.match(/\/(pt|en|es|pl)$/)?.[1] || 'pt';
 // Redirección automática si se eligió un idioma anteriormente
 const preferedLang = localStorage.getItem('preferedLang');
 const alreadyInLang = currentLang === preferedLang;
 const redirected = sessionStorage.getItem('langRedirectDone');
 if (preferedLang && !alreadyInLang && !redirected) {
   const targetTitle = baseTitle + (preferedLang === 'pt' ?  : '/' + preferedLang);
   sessionStorage.setItem('langRedirectDone', '1');
   window.location.href = mw.util.getUrl(targetTitle);
   return;
 }
 // Crear contenedor de botones

const $container = $('

').addClass('language-buttons').css({
   position: 'fixed',
   top: '20px',
   right: '20px',
   display: 'flex',
   gap: '8px',
   background: '#ffffffcc',
   padding: '6px 10px',
   borderRadius: '8px',
   boxShadow: '0 0 6px rgba(0,0,0,0.2)',
   zIndex: 999
 });
 langs.forEach(lang => {
   const pageTitle = baseTitle + (lang === 'pt' ?  : '/' + lang);
   const $link = $('<a>')
     .attr('href', mw.util.getUrl(pageTitle))
     .attr('title', lang.toUpperCase())
     .on('click', function () {
       localStorage.setItem('preferedLang', lang);
       sessionStorage.removeItem('langRedirectDone');
     });
   const $img = $('<img>')
     .attr('src', langFlags[lang])
     .css({
       width: '32px',
       height: '24px',
       borderRadius: '6px',
       border: lang === currentLang ? '2px solid #333' : '1px solid #ccc',
       transition: 'transform 0.2s',
       objectFit: 'cover'
     })
     .hover(
       function () { $(this).css('transform', 'scale(1.1)'); },
       function () { $(this).css('transform', 'scale(1)'); }
     );
   $link.append($img);
   $container.append($link);
 });
 $('body').append($container);

}); </script>