Benutzer:Mnh/modern.js
Zur Navigation springen
Zur Suche springen
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
// <nowiki>
/*
* TODO: - Optionen vereinheitlichen, bessere Benamsung
* - Usability: work flow vereinheitlichen, [a] = middle button, [b] = left ist Mist
* - "Stellt Schrott ein"-Knopf so nutzlos, die Seite ist ja schon weg, wenn ich ihn mal brauche
*/
/* TOC-Filter-Optionen */
var txt_show = "[alle zeigen]";/* Defaulttext für TOC-Button, falls gefiltert */
var txt_hide = "[filtern]"; /* Defaulttext sonst */
var filter_by_default = true; /* Standardansicht gefiltert? */
/* Revertknöppchen die ich haben will */
var rvl_linktexts = new Array('A|Vand', 'A|Revert', 'WDS|Revert', 'A|Quelle?', 'A|WP:WEB', 'WD|Offtopic', 'WD|KPA');
var rvl_revtexts = new Array(
'Zurück auf Version von $1: Offenkundiger Vandalismus.',
'Zurück auf Version von $1: Keine Verbesserung des Artikels.',
'default', /* üblicher Zurücksetztext */
'Zurück auf Version von $1: Bitte [[WP:QA|Quelle angeben]].',
'Zurück auf Version von $1: Bitte [[Wikipedia:Weblinks]] beachten',
'Zurück auf Version von $1: Beitrag für die Diskussion nicht weiterführend.',
'Zurück auf Version von $1: Bitte [[WP:Keine persönlichen Angriffe]] und [[WP:Wikiquette]] beachten.');
/* Pseudokonstanten für bessere Lesbarkeit */
var NOT_THERE = -1;
/******
* Utilitykrams
******/
function strlen(str) {
return(str.length);
}
/*
* konstruiert Namen der Diskussionsseite
*/
function talk_of(page) {
var pos;
if( (pos=page.indexOf('Diskussion:')) != NOT_THERE)
return page;
if( (pos=page.indexOf(':')) == NOT_THERE)
return 'Diskussion:' + page;
return page.substr(0,pos) + ' Diskussion' + page.substr(pos);
}
/*
* grobe Prüfung des Benutzernamens, ob ip oder nicht
*/
function is_ip(user) {
return (user.match("^\\d+\\.\\d+\\.\\d+\\.\\d+$") != null);
}
/*
* token holen, action = (delete|block|edit|protect|unblock)
*/
function api_token(title, action) {
var req = new XMLHttpRequest();
req.open('GET', 'http://de.wikipedia.org/w/api.php?action=query&prop=info&format=xml&intoken='
+ action + '&titles='+title, false);
req.send(null);
var pos = req.responseText.indexOf(action + 'token="') + strlen(action + 'token="');
var pos2= req.responseText.indexOf('"', pos);
return req.responseText.substr(pos, pos2-pos-2) + "%2B\\";
}
/*
* api-aktion durchführen, action=(delete|edit|block|protect|review)
*/
function api_post(params, action) {
var req = new XMLHttpRequest();
req.open('POST', 'http://de.wikipedia.org/w/api.php?action=' + action, false);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send(params);
}
/*
* Frontends für api_post()
*/
function api_delete(page, reason, token) {
return api_post("reason=" + reason + "&token=" + token + "&title=" + page, "delete");
}
function api_block(user, expiry, reason, token) {
return api_post("user="+ user + "&expiry=" + expiry + "&reason=" + reason
+ "&token=" + token, "block");
}
function api_protect(page, protections, expiry, reason, token) {
return api_post("title=" + page + "&protections=" + protections + "&expiry=" + expiry +
+ "&reason=" + reason + "&token=" + token, "protect");
}
/*
* Guckt, ob die übergebene Seite existiert.
*/
function api_page_exists(page) {
var req = new XMLHttpRequest();
req.open('GET', 'http://de.wikipedia.org/w/api.php?action=query&format=xml&titles='+page, false);
req.send(null);
return (req.responseText.indexOf('missing=""') == NOT_THERE);
}
/******
* Content
******/
function killDates() {
var haystack = document.getElementById("wpTextbox1");
haystack.value = haystack.value.replace(/\[\[([0-9]{3,4})\]\]/g,"$1");
haystack.value = haystack.value.replace(/\[\[([0-9]{1,2}\. (Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember))\]\]/g, "$1");
document.getElementById("wpSummary").value+= "Daten gemäß [[WP:Verlinken#Daten verlinken]] entlinkt";
}
/* Knopfbeschriftungen */
var portletLabels = {
'ca-talk': "Disk",
'ca-edit': "Edit",
'ca-viewsource': "Quelltext",
'ca-history': "Wer war das?",
'ca-protect': "Schützen",
'ca-unprotect': "Freigeben",
'ca-delete': "Löschen",
'ca-undelete': "Gelöschtes",
'ca-move': "Schubsen",
'ca-watch': "Merken",
'ca-unwatch': "Vergessen",
'ca-nstab-user' : "Seite",
'pt-mytalk': "Disk",
'pt-watchlist': "Beo",
'pt-preferences': "Conf",
'pt-mycontris': "Contribs",
'pt-logout': "", // Ausgeloggt wird nicht
't-permalink': "Perma",
't-contributions': "Beiträge",
't-blockip': "Sperren",
't-log': "Logs",
't-whatlinkshere': "Links hierhin"
};
function labelItems(labels) {
var elem, link;
for (var id in labels) {
if( (elem=document.getElementById(id)) == null)
continue;
if( (link=elem.getElementsByTagName("a")[0]) != null)
link.textContent = labels[id];
}
}
$(function() { labelItems(portletLabels); });
/** TODO: Fremdcode loswerden
Imports a user javascript page from any wikipedia project into the actual document.
@version 0.1
@date 2007/03/22
@author: based on function importPage from [[de:User:PDD]]s monobook.js, extended by [[de:User:Revvar]]
@param page Name of the user page without the "user:" prefix and the ".js" appendix
@param lang (optional) Language code of the corresponding wikipedia project. Default is the callers project.
@return "true" on success, "false" otherwise
*/
function importJavascriptL(page, lang) {
try {
/* check the parameters and set defaults */
if(!page) throw("importJavascriptL: Missing parameter page.");
if(!lang) lang = wgContentLanguage;
/* create import url */
var import_url = 'http://' + lang + '.wikipedia.org' + wgScriptPath + '/index.php?title=User:' + page +
'.js&action=raw&ctype=text/javascript&smaxage=0';
/* import page */
var Head = document.getElementsByTagName('head').item(0);
var Script = document.createElement('script');
Script.setAttribute('type', 'text/javascript');
Script.setAttribute('src', import_url);
Script.setAttribute('charset', 'utf-8');
Head.appendChild(Script);
return true;
} catch(e) {
alert(e.message);
return false;
}
}
/** Jump to TOC: Fügt an fester Position einen Link ein, der einen direkten Sprung zum Inhaltsverzeichnis erlaubt **/
function jumptotoc() {
var toc;
if( (toc=document.getElementById("toctitle")) == null)
return;
toc.innerHTML = toc.innerHTML + '<div style="position:fixed; bottom:5px; left: 5px;">'
+ '<a href="#toc" style="font-size:x-large; border: 1px solid gray; margin-left:1em;">'
+ ' ↑ </a></div>';
}
$(jumptotoc);
/*
* Schnelles Löschen für Schrott
*/
function cb_trash_this(reason) {
api_delete(wgPageName, reason, api_token(wgTitle, "delete"));
jsMsg(wgTitle + " successfully deleted.");
window.location.reload();
}
function trash_this() {
var text; /* Linktext */
var reason; /* Löschgrund */
/* Nicht in allen Namensräumen darstellen */
if(wgCanonicalNamespace == "") {
/* Sicherung, den Knopf nur in neueren Artikeln darstellen.
* NOTE: 4435000 entspricht neuen Artikeln May 2009, braucht gelegentliche Anpassung.
* Besser wäre nach Größe/Anzahl Versionen, aber API zu teuer
*/
if(parseInt(wgArticleId) < 4435000)
return;
text = "Schrott";
reason = "[[WP:ART|Kein Artikel]] oder [[WP:WWNI|kein enzyklopädischer Inhalt]]";
} else if(wgCanonicalNamespace == "File") {
text = "Commons";
reason = "Bild auf Commons, lokale Seite Unfug";
} else if(wgCanonicalNamespace.match(/[tT]alk/) && (wgCanonicalNamespace!="User_talk") ) {
text = "Schrott";
reason = "Diskussionsseite nur Unfug.";
} else {
return;
}
var link = ' '
+ '[<a href="javascript:void(0);" style="color:#CD3700; font-weight:bold;"'
+ " onclick=\"cb_trash_this('" + reason + "')\">" + text + "</a>]";
var elem = document.getElementById('p-cactions');
var pos = elem.innerHTML.indexOf('</ul>');
elem.innerHTML = elem.innerHTML.substr(0, pos) + link + elem.innerHTML.substr(pos);
}
// addOnloadHook(trash_this);
/*
* schneller vandalblock aus dem diff
*/
function cb_2hours(user, cause) {
var reason;
if(cause == "vandal")
reason = "[[WP:Vandalismus|Unsinnige Bearbeitungen]]";
else if(cause == "junk")
reason = "Erstellen unerwünschter Einträge, vergleiche dazu [[Wikipedia:Artikel]]";
var tok = api_token(user, "block");
var state = api_block(user, "2 hours", reason, tok);
jsMsg(user + " blocked for 2 hours");
location.href = "http://de.wikipedia.org/wiki/Spezial:Beiträge/" + user;
}
function vandal_2hours() {
var user; /* Der Delinquent */
var div, pos, pos2;
/* in diffs einbauen */
if(location.href.indexOf("diff=") != NOT_THERE) {
/* Namen extrahieren */
if( (div=document.getElementById('mw-diff-ntitle2')) == null)
return;
pos = div.innerHTML.indexOf('mw-userlink">') + strlen('mw-userlink">');
pos2 = div.innerHTML.indexOf('</a>', pos);
user = div.innerHTML.substr(pos, pos2-pos);
/* Die zwei Stunden sind nur bei IPs sinnvoll */
if(is_ip(user) == false)
return;
/* Link bauen und einfügen */
var link = '<a href="javascript:void(0);" style="color:#CD3700; font-weight:bold;"'
+ " onclick=\"cb_2hours('"+ user +"', 'vandal')\">Unfug</a>";
div = document.getElementById("mw-diff-ntitle2");
pos = div.innerHTML.indexOf('Sperren</a>') + strlen('Sperren</a>');
div.innerHTML = div.innerHTML.substr(0, pos) + " | " + link + div.innerHTML.substr(pos);
}
}
// addOnloadHook(vandal_2hours);
importJavascriptL('Mnh/ui','de');
importJavascriptL('Mnh/unterseiten','de');
importJavascriptL('Mnh/revlinks','de');
// importJavascriptL('Mnh/lktools','de');
// importJavascriptL('Jan_eissfeldt/contribsrange.js');
// </nowiki>