Benutzer:Javascript/monobook.js

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
// __NOTOC__
// {{h3|Zum Tipp: [[Wikiversity:Bearbeiten-Link rechts neben den Überschriften]]}}
//<pre style="background-color:papayawhip">

/**************************************************
* Funktion des onload-Attributes des body-Tags    *
*                                                 *
* Hier wird die aktivierte Einstellung            *
* ''Seiten mit Doppelklick bearbeiten''           *
* vorausgesetzt (Zu finden unter:                 *
* Special:Preferences - Abschnitt "Bearbeiten")   *
***************************************************/
function setupRightClickEdit(){
	moveEditsection();
}

/**************************************************
* Funktion zum Verschieben der "Bearbeiten"-Links *
***************************************************/
function moveEditsection() {
	// Sammelt alle span-Elemente der Klasse "editsection".
	var editsections = new Array();
	var divs = document.getElementById("bodyContent").getElementsByTagName("span");
	for(var i = 0; i < divs.length; i++) {
		if(divs[i].className == "editsection") {
			editsections.push(divs[i]);
		}
	}
//	alert(editsections.length + " Editsections gefunden!");
	// Wenn die Seite Editsection-Links enthält.
	if (editsections.length != 0) {
		// Sucht zu jedem Editsection-Link die nachfolgende Überschrift.
		var i = 0;
		var element, heading;
		while (editsections[i] != null) {
			element = editsections[i];
			heading = element.nextSibling;
//			alert("Nodename: "+heading.nodeName);
			while(!/^H[1-6]$/.test(heading.nodeName) && !/^SPAN$/.test(heading.nodeName)) {
				heading = heading.nextSibling;
//				alert("Nodename: "+heading.nodeName);
			}
//			alert("Nodename: "+heading.nodeName);
			// Erstellt innerhalb der Überschrift ein per CSS formatiertes span-Element.
			// Dort hinein wird dann der Editsection-Link verschoben.
			// Anschließend werden die Reste des alten Editsection-Buttons entfernt.
			var spanElement = document.createElement("span");
			var spaceNode = document.createTextNode(" ");
			heading.appendChild(spaceNode);
			heading.appendChild(spanElement);

			spanElement.style.fontSize = "x-small";
			spanElement.style.fontWeight = "normal";

			while (element.childNodes.length != 0) {
				spanElement.appendChild(element.childNodes[0]);
			}
			element.parentNode.removeChild(element);
			i++;
		}
	}
} 

// </pre>
//{{h3|Zum Tipp: [[Wikiversity:Betreffzeilen als Linkgallerie in Archiven]]}}
//<pre style="background-color:moccasin">

/**************************************************
* Funktion zum Einfügen eines Eintrags in die     *
* "persönlichen Werkzeuge" (am oberen Rand)       *
***************************************************/
function addPersonalEntry(fctname,text){
	var liNode;
	var textNode = document.createTextNode(text);
	var personal = document.getElementById("p-personal").getElementsByTagName("ul");
	if(personal.length){personal = personal[0];}
	if(fctname==null){
	  liNode = document.createElement("li");
	  liNode.appendChild(textNode);
	}else{
	  liNode = document.getElementById("pt-logout").cloneNode(true);
	  var linkNode = liNode.getElementsByTagName("a");
	  if(linkNode.length){ linkNode=linkNode[0]; }
	  linkNode.setAttribute("href","#");
	  linkNode.setAttribute("onClick",fctname+"();");
	  linkNode.setAttribute("title","Nutzerdefinierte Javascript-Funktion");
	  if(linkNode.getAttribute("accesskey")){linkNode.removeAttribute("accesskey");}
	  linkNode.replaceChild(textNode,linkNode.firstChild);
	}
	liNode.setAttribute("id","pt-jsfct");
	personal.appendChild(liNode);
}

/**************************************************
* Funktion zum Erzeugen einer Linkgallery aus den *
* Betreffzeilen im Archiv mit Inhaltsverzeichnis  *
***************************************************/
function myLinkGallery(){
  var alt="2";
  var i=tlink(alt);
  if ( i > 0 ){
    alert('Es wurden '+i+' Links der '+alt+'. Ebene in eine Gallery gesetzt.');
    document.editform.wpMinoredit.checked=true;
    document.editform.wpSummary.value=alt+'. Überschriftenebene als gallery aus '+i+' Links gestaltet';
    document.editform.wpSummary.focus();
  } else {
    alert('Es wurde kein Vorkommen gefunden');
  }
}

