Benutzer:Stefan/common.js

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 30. August 2005 um 16:36 Uhr durch Stefan (Diskussion | Beiträge) (mal das skript von d ausprobieren). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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
// gefunden auf meta:User Styles/bottom tabs
function morelinks() {
  var tabs = document.getElementById('p-cactions').cloneNode(true);
  tabs.id = 'mytabs';
  var listitems = tabs.getElementsByTagName('LI');
  for (i=0;i<listitems.length;i++) {
    if(listitems[i].id) listitems[i].id = 'mytabs-' + listitems[i].id;
  }
  document.getElementById('column-content').appendChild(tabs);
}
if (window.addEventListener) window.addEventListener("load",morelinks,false);
else if (window.attachEvent) window.attachEvent("onload",morelinks);

// Bausteinbox (gefunden bei Benutzer:Slomox)

/* Idee der he-Wikipedia, siehe dortige History fuer die Autoren */
var Templates = new Array (100); 
var CurlyBracket = "}"; 

Templates[9] = "{{Dieser Artikel|";
Templates[10] = "";
Templates[11] = "}}\n{{Begriffsklärung}" + CurlyBracket;

Templates[19] = "[[Bild:Disambig.png|30px|Begriffsklärung]] ''Dieser Artikel behandelt . Für weitere Bedeutungen siehe'' [[ (Begriffsklärung)|";
Templates[20] = "Name";
Templates[21] = "]].\n----";

Templates[29] = "#REDIRECT [[";
Templates[30] = "";
Templates[31] = "]]";

Templates[39] = "{{Personendaten|\n NAME=\n|ALTERNATIVNAMEN=\n|KURZBESCHREIBUNG=\n|GEBURTSDATUM=\n|GEBURTSORT=\n";
Templates[40] = "";
Templates[41] = "|STERBEDATUM=\n|STERBEORT=\n}" + CurlyBracket;

Templates[49] = "{{Subst:Löschantrag}" + CurlyBracket +"\n''";
Templates[50] = "";
Templates[51] = "''--~~"+"~~\n----";

Templates[59] = "{{Löschen}" + CurlyBracket + "\n''";
Templates[60] = "";
Templates[61] = "'' --~~"+"~~\n----";

Templates[69] = "\n{{URV}" + CurlyBracket + " [http://";
Templates[70] = "www.beispiel.com";
Templates[71] = "] --~~"+"~~\n";


Templates[79] = "\n{{Neutralität}" + CurlyBracket;
Templates[80] = "";
Templates[81] = "\n";


Templates[89] = "==Hallo==\n{{Benutzer:st-fl/vorlagen/hallo|name={{PAGENAME}}}" + CurlyBracket;
Templates[90] = " --~~"+"~~";
Templates[91] = "\n";


function InsertTemplate(TemplateIndex)
{
 if (TemplateIndex>0) insertTags(Templates[TemplateIndex*10-1],Templates[TemplateIndex*10+1],Templates[TemplateIndex*10]);
};

function box() {
 document.getElementById("contentSub").innerHTML = '\nTextbaustein einfügen:\n<select name="x" style="vertical-align: baseline;float:right" onchange="InsertTemplate(this.selectedIndex);this.selectedIndex=0;this.focus();">\n    <option>Textbaustein auswählen...</option>\n    <option>Begriffsklärung</option>\n    <option>Begriffsklärung II</option>\n    <option>Weiterleitung</option>\n    <option>Personendaten</option>\n    <option>Löschantrag</option>\n    <option>Schnelllöschen</option>\n    <option>URV</option>\n  <option>Neutralität</option>\n     <option>Hallo</option></select>';
}



//danke an [[Benutzer:Pjacobi]]
window.onload = function externelinks() {
  for (var i = 0; i < document.links.length; ++i) {
    var l = document.links [i];
    if (l.hostname != "" && l.hostname != "de.wikipedia.org") {
      l.target = "extern";
    }
  }
}

// Funktionen starten

function start() {
 if (document.getElementById("editform") != null) box();
 insert();
 showHideToggle();
 externelinks();
}
window.onload = start;

