„MediaWiki:Gadget-PB2.js“ – Versionsunterschied
K Akt. auf Anfrage: http://de.wikipedia.org/w/index.php?title=Wikipedia%3AAdministratoren%2FAnfragen&diff=60716025&oldid=60713979 |
STBR (Diskussion | Beiträge) K hat „MediaWiki:Gadget-Persoenliche-Bekanntschaften-GUI2.js“ nach „MediaWiki:Gadget-PB2.js“ verschoben |
(kein Unterschied)
|
Version vom 17. Juni 2009, 22:46 Uhr
// script for [[:de:Wikipedia:Persönliche Bekanntschaften]] (2nd part)
// author: [[:de:Benutzer:Euku]]
// <nowiki>
// use global variables to avoid problems with ' and "
var pbRequest = {
textToBeAdded: '',
comment: ''
};
var bigUserList;
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 monobook.js ab.'; }
}
}
if (xmlHttp) {
var now = new Date();
xmlHttp.open('GET', wgServer + '/w/index.php?title='+ file +'&action=raw&ctype=text/javascript&ts=' + now.getMonth() + now.getDate() + now.getHours() + now.getMinutes(), false);
xmlHttp.send(null);
return (xmlHttp.responseText);
}
return false;
}
// 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 intro = '<div style="float:center; border: 1px solid black; padding: 8px; background-color:white;"><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"/> '
var reload = ' <a href="javascript:startGUI()">erneut versuchen</a>';
document.getElementById("no-gadget-active").innerHTML = intro + htmlText + reload + '</div>';
}
function AmIin() {
// load user list
var rawText = loadFile(persBekannt.userList);
if (!rawText) {
showErrorMesage('Ein Fehler ist aufgetreten. Benutzerliste konnte nicht geladen werden. Melde es bitte <a href="/wiki/Benutzer:Euku">Benutzer:Euku</a>!');
return;
}
// remove "<" and ">" to prevent hacks, split text in to array
var userNameArray = rawText.replace(/(?:\<|\>)/g, "FEHLER").split('\n');
for (i in userNameArray)
if (wgUserName == userNameArray[i])
return true;
return false;
}
function loadBigUserList() {
var rawTextBig = loadFile(persBekannt.bigUserList);
var searchRegEx = /\{\{\/DB\-Link\|(\d+)\|([^\|]+)\|([^}]*)\}\}/g;
var searchRes;
var userListArray = new Array();
var i = 0;
while (searchRes = searchRegEx.exec(rawTextBig)) {
userListArray[i] = [searchRes[1], searchRes[2], searchRes[3]];
i++;
}
return userListArray;
}
function AddMeToThisList() {
if (AmIin()) {
showErrorMesage('Du bist bereits in der Liste eingetragen.');
return;
}
tellUserToWait();
// concat the string to save
pbRequest.textToBeAdded = "{{Wikipedia:Persönliche Bekanntschaften/neuer Benutzer|Name=" + wgUserName + "|Zeit=~~~~~}}";
pbRequest.comment = "füge mich selbst hinzu";
addTextAndSavePage();
}
// waits until parent.saveFrame.document.getElementById("editform") is loaded
function waitForSave1() {
if (parent.saveFrame == null || parent.saveFrame.document == null || parent.saveFrame.document.getElementById('wpDiff') == null){
var now = new Date(); // timeout after 20 sec.
if (timeoutStart + 20000 > now.getTime()) {
window.setTimeout("waitForSave1()", 300);
} else {
showErrorMesage("Es ist ein Fehler aufgetreten (Timeout nach 20 Sekunden)! Möglicherweise bringt es etwas den Vorgang zu wiederholen. Ein Grund könnte ein Bearbeitungskonflikt sein.<br />Wenn du den Fehler berichten willst, gib bitte auch folgende Informationen an:<br /><pre>Browser: " + navigator.userAgent + "<br />Skript-Version: " + persBekannt.PBJSversion + "<br />parent.saveFrame: " + parent.saveFrame + "<br />parent.saveFrame.document: " + parent.saveFrame.document + "<br />parent.saveFrame.document.getElementById('wpDiff'): " + parent.saveFrame.document.getElementById('wpDiff') +"<br />Fehler in waitForSave1</pre>");
}
} else {
parent.saveFrame.document.getElementById("editform").wpSummary.value = pbRequest.comment;
parent.saveFrame.document.getElementById("wpTextbox1").value += pbRequest.textToBeAdded;
parent.saveFrame.document.getElementById("editform").submit(); // press 'save'
waitForSave2();
}
}
// waits until parent.saveFrame is saved
function waitForSave2() {
// alernatives for other browsers
if (parent.saveFrame.document.URL == wgServer + '/wiki/' + persBekannt.requestPage ||
encodeURI(parent.saveFrame.document.URL) == wgServer + '/wiki/' + persBekannt.requestPage) {
// load current page again
window.location.href = wgServer + '/wiki/' + persBekannt.workPage + '?action=purge';
} else {
var now = new Date(); // timeout after 20 sec.
if (timeoutStart + 20000 > now.getTime()) {
window.setTimeout("waitForSave2()", 300);
} else {
showErrorMesage("Es ist ein Fehler aufgetreten (Timeout nach 20 Sekunden)! Möglicherweise bringt es etwas den Vorgang zu wiederholen.<br />Wenn du den Fehler berichten willst gib bitte auch folgende Informationen an:<br /><pre>Browser: " + navigator.userAgent + "<br />Skript-Version: " + persBekannt.PBJSversion + "<br />parent.saveFrame: " + parent.saveFrame + "<br />parent.saveFrame.document: " + parent.saveFrame.document + "<br />parent.saveFrame.document.getElementById('wpDiff'): " + parent.saveFrame.document.getElementById('wpDiff') +"<br />parent.saveFrame.document.URL: " + parent.saveFrame.document.URL + "<br />Fehler in waitForSave2</pre>");
}
}
}
// add hidden iframe, add text and save it
function addTextAndSavePage() {
// 'id' is needed for IE7.0
window.document.getElementById("no-gadget-active").innerHTML += '<iframe name="saveFrame" id="saveFrame" src="' + wgServer + wgScriptPath + '/index.php?title='+ persBekannt.requestPage + '&action=edit" width=0 height=0></iframe>';
var now = new Date();
timeoutStart = now.getTime();
window.setTimeout("waitForSave1()", 1000);
}
function saveACKForm(eventP) {
if ((eventP != null) && (eventP != "klick")) {
var pressedKey = (eventP.keyCode ? eventP.keyCode : (eventP.which ? eventP.which : eventP.charCode));
if (pressedKey != 13) // enter was pressed in input-field
return;
} else if (eventP != "klick") {
return;
}
var confirmed = document.getElementById('confirmed').value;
var comment = document.getElementById('comment').value;
if (confirmed == "null") {
showErrorMesage('Du musst jemanden auswählen, den du bestätigen willst!');
return;
}
if (comment.indexOf("}}") > -1 || comment.indexOf("{{") > -1) {
alert("Im Kommentar darf weder '{{' noch '}}' vorkommen.");
return;
}
tellUserToWait();
pbRequest.textToBeAdded = "{{Wikipedia:Persönliche Bekanntschaften/neue Bestätigung|Bestätiger=" + wgUserName + "|Bestätigter=" + confirmed + "|Kommentar=" + comment + "|Zeit=~~~~~}}";
pbRequest.comment = "Bestätige [[User:" + confirmed + "|" + confirmed + "]]";
addTextAndSavePage();
}
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);
}
// Updates the link to the userpage when 'onchage' is fired in the select-field
function updateUserLink() {
var userDBId = -1;
var userToConfirm = document.getElementById("confirmed").value;
for (var i = 0; i < bigUserList.length; i++)
if (userToConfirm == bigUserList[i][1]) {
userDBId = bigUserList[i][0];
break;
}
if (userDBId != -1)
var dbText = '<br />→ <small><a target="_blank" href="http://purwin.de/WP_PB/t_ready.cfm?bekannte_ID=' + userDBId + '">erhaltene Bestätigungen</a></small>';
else
var dbText = '';
if (document.getElementById("confirmed").value == "null")
document.getElementById("userPageLink").innerHTML = "";
else
document.getElementById("userPageLink").innerHTML = '→ <small><a target="_blank" href="/wiki/Benutzer:' + document.getElementById("confirmed").value + '">Benutzerseite</a></small>' + dbText;
}
function showFormToACKsomeone() {
// load big user list
bigUserList = loadBigUserList();
for (var i = 0; i < bigUserList.length; i++)
if (wgUserName == bigUserList[i][1]) {
if ("unbestätigt" == bigUserList[i][2]) {
showErrorMesage('Du hast noch keine drei verschiedenen Bestätigungen erhalten und darfst somit noch nicht selber Bestätigungen vergeben. Warte bitte bis dich jemand bestätigt!');
return;
} else
break;
}
// load user list
var rawText = loadFile(persBekannt.userList);
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 = '<option value="null" label="Bitte auswählen">Bitte auswählen</option><optgroup label="0-9">';
var currentLetter = "0-9";
for (var i = 0; i < userNameArray.length; i++) {
var tmpUser = userNameArray[i];
// new header?
if ((currentLetter == "0-9") && (tmpUser.charAt(0) == "A")) {
currentLetter = "A";
usersToConfirm += '</optgroup><optgroup label="A">';
}
else if ((currentLetter != "0-9") && (tmpUser.charAt(0) > currentLetter)) {
currentLetter = tmpUser.charAt(0);
usersToConfirm += '</optgroup><optgroup label="' + currentLetter + '">';
}
if (tmpUser != wgUserName)
usersToConfirm += '<option value="' + tmpUser + '" label="' + tmpUser + '">' + tmpUser + '</option>';
}
usersToConfirm += '</optgroup>';
var userDBId = -1;
for (var i = 0; i < bigUserList.length; i++)
if (wgUserName == bigUserList[i][1]) {
userDBId = bigUserList[i][0];
break;
}
var formHTMLcode = '<table width="500" align="center" class="wikitable" id="ACKtable">'+
'<tbody><tr><td>Dein Benutzername</td><td width="150" id="myUserName">' + wgUserName+
'<br />→ <small><a target="_blank" href="http://purwin.de/WP_PB/t_ready.cfm?bekannte_ID=' + userDBId + '">deine erhaltenen Bestätigungen</a></small>'+
'<br />→ <small><a target="_blank" href="http://purwin.de/WP_PB/t_backvotes.cfm?best%E4tigende_ID=' + userDBId + '">deine vergebenen Bestätigungen</a></small>'+
'</td></tr>'+
'<tr><td>Wen möchtest du bestätigen?</td><td>'+
' <select id="confirmed" name="confirmed" onchange="javascript:updateUserLink();">Benutzerseite anzeigen</small>\"" style="width: 100%;">' + usersToConfirm +
' </select><br/><div id="userPageLink"></div>' +
'</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" id="comment" title="Hier auf Wunsch Kommentar eingeben" value="" maxlength="50" onkeypress="javascript:saveACKForm(event)" />'+
'</td></tr>'+
'<tr><td align="right" colspan="2"><b><a href="javascript:saveACKForm(\'klick\');">Speichern</a></b>'+
'</tbody></table>';
document.getElementById('no-gadget-active').innerHTML = formHTMLcode; // write form
document.getElementById("confirmed").focus() // focus the select field
}
function startGUI() {
// modify GUI
tellUserToWait();
try {
document.getElementById('ca-edit').innerHTML = '<a title="Servercache umgehen (purge)" href="/wiki/' + persBekannt.workPage + '?action=purge">Seite neuladen und Servercache umgehen</a>';
} catch(e) {}
try {
document.getElementById('ca-unwatch').innerHTML = '<a title="diese Seite nicht beobachten" href="/wiki/' + persBekannt.workPage + '?action=unwatch">diese Seite nicht beobachten</a>';
} catch(e) {}
try {
document.getElementById('ca-watch').innerHTML = '<a title="diese Seite beobachten" href="/wiki/' + persBekannt.workPage + '?action=watch">diese Seite beobachten</a>';
} catch(e) {}
try {
document.getElementById('ca-delete').innerHTML = '';
} catch(e) {}
try {
document.getElementById('ca-move').innerHTML = '<a target="_blank" title="Liste mit neuen Teilnehmern beobachten" href="/wiki/' + persBekannt.newUserList + '?action=watch">Liste mit neuen Teilnehmern beobachten</a>';
} catch(e) {}
try {
document.getElementById('ca-unprotect').innerHTML = '';
} catch(e) {}
// check if user is autoconfirmed
var AmIAutoconfirmed = false;
for (var i in wgUserGroups) {
if (wgUserGroups[i] == "autoconfirmed") {
AmIAutoconfirmed = true;
break;
}
}
if (!AmIAutoconfirmed) {
showErrorMesage('Du bist leider noch zu kurz dabei um diese Seiten bearbeiten zu können. Du musst zur Benutzergruppe "autoconfirmed" gehören. Im Regelfall gehörst du automatisch <b>vier Tage</b> nach Anmeldung dazu und kannst diese und viele andere Seite bearbeiten.<br />Mehr Informationen: <a href="/wiki/Wikipedia:Benutzer#Angemeldeter_Benutzer">Hier</a> (bitte beachte, dass dort mit <i>bestätigter Benutzer</i> nicht das gleiche meint ist wie auf <a href="/wiki/Wikipedia:Persönliche_Bekanntschaften">Wikipedia:Persönliche Bekanntschaften</a>)<br />');
return;
}
// check if this is the latest version
var currentVersion = loadFile(persBekannt.versionCheckPage);
if (currentVersion == "stop") {
showErrorMesage('<br /><br /><div style="float:center; border: 1px solid black; padding: 8px; background-color:white;">Das <a href="/wiki/Wikipedia:Gadgets">Gadget</a>, was du gerade benutzt, wurde temporär deaktiviert. Wahrscheinlich hat dies technische Ursachen. Du kannst dich über den Grund auf der <a href="/wiki/Wikipedia_Diskussion:Persönliche_Bekanntschaften">Diskussionsseite des Projekts</a> informieren. Versuche es einige Zeit später nochmal!');
return;
}
if (currentVersion > persBekannt.PBJSversion) {
showErrorMesage('<br /><br /><div style="float:center; border: 1px solid black; padding: 8px; background-color:white;">Das <a href="/wiki/Wikipedia:Gadgets">Gadget</a>, was du gerade benutzt, wurde vor kurzer Zeit <a href="/wiki/Wikipedia:Persönliche_Bekanntschaften/Versionslog">aktualisiert</a>. In deinem <a href="/wiki/Browsercache">Browsercache</a> befindet sich allerdings noch die ältere Version. Dies könnte zu Problemen führen. Es wird empfohlen, dass du jetzt die Seite neu lädst und deinen Browsercache umgehst:<br /> <b>Mozilla/Firefox/Safari:</b> Strg + Shift + R (Mactaste + R bei Macintosh) drücken; <b>Konqueror:</b> F5 drücken; <b>Opera:</b> Cache unter Extras → Einstellungen leeren; <b>Internet Explorer:</b> Strg + F5');
return;
} else
var hint = '';
if (!AmIin()) {
// replace the warning und remove the edit button
document.getElementById('no-gadget-active').innerHTML = '<div align="center">Du bist <b>noch nicht</b> als Teilnehmer bei <i>WP:PB</i> eingetragen und damit nicht bestätigt. Damit darfst noch nicht selber bestätigen und kannst nicht bestätigt werden. Benutze den unteren Link, um dich einzutragen und warte bis du 3 Bestätigungen bekommst.<br><b><a href="javascript:AddMeToThisList();">ich möchte in die Liste der Teilnehmer aufgenommen werden</a>' + hint;
} else {
// we can go on
showFormToACKsomeone();
}
}
// </nowiki>