Benutzer:SpBot/TAXman-tool-dev.js

aus Wikipedia, der freien Enzyklopädie
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
// 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 showErrorMesage(htmlText) {
   var img = '<img height="17" width="20" longdesc="/wiki/Bild:Zeichen_101.svg" alt="Achtung" src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Zeichen_101.svg/20px-Zeichen_101.svg.png"/>&nbsp;'
   document.getElementById("no-gadget-active").innerHTML = img + htmlText;
}

function AmIin() {
   // load user list
   var rawText = loadFile('Benutzer:Euku/alle Benutzer');
   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");
}

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 = 'format=xml&action=edit&title=' + encodeURI(requestPage) +
     '&basetimestamp=' + encodeURI(basetimestamp) + '&bot=0&recreate=0&token=' + encodeURI(token) + '&summary=' + 
     encodeURIComponent(comment) + '&appendtext=' + encodeURI(newText);
  xmlHttp.open("POST", 'http://de.wikipedia.org/w/api.php', true);
  xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", parm.length);
  xmlHttp.setRequestHeader("title", encodeURI(requestPage));
  xmlHttp.setRequestHeader("basetimestamp", basetimestamp);
  xmlHttp.setRequestHeader("token", token);
  xmlHttp.setRequestHeader("summary", encodeURI(comment));
  xmlHttp.setRequestHeader("appendtext", encodeURI(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) {
         showErrorMesage('<a href="/wiki/Cogito_ergo_sum">Cogito ergo sum</a>: 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", "http://upload.wikimedia.org/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) {
   	showErrorMesage('Du bist noch nicht in der Liste eingetragen und damit nicht bestätigt. Du darfst noch nicht selber bestätigen. Lade die Seite neu und trage dich erstmal in die Liste ein! Warte dann bis du 3 Bestätigungen bekommen hast!');
       window.location.href = wgServer + '/wiki/' + workPage;
       return;
   }
   // load user list
   var rawText = loadFile('Benutzer:Euku/alle Benutzer');
   if (!rawText) {
   	showErrorMesage('Ein Fehler ist aufgetreten. Benutzerliste konnte nicht geladen werden. Melde es bitte <a href="/wiki/Benutzer:Euku">Benutzer:Euku</a>!');
   	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>