Jump to content

MediaWiki:Common.js: Difference between revisions

From EthernalRO Wiki
No edit summary
No edit summary
 
Line 1: Line 1:
/**
/* Script para copiar navegação */
* Script para copiar coordenadas de navegação (/navi) ao clicar
* Réplica da funcionalidade do bROWiki
*/
$(function() {
$(function() {
     $('.navi-link').on('click', function(e) {
    // Usa 'body' para garantir que funcione mesmo em elementos carregados dinamicamente
        // Previne qualquer comportamento padrão
     $('body').on('click', '.navi-link', function(e) {
         e.preventDefault();
         e.preventDefault();
       
         var $this = $(this);
         var $this = $(this);
       
        // Pega os dados armazenados no template
         var map = $this.data('map');
         var map = $this.data('map');
         var x = $this.data('x');
         var x = $this.data('x');
         var y = $this.data('y');
         var y = $this.data('y');
          
          
         // Monta a string no formato /navi mapa x/y
         // Remove espaços extras caso existam
         // O replace é uma segurança para garantir que x/y usem barras se necessário,
         if(map) map = map.trim();
         // mas o formato padrão do bRO é /navi mapa x/y
          
         var command = '/navi ' + map + ' ' + x + '/' + y;
         var command = '/navi ' + map + ' ' + x + '/' + y;
          
          
         // Cria um elemento temporário para copiar o texto
         // Cria elemento invisível para copiar
         var $temp = $("<input>");
         var $temp = $("<input>");
         $("body").append($temp);
         $("body").append($temp);
         $temp.val(command).select();
         $temp.val(command).select();
        document.execCommand("copy");
        $temp.remove();
          
          
         // Tenta executar o comando de cópia
         // Feedback visual
         try {
         var $msg = $this.find('.navi-msg');
            document.execCommand("copy");
        $msg.show().fadeOut(2000);
           
            // Se der certo, mostra a mensagem "Copiado"
            var $msg = $this.find('.navi-msg');
            $msg.fadeIn(200);
           
            // Esconde a mensagem após 2 segundos
            setTimeout(function() {
                $msg.fadeOut(500);
            }, 2000);
           
        } catch (err) {
            console.error('Erro ao copiar navegação:', err);
            alert('Não foi possível copiar o comando. Tente manualmente: ' + command);
        }
       
        // Remove o elemento temporário
        $temp.remove();
     });
     });
});
});

Latest revision as of 23:09, 26 January 2026

/* Script para copiar navegação */
$(function() {
    // Usa 'body' para garantir que funcione mesmo em elementos carregados dinamicamente
    $('body').on('click', '.navi-link', function(e) {
        e.preventDefault();
        var $this = $(this);
        var map = $this.data('map');
        var x = $this.data('x');
        var y = $this.data('y');
        
        // Remove espaços extras caso existam
        if(map) map = map.trim();
        
        var command = '/navi ' + map + ' ' + x + '/' + y;
        
        // Cria elemento invisível para copiar
        var $temp = $("<input>");
        $("body").append($temp);
        $temp.val(command).select();
        document.execCommand("copy");
        $temp.remove();
        
        // Feedback visual
        var $msg = $this.find('.navi-msg');
        $msg.show().fadeOut(2000);
    });
});