Ir para o conteúdo

MediaWiki:Common.js

De Exupedia

Nota: Após publicar, você pode ter que limpar o "cache" do seu navegador para ver as alterações.

  • Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
  • Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
  • Edge: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5.
  • Opera: Pressione Ctrl-F5.
/* Códigos JavaScript aqui colocados serão carregados por todos aqueles que acessarem alguma página deste wiki */
/* =========================================================
   EXUPEDIA — FOOTER GLOBAL (desktop + mobile)
   OS com mesmo “quadrado” do Powered by MediaWiki
   - Breakpoint igual: (min-width: 500px) via <picture>
   - Tamanho do botão: clonado do botão do MediaWiki (medido em runtime)
   ========================================================= */

(function () {
  function syncOSButtonSize() {
    var poweredByLi = document.getElementById('footer-poweredbyico');
    var osLi = document.getElementById('footer-osico');
    if (!poweredByLi || !osLi) return;

    var mwA = poweredByLi.querySelector('a');
    var osA = osLi.querySelector('a');
    if (!mwA || !osA) return;

    // mede o tamanho final (já com CSS do skin)
    var r = mwA.getBoundingClientRect();
    if (!r.width || !r.height) return;

    osA.style.width = r.width + 'px';
    osA.style.height = r.height + 'px';
  }

  function insertOSFooterIcon() {
    var poweredBy = document.getElementById('footer-poweredbyico');
    if (!poweredBy) return;

    if (document.getElementById('footer-osico')) {
      syncOSButtonSize();
      return;
    }

    var li = document.createElement('li');
    li.id = 'footer-osico';

    var a = document.createElement('a');
    a.href = 'https://strigosatanis.com';
    a.target = '_blank';
    a.rel = 'noopener noreferrer';
    a.className =
      'cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled os-footer-link';
    a.title = 'Ordo Strigosatanis';

    // <picture> igual ao MediaWiki (>=500 grande / <500 pequeno)
    var picture = document.createElement('picture');
    picture.className = 'os-footer-picture';

    var source = document.createElement('source');
    source.media = '(min-width: 500px)';
    source.srcset = '/w/resources/assets/os.svg';
    source.setAttribute('width', '88');
    source.setAttribute('height', '31');

    var img = document.createElement('img');
    img.src = '/w/resources/assets/os-small.svg'; // fallback (<500px)
    img.alt = 'Curated by Ordo Strigosatanis';
    img.width = 25;
    img.height = 25;
    img.loading = 'lazy';
    img.decoding = 'async';
    img.className = 'os-footer-img';

    picture.appendChild(source);
    picture.appendChild(img);

    a.appendChild(picture);
    li.appendChild(a);

    poweredBy.parentNode.insertBefore(li, poweredBy);

    // sincroniza tamanho após inserir (e após layout assentar)
    syncOSButtonSize();
    requestAnimationFrame(syncOSButtonSize);
    setTimeout(syncOSButtonSize, 50);
  }

  // carrega cedo + compatível com navegação parcial
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', insertOSFooterIcon, { once: true });
  } else {
    insertOSFooterIcon();
  }

  if (window.mw && mw.hook) {
    mw.hook('wikipage.content').add(function () {
      insertOSFooterIcon();
      syncOSButtonSize();
    });
  }

  // mantém igual quando o breakpoint muda (resize/orientation)
  window.addEventListener('resize', function () {
    syncOSButtonSize();
  }, { passive: true });
})();