MediaWiki:Common.js

De Grimopedia
Revisão de 11h48min de 6 de novembro de 2025 por Barry456 (discussão | contribs)
Ir para navegação Ir para pesquisar

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.
// Navi clicável - formato igual ao bROWiki: <div class="navi-copy"><span>mapa</span><span>x</span><span>y</span></div>
mw.loader.using('mediawiki.util').then(function () {

    function copiarTexto(text) {
        if (navigator.clipboard && navigator.clipboard.writeText) {
            return navigator.clipboard.writeText(text);
        }
        // fallback antigo
        return new Promise(function (resolve, reject) {
            try {
                var temp = document.createElement('textarea');
                temp.value = text;
                document.body.appendChild(temp);
                temp.select();
                document.execCommand('copy');
                document.body.removeChild(temp);
                resolve();
            } catch (e) {
                reject(e);
            }
        });
    }

    function montarNavi(div) {
        var spans = div.getElementsByTagName('span');
        if (spans.length < 3) return;

        var mapa = spans[0].textContent.trim();
        var x    = spans[1].textContent.trim();
        var y    = spans[2].textContent.trim();

        // Limpa conteúdo original
        while (div.firstChild) {
            div.removeChild(div.firstChild);
        }

        // Texto clicável
        var texto = document.createElement('div');
        texto.className = 'navi-copy-text';
        texto.textContent = '(' + mapa + ' ' + x + ', ' + y + ')';

        // Mensagem "copiado"
        var aviso = document.createElement('div');
        aviso.className = 'navi-copied';
        aviso.textContent = 'Comando copiado!';
        aviso.style.display = 'none';

        div.appendChild(texto);
        div.appendChild(aviso);

        texto.addEventListener('click', function () {
            var cmd = '/navi ' + mapa + ' ' + x + ' ' + y;

            copiarTexto(cmd).then(function () {
                aviso.style.display = 'inline';
                setTimeout(function () {
                    aviso.style.display = 'none';
                }, 1500);

                if (mw && mw.notify) {
                    mw.notify('Comando copiado: ' + cmd);
                }
            }).catch(function () {
                alert('Comando: ' + cmd);
            });
        });
    }

    // Aplica em todos os .navi-copy da página
    document.querySelectorAll('.navi-copy').forEach(montarNavi);
});