Benutzer:1steenfa/user-status.js
< Benutzer:1steenfa(Weitergeleitet von Benutzer:Steenfatt/user-status.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
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
(function($){ var steef_user_status = { version: 1.0, groups: { // Allgemeine Gruppen g_autoconfirmed: "Autoconfirmed", g_autoreview: "Passiver Sichter", g_editor: "Sichter", g_bot: "Bot", g_sysop: "Administrator", g_bureaucrat: "Bürokrat", g_checkuser: "Checkuser", g_reviewer: "Prüfer", g_accountcreator: "Benutzerkonten-Ersteller", g_import: "Importeur", g_ipblock_exempt: "IP-Sperre-Ausnahme", g_oversight: "Oversighter", g_confirmed: "Bestätigter Benutzer", g_transwiki: "Transwiki-Importeur", // Globale Gruppen g_abusefilter: "Missbrauchsfilter-Bearbeiter", g_editinterface: "Benutzeroberflächenbearbeiter", g_founder: "Gründer", g_Global_bot: "Globaler Bot", g_Global_rollback: "Globaler Zurücksetzer", g_Global_sysops: "Globaler Administrator", g_Ombudsmen: "Ombudsperson", g_steward: "Steward", g_sysadmin: "Systemadministrator", g_Staff: "Staff", // Seltene Gruppen g_recursive_export: "recursive-export", g_API_High_Limit_Requestor: "API_High_Limit_Requestor", g_global_ipblock_exempt: "Globale IP-Sperre-Ausnahme", error_message: "(Fehlende Gruppe)", ignore_list: ["*", "user"], getLocalNames: function (/* array */ groups) /* @return array */ { var res = []; for (var i = 0; i < groups.length; ++i) { if ($.inArray (groups [i], steef_user_status.groups.ignore_list) != -1) { continue; } var group = "g_" + groups[i].replace (/-/g, "_"); if (steef_user_status.groups[group]) { res.push (steef_user_status.groups[group]); } else { res.push (group + " " + steef_user_status.groups.error_message); } } return res; } }, last_edit_seconds: false, utf8_escape: function (text) { text = text.replace(/\r\n/g, "\n"); var utftext = ""; for (var n = 0; n < text.length; n++) { var c = text.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return escape (utftext); }, ajax_request: function (method, params, on_success, on_error) { if (method.toLowerCase() != "post" && method.toLowerCase() != "get") { method = 'get'; } $.ajax ( { url: mw.config.get ("wgServer") /* wgServer */ + "/w/api.php", data: params, dataType: "json", type: method.toUpperCase(), success: on_success, error: on_error } ); }, get_heading: function () { var heading = document.getElementById ("firstHeading"); // Section 0 Edit-Button if (heading === null) { heading = document.getElementById ("section-0"); } return heading; }, init: function () { if (mw.config.get ("wgAction") != "view" || !(mw.config.get ("wgNamespaceNumber") == 2 || mw.config.get ("wgNamespaceNumber") == 3) || mw.config.get ("wgPageName").indexOf ("/") != -1) { return; } var user = mw.config.get ("wgTitle"); if (user.match (/^(?:\d{1,3}\.){3}\d{1,3}$/)) // IP { return; } var params = { action: 'query', list: 'users', ususers: user, usprop: 'blockinfo|groups|editcount|registration', format: 'json' }; var on_error = function (XMLHttpRequest, textStatus, errorThrown) { var error = document.createElement ("span"); error.style.fontSize = "0.4em"; error.style.color = "red"; error.appendChild (document.createTextNode ("Fehler (Benutzerstatus): " + errorThrown)); steef_user_status.get_heading().appendChild (error); }; steef_user_status.user = user; steef_user_status.ajax_request("get", params, steef_user_status.schreibe_info, on_error); }, params: [], aktionen: [], user: "", schreibe_info : function (antwort) { if (typeof(antwort.query.users[0].missing) != "undefined") { return; } var edits = antwort.query.users[0].editcount; var registration = antwort.query.users[0].registration; var groups = antwort.query.users[0].groups; var blocked = (typeof (antwort.query.users[0].blockreason) != "undefined"); // Box erstellen var status_box = document.createElement ("div"); status_box.style.borderBottom = "1px solid #AAAAAA"; status_box.id = "steef_user_status_box"; var allgemein = document.createElement ("p"); var fett1 = document.createElement ("b"); fett1.appendChild (document.createTextNode ("Bearbeitungen:")); allgemein.appendChild (fett1); allgemein.appendChild (document.createTextNode (" " + edits)); allgemein.appendChild (document.createElement ("br")); var fett2 = document.createElement ("b"); fett2.appendChild (document.createTextNode ("Registrierungsdatum:")); allgemein.appendChild (fett2); if (registration !== null && registration !== "") { allgemein.appendChild (document.createTextNode (" " + steef_user_status.formatDate (registration))); } else { var no_reg = document.createElement ("span"); no_reg.style.color = "#999999"; no_reg.style.fontStyle = "italic"; no_reg.appendChild (document.createTextNode (" <nicht in Datenbank>")); allgemein.appendChild (no_reg); } allgemein.appendChild (document.createElement ("br")); // lokale Gruppen if (groups !== undefined) { var fett3 = document.createElement ("b"); fett3.appendChild (document.createTextNode ("Lokale Benutzergruppen:")); allgemein.appendChild (fett3); var group_string = steef_user_status.groups.getLocalNames(groups).join(", "); if (group_string !== "") { allgemein.appendChild (document.createTextNode(" " + group_string.replace (/(.*)\,([^,]*)/, "$1 und$2"))); } else { var no_group = document.createElement ("span"); no_group.style.color = "#999999"; no_group.style.fontStyle = "italic"; no_group.appendChild (document.createTextNode (" keine Gruppen")); allgemein.appendChild (no_group); } allgemein.appendChild (document.createElement ("br")); } // Platzhalter globale Gruppe var platzhalter = document.createElement ("span"); platzhalter.id = "steef_user_status_global_group"; allgemein.appendChild (platzhalter); // Letzter Edit if (edits > 0) { var fett4 = document.createElement ("b"); fett4.appendChild (document.createTextNode ("Letzter Edit:")); allgemein.appendChild (fett4); allgemein.appendChild (document.createTextNode (" ")); var span = document.createElement ("span"); span.id = "steef_user_status_datum"; span.appendChild (document.createTextNode ("wird geladen...")); span.style.fontStyle = "italic"; allgemein.appendChild (span); var pars = { action: "query", list: "usercontribs", ucuser: steef_user_status.user, uclimit: 1, format: "json" }; steef_user_status.params.push (pars); steef_user_status.aktionen.push(steef_user_status.write_last_edit); } status_box.appendChild (allgemein); // Sperren var sperre = document.createElement ("p"); var fett5 = document.createElement ("b"); fett5.appendChild (document.createTextNode ("Sperrstatus:")); sperre.appendChild (fett5); if (blocked) { var span2 = document.createElement ("span"); span2.style.color = "#cc0000"; span2.appendChild (document.createTextNode (" gesperrt")); var sperr_dauer = document.createElement ("span"); sperr_dauer.id = "steef_user_status_block_duration"; span2.appendChild (sperr_dauer); sperre.appendChild (span2); sperre.appendChild (document.createElement ("br")); var fett6 = document.createElement ("b"); fett6.appendChild (document.createTextNode ("Sperrende:")); sperre.appendChild (fett6); var span3 = document.createElement ("span"); span3.style.fontStyle = "italic"; span3.id = "steef_user_status_block_time"; span3.appendChild (document.createTextNode (" wird geladen...")); sperre.appendChild (span3); sperre.appendChild (document.createElement ("br")); var fett7 = document.createElement ("b"); fett7.appendChild (document.createTextNode ("Sperrbegründung:")); sperre.appendChild (fett7); var span4 = document.createElement ("span"); span4.style.fontStyle = "italic"; span4.id = "steef_user_status_block_reason"; span4.appendChild (document.createTextNode (" wird geladen...")); sperre.appendChild (span4); sperre.appendChild (document.createElement ("br")); var fett8 = document.createElement ("b"); fett8.appendChild (document.createTextNode ("Sperrender: ")); sperre.appendChild (fett8); var span5 = document.createElement ("span"); span5.style.fontStyle = "italic"; span5.id = "steef_user_status_blocker"; span5.appendChild (document.createTextNode ("wird geladen...")); sperre.appendChild (span5); var pars2 = { action: "query", list: "logevents", letitle: "User:" + steef_user_status.user, letype: "block", format: "json", lelimit: 1 }; steef_user_status.params.push (pars2); steef_user_status.aktionen.push(steef_user_status.write_block_detail); } else { var span6 = document.createElement ("span"); span6.style.color = "#008800"; span6.appendChild (document.createTextNode (" nicht gesperrt")); sperre.appendChild (span6); } status_box.appendChild (sperre); steef_user_status.get_heading().parentNode.insertBefore (status_box, steef_user_status.get_heading().nextSibling); var pars3 = { action: "query", meta: "globaluserinfo", guiuser: steef_user_status.user, guiprop: "groups", format: "json" }; steef_user_status.params.push (pars3); steef_user_status.aktionen.push(steef_user_status.write_global_group); window.setTimeout (function (thisObj) { thisObj.do_request (); }, 100, steef_user_status); }, do_request: function () { if (steef_user_status.params.length == 0) { return; } var params = steef_user_status.params[0]; var aktion = steef_user_status.aktionen[0]; steef_user_status.params.shift (); steef_user_status.aktionen.shift (); steef_user_status.ajax_request ("get", params, aktion, aktion); }, write_last_edit: function (antwort, textStatus, errortext) { if (textStatus != "success") { var error = document.createElement ("span"); error.style.color = "red"; error.appendChild (document.createTextNode ("Fehler (Benutzerstatus): " + errortext)); document.getElementById ("steef_user_status_datum").parentNode.replaceChild (error, document.getElementById ("steef_user_status_datum")); window.setTimeout (function (thisObj) { thisObj.do_request (); }, 100, steef_user_status); return; } if (antwort.query.usercontribs.length < 1) { var message = document.createElement ("span"); message.style.color = "#999999"; message.style.fontStyle = "italic"; message.appendChild (document.createTextNode (" kein Edit gefunden (nur gelöschte Beiträge?)")); document.getElementById ("steef_user_status_datum").parentNode.replaceChild (message, document.getElementById ("steef_user_status_datum")); window.setTimeout (function (thisObj) { thisObj.do_request (); }, 100, steef_user_status); return; } var datum_empfangen = antwort.query.usercontribs[0].timestamp; var datum = new Date (); datum.setUTCFullYear (datum_empfangen.substr (0, 4)); datum.setUTCMonth (datum_empfangen.substr (5, 2) - 1); datum.setUTCDate (datum_empfangen.substr (8, 2)); datum.setUTCHours (datum_empfangen.substr (11, 2)); datum.setUTCMinutes (datum_empfangen.substr (14, 2)); datum.setUTCSeconds (datum_empfangen.substr (17, 2)); var jetzt = new Date (); if (jetzt < datum) { datum = jetzt - 1000; } var jahre = 0; var monate = 0; var tage = 0; var stunden = 0; var minuten = 0; var sekunden = 0; while (datum < jetzt) { jahre++; datum.setFullYear (datum.getFullYear () + 1); } datum.setFullYear (datum.getFullYear () - 1); jahre--; // Monate while (datum < jetzt) { monate++; datum.setMonth (datum.getMonth () + 1); } datum.setMonth (datum.getMonth () - 1); monate--; // Tage while (datum.getTime () + (24 * 60 * 60 * 1000) < jetzt) { tage++; datum.setTime (datum.getTime () + (24 * 60 * 60 * 1000)); } // Stunden stunden = Math.floor ((jetzt - datum) / (60 * 60 * 1000)); datum.setTime (datum.getTime () + stunden * 60 * 60 * 1000); // Minuten minuten = Math.floor ((jetzt - datum) / (60 * 1000)); datum.setTime (datum.getTime () + minuten * 60 * 1000); // Sekunden sekunden = Math.floor ((jetzt - datum) / 1000); var diff = []; if (jahre == 1) { diff.push ("1 Jahr"); } else if (jahre > 1) { diff.push (jahre + " Jahren"); } if (monate > 0) { if (monate == 1) { diff.push ("1 Monat"); } if (monate > 1) { diff.push (monate + " Monaten"); } } if (tage > 0) { if (tage == 1) { diff.push ("1 Tag"); } if (tage > 1) { diff.push (tage + " Tagen"); } } if (stunden > 0) { if (stunden == 1) { diff.push ("1 Stunde"); } if (stunden > 1) { diff.push (stunden + " Stunden"); } } if (minuten > 0) { if (minuten == 1) { diff.push ("1 Minute"); } if (minuten > 1) { diff.push (minuten + " Minuten"); } } if (sekunden > 0 && steef_user_status.last_edit_seconds) { if (sekunden == 1) { diff.push ("1 Sekunde"); } if (sekunden > 1) { diff.push (sekunden + " Sekunden"); } } var diff_text = ""; if (diff.length == 0) { if (steef_user_status.last_edit_seconds) { diff_text = "vor weniger als 1 Sekunde"; } else { diff_text = "vor weniger als 1 Minute"; } } else { diff_text = "vor " + diff.join(", ").replace (/(.*)\,([^,]*)/, "$1 und$2"); } diff_text = diff_text + " (" + steef_user_status.formatDate (datum_empfangen) + ")"; document.getElementById ("steef_user_status_datum").parentNode.replaceChild (document.createTextNode (diff_text), document.getElementById ("steef_user_status_datum")); window.setTimeout (function (thisObj) { thisObj.do_request (); }, 100, steef_user_status); }, write_global_group: function (antwort, textStatus, errortext) { if (textStatus != "success") { var error = document.createElement ("span"); error.style.color = "red"; error.appendChild (document.createTextNode ("Fehler (Benutzerstatus): " + errortext)); document.getElementById ("steef_user_status_global_group").parentNode.replaceChild (error, document.getElementById ("steef_user_status_global_group")); window.setTimeout (function (thisObj) { thisObj.do_request (); }, 100, steef_user_status); return; } var groups = antwort.query.globaluserinfo.groups; var glob = document.getElementById ("steef_user_status_global_group"); if (groups !== undefined && groups.length > 0) { var fett = document.createElement ("b"); fett.appendChild (document.createTextNode ("Globale Benutzergruppen:")); glob.appendChild (fett); var group_string = steef_user_status.groups.getLocalNames(groups).join(", "); glob.appendChild (document.createTextNode(" " + group_string.replace (/(.*)\,([^,]*)/, "$1 und$2"))); glob.appendChild (document.createElement ("br")); } window.setTimeout (function (thisObj) { thisObj.do_request (); }, 100, steef_user_status); }, write_block_detail: function (antwort, textStatus, errortext) { if (textStatus != "success") { var error = document.createElement ("span"); error.style.color = "red"; error.appendChild (document.createTextNode ("Fehler (Benutzerstatus): " + errortext)); document.getElementById ("steef_user_status_block_time").parentNode.replaceChild (error, document.getElementById ("steef_user_status_block_time")); document.getElementById ("steef_user_status_block_reason").parentNode.replaceChild (error, document.getElementById ("steef_user_status_block_reason")); document.getElementById ("steef_user_status_blocker").parentNode.replaceChild (error, document.getElementById ("steef_user_status_blocker")); window.setTimeout (function (thisObj) { thisObj.do_request (); }, 100, steef_user_status); return; } var admin_link = document.createElement ("a"); admin_link.className = "mw-userlink"; admin_link.title = "Benutzer:" + antwort.query.logevents[0].user; admin_link.href = "/wiki/Benutzer:" + steef_user_status.utf8_escape (antwort.query.logevents[0].user); admin_link.appendChild (document.createTextNode (antwort.query.logevents[0].user)); document.getElementById ("steef_user_status_blocker").parentNode.replaceChild (admin_link, document.getElementById ("steef_user_status_blocker")); var duration = antwort.query.logevents[0].block.duration; var expiry = ""; if (duration == "infinite" || duration == "indefinite") { duration = "unbeschränkt"; expiry = "nie"; } else { expiry = steef_user_status.formatDate (antwort.query.logevents[0].block.expiry); } document.getElementById ("steef_user_status_block_duration").parentNode.replaceChild (document.createTextNode (" (" + duration + ")"), document.getElementById ("steef_user_status_block_duration")); document.getElementById ("steef_user_status_block_time").parentNode.replaceChild (document.createTextNode (" " + expiry), document.getElementById ("steef_user_status_block_time")); document.getElementById ("steef_user_status_block_reason").parentNode.replaceChild (steef_user_status.parseComment (antwort.query.logevents[0].comment), document.getElementById ("steef_user_status_block_reason")); window.setTimeout (function (thisObj) { thisObj.do_request (); }, 100, steef_user_status); }, parseComment: function (text) { var comment = document.createElement ("span"); comment.appendChild (document.createTextNode (" ")); if (text === null || text === "") { comment.appendChild (document.createTextNode ("kein Sperrkommentar")); comment.fontStyle = "italic"; return comment; } var intLink = /(.*?)\[\[((.*?)\|)?(.*?)\]\](.*)/; var suche = text; var ergebnis; while (ergebnis = intLink.exec (suche)) { comment.appendChild (document.createTextNode (ergebnis[1])); var link = document.createElement ("a"); if (ergebnis[2] === undefined) { link.href = "/wiki/" + steef_user_status.utf8_escape (ergebnis[4]); link.title = ergebnis[4]; link.appendChild (document.createTextNode (ergebnis[4])); } else { link.href = "/wiki/" + steef_user_status.utf8_escape (ergebnis[3]); link.title = ergebnis[3]; link.appendChild (document.createTextNode (ergebnis[4])); } comment.appendChild (link); suche = ergebnis[5]; } comment.appendChild (document.createTextNode (suche)); return comment; }, formatDate: function (datum) { var ret_datum = new Date (); ret_datum.setUTCFullYear (datum.substr (0, 4)); ret_datum.setUTCMonth (datum.substr (5, 2) - 1); ret_datum.setUTCDate (datum.substr (8, 2)); ret_datum.setUTCHours (datum.substr (11, 2)); ret_datum.setUTCMinutes (datum.substr (14, 2)); ret_datum.setUTCSeconds (datum.substr (17, 2)); return ret_datum.toLocaleString(); } }; $(document).trigger('loadWikiScript', ['Benutzer:Steef389/js/user_status.js', steef_user_status]); $(steef_user_status.init); })(jQuery);