Benutzer:Complex/mnh-modern.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
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
// <nowiki>
/**
 * prefixindex-Tab auf Benutzerseiten
 */
function tab_prefix() {
    var pos, pos2;
    var user;

    var page = document.getElementById('firstHeading').innerHTML;

    if( (pos=page.toLowerCase().indexOf("benutzer")) == -1)
        if( (pos=page.toLowerCase().indexOf("user")) == -1)
            return;

    /* Benutzernamen extrahieren */
    pos  = page.indexOf(":", pos) + 1;
    if( (pos2 = page.indexOf("/", pos)) == -1)
        user = page.substr(pos) + '/';
    else
        user = page.substr(pos, pos2-pos+1);

    var elem = document.getElementById('p-cactions');
    pos = elem.innerHTML.indexOf('</ul>');
    elem.innerHTML = elem.innerHTML.substr(0, pos) + '<li id="ca-prefix"><a href="/wiki/Special:Prefixindex/Benutzer:'
                   + user + '">Unterseiten</a></li>' + elem.innerHTML.substr(pos);

}
$(tab_prefix);

/**
 * importhelfer
 */
function impy () {
    if( (location.href.indexOf("Spezial:Import") == -1)
    ||  (location.href.indexOf("action=submit")  == -1) )
        return;

    var elem = document.getElementById('mw_contentholder');
    var form = elem.getElementsByTagName("form")[0];
    form.submit();
}
//addOnloadHook(impy);
/**
 * bei Bild-SLAs SLA-Grund übernehmen oder JetztSVG übernehmen
 */
function img_speedy() {
    var pos, pos2;
    var text;
    var elem;

    if(location.href.indexOf('Bild:') == -1)
        return;

    /* falls SVG da ist, neuen Namen rausprokeln, Rest ignorieren */
    if( (elem=document.getElementById('Vorlage_JetztSVG')) != null) {
        pos  = elem.innerHTML.indexOf("</center>");
        pos  = elem.innerHTML.indexOf('title="', pos) + 7; /* = strlen('title="'); */
        pos2 = elem.innerHTML.indexOf('"', pos);
        text = elem.innerHTML.substr(pos, pos2-pos);

        /* Link variieren, falls lokal => Bild:, sonst commons:Image:
         * feststellbar an der URL des thumbnails
         */
        pos  = elem.innerHTML.indexOf('src="', pos2) + 5; /* = strlen('src="'); */
        pos2 = elem.innerHTML.indexOf('"', pos);

        if(elem.innerHTML.substr(pos, pos2-pos).indexOf("upload.wikimedia.org/wikipedia/commons") == -1) {
            text = "Ersetzt durch SVG: [[Bild:" + text + "]]";
        } else {
            text = "Ersetzt durch SVG: [[commons:Image:" + text + "|Bild:" + text + "]]";
        }
    } else {
        elem = document.getElementById('mw_contentholder');

        /* nach SLA-Marker-Begründung suchen */
        if( (pos=elem.innerHTML.indexOf('<b>Begründung:</b>')) == -1)
            return;

        pos += 19; /* = strlen('<b>Begründung:</b> ') */

        /* nach Unterschriftenende suchen */
        if( (pos2=elem.innerHTML.indexOf('(CEST)', pos)) == -1)
            pos2 = elem.innerHTML.indexOf('(CET)', pos);
        if(pos2 == -1)
            return;
        text = elem.innerHTML.substr(pos, pos2-pos);

        /* HTML raus, Grund rein */
        text = "SLA: " + text.replace(/<[^>]*>/g, '');
    }

    elem = document.getElementById('ca-delete');
    pos = elem.innerHTML.indexOf('action=delete') + 13; /* = strlen('action=delete') */
    elem.innerHTML = elem.innerHTML.substr(0, pos) + "&wpReason=" + text + elem.innerHTML.substr(pos);
}
$(img_speedy);
/**
 * ui_cleanup: was nicht gebraucht wird: Raus.
 */
