MediaWiki:Chatcodes.js

Aus Guild Wars 2 Wiki
Zur Navigation springen Zur Suche springen

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
/*
 * Konvertiert HTML der Form <span class="chatlink (item|map|skill|trait|recipe)">[id]</span> zu einem anklickbaren Chatlink
 * Nutzt anteilsweise Code aus [[:en:Widget:Game link]].
 */
$(document).ready(function() {

    $("span.chatlink").each( function( index, element ){
        var id = parseInt($(this).html(), 10);
        var link = '';

        if($(this).hasClass('item'))   type =  2;
        if($(this).hasClass('map'))    type =  4;
        if($(this).hasClass('skill'))  type =  6;
        if($(this).hasClass('trait'))  type =  7;
        if($(this).hasClass('recipe')) type =  9;
        if($(this).hasClass('skin'))   type = 10;
        if($(this).hasClass('outfit')) type = 11;

        var data = [];
        while (id > 0) {
            data.push(id & 255);
            id = id >> 8;
        }
        while (data.length < 4 || data.length % 2 != 0) {
            data.push(0);
        }

        if (type == 2) {
            data.unshift(1);
        }
        
        data.unshift(type);

        // Daten kodieren
        var binary = '';
        for (var i = 0; i < data.length; i++) {
            binary += String.fromCharCode(data[i]);
        }
        link = '[&' + window.btoa(binary) + ']';

        // Link einfügen
        $(this).html(link);	 

        // Klickbares input-Element erzeugen
        var input = $('<input type="text" size="12" />').val(link).css({ display : 'inline-block', outline: 'none', border: '1px solid #ccc', visibility: 'hidden', position : 'absolute', 'cursor' : 'pointer' });

        // input-Element im DOM einsortieren: <elem>{input}{link}</elem>
        $(this).before(input);

        // Element anklickbar machen
        $(this).click(function() {
          $(this).prev().css('visibility', 'visible').focus().select(); // show input, focus and select
        });

        // blur handler
        $(input).blur(function() { 
          $(this).css('visibility', 'hidden'); // hide input
        });
     });
});