Difference between revisions of "MediaWiki:Common.js"

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

Revision as of 12:14, 11 April 2025

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

$(document).ready(function() {
  // Função para processar as tags warp
  function processWarpTags() {
    console.log("Processando tags warp...");
    
    // Obtém o conteúdo da página
    var content = $('.mw-parser-output').html();
    if (!content) return;
    
    // Padrão mais flexível para capturar a tag
    var pattern = /<v\s+(.*?)\s+<c\s+(@warp.*?)\s+<c>\s+v>/gi;
    
    // Substitui o padrão por um span clicável
    var newContent = content.replace(pattern, function(match, visible, copyText) {
      console.log("Match encontrado:", 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 conteúdo se houve mudanças
    if (content !== newContent) {
      console.log("Conteúdo atualizado");
      $('.mw-parser-output').html(newContent);
    }
  }
  
  // Adiciona o handler de clique
  $(document).on('click', '.warp-copy', function() {
    var text = $(this).attr('data-copy');
    console.log("Copiando:", text);
    
    var temp = document.createElement('textarea');
    temp.value = text;
    document.body.appendChild(temp);
    temp.select();
    document.execCommand('copy');
    document.body.removeChild(temp);
    
    // Feedback visual
    var origColor = $(this).css('color');
    $(this).css('color', 'green');
    var self = this;
    setTimeout(function() {
      $(self).css('color', origColor);
    }, 500);
  });
  
  // Executa a função após o carregamento da página
  setTimeout(processWarpTags, 500);
  
  // Também executa quando o conteúdo é atualizado via AJAX
  mw.hook('wikipage.content').add(function() {
    setTimeout(processWarpTags, 500);
  });
});