/****************************/ 
/* tooltips and access keys */
/* gefunden bei [[Benutzer:HeiHei]] */ 
/****************************/ 
/*ta = new Object(); 
ta['pt-userpage'] = new Array('.','meine Benutzerseite'); 
ta['pt-mytalk'] = new Array('n','meine Diskussionsseite'); 
ta['pt-preferences'] = new Array('','meine Einstellungen'); 
ta['pt-watchlist'] = new Array('l','Beobachtungsliste'); 
ta['pt-mycontris'] = new Array('y','Liste meiner Beiträge'); 
ta['ca-article'] = new Array('a','Artikel ansehen'); 
ta['ca-talk'] = new Array('t','Zur Diskussionsseite'); 
ta['ca-edit'] = new Array('e','Seite bearbeiten.'); 
ta['ca-addsection'] = new Array('+','Kommentar hinzufügen.'); 
ta['ca-viewsource'] = new Array('e','Geschütze Seite'); 
ta['ca-history'] = new Array('h','Frühere Versionen'); 
ta['ca-move'] = new Array('m','Seite verschieben.'); 
ta['ca-watch'] = new Array('w','Zur Beobachtungsliste hinzufügen.'); 
ta['ca-unwatch'] = new Array('w','Von Beobachtungsliste entfernen.'); 
ta['search'] = new Array('f','Durchsuche dieses Wiki'); 
ta['p-logo'] = new Array('','Hauptseite'); 
ta['n-mainpage'] = new Array('z','Zur Hauptseite'); 
ta['n-portal'] = new Array('1','Zum Portal'); 
ta['n-currentevents'] = new Array('',''); 
ta['n-recentchanges'] = new Array('r','Zu den Letzten Änderungen'); 
ta['n-randompage'] = new Array('x',''); 
ta['n-help'] = new Array('',''); 
ta['n-sitesupport'] = new Array('','Unterstütze uns'); 
ta['t-whatlinkshere'] = new Array('j','Was linkt hierher?'); 
ta['t-recentchangeslinked'] = new Array('k','Änderungen an verlinkten Seiten'); 
ta['t-contributions'] = new Array('b','Beiträge dieses Benutzers'); 
ta['t-emailuser'] = new Array('','Sende diesem Benutzer eine E-Mail'); 
ta['t-upload'] = new Array('u','Lade Bilder oder Mediadateien hoch'); 
ta['t-specialpages'] = new Array('q','Liste aller Spezialseiten'); 
ta['ca-nstab-main'] = new Array('c','Betrachte Artikelinhalt'); 
ta['ca-nstab-user'] = new Array('c','Betrachte Benutzerseite'); 
ta['ca-nstab-media'] = new Array('c','Betrachte Mediaseite'); 
ta['ca-nstab-special'] = new Array('','Das Bearbeiten einer Spezialseite ist nicht möglich.'); 
ta['ca-nstab-wp'] = new Array('a','Betrachte die Projektseite'); 
ta['ca-nstab-image'] = new Array('c','Betrachte die Bildseite'); 
ta['ca-nstab-mediawiki'] = new Array('c','Betrachte die Systemmeldung'); 
ta['ca-nstab-template'] = new Array('c','Betrachte die Vorlage'); 
ta['ca-nstab-help'] = new Array('c','Betrachte die Hilfsseite'); 
ta['ca-nstab-category'] = new Array('c','Betrachte die Kategorienseite');*/

/* 
gefunden bei [[Benutzer:SirJective]]
im folgenden mein selbstgeschriebenes Script, um einfach Ersetzungen im Quelltext vornehmen zu können.
   Kopieren erlaubt und erwünscht. Lediglich eine kurze Mitteilung beim Erfolg wäre nett ;-) 
   Aufruf erfolgt mit <a href="#" onclick="javascript:myReplace();">REPLACE</a>
   (Achtung: Skript ist Case-Sensitiv!) */

function myReplace()
{ i=0;
  alt=prompt('Altes Wort','');neu=prompt('Neues Wort','');
  while(document.editform.wpTextbox1.value.search(alt)!=-1)
    {document.editform.wpTextbox1.value=document.editform.wpTextbox1.value.replace(alt,neu);i++;}
  
  if ( i > 0 )
  { alert('Es wurde '+i+' Mal <'+alt+'> durch <'+neu+' ersetzt.');
    document.editform.wpMinoredit.checked=true;
    document.editform.wpSummary.value='Ersetzung: '+alt+' -> '+neu;
    document.editform.wpSummary.focus();
  }
  else
  { alert('Es wurde kein Vorkommen gefunden');
  }
}

