Difference between revisions of "MediaWiki:Common.js"
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);
});