Wikiversity:Betreffzeilen als Linkgallerie in Archiven/Vorbereitung der Javascriptdatei

Wenn Du beim Archivieren älterer Beiträge eines bestimmten Namensraums nicht nur den Datenbestand in einzelne Archivteile auslagern willst, sondern auch solch eine Übersicht über die archivierten Betreffzeilen, wie zum Beispiel im Archiv der Wikiversity:Cafeteria/Archiv, anlegen möchtest, dann bereite Deine Javascriptdatei entsprechend vor. Kopiere Dir von Benutzer:Javascript/monobook.js folgende Abschnitte in Deine Javascriptdatei (oder kopiere Dir den Quelltext von hier, allerdings befindet sich der jeweils aktuelle Quellcode immer in der Javascriptdatei von Benutzer:Javascript):

Die "Funktion zum Einfügen eines Eintrags in die „persönlichen Werkzeuge“ (am oberen Rand)" Bearbeiten

 /**************************************************
 * 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);
 }

Die "Funktion zum Erzeugen einer Linkgallery aus den Betreffzeilen im Archiv mit Inhaltsverzeichnis" Bearbeiten

 /**************************************************
 * 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');
   }
 }

Die "Hilfsfunktion zum Erzeugen einer Linkgallery" Bearbeiten

 /**************************************************
 * 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| "; count++;}
   content += "\n|}</includeonly>";
   document.editform.wpTextbox1.value=content;
   document.editform.wpTextbox1.value=content;
   return tocsections.length;
 }

Die folgende "Funktion, die nach dem vollständigen Laden des HTML-Dokuments aufgerufen wird" Bearbeiten

 /**************************************************
 * 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');}
 
 }

Die "allgemeinen Variablen" und der gemeinsame Restteil Bearbeiten

 /**************************************************
 * allgemeine Variable                             *
 **************************************************/
 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;
   }
 }