MediaWiki:Common.js

From XilePK - Ragnarok Online Server
Revision as of 12:12, 11 April 2025 by Admin (talk | contribs)
Jump to navigation Jump to search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/* 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);
});