/**************************************************
* Hilfsfunktion zum Erzeugen einer Linkgallery    *
***************************************************/
function tlink(alt){
  // Sammelt alle li-Elemente der Klasse "toclevel-"+alt.
  var tocsections = new Array();
  var divs = document.getElementById("toc");
  if(!divs || divs.length == 0){
    alert("Kein Inhaltsverzeichnis gefunden.\nBitte \"Vorschau zeigen\" lassen\nund dann nochmals Linkgallerie erzeugen!");
    return 0;
  }
  divs = divs.getElementsByTagName("li");
  for(var i = 0; i < divs.length; i++) {
    if(divs[i].className == "toclevel-"+alt) {
      tocsections.push(divs[i].getElementsByTagName("a"));
    }
  }
  var content=
   "<noinclude>"+
   "{{Diese Vorlage|enthält die Betreffzeilen der archivierten "+
   "Diskussionsbeiträge bis zum {{SUBPAGENAME}}. "+
   "Über die obenstehenden Links kommt man zum Archiv zurück.}}"+
   "</noinclude><includeonly>\n{| class=\"gallery\" width=\"100%\"";
  var count=0;
  /** Alle toc-A-Tags abklappern **/
  for(var i=0; i<tocsections.length; i++){
    var href = String(tocsections[i][0]);
    if (href.indexOf("#")!=-1){
      /^.*#(.+)$/.test(href);
      href="[[{{FULLPAGENAME}}/{{{1}}}#"+RegExp.$1;
      var k = tocsections[i][0].getElementsByTagName("span");
      k=k[1].firstChild;
      href += "|"+k.nodeValue+"]]";
      if (++count < 5){
        content += "\n|width=\"25%\"|"+href;
      }else{
        if(count % 4 == 1){content += "\n|-";}
        content += "\n|"+href;
      }
    }
  }
  while(count % 4 !=0){ content += "\n|&nbsp;"; count++;}
  content += "\n|}</includeonly>";
  document.editform.wpTextbox1.value=content;
  return tocsections.length;
}

// </pre>
// {{h3|Zum Tipp: [[Wikiversity:Information-Vorlage im Hochladetextfeld]]}}
// <pre style="background-color:papayawhip">

/**************************************************
* Funktion zum Setzen von Lizenzinfos beim Upload *
**************************************************/
function myUploadInfo(){
  if (wgPageName != 'Spezial:Upload'){ return; }
  var upLoad = document.getElementById('wpUploadDescription');
  if(!upLoad){return;}
  if (upLoad.length){upLoad = upLoad[0];}
  var datum = new Date();
  if (!upLoad.nodeValue){
   upLoad.appendChild(
     document.createTextNode(
	"{{Information\n"+
	"|Beschreibung=\n"+
	"|Quelle=selbst erstellt\n"+
	"|Urheber=[[Benutzer:"+wgUserName+"]]\n"+
	"|Datum="+datum.getFullYear()+"\n"+
	"|Genehmigung=\n"+
	"|Andere Versionen=\n"+
	"|Anmerkungen=\n"+
	"}}\n"+
	"{{Bild-GFDL}}"
     )
   );
  }
} 

// </pre>
// {{h3|Gemeinsamer Javascript-Quelltext }}
// <pre>

/**************************************************
* Funktion, die nach dem vollständigen Laden      *
* des HTML-Dokuments aufgerufen wird              *
**************************************************/
function Init() {

/* Zum Tipp: [[Wikiversity:Betreffzeilen als Linkgallerie in Archiven]] */  
if (isMyArchiv){addPersonalEntry('myLinkGallery','Linkgallerie');}

/* Zum Tipp: [[Wikiversity:Information-Vorlage im Hochladetextfeld]] */
if (isMyUpload){myUploadInfo();}  

}

/**************************************************
* Variable zur Kennzeichnung der Uploadseite      *
**************************************************/
var isMyUpload = (wgPageName == "Spezial:Upload");
var isMyArchiv = (document.URL.indexOf('/Archiv/')>0 && document.URL.indexOf('action=')>0);

/**************************************************
* Verknüpfen der Init-Funktion mit dem "onload"-  *
* Attribut des HTML-Dokuments für diverse Browser *
**************************************************/
if (window.addEventListener) {
  window.addEventListener("load", Init, false);
} else if (window.attachEvent) {
  window.attachEvent("onload", Init);
} else {
  if ( window.onload != null ) {
    var oldOnload = window.onload;
    window.onload = function(args) {
       oldOnload(args);
       window[Init]();
    };
  } else {
    window.onload = Init;
  }
}
//</pre>