Jump to content

MediaWiki:Common.js: Difference between revisions

From EthernalRO Wiki
No edit summary
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
$(function () {
/* Script para copiar navegação */
     // adiciona evento de clique em elementos com classe naviCopy
$(function() {
     document.querySelectorAll(".naviCopy").forEach(el => {
     // Usa 'body' para garantir que funcione mesmo em elementos carregados dinamicamente
         el.addEventListener("click", function () {
     $('body').on('click', '.navi-link', function(e) {
            const mapa = el.getAttribute("data-mapa");
         e.preventDefault();
            const x = el.getAttribute("data-x");
        var $this = $(this);
            const y = el.getAttribute("data-y");
        var map = $this.data('map');
 
        var x = $this.data('x');
            const text = "/navi " + mapa + "," + x + "," + y;
        var y = $this.data('y');
 
       
            // copiar para clipboard
        // Remove espaços extras caso existam
            if (navigator.clipboard && window.isSecureContext) {
        if(map) map = map.trim();
                navigator.clipboard.writeText(text).then(() => {
       
                    mw.notify("Copiado: " + text);
        var command = '/navi ' + map + ' ' + x + '/' + y;
                });
       
            } else {
        // Cria elemento invisível para copiar
                const ta = document.createElement("textarea");
        var $temp = $("<input>");
                ta.value = text;
        $("body").append($temp);
                document.body.appendChild(ta);
        $temp.val(command).select();
                ta.select();
        document.execCommand("copy");
                document.execCommand("copy");
        $temp.remove();
                document.body.removeChild(ta);
       
                mw.notify("Copiado: " + text);
        // Feedback visual
            }
        var $msg = $this.find('.navi-msg');
         });
         $msg.show().fadeOut(2000);
     });
     });
});
});
// Navi Copy JQuery Code by Kaddy!
$('.navi-copy').each(function(index, element) {
if ($("#navi-copy-textarea").attr('exists') != "true") {
txtdiv = '<textarea style="height:1px;width:1px; position:absolute;left:-1000px;" id="navi-copy-textarea" exists="true">Filler Text</textarea><style>.navi-copy-text { cursor:pointer; color:#006400; padding:1px; display:inline-block; } .navi-copy-text:hover { color:#c1a1f1; } .navi-copied { text-align:center; border:1px dotted #2899e8; border-radius:3px; color:#006400; display:inline-block; } .navi-copy {  display:inline-block; } </style>';
$("body").append(txtdiv);
}
var map = $(element).children().get(0).innerHTML;
var x = $(element).children().get(1).innerHTML;
var y = $(element).children().get(2).innerHTML;
var newhtml = "<div class=\"navi-copy-text\" onclick=\"CopyNaviLink(this, '"+map+"','"+x+"','"+y+"');\">("+map+" "+x+", "+y+")</div><div class=\"navi-copied\" style=\"display:none;\">Copiado</div>";
$(element).html(newhtml);
});
function CopyNaviLink(ele, map, x, y) {
element = $(ele);
sibling = element.siblings();
width = element.width();
height = element.height()+0;
sibling.css('width',width);
sibling.css('height',height);
element.css('display','none');
sibling.css('display','inline-block');
setTimeout(function() {
    sibling.fadeOut().delay(300).css('display','none');
element.css('display','inline-block');
}, 1400);
var ClipBoardText = "/navi "+map+" "+x+"/"+y;
var textarea = document.getElementById('navi-copy-textarea');
$('#navi-copy-textarea').text(ClipBoardText);
$("#navi-copy-textarea").select();
document.execCommand('copy');
}

Latest revision as of 23:09, 26 January 2026

/* Script para copiar navegação */
$(function() {
    // Usa 'body' para garantir que funcione mesmo em elementos carregados dinamicamente
    $('body').on('click', '.navi-link', function(e) {
        e.preventDefault();
        var $this = $(this);
        var map = $this.data('map');
        var x = $this.data('x');
        var y = $this.data('y');
        
        // Remove espaços extras caso existam
        if(map) map = map.trim();
        
        var command = '/navi ' + map + ' ' + x + '/' + y;
        
        // Cria elemento invisível para copiar
        var $temp = $("<input>");
        $("body").append($temp);
        $temp.val(command).select();
        document.execCommand("copy");
        $temp.remove();
        
        // Feedback visual
        var $msg = $this.find('.navi-msg');
        $msg.show().fadeOut(2000);
    });
});