Difference between revisions of "MediaWiki:Common.js"

From XilePK - Ragnarok Online Server
Jump to navigation Jump to search
Line 1: Line 1:
 
/* Any JavaScript here will be loaded for all users on every page load. */
 
/* 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() {
 
$(document).ready(function() {

Revision as of 12:12, 11 April 2025

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

$(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);
});