Benutzer:Astrapi/monobook.js
Erscheinungsbild
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
// install [[User:Cacycle/wikEd]] in-browser text editor
document.write('<script type="text/javascript" src="'
+ 'http://en.wikipedia.org/w/index.php?title=User:Cacycle/wikEd.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
/**************************************/
/* Hilfsfunktion: Dekodieren von UTF8 */
/**************************************/
function decode_utf8(text)
{
decoded = '';
var tail = 0;
var codepoint;
for (var i = 0; i < text.length; ++i)
{
var charcode = text.charCodeAt(i);
if (tail != 0)
{
codepoint = (codepoint << 6) + (charcode & 0x3f);
--tail;
if (tail == 0)
decoded += String.fromCharCode(codepoint);
}
else
{
if (charcode < 0x80)
decoded += String.fromCharCode(charcode);
else
{
var tail = 1; // number of following 10xxxxxx values
while ((charcode & (0x40 >> tail)) != 0)
++tail;
codepoint = charcode & ((0x80 >> tail) - 1)
}
}
}
return decoded
}
/************************************/
/* Hilfsfunktion: Kodieren von UTF8 */
/************************************/
function encode_utf8(text)
{
var encoded = '';
for (var i = 0; i < text.length; ++i)
{
var codepoint = text.charCodeAt(i)
if (codepoint < 0x80)
encoded += String.fromCharCode(codepoint)
else
{
var encoded_char = ''
var lastone = 0x80;
while (codepoint >= lastone/2) // lastone=00100000 -> 1110xxxx
{
var charcode = (codepoint & 0x3f) + 0x80; // 10xxxxxx
encoded_char = String.fromCharCode(charcode) + encoded_char;
codepoint >>= 6;
lastone >>= 1;
}
var charcode = 0x100 - lastone + codepoint
encoded_char = String.fromCharCode(charcode) + encoded_char;
encoded += encoded_char;
}
}
return encoded;
}
/*************************************************/
/* Hilfsfunktion: XMLHTTPRequest-Objekt erzeugen */
/*************************************************/
function createXMLHttpRequest()
{
if (typeof XMLHttpRequest != undefined)
return new XMLHttpRequest();
if (typeof ActiveXObject != undefined)
{
var names = new Array("MSXML2", "Microsoft");
var name;
while (name = names.shift())
{
try { return ActiveXObject(name + '.XMLHTTP'); } catch(e) {}
}
}
return false;
}
/************************************************/
/* Javascript von einer anderen Seite einbinden */
/************************************************/
// <nowiki>
// Links werden in Wikisyntax inklusive eckiger Klammern übergeben,
// dadurch wird bei die Benutzung von der Wikipedia-Software erkannt
// und auf Spezial:Whatlinkshere aufgelistet.
// Hierbei müssen Interwiki-Links mit : eingeleitet werden (also z.B.
// [[:en:User:Foo/bar.js]], nicht [[en:User:Foo/bar.js]]. Achtung:
// Dieser Fehler wird nicht erkannt!
//
// Beispiel für die Benutzung:
// includeJS('[[Benutzer:Ce2/gibtsnet.js]]')
function includeJS(pagelink)
{
// decode the link
var decoded = /^\[\[(:(\w*):)?([^\]]*)\]\]$/.exec(pagelink)
if (!decoded || !decoded[3])
{
alert(pagelink + ' is not a valid link!')
return
}
var lang = decoded[2]
if (!lang) lang="de"
var pagename = decoded[3]
// encode the pagename
pagename = escape(encode_utf8(pagename.replace(/ /g,'_')))
// load the code
var url = 'http://' + lang + '.wikipedia.org/w/index.php?title='
+ pagename + '&action=raw&ctype=text/javascript&dontcountme=s';
document.write('<script type="text/javascript" src="'+url+'"></script>')
}
// </nowiki>
/*********************************/
/* Füge Projektportal-Link hinzu */
/*********************************/
function addPortal()
{
quickbar = document.getElementById('quickbar');
if (quickbar)
{
neues = document.createElement('a')
neues.href = '/wiki/Wikipedia:Portal'
neues.appendChild(document.createTextNode('Projektportal'))
quickbar.appendChild(neues)
quickbar.appendChild(document.createElement('br'))
}
}
$(addPortal);
/***********************************************/
/* Automatische Signatur auf Diskussionsseiten */
/***********************************************/
includeJS('[[Benutzer:Olliminatore/signing.js]]');
/****************************************************************************/
/* APPERs Rechtschreibprüfung mit explizitem Link zum Ausführen im Quickbar */
/****************************************************************************/
var DontAutorunRP = true;
includeJS('[[Benutzer:APPER/RP/js]]');
function addSpellcheck()
{
quickbar = document.getElementById('quickbar');
if (quickbar)
{
neues = document.createElement('a')
neues.href = 'javascript:spellcheck();'
neues.id = 'spellcheckbutton'
neues.appendChild(document.createTextNode('Rechtschreibprüfung'))
quickbar.appendChild(neues)
quickbar.appendChild(document.createElement('br'))
}
}
// Nur dort einen Link anbieten, wo die Funktion auch was tut
if (wgCanonicalNamespace == "")
addOnloadHook(addSpellcheck);
/*******************************/
/* Einige link-Tags hinzufügen */
/*******************************/
includeJS('[[Benutzer:Ce2/JavaScript/linktags.js]]');
/*********************************************************/
/* Einbinden von popus.js */
/*********************************************************/
includeJS('[[:en:User:Lupin/popups.js]]')
/*************************************************************/
/* Einklappbare Abschnitte, übernommen von Benutzer:D, */
/* leicht an eigene Bedürfnisse (und anderen Skin) angepasst */
/*************************************************************/
/** provides an icon for each heading to fold or unfold it */
function foldHeaders() {
/* foldHeaders stört das Hauptseitenlayout, daher nicht für die Hauptseite verwenden */
if (document.getElementById('hauptseite'))
return;
//------------------------------------------------------------------------------
//## folder
/** attaches folders to all header tags of a given depth */
function attachRecursive(element, depth) {
var tagName = "H" + depth;
var headers = element.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 = i < headers.length-1
? findEnd(headers[i+1])
: element.lastChild;
if (!end) continue;
var folder = attachSingle(header, end);
if (depth < 6) attachRecursive(folder, depth+1);
}
}
/** finds a (inclusive) endpoint for folder content */
function findEnd(next) {
var maybe = next;
for (;;) {
maybe = maybe.previousSibling;
if (!maybe) return null;
if (maybe.nodeName != "#text") break;
}
if (maybe.nodeName != "P") {
return next.previousSibling;
}
for (;;) {
maybe = maybe.previousSibling;
if (!maybe) return null;
if (maybe.nodeName != "#text") break;
}
if (maybe.nodeName != "DIV" || maybe.className != "editsection") {
return next.previousSibling;
}
return maybe.previousSibling;
}
/** attaches a folder span to a header, end is inclusive. returns the folder span. */
function attachSingle(header, end) {
// add a button to the header toggling the display of the content span
var button = document.createElement("span");
button.className = "foldButton";
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.header = header;
folder.open = true;
folder.update = folderUpdate;
// make the button react on clicks
button.folder = folder;
button.onclick = buttonOnClick;
folder.update();
return folder;
}
/** update a complete folder according ot its state */
function folderUpdate() {
if (this.open) {
this.button.innerHTML = "▼";
this.header.style.marginBottom = null;
this.style.display = null;
}
else {
this.button.innerHTML = "►";
this.header.style.marginBottom = "0";
this.style.display = "none";
}
}
/** onclick-handler for the button */
function buttonOnClick() {
this.folder.open = !this.folder.open;
this.folder.update();
}
//------------------------------------------------------------------------------
//## installation
var bodyContent = document.getElementById('article');
// prevent double installation
if (bodyContent.foldersInstalled) return;
bodyContent.foldersInstalled = true;
// install a folder on every header
attachRecursive(bodyContent, 2);
}
$(foldHeaders);
/************************************************/
/* editcounter-Link in den Quickbar verschieben */
/************************************************/
function MoveEditCounterLink()
{
var counter = document.getElementById('editcount');
var quickbar = document.getElementById('quickbar');
if (counter && quickbar)
{
counter.parentNode.removeChild(counter);
quickbar.appendChild(counter);
quickbar.appendChild(document.createElement('br'))
}
}
$(MoveEditCounterLink);
/********************************/
/* Wahre Benutzernamen anzeigen */
/********************************/
includeJS('[[Benutzer:Ce2/JavaScript/showusers.js]]')
/***********************/
/* gallery verbreitern */
/***********************/
var gallery_len = 6;
includeJS('[[Benutzer:Olliminatore/newgallery.js]]');
/***************************************/
/* Artikeltitel in Permalink umwandeln */
/***************************************/
function permalinktitle()
{
// get XMLHTTPRequest object
var request = createXMLHttpRequest();
if (!request)
return; // give up
// query latest revision
var querylink = wgServer
+ wgScriptPath
+ '/query.php?format=xml&what=revisions&pageids='
+ wgArticleId
+ '&rvlimit=1';
request.open('GET', querylink, true);
request.onreadystatechange=function()
{
if (request.readyState != 4) // not yet ready?
return;
if (request.status != 200) // html request failed?
return;
// revision id id des aktuellen Artikels herausfinden
var descr = request.responseXML;
if (typeof descr == 'undefined') // but shouldn't be at this point
return;
var revid = descr.getElementsByTagName('revid')[0];
var target = wgServer
+ wgScriptPath
+ '/index.php?title='
+ escape(encode_utf8(wgPageName))
+ '&oldid='
+ revid.firstChild.data;
// create link to target
var newlink = document.createElement('a');
newlink.href = target;
newlink.id = 'titlelink';
// get title of page
var title = document.getElementsByTagName('h1')[0];
// move all child nodes from title into link
while (title.childNodes.length != 0)
newlink.appendChild(title.removeChild(title.firstChild));
// add link into title
title.appendChild(newlink);
}
// send the request
request.send(null);
}
if (wgIsArticle // nur für echte Seiten (keine Spezialseiten etc.)
&& !/\?.*oldid=/.test(document.URL)) // und nicht, wenn bereits eine spezifische Version angezeigt wird
addOnloadHook(permalinktitle)