Difference between revisions of "MediaWiki:Common.js"
Jump to navigation
Jump to search
Line 2: | Line 2: | ||
$(document).ready(function() { | $(document).ready(function() { | ||
− | // Função para processar | + | // Função para processar as tags warp |
function processWarpTags() { | function processWarpTags() { | ||
− | + | console.log("Processando tags warp..."); | |
− | |||
− | // Obtém o | + | // Obtém o conteúdo da página |
− | var | + | var content = $('.mw-parser-output').html(); |
− | if (! | + | if (!content) return; |
− | // | + | // Padrão mais flexível para capturar a tag |
− | var | + | 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 | + | // Atualiza o conteúdo se houve mudanças |
− | if ( | + | if (content !== newContent) { |
− | $ | + | console.log("Conteúdo atualizado"); |
+ | $('.mw-parser-output').html(newContent); | ||
} | } | ||
} | } | ||
− | // Adiciona o handler de clique | + | // Adiciona o handler de clique |
$(document).on('click', '.warp-copy', function() { | $(document).on('click', '.warp-copy', function() { | ||
− | var | + | var text = $(this).attr('data-copy'); |
+ | console.log("Copiando:", text); | ||
− | + | var temp = document.createElement('textarea'); | |
− | var | + | temp.value = text; |
− | + | document.body.appendChild(temp); | |
− | + | temp.select(); | |
− | |||
− | document.body.appendChild( | ||
− | |||
document.execCommand('copy'); | document.execCommand('copy'); | ||
− | document.body.removeChild( | + | document.body.removeChild(temp); |
// Feedback visual | // Feedback visual | ||
− | var | + | 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', | + | $(self).css('color', origColor); |
}, 500); | }, 500); | ||
}); | }); | ||
− | // | + | // Executa a função após o carregamento da página |
− | processWarpTags | + | setTimeout(processWarpTags, 500); |
− | // Também | + | // 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); }); });