Benutzer:SpBot/TAXman-tool-dev.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
// for [[Benutzer:TAXman/Gemeinschaftsseite]]
// //könnte etwas Refactoring vertragen
//
// <nowiki>
workPage = "Benutzer:Euku/neue_Anfragen";
requestPage = "Benutzer:Euku/neue_Einträge";
// creates a new attribute
// e.g. newAttrib("href", "bla") returns
// href="bla" as an attribute for the <a>-tag
function newAttrib(name, attrib) {
var tmpAttrib = document.createAttribute(name);
tmpAttrib.nodeValue = attrib;
return tmpAttrib;
}
function AmIin() {
// load user list
var rawText = loadFile('Benutzer:Euku/alle Benutzer');
if (!rawText) {
alert("Ein Fehler ist aufgetreten. Melde es bitte Benutzer:Euku");
return;
}
var userNameArray = rawText.split('\n');
for (i in userNameArray)
if (wgUserName == userNameArray[i])
return true;
return false;
}
function AddMeToThisList() {
if (AmIin)
alert("Du bist bereits in der Liste eingetragen. Normalerweise wird diese Aktion nun abgebrochen, doch dies ist ein Test...")
userComment = prompt("Hier kannst du einen Kommentar zu dir abgeben. z. B. wenn du im Vorstand von Wikimedia bist, gibst du 'Wikimedia Deutschland' ein; ansonsten leer lassen.", "");
if (userComment == null) return; // Abgebrochen
tellUserToWait();
// concat the string to save
addTextAndSavePage('{{Benutzer:Euku/neuer Benutzer|Name=' + wgUserName + '|Kommentar=' + userComment + '|Zeit=~~~~~}}', "füge mich selbst hinzu");
}
// add hidden iframe, add text and save it
function addTextAndSavePage(newText, comment) {
// get a token
xmlHttp = null;
if (typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); }
if (!xmlHttp) {
try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) {
try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e) { throw 'Konnte keinen XMLHttpRequest erstellen. Breche ab.'; }
}
}
if (xmlHttp) {
xmlHttp.open('GET', 'http://de.wikipedia.org/w/api.php?action=query&prop=info&intoken=edit&titles=' + requestPage + '&format=xml', false);
xmlHttp.send(null);
}
rawXML = xmlHttp.responseXML;
// get information
var token = rawXML.getElementsByTagName("page")[0].getAttribute("edittoken");
var section=0;
var basetimestamp = rawXML.getElementsByTagName("page")[0].getAttribute("touched");
var oldText = loadFile(requestPage);
// save it
xmlHttp = null;
// Mozilla, Opera, Safari and Internet Explorer 7
if (typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
if (!xmlHttp) {
// <= Internet Explorer 6
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
xmlHttp = null;
}
}
}
var parm = 'action=edit&title=' + encodeURI(requestPage) + '§ion=' + section +
'&basetimestamp=' + basetimestamp + '&token=' + token + '&summary=' + encodeURIComponent(comment) +
'&text='+encodeURIComponent(oldText + "\n" + newText);
xmlHttp.open("POST", 'http://de.wikipedia.org/w/api.php?action=edit', true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("title", encodeURI(requestPage));
xmlHttp.setRequestHeader("section", section);
xmlHttp.setRequestHeader("basetimestamp", basetimestamp);
xmlHttp.setRequestHeader("token", token);
xmlHttp.setRequestHeader("summary", encodeURI(comment));
xmlHttp.setRequestHeader("text", encodeURI(oldText + "\n" + newText));
xmlHttp.setRequestHeader("Content-length", parm.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200 && xmlHttp.responseText) {
// load current page again
xmlHttp.abort();
window.location.href = wgServer + '/wiki/' + workPage;
}
};
xmlHttp.send(parm);
}
function loadFile(file) {
xmlHttp = null;
if (typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); }
if (!xmlHttp) {
try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) {
try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e) { throw 'Konnte keinen XMLHttpRequest erstellen. Breche loadFile ab.'; }
}
}
if (xmlHttp) {
xmlHttp.open('GET', 'http://de.wikipedia.org/w/index.php?title='+ file +'&action=raw&ctype=text/javascript&dontcountme=s', false);
xmlHttp.send(null);
return (xmlHttp.responseText);
}
return false;
}
function saveACKForm() {
var confirmed = document.getElementById('confirmed').value;
var comment = document.getElementById('comment').value;
if (confirmed == wgUserName) {
alert("[[Cogito ergo sum]]: Du kannst dich nicht selbst bestätigen!");
return;
}
tellUserToWait();
addTextAndSavePage('{{Benutzer:Euku/neue Bestätigung|Bestätiger=' + wgUserName + '|Bestätigter=' + confirmed +
'|Kommentar=' + comment + '|Zeit=~~~~~}}', "Bestätige [[Benutzer:" + confirmed + "|" + confirmed + "]]");
}
function tellUserToWait() {
// tell the user to wait
document.getElementById('no-gadget-active').innerHTML = 'bitte warten ... ';
var newElement = document.createElement("img");
newElement.setAttributeNode(newAttrib("src", "/media/wikipedia/commons/4/42/Loading.gif"));
newElement.setAttributeNode(newAttrib("width", 18));
newElement.setAttributeNode(newAttrib("id", "busyImg"));
newElement.setAttributeNode(newAttrib("height", 18));
document.getElementById("no-gadget-active").appendChild(newElement);
}
function showFormToACKsomeone() {
tellUserToWait();
if (!AmIin) {
alert("Du bist noch nicht in der Liste eingetragen und damit nicht bestätigt. Du darfst noch nicht selber bestätigen. Benutze den oberen Link und warte bis du 3 Bestätigungen bekommst.")
window.location.href = wgServer + '/wiki/' + workPage;
return;
}
// load user list
var rawText = loadFile('Benutzer:Euku/alle Benutzer');
if (!rawText) {
alert("Ein Fehler ist aufgetreten. Melde es bitte Benutzer:Euku!");
return;
}
var userNameArray = rawText.split('\n');
var usersToConfirm = '<optgroup label="0-9">';
var currentLetter = "0-9";
for (var userCounter in userNameArray) {
var tmpUser = userNameArray[userCounter];
// new header?
if ((currentLetter == "0-9") && (tmpUser[0] == "A")) {
currentLetter = "A";
usersToConfirm += '</optgroup><optgroup label="A">';
}
else if ((currentLetter != "0-9") && (tmpUser[0] > currentLetter)) {
currentLetter = tmpUser[0];
usersToConfirm += '</optgroup><optgroup label="' + currentLetter + '">';
}
usersToConfirm += '<option label="' + userNameArray[userCounter] + '">' + userNameArray[userCounter] + '</option>';
}
usersToConfirm += '</optgroup>';
var formHTMLcode = '<table width="500" align="center" class="wikitable" id="ACKtable">'+
'<tbody><tr><td>dein Benutzername</td><td width="150" id="myUserName">' + wgUserName +
'</td></tr>'+
'<tr><td>Wen möchtest du bestätigen?</td><td>'+
' <select id="confirmed" style="width: 100%;">' + usersToConfirm +
' </select>' +
'</td></tr>'+
'<tr><td>Kommentar zur Bestätigung<br/><small>vermeide Details, die die Identität offenlegen könnten</small></td><td>'+
'<input type="text" maxlength="250" id="comment" title="hier auf Wunsch Kommentar eingeben" value="" maxlenght="250"/>'+
'</td></tr>'+
'<tr><td align="right" colspan="2"><b><a href="javascript:saveACKForm();">Speichern</a></b> <a href="javascript:startTAXmanPage();">Abbrechen</a></td></tr>'+
'</tbody></table>';
document.getElementById('no-gadget-active').innerHTML = formHTMLcode; //write form
}
function startTAXmanPage() {
// ersetze den Hinweis und entferne den Edit-Knopf
document.getElementById('no-gadget-active').innerHTML = '<div align="center" id="new-user-link"><b><a href="javascript:AddMeToThisList();">ich möchte mich in das System eintragen</a></b></div><br /><div align="center" id="new-ack-link"><b><a href="javascript:showFormToACKsomeone();">ich möchte jemanden bestätigen</a></b></div>';
document.getElementById('ca-edit').innerHTML = '';
}
if (document.URL == wgServer + '/wiki/' + workPage)
addOnloadHook(startTAXmanPage);
// </nowiki>