/* Im nun folgenden das Skript mit dem sich recht leicht Schreibfehler korrigieren lassen
   (natürlich muss man bei Zitaten aufpassen) ;-) */

function myTypoKorr()
{ i=0;
  alt='im wesentlichen';neu='im Wesentlichen'; 
while(document.editform.wpTextbox1.value.search(alt)!=-1){document.editform.wpTextbox1.value=document.editform.wpTextbox1.value.replace(alt,neu);i++;}

  alt='Im wesentlichen';neu='Im Wesentlichen';
while(document.editform.wpTextbox1.value.search(alt)!=-1){document.editform.wpTextbox1.value=document.editform.wpTextbox1.value.replace(alt,neu);i++;}

  alt='Des Weiteren';neu='Des weiteren';
while(document.editform.wpTextbox1.value.search(alt)!=-1){document.editform.wpTextbox1.value=document.editform.wpTextbox1.value.replace(alt,neu);i++;}

  alt='Desweiteren';neu='Des weiteren';
while(document.editform.wpTextbox1.value.search(alt)!=-1){document.editform.wpTextbox1.value=document.editform.wpTextbox1.value.replace(alt,neu);i++;}

  alt=' daß ';neu=' dass ';
while(document.editform.wpTextbox1.value.search(alt)!=-1){document.editform.wpTextbox1.value=document.editform.wpTextbox1.value.replace(alt,neu);i++;}
  
  if ( i > 0 )
  { alert('Es wurden '+i+' Schreibfehler korrigiert.');
    document.editform.wpMinoredit.checked=true;
    document.editform.wpSummary.value='typo';
    document.editform.wpSummary.focus();
  }
  else
  { alert('Es wurde kein Schreibfehler gefunden');
  }
}

//gefunden bei [[Benutzer:Littl]]
function contrib()
{ wer=prompt('IP oder Name eingeben!','');
  newwin = window.open("http://de.wikipedia.org/w/index.php?title=Spezial:Contributions&target="+wer,"Beiträge");
  newwin.focus();
}


