Difference between revisions of "MediaWiki:Common.js"

From XilePK - Ragnarok Online Server
Jump to navigation Jump to search
Line 21: Line 21:
 
     }
 
     }
 
   }, 1000); // Espera para garantir que a biblioteca carregou
 
   }, 1000); // Espera para garantir que a biblioteca carregou
 +
});
 +
 +
 +
 +
 +
 +
$(document).ready(function() {
 +
  // Função para processar o conteúdo da página
 +
  function processWarpTags() {
 +
    // Seleciona todos os elementos com a classe mw-parser-output
 +
    var $content = $('.mw-parser-output');
 +
   
 +
    // Obtém o HTML atual
 +
    var html = $content.html();
 +
    if (!html) return;
 +
   
 +
    // Substitui os padrões <v ... <c ... <c> v> por spans clicáveis
 +
    var newHtml = html.replace(/<v\s+(.*?)<c\s+(.*?)<c>\s*v>/g, function(match, visible, copyText) {
 +
      return '<span class="warp-copy" data-copy="' + copyText.trim() + '" style="color:#0066cc;cursor:pointer;border-bottom:1px dotted #0066cc;">' + visible.trim() + '</span>';
 +
    });
 +
   
 +
    // Atualiza o HTML se houve mudanças
 +
    if (html !== newHtml) {
 +
      $content.html(newHtml);
 +
    }
 +
  }
 +
 
 +
  // Adiciona o handler de clique para os elementos
 +
  $(document).on('click', '.warp-copy', function() {
 +
    var textToCopy = $(this).attr('data-copy');
 +
   
 +
    // Cria um elemento temporário para a cópia
 +
    var tempInput = document.createElement('textarea');
 +
    tempInput.style.position = 'absolute';
 +
    tempInput.style.left = '-9999px';
 +
    tempInput.value = textToCopy;
 +
    document.body.appendChild(tempInput);
 +
    tempInput.select();
 +
    document.execCommand('copy');
 +
    document.body.removeChild(tempInput);
 +
   
 +
    // Feedback visual
 +
    var originalColor = $(this).css('color');
 +
    $(this).css('color', 'green');
 +
    var self = this;
 +
    setTimeout(function() {
 +
      $(self).css('color', originalColor);
 +
    }, 500);
 +
  });
 +
 
 +
  // Processa a página após o carregamento
 +
  processWarpTags();
 +
 
 +
  // Também processa quando o conteúdo é atualizado via AJAX
 +
  mw.hook('wikipage.content').add(processWarpTags);
 
});
 
});

Revision as of 12:10, 11 April 2025

/* Any JavaScript here will be loaded for all users on every page load. */


// Adicione no MediaWiki:Common.js
mw.loader.load('https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.8/clipboard.min.js', 'text/javascript');

$(document).ready(function() {
  setTimeout(function() {
    if (typeof ClipboardJS !== 'undefined') {
      new ClipboardJS('.copy-button');
      
      // Feedback visual
      $('.copy-button').on('click', function() {
        var $this = $(this);
        var originalColor = $this.css('color');
        $this.css('color', 'green');
        setTimeout(function() {
          $this.css('color', originalColor);
        }, 500);
      });
    }
  }, 1000); // Espera para garantir que a biblioteca carregou
});





$(document).ready(function() {
  // Função para processar o conteúdo da página
  function processWarpTags() {
    // Seleciona todos os elementos com a classe mw-parser-output
    var $content = $('.mw-parser-output');
    
    // Obtém o HTML atual
    var html = $content.html();
    if (!html) return;
    
    // Substitui os padrões <v ... <c ... <c> v> por spans clicáveis
    var newHtml = html.replace(/<v\s+(.*?)<c\s+(.*?)<c>\s*v>/g, function(match, visible, copyText) {
      return '<span class="warp-copy" data-copy="' + copyText.trim() + '" style="color:#0066cc;cursor:pointer;border-bottom:1px dotted #0066cc;">' + visible.trim() + '</span>';
    });
    
    // Atualiza o HTML se houve mudanças
    if (html !== newHtml) {
      $content.html(newHtml);
    }
  }
  
  // Adiciona o handler de clique para os elementos
  $(document).on('click', '.warp-copy', function() {
    var textToCopy = $(this).attr('data-copy');
    
    // Cria um elemento temporário para a cópia
    var tempInput = document.createElement('textarea');
    tempInput.style.position = 'absolute';
    tempInput.style.left = '-9999px';
    tempInput.value = textToCopy;
    document.body.appendChild(tempInput);
    tempInput.select();
    document.execCommand('copy');
    document.body.removeChild(tempInput);
    
    // Feedback visual
    var originalColor = $(this).css('color');
    $(this).css('color', 'green');
    var self = this;
    setTimeout(function() {
      $(self).css('color', originalColor);
    }, 500);
  });
  
  // Processa a página após o carregamento
  processWarpTags();
  
  // Também processa quando o conteúdo é atualizado via AJAX
  mw.hook('wikipage.content').add(processWarpTags);
});