Benutzer:Stefan Majewsky/monobook.js
Aus Wikibooks
Hinweis - Leere nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können: Mozilla/Firefox/Safari: Shift gedrückt halten und auf Aktualisieren klicken oder alternativ entweder Strg-F5 oder Strg-R (Befehlstaste-R bei Macintosh) drücken; Konqueror: Auf Aktualisieren klicken oder F5 drücken; Opera: Cache unter Extras → Einstellungen leeren; Internet Explorer: Strg-F5 drücken oder Strg gedrückt halten und dabei Aktualisieren anklicken.
//<pre><nowiki> /****************************************************************************************** ** Monobook Element Modding library. Techniques by me. Based on: ** ** http://commons.wikimedia.org/w/index.php?title=MediaWiki:Extra-tabs.js&oldid=3001654 ** ******************************************************************************************/ //Monobook Element Modding. Techniques by Stefan Majewsky (de.wikibooks.org/wiki/Benutzer:Stefan_Majewsky) //Based on http://commons.wikimedia.org/w/index.php?title=MediaWiki:Extra-tabs.js&oldid=3001654 //Creates a new list item. function createListItem(url, name, id) { var listitem = document.createElement('li'); listitem.setAttribute('id', id); var link = document.createElement('a'); if (url!='') { link.setAttribute('href', url); } else { listitem.setAttribute('class','selected'); } link.appendChild(document.createTextNode(name)); listitem.appendChild(link); return listitem; } //Appends a new tab to the register at the top of a page. function appendTab(url, name, id) { // Grab the element we want to append the tab to and append the tab to it. var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0]; tabs.appendChild(createListItem(url, name, id)); } //Appends the into tab near the "Edit" tab. function appendIntroTab(articlename) { // Grab the element we want to append the tab to and append the tab to it. var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0]; tabs.insertBefore(createListItem('http://de.wikibooks.org/w/index.php?title=' + articlename + '&action=edit§ion=0', 'intro', 'ca-editintro'), tabs.getElementsByTagName('li')[3]); } //"Beobachten"-Link verschieben, sodass er rechts neben der Versionsgeschichte steht. function moveWatchTab() { // Grab the element we want to append the tab to. var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0]; // Grab the "watch" tab. var watch = document.getElementById('ca-watch'); if (!watch) watch = document.getElementById('ca-unwatch'); if (!watch) return; //Remove the tab from the old position. tabs.removeChild(watch); //Insert it before the tab after the "history" tab. tabs.insertBefore(watch, document.getElementById('ca-history').nextSibling); } //Adds supplementary links to the personal bar at the top right. function appendPLink(url, name, id) { // Insert the element before the "log out" link. var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[1].getElementsByTagName('ul')[0]; tabs.insertBefore(createListItem(url, name, id), document.getElementById('pt-logout')); } //Adds supplementary links to the personal bar at the top right. function appendPLinkBefore(url, name, id, before) { // Insert the element before the "log out" link. var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[1].getElementsByTagName('ul')[0]; tabs.insertBefore(createListItem(url, name, id), document.getElementById(before)); } //Adds a supplementary menu at the left navigation. Returns the list where links have to be added. function appendMenu(title, id) { //initialize the single elements var basediv = document.createElement('div'); basediv.setAttribute('class','portlet'); basediv.setAttribute('id',id); var heading = document.createElement('h5'); heading.appendChild(document.createTextNode(title)); var innerdiv = document.createElement('div'); innerdiv.setAttribute('class','pBody'); var linklist = document.createElement('ul'); //ONLY FOR PERSONAL PURPOSE - change the background color of the menu innerdiv.setAttribute('style','background-color: #E2E2F9'); //build menu basediv.appendChild(heading); basediv.appendChild(innerdiv); innerdiv.appendChild(linklist); //insert in column-one after p-tb document.getElementById('column-one').insertBefore(basediv, document.getElementById('p-tb').nextSibling); return linklist; } //Adds a menu item to a menu. function addMenuItem(menu, link, text, id) { var listitem = document.createElement('li'); listitem.setAttribute('id',id); var linkitem = document.createElement('a'); linkitem.setAttribute('href',link); //build link linkitem.appendChild(document.createTextNode(text)); listitem.appendChild(linkitem); menu.appendChild(listitem); } //Adds a horizontal separator to a menu. function addMenuSep(menu) { menu.appendChild(document.createElement('hr')); } /******************************************************************************** ** "Unedit red links". If clicking on red links, not the edit window, but the ** ** empty article will be opened. ** ********************************************************************************/ function cutOffEditParameter(link) { var index = link.href.indexOf('&action=edit'); if (index > 0) { link.href = link.href.slice(0, index); //cut off '&action=edit' } return link; } function unEditRedLinks(){ var links = document.getElementsByTagName('a'); for(var i1 = 0; i1 < links.length; i1++) { //walk through all links if (links[i1].getAttribute('class') == 'new') { //is red link? links[i1] = cutOffEditParameter(links[i1]); } } var listitems = document.getElementsByTagName('li'); for (var i2 = 0; i2 < listitems.length; i2++) { //walk through all list items if (listitems[i2].getAttribute('class') == 'new') { //is red list item? var listlinks = listitems[i2].getElementsByTagName('a'); for (var i3 = 0; i3 < listlinks.length; i3++) { //walk through all links in the list item listlinks[i3] = cutOffEditParameter(listlinks[i3]); } } } } /******************************************************************************** ** Change the captions of several interface elements. ** ********************************************************************************/ function changeSpecialPageCaption(newname) { document.getElementById('ca-nstab-special').getElementsByTagName('a')[0].innerHTML = newname; } //Rename all special pages. (This makes h1.firstHeading obsolete on these pages. //Use the following CSS rule to disable the headings on special pages: // .ns--1 .firstHeading { display:none; } function changeSpecialPageCaptions() { if (wgNamespaceNumber == -1) { switch(wgCanonicalSpecialPageName) { case 'Ancientpages': changeSpecialPageCaption('Am längsten unbearbeitete Seiten'); break; case 'Allmessages': changeSpecialPageCaption('Systemnachrichten'); break; case 'Allpages': changeSpecialPageCaption('Seitenverzeichnis'); break; //case 'Boardvote': changeSpecialPageCaption('Wahlen zum Wikimedia-Kuratorium'); break; case 'Booksources': changeSpecialPageCaption('Buchquellen'); break; case 'BrokenRedirects': changeSpecialPageCaption('Kaputte Weiterleitungen'); break; case 'Categories': changeSpecialPageCaption('Kategorienverzeichnis'); break; case 'CategoryTree': changeSpecialPageCaption('Kategoriebaum'); break; case 'CrossNamespaceLinks': changeSpecialPageCaption('Links zwischen Namensräumen'); break; case 'Deadendpages': changeSpecialPageCaption('Sackgassenseiten'); break; case 'Disambiguations': changeSpecialPageCaption('Begriffsklärungsseiten'); break; case 'ExpandTemplates': changeSpecialPageCaption('Vorlagenexpandierung'); break; case 'Export': changeSpecialPageCaption('Seitenexport'); break; case 'DoubleRedirects': changeSpecialPageCaption('Kettenweiterleitungen'); break; case 'Filepath': changeSpecialPageCaption('Dateipfadermittlung'); break; case 'Imagelist': changeSpecialPageCaption('Dateiverzeichnis'); break; case 'Ipblocklist': changeSpecialPageCaption('Gesperrte IPs und Benutzer'); break; case 'Log': changeSpecialPageCaption('Logbücher'); break; case 'Lonelypages': changeSpecialPageCaption('Verwaiste Seiten'); break; case 'Longpages': changeSpecialPageCaption('Längste Seiten'); break; case 'Linksearch': changeSpecialPageCaption('Weblinksuche'); break; case 'Listredirects': changeSpecialPageCaption('Weiterleitungsverzeichnis'); break; case 'Listusers': changeSpecialPageCaption('Benutzerverzeichnis'); break; case 'MIMEsearch': changeSpecialPageCaption('Suche nach MIME-Typ'); break; case 'Mostcategories': changeSpecialPageCaption('Meist benutzte Kategorien'); break; case 'Mostimages': changeSpecialPageCaption('Meist benutzte Bilder'); break; case 'Mostlinked': changeSpecialPageCaption('Meiste Verweise'); break; case 'Mostrevisions': changeSpecialPageCaption('Meiste Seitenversionen'); break; case 'Newimages': changeSpecialPageCaption('Neueste Bilder'); break; case 'Newpages': changeSpecialPageCaption('Neueste Seiten'); break; //case 'Preferences': changeSpecialPageCaption('Einstellungen'); break; case 'Prefixindex': changeSpecialPageCaption('Unterseiten'); break; case 'Randompage': changeSpecialPageCaption('Zufällige Seite'); break; case 'Randomredirect': changeSpecialPageCaption('Zufällige Weiterleitung'); break; case 'Recentchanges': changeSpecialPageCaption('Letzte Änderungen'); break; case 'Search': changeSpecialPageCaption('Seitensuche'); break; case 'Shortpages': changeSpecialPageCaption('Kürzeste Seiten'); break; case 'SiteMatrix': changeSpecialPageCaption('Wikimatrix'); break; case 'Specialpages': changeSpecialPageCaption('Spezialseitenverzeichnis'); break; case 'Statistics': changeSpecialPageCaption('Statistiken'); break; case 'Uncategorizedcategories': changeSpecialPageCaption('Nicht kategorisierte Kategorien'); break; case 'Uncategorizedimages': changeSpecialPageCaption('Nicht kategorisierte Bilder'); break; case 'Uncategorizedpages': changeSpecialPageCaption('Nicht kategorisierte Seiten'); break; case 'Unusedcategories': changeSpecialPageCaption('Nicht benutzte Kategorien'); break; case 'Unusedimages': changeSpecialPageCaption('Nicht benutzte Bilder'); break; case 'Unusedtemplates': changeSpecialPageCaption('Nicht verwendete Vorlagen'); break; case 'Upload': changeSpecialPageCaption('Hochladen'); break; case 'Userlogin': changeSpecialPageCaption('Anmeldung'); break; case 'Version': changeSpecialPageCaption('Systemversionsinformationen'); break; case 'Watchlist': changeSpecialPageCaption('Beobachtungsliste'); break; case 'Wantedcategories': changeSpecialPageCaption('Gewünschte Kategorien'); break; case 'Wantedpages': changeSpecialPageCaption('Gewünschte Seiten'); break; } } } //change tab titles - adapted from [[w:de:Benutzer:PDD/changeBeschriftungen.js]] function changeTabAndPLinkCaptions() { var rid, relement; var rliste = { //tabs "ca-talk": ["A","Talk"], "ca-edit": ["A","Edit"], "ca-history": ["A","Hist"], "ca-watch": ["A","Watch"], "ca-unwatch": ["A","Unwatch"], "ca-protect": ["A","Lock"], "ca-unprotect": ["A","Unlock"], "ca-delete": ["A","Del"], "ca-move": ["A","Move"], //plinks "pt-userpage": ["A","Stefan"], "pt-mytalk": ["A","Talk"], "pt-preferences":["A","Pref"], "pt-watchlist": ["A","Watch"], "pt-mycontris": ["A","Contrib"], "pt-logout": ["A","Logout"] }; for (rid in rliste) { if (relement = document.getElementById(rid)) { relement.getElementsByTagName(rliste[rid][0])[0].innerHTML = rliste[rid][1]; } } } /******************************************************************************** ** Monobook Element Modding ** ********************************************************************************/ function memOnLoad() { //append tabs if(wgNamespaceNumber == -1) { //change the captions (makes h1.firstHeading obsolete which is removed by my css) changeSpecialPageCaptions(); } else { //add extra tabs appendTab('http://de.wikibooks.org/wiki/Spezial:Prefixindex/' + wgPageName, 'Sub', 'ca-subpage'); appendTab('http://de.wikibooks.org/wiki/Spezial:Allpages/' + wgPageName, 'Index', 'ca-searchindex'); appendTab('http://de.wikibooks.org/w/index.php?title=' + wgPageName + '&action=purge', 'Cache', 'ca-purge'); appendIntroTab(wgPageName); moveWatchTab(); } //append personal links appendPLinkBefore('http://de.wikibooks.org/wiki/Spezial:Recentchangeslinked/Benutzer:Stefan_Majewsky/_Buchseitenliste','bwatch','pt-bwatch','pt-mycontris'); appendPLinkBefore('http://de.wikibooks.org/w/index.php?title=Spezial:Recentchanges&hidemyself=1&limit=200&hidepatrolled=1', 'RC', 'pt-rc','pt-mycontris'); appendPLink('http://de.wikibooks.org/wiki/Benutzer:Stefan_Majewsky/_Checkliste', 'Check', 'pt-check'); appendPLink('http://de.wikibooks.org/wiki/Spezial:Mypage/monobook.css','CSS','pt-css'); appendPLink('http://de.wikibooks.org/wiki/Spezial:Mypage/monobook.js','JS','pt-js'); //add a menu var menu = appendMenu('Links', 'p-custom'); addMenuItem(menu, 'http://de.wikibooks.org/wiki/Regal:Programmierung', 'Regal:Programmierung', 'n-regal'); addMenuItem(menu, 'http://de.wikibooks.org/wiki/Visual_Basic_.NET', 'Visual Basic .NET', 'n-book'); } /******************************************************************************** ** Onload control. ** ********************************************************************************/ addOnloadHook(memOnLoad); addOnloadHook(changeSpecialPageCaptions); addOnloadHook(changeTabAndPLinkCaptions); addOnloadHook(unEditRedLinks); // </nowiki></pre>