/**
provides an icon for each heading to fold or unfold it
version 0.2.4
written by [[:meta:User:D]]

compatibility
* firefox: works
* safari: works
* opera: works
* ie: unknown

todo
* find out why the tabs are modified
* master button handling is ugly
* recursive folding in button.onclick is ugly
* precalculating elements is slow
* more stable image urls (?)
*/
function FoldHeaders() {
    //================================================================================
    //## configuration

    /** pages matching whose name match any of these regexps are collapsed automatically */
    var autoCollapse    = Array(
        "^Wikipedia:Löschkandidaten/",
        "^Wikipedia:Vandalensperrung",
        "^Illuminatenorden"
    );
    
    //================================================================================
    //## folder

    /** folds or unfolds all headers within the bodyContent */
    function foldWithin(element, open) {
        for (var depth=2; depth<=6; depth++) {
            var tagName = "H" + depth;  
            var headers = element.getElementsByTagName(tagName);
            for (var i=0; i<headers.length; i++) {
                var header  = headers[i];
                if (header.fold)    header.fold(open);
            }
        }
    }
    
    /** attaches folders to all header tags of a given depth */
    function attachDepthFolders(depth) {
        var tagName = "H" + depth;  
        var headers = document.getElementsByTagName(tagName);
        for (var i=0; i<headers.length; i++) {
            var header  = headers[i];
            // skip some headers we do not want to modify
            if (header.id            == "siteSub")  continue;
            if (header.parentNode.id == "toctitle") continue;
            var end     = findEnd(header);
            attachSingleFolder(header, end);
        }
    }
    
    /** attaches folder span to a header, end is inclusive */
    function attachSingleFolder(header, end) {
        // add a button to the header toggling the display of the content span
        var button  = document.createElement("img");
        button.style.verticalAlign  = "baseline";
        button.style.marginRight    = "3px";
        buttonState(button, true);
        header.insertBefore(button, header.firstChild);
        
        // move content between start and end into a span after the header  
        var range   = document.createRange();
        range.setStartAfter(header);
        range.setEndAfter(end);
        var contents    = range.extractContents();
        var folder      = document.createElement("span");
        folder.appendChild(contents);
        header.parentNode.insertBefore(folder, header.nextSibling);
        
        // add state and methods to the folder
        folder.button   = button;
        folder.open     = true;
        folder.update   = function() {
            buttonState(this.button, this.open);
            folderState(this, this.open);
        }
        folder.fold     = function(open) {
            this.open   = open;
            this.update();
        }
        folder.flip     = function() {
            this.open   = !this.open;
            this.update();
        }
        
        // make the button react on clicks
        button.folder   = folder;
        button.onclick  = function() {
            this.folder.flip();
            //### BÄH
            foldWithin(this.folder, this.folder.open);
        }
        
        // give the header a fold method, too
        header.folder   = folder;
        header.fold     = function(open) {
            this.folder.fold(open);
        }
    }
    
    /** finds a (inclusive) endpoint for folder content */
    function findEnd(header) {
        var before      = header;
        var editsection = null;
        var sibling;
        for (;;) {
            // no next sibling: we reached the end
            sibling = before.nextSibling;
            if (!sibling)   return before;
            
            // remember editsections until the next tag
            if (sibling.attributes 
            && sibling.nodeName == "DIV"
            && sibling.getAttribute("class") == "editsection")  
                editsection = sibling;
            
            // found a header
            if (sibling.nodeName.match(/^H[1-6]$/)) {
                // higher or equal level
                if (sibling.nodeName <= header.nodeName) {
                    // use the editsection of this header
                    if (!editsection)   return before;
                    //### should fail with header/editsection/header/editsection
                    else    return editsection.previousSibling;
                }
                // lower level              
                else {
                    // forget the editsection
                    editsection = null;
                }
            }
            
            before  = sibling;
        }
    }
    
    /** changes the open state of a folder */
    function folderState(folder, open) {
        folder.style.display    = open 
                                ? "inline" 
                                : "none";
    }

    /** changes the open state of a button */
    function buttonState(button, open) {
        button.src  = open
                    ? "/media/wikipedia/commons/thumb/2/23/Symbol_oppose_vote.png/15px-Symbol_oppose_vote.png"
                    : "/media/wikipedia/commons/thumb/5/5b/Symbol_support_vote.png/15px-Symbol_support_vote.png";
    }
    
    //================================================================================
    //## helper

    /** dump a line for debugging purposes */
    function log(msg) { dump(msg + "\n"); }
    
    /** makes an element invisible */
    function invisible(id) {
        var element = document.getElementById(id);
        if (!element)           return;
        if (!element.style)     return;
        element.style.display   = "none";
    }

    /** gets the name of the page */
    function pageName() {
        var headers     = document.getElementsByTagName("h1");
        if (headers.length < 1) return "";
        return headers[0].firstChild.nodeValue;
    }

    //================================================================================
    //## installation
    
    var bodyContent = document.getElementById("bodyContent");

    // install a folder on every header
    for (var i=2; i<=6; i++) {
        attachDepthFolders(i);
    }

    // find autocollapse value
    var page    = pageName();
    var collapse    = false; 
    for (var i=0; i<autoCollapse.length; i++) {
        collapse    = page.match(autoCollapse[i]);
        if (collapse)   break;
    }

    // install master button
    var button  = document.createElement("img");
    button.style.verticalAlign  = "baseline";
    button.style.marginRight    = "3px";
    buttonState(button, true);
    button.open     = true;
    button.onclick  = function() { 
        this.open   = !this.open;
        buttonState(this, this.open);
        foldWithin(bodyContent, this.open);
    }
    var master  = document.getElementsByTagName("h1")[0];
    master.insertBefore(button, master.firstChild);
    
    // autocollapse if wanted
    if (collapse) {
        button.open     = false;
        buttonState(button, false);
        foldWithin(bodyContent, false);
        invisible("toc");
        /*
        invisible("siteSub");
        invisible("siteNotice");
        invisible("footer");
        */
    }
}

//================================================================================
//## onload chain

/** add an OnLoad event handler */
function addLoadEvent(func) {
    var oldOnLoad = window.onload;
    if (typeof window.onload == 'function') {
        window.onload = function() {
            oldOnLoad();
            func();
        }
    }
    else {
        window.onload = func;
    }
}

addLoadEvent(FoldHeaders);