Benutzer:Steef389 Labs/bytechange.js

aus Wikipedia, der freien Enzyklopädie
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
// Nur auf Versionsgeschichten ausführen
if (mw.config.get ("wgAction") === "history")
{
    var bytechange =
    {
        init: function ()
        {
            // Old setting replace => default behaviour, do nothing
            if (typeof (replace_size) === "boolean" && replace_size)
            {
                return;
            }
            
            // Get Language strings
            bytechange.i18n = bytechange.get_i18n (mw.config.get('wgUserLanguage'));
            
            // do for every history-entry
            $("ul#pagehistory > li").each (function (i, e)
                {
                    // get byte-change item
                    var change = $(this).find (".mw-plusminus-pos, .mw-plusminus-neg, .mw-plusminus-null");
                    
                    // create new item
                    var span = $("<span class=\"history-size\" />");
                    // get size from tooltip
                    span.append ("(" + bytechange.format_output (parseInt (change.attr ("title").replace (/\D/g, ""), 10)) + ") ");
                    
                    // add new item
                    $(this).find (".mw-plusminus-pos, .mw-plusminus-neg, .mw-plusminus-null").replaceWith (span);
                    
                    // delete title and add byte-change
                    change.attr ("title", "");
                    span.append (change);
                });
        },
        
        // Geklaut von [[w:de:User:Schnark]]
        i18n:
        {
            en:
            {
                format_number: function (zahl)
                {
                    var rgx = /(\d+)(\d{3})/;
                    while (rgx.test(zahl))
                    {
                        zahl = zahl.replace (rgx, "$1,$2");
                    } 
                    return zahl;
                },
                
                str_byte: "byte",
                str_bytes: "bytes",
                str_empty: "empty"
            },
            de:
            {
                format_number: function (zahl)
                {
                    var rgx = /(\d+)(\d{3})/;
                    while (rgx.test(zahl))
                    {
                        zahl = zahl.replace (rgx, "$1.$2");
                    } 
                    return zahl;
                },
                
                str_byte: "Byte",
                str_bytes: "Bytes",
                str_empty: "leer"
            }
        },
         
         
        format_output: function (bytes)
        {
            var output;
            switch (bytes)
            {
                case 0:
                    output = bytechange.i18n.str_empty;
                    break;
                case 1:
                    output = "1 " + bytechange.i18n.str_byte;
                    break;
                default:
                    output = bytechange.i18n.format_number (bytes + "") + " " + bytechange.i18n.str_bytes;
            }
            return output;
        },
        
        get_i18n: function (lang)
        {
            if (lang === '')
            {
                return bytechange.i18n.en; //en as fallback for all
            }
            var fallback = '';
            if (lang.indexOf('-') > -1)
            {
                fallback = lang.replace (/-.*/, ''); //guess fallback
            }
            if (typeof bytechange.i18n[lang] == 'object' && typeof bytechange.i18n[lang].fallback == 'string')
            {
                fallback = bytechange.i18n[lang].fallback; //may be overridden
            }
            var i18n = bytechange.get_i18n(fallback); //get localisation for fallback language
            
            if (typeof bytechange.i18n[lang] == 'object')
            {
                for (var prop in bytechange.i18n[lang])
                {
                    if (prop != 'fallback') i18n[prop] = bytechange.i18n[lang][prop]; //override all translated strings
                }
            }
            return i18n;
        }
    };
    
    if (mw.config.get('debug')) window.byte_change = bytechange;
    
    $(document).trigger('loadWikiScript', ['Benutzer:Steef389/js/bytechange.js', bytechange]);
    $(mw.loader.using('mediawiki.util', bytechange.init));
}