function clean_movelog() {
    var elem = document.getElementById('mw_contentholder');

    /* alle <li>s umbauen */
    for (var i = 0; i < elem.getElementsByTagName("li").length; i++) {
        var lelem = elem.getElementsByTagName('li')[i];

        /* brauch ich Diskussion | … | Sperren in dem Log? Ne. Nur Beiträge lassen, Rest find ich bei Bedarf auch so. Raus. */
        var pos  = lelem.innerHTML.indexOf("(<a href");
        var text = lelem.innerHTML.substr(0, pos);
        pos  = lelem.innerHTML.indexOf('<a href="/wiki/Spezial:Beitr%C3%A4ge', pos);
        text+= "· " + lelem.innerHTML.substr(pos);
        lelem.innerHTML = text;

        pos  = lelem.innerHTML.indexOf('Beiträge</a>'); /* = strlen("Beiträge</a>") */
        text = lelem.innerHTML.substr(0, pos) + "b</a>:  ";
        pos  = lelem.innerHTML.indexOf("„", pos) + 1;
        text+= lelem.innerHTML.substr(pos);
        lelem.innerHTML = text;

        /* hat „[[foo]]“ nach „[[Bar]]“ verschoben geht kürzer */
        pos  = lelem.innerHTML.indexOf("“");
        text = lelem.innerHTML.substr(0, pos) + "&nbsp;→&nbsp;";
        pos  = lelem.innerHTML.indexOf("„", pos) + 1;
        text+= lelem.innerHTML.substr(pos);
        lelem.innerHTML = text;

        pos  = lelem.innerHTML.indexOf("“");
        text = lelem.innerHTML.substr(0, pos);
        /* Kein Kommentar da? Bis Zurückschieben springen. Zurückschieben nicht da? Bis </li> springen. */
        if( (pos  = lelem.innerHTML.indexOf("<span", pos)) == -1)
            pos = lelem.innerHTML.indexOf('(<a href="/w/index.php?title=Spezial:Verschieben');
        if(pos == -1)
            pos = lelem.innerHTML.indexOf('</li>');
        text+= " " + lelem.innerHTML.substr(pos);
        lelem.innerHTML = text;
    }
}
function clean_contribs() {
    /* Junge, ist das Suchformular hässlich */
    var elem = document.getElementById('mw_contentholder');

    /* Umschalten zwischen „Nur Neulinge und Benutzer, den ich gewählt hab? Brauch ich nich,
     * per span unsichtbar machen
     */
    var pos  = elem.innerHTML.indexOf('</legend>') + 9; /* = strlen("</legend>") */
    elem.innerHTML = elem.innerHTML.substr(0, pos) + '<span style="display:none;">' + elem.innerHTML.substr(pos);

    pos = elem.innerHTML.indexOf('<input name="target"', pos);
    pos = elem.innerHTML.indexOf('>', pos) + 1;
    elem.innerHTML = elem.innerHTML.substr(0, pos) + '</span>' + elem.innerHTML.substr(pos);

    pos = elem.innerHTML.indexOf('<p>', pos);
    elem.innerHTML = elem.innerHTML.substr(0, pos) + "&nbsp;&nbsp;&nbsp;" + elem.innerHTML.substr(pos+3);
    pos = elem.innerHTML.indexOf('</p>', pos);
    elem.innerHTML = elem.innerHTML.substr(0, pos) + elem.innerHTML.substr(pos+4);
}
function clean_history() {
    var lelem = document.getElementsByTagName('li')

    /* remove undo */
    for(var i=0; i<lelem.length; i++) {
        var html = lelem[i].innerHTML;
        /* undo button alone */
        var pos, pos2, has_undo=false;

        if( (pos=html.indexOf(" (<span class=\"mw-history-undo\">")) != -1) {
            pos2 = html.indexOf("</a></span>)", pos) + 12;
            has_undo = true;
        } else if( (pos=html.indexOf(" | <span class=\"mw-history-undo\">")) != -1) {
            pos2 = html.indexOf("</a></span>)", pos) + 11;
            has_undo = true;
        }
        if(has_undo) {
            lelem[i].innerHTML = html.substr(0, pos) + html.substr(pos2);
        }
    }
}
function clean_delform() {
    /* Liste mit Gründen – nach dem Löschen immer noch action=delete, dann drop==null */
    var drop = document.getElementById('wpDeleteReasonList');
    if(drop == null)
        return;

    /* Gequassel raus */
    var elem = document.getElementById('mw_contentholder');
    var pos  = elem.innerHTML.indexOf("<strong>Achtung");
    var text = elem.innerHTML.substr(0, pos);
    pos = elem.innerHTML.indexOf("</p>", pos) + 4;
    text+= elem.innerHTML.substr(pos);
    elem.innerHTML = text;

    drop.innerHTML = '<option value="other">Anderer Grund</option><optgroup label="Richtlinienkram"><option value="[[WP:ART|Kein Artikel]]">[[WP:ART|Kein Artikel]]</option><option value="[[WP:WWNI|Kein enzyklopädischer Inhalt]]">[[WP:WWNI|Kein enzyklopädischer Inhalt]]</option><option value="[[WP:RK|Fehlende Relevanz bzw. Darstellung selbiger]]">[[WP:RK|Fehlende Relevanz bzw. Darstellung selbiger]]</option><option value="Missachtung der [[WP:BNR|Konventionen]] für den Benutzernamensraum">Missachtung der [[WP:BNR|Konventionen]] für den Benutzernamensraum</option></optgroup><optgroup label="Putzen"><option value="Unnötiger [[WP:WL|Redirect]]">Unnötiger [[WP:WL|Redirect]]</option><option value="Kein Redirect für [[WP:WL#Falschschreibungen|Falschschreibungen]]">Kein Redirect für [[WP:WL#Falschschreibungen|Falschschreibungen]]</option><option value="Auf Wunsch">Auf Wunsch</option></optgroup>';
}
function clean_protform() {
    /* Gequassel raus */
    var elem = document.getElementById('mw_contentholder');
    var pos  = elem.innerHTML.indexOf("<p>Hier kannst");
    var text = elem.innerHTML.substr(0, pos);
    /* zum richtigen </p> vorwandern */
    pos = elem.innerHTML.indexOf("gilt der Seitenschutz unbeschränkt.", pos);
    pos = elem.innerHTML.indexOf("</p>", pos) + 4;
    text+= elem.innerHTML.substr(pos);
    elem.innerHTML = text;

    /* Kaskadierende blablablabla -> kurz */
    pos  = elem.innerHTML.indexOf(" – alle in diese Seite");
    text = elem.innerHTML.substr(0,pos);
    pos  = elem.innerHTML.indexOf("</label>", pos);
    text+= elem.innerHTML.substr(pos);
    elem.innerHTML = text;

    /* [x] Beobachten raus, noch nie da gebraucht */
    pos  = elem.innerHTML.indexOf("<input name=\"mwProtectWatch\"");
    text = elem.innerHTML.substr(0, pos);
    pos  = elem.innerHTML.indexOf("</td>", pos);
    text+= elem.innerHTML.substr(pos);
    elem.innerHTML = text;
}
function clean_watchlist() {
    var elem = document.getElementById('contentSub');
    elem.innerHTML = '<a href="/wiki/Spezial:Beobachtungsliste/edit" title="Spezial:Beobachtungsliste/edit">[edit]</a>';
    elem.setAttribute("style", "float:right;");

    elem = document.getElementById('mw_contentholder');
    var pos  = elem.innerHTML.indexOf("beobachtete Seiten") + 18; /* = strlen("beobachtete Seiten") */
    var text = elem.innerHTML.substr(0, pos);

    pos  = elem.innerHTML.indexOf('</div>', pos) + 6;
    text+= " – Letzte " + elem.innerHTML.substr(pos);
    elem.innerHTML = text;

    pos  = elem.innerHTML.indexOf('(Stand:');
    text = elem.innerHTML.substr(0, pos);
    pos  = elem.innerHTML.indexOf("<h4>", pos);
    text+= "<hr />" + elem.innerHTML.substr(pos);
    elem.innerHTML = text;
}
function clean_diff() {
    var elem = document.getElementById('contentSub');

    /* „(Unterschied zwischen Versionen)“ Nein, wirklich? Wäre mir fast entgangen. Raus. */
    var pos  = elem.innerHTML.indexOf("(Unterschied");
    var text = elem.innerHTML.substr(0, pos);
    pos  = elem.innerHTML.indexOf(")", pos);
    text+= elem.innerHTML.substr(pos + 1);
    elem.innerHTML = text;
}
function clean_speedycat() {
    /* Endlosgeschwafel raus, ich will nicht scrollen */
    var elem = document.getElementById('mw_contentholder');
    var pos  = elem.innerHTML.indexOf('<div class="wp_intro">');
    var text = elem.innerHTML.substr(0, pos);
    pos  = elem.innerHTML.indexOf('entfernt.', pos);
    pos  = elem.innerHTML.indexOf('</div>', pos) + 6;
    text = elem.innerHTML.substr(pos);
    elem.innerHTML = text;

    /* Nich den Mülleimer wegschmeißen... */
    document.getElementById('ca-delete').setAttribute("style", "display:none");
}
function ui_cleanup() {
    var href = location.href;

    if(href.indexOf("action=history") != -1)
         clean_history();
    if( (href.indexOf("action=delete")!=-1) && (href.indexOf("Bild:")==-1) )
         clean_delform();
    if(href.indexOf("action=protect") != -1)
         clean_protform();
    if( (href.indexOf("Spezial:Beobachtungsliste")!=-1)
    &&  (href.indexOf("edit") == -1) )
         clean_watchlist();
    if(href.indexOf("diff=") != -1)
         clean_diff();
    if(href.match(/Spezial:Beitr.*ge\//) || (href.indexOf("contribs=user") != -1))
         clean_contribs();
    if(href.indexOf("Kategorie:Wikipedia:Schnelll") != -1)
         clean_speedycat();
    if((href.indexOf("Spezial:Logbuch") != -1) && (href.indexOf("move") != -1))
         clean_movelog();
}
//addOnloadHook(ui_cleanup);
/**
 * sanitize_delete_reason: Falls vorhanden, Löschtext nach erster Sig abschneiden.
 */
function sanitize_delete_reason() {
     var reason;
     var pos;

     if(!location.href.match(/action=delete/))
         return;
     if( (reason=document.getElementById('wpReason')) == null)
         return;

     /* SLAs */
     if( (pos=reason.value.indexOf("(CEST)")) == -1)
         pos = reason.value.indexOf("(CET)");

     /* Redirects anders behandeln */
     var prefix = "";
     var rpos = reason.value.toLowerCase().indexOf("#redirect");
     if(rpos != -1) {
         /* Link des Redirects extrahieren, normale Begründung abschneiden */
         prefix = reason.value.substr(0, reason.value.indexOf("]]", rpos));
         reason.value = reason.value.substr(0, rpos);
         rpos   = prefix.lastIndexOf("[[");
         prefix = "Unnötige Weiterleitung nach " + prefix.substr(rpos) +"]] ";
     }
     /* kein SLA? Nix tun, außer es ist ein Redir. Sonst kürzen. */
     if(pos == -1) {
         if(prefix.length > 0)
             reason.value = prefix;
     } else {
         /* HTML-Tags raus, gern in sigs verwendet und im Log unnütz */
         reason.value = reason.value.replace(/<[^>]*>/g, '');

         if(prefix.length + pos > 255) {
             pos = 255 - prefix.length;
         }
         reason.value = prefix + reason.value.substr(0, pos);
     }
 }
$(function() { sanitize_delete_reason(); });

/**
 * SnR – Search'n'Replace mit regulären Ausdrücken. Fügt zusätzliche Boxen im Editmodus ein
 */
function SnR () {
    var haystack = document.getElementById("wpTextbox1");
    var needle   = document.getElementById("mnh_snr_s").value;
    var replace  = document.getElementById("mnh_snr_r").value;

    var txt = haystack.value.replace(new RegExp(""+needle, "g"), replace);
    haystack.value = txt;
}
function killDates() {
    var haystack = document.getElementById("wpTextbox1");
    haystack.value = haystack.value.replace(/\[\[([0-9]{3,4})\]\]/g,"$1");
    haystack.value = haystack.value.replace(/\[\[([0-9]{1,2}\. (Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember))\]\]/g, "$1");

    document.getElementById("wpSummary").value+= "Daten gemäß [[WP:Verlinken#Daten verlinken]] entlinkt";
}
function SnR_form() {
    if(!location.href.match(/action=edit/))
         return;

    var elem = document.getElementById("contentSub");
    // create form element
    elem.innerHTML+= '<form><input type="text" name="search" id="mnh_snr_s" /><input type="text" name="replace" id="mnh_snr_r" tabindex="0" /><input type="button" value="S+R" onClick="SnR()" /><input type="button" value="Kill Dates" onClick="killDates()" style="float:right" /></form>';
}
$(function() { SnR_form(); });

/** TOC-Filter
 * Entfernt auf LK-Seiten erledigte Diskussionen aus dem Inhaltsverzeichnis
 **/
/* Benutzeroptionen */
var txt_show = "[alle zeigen]";/* Defaulttext für TOC-Button, falls gefiltert */
var txt_hide = "[filtern]";    /* Defaulttext sonst                           */
var filter_by_default = true;  /* Standardansicht gefiltert?                  */
/* Ende der Benutzeroptionen */

var nfiltered = 0;               /* wie viele werden auf der Seite gefiltert? */
/* Wechselt zwischen voller und gefilterter TOC */
function togglefilter() {
    var display;
    var link = document.anchors.toc_toggler.firstChild;

    /* TOC normal oder gefiltert? */
    if (link.nodeValue == txt_show) {
        display = "";
        link.nodeValue = txt_hide;
    } else {
        display = "none";
        link.nodeValue = txt_show;
    }

    /* Sichtbarkeit der Elemente ändern */
    for(var i=0; i<nfiltered; i++)
        document.getElementById("invisible_toc"+i).style.display= display;

    return false;
}
function filtertoc() {
    /* nur auf LK-Seiten ausführen */
    var pfx  = "Wikipedia:Löschkandidaten/";
    var len  = pfx.length;
    if((document.title.length < len) || (document.title.substring(0, len).indexOf(pfx) != 0))
        return;

   /* Link zum Umschalten normal/gefiltert in die TOC einfügen */
   toc_head = document.getElementsByTagName('h2')[0];
   link = document.createElement("a");
   link.href="javascript:void(0);";
   link.onclick = togglefilter;
   link.name = "toc_toggler";
   link.setAttribute("style", "float:right;");
   if(filter_by_default)
       link.appendChild(document.createTextNode(txt_show));
   else
       link.appendChild(document.createTextNode(txt_hide));

   toc_head.insertBefore(link, toc_head.firstChild.nextSibling);

   /* TOC-Elemente nach üblichen Zusätzen durchgehen und gefundene Elemente
    * mit ID ausstatten
    */
   for (var i = 0; i < document.getElementsByTagName("li").length; i++) {
        var lelem = document.getElementsByTagName('li')[i];

        /* nichts außerhalb der TOC */
        var class = lelem.getAttribute("class");
        if(!class || !class.match(/toclevel/)) {
             continue;
        }
        var toctxt = lelem.getElementsByTagName('span')[1].firstChild.nodeValue;
        /* abgearbeitet? */
        if(toctxt.match(/gelöscht/i)
        || toctxt.match(/\([^\)]*erl/i)
        || toctxt.match(/\([^\)]*bleib/i)
        || toctxt.match(/\(.*redir/i)
        || toctxt.match(/URV/)
        || toctxt.match(/zurück(gezogen|genommen)/i)
        || toctxt.match(/:LAE/)
        || toctxt.match(/\([^\)]*QS[^\)]*\)/)
        || toctxt.match(/\([^\)]*SLA.*\)/i)
        || toctxt.match(/\([^\)]*LAE.*\)/)
        || toctxt.match(/\([^\)]*LA entfernt[^\)]*\)/) ) {
            /* Ja, ID zuweisen und ausblenden, falls standardmäßig gefiltert */
            lelem.id = "invisible_toc" + nfiltered;
            if(filter_by_default)
                lelem.style.display = "none";
            nfiltered += 1;
        }
    }
}
$(function() { filtertoc(); });
/** Ende des Filters **/

/* Knopfbeschriftungen */
var portletLabels = {
   'ca-talk':          "Disk",
   'ca-edit':          "Edit",
   'ca-viewsource':    "Quelltext",
   'ca-history':       "Wer war das?",
   'ca-protect':       "Schützen",
   'ca-unprotect':     "Freigeben",
   'ca-delete':        "Löschen",
   'ca-undelete':      "Gelöschtes",
   'ca-move':          "Schubsen",
   'ca-watch':         "Merken",
   'ca-unwatch':       "Vergessen",
   'ca-nstab-user' :   "Seite",
   'pt-mytalk': "Disk",
   'pt-watchlist': "Beo",
   'pt-preferences': "Conf",
   'pt-mycontris': "Contribs",
   'pt-logout': "Logout",
   't-permalink': "Perma",
   't-contributions': "Beiträge",
   't-blockip': "Sperren",
   't-log': "Logs",
   't-whatlinkshere': "Links hierhin"
};
function labelItems(labels) {
    for (var id in labels) {
        var el = document.getElementById(id);
        if (!el)   continue;
        var a  = el.getElementsByTagName("a")[0];
        if (!a)    continue;
        a.textContent = labels[id];
    }
}

$(function() { labelItems(portletLabels); });

 /**
 Imports a user javascript page from any wikipedia project into the actual document.

 @version 0.1
 @date 2007/03/22
 @author: based on function importPage from [[de:User:PDD]]s monobook.js, extended by [[de:User:Revvar]]
 @param page Name of the user page without the "user:" prefix and the ".js" appendix
 @param lang (optional) Language code of the corresponding wikipedia project. Default is the callers project.
 @return "true" on success, "false" otherwise
 */

 function importJavascriptL(page, lang)
 {
    try {
        /* check the parameters and set defaults */
        if(!page) throw("importJavascriptL: Missing parameter page.");
        if(!lang) lang = wgContentLanguage;

        /* create import url */
        var import_url = 'http://' + lang + '.wikipedia.org' + wgScriptPath + '/index.php?title=User:' + page +
           '.js&action=raw&ctype=text/javascript&smaxage=0';

        /* import page */
        var Head = document.getElementsByTagName('head').item(0);
        var Script = document.createElement('script');
        Script.setAttribute('type', 'text/javascript');
        Script.setAttribute('src', import_url);
        Script.setAttribute('charset', 'utf-8');
        Head.appendChild(Script);

        return true;
    } catch(e) {
        alert(e.message);
        return false;
    }
}

/** Jump to TOC: Fügt an fester Position einen Link ein, der einen direkten Sprung zum Inhaltsverzeichnis erlaubt **/
function jumptotoc() {
       var link = null;
       var div = null;
       var toc = null;

        if(! (toc=document.getElementById("toctitle")))
            return;

        div = document.createElement("div");
        div.setAttribute("style", "position:fixed; bottom:1px; left:1px;");
        link = document.createElement("a");
        link.setAttribute("href", "#toc");
        link.setAttribute("style", "font-size:x-large; border: 1px solid gray;");
        link.appendChild( document.createTextNode("  ↑  "));
        div.appendChild(link);
        toc.appendChild(div);
}
$(function() { jumptotoc(); });

importJavascriptL('Complex/revlinks','de');
//importJavascriptL('Complex/lktools','de');
// </nowiki>