Benutzer:Olliminatore/unsigned.js
aus Wikipedia, der freien Enzyklopädie
Hinweis: Leere nach dem Speichern den Browser-Cache, um die Änderungen zu sehen: Mozilla/Firefox: Shift-Strg-R, Internet Explorer: Strg-F5, Opera: F5, Safari: ⌘-R, Konqueror: Strg-R.
// MARK AUTOMATICALLY UNSIGNED COMMENTS ON TALK PAGES: //<pre><nowiki> // Below (unsigned2.js version 1.3,) by Invitatious. Dual-licensed under the terms of the GFDL v1.2 or the GPL v2. // New features in this version: you can now choose an edit from the last 16.// New features in this version: you can now choose an edit from the last 16. // [[User:Olliminatore/unsigned.js]] (suggested), converted/ localized for de: if (typeof usersignature == 'undefined') var usersignature = '-- \~\~\~\~'; var ssubst = (typeof ssubst == 'undefined'||ssubst)? 'subst:' : ''; function addSigWikiCode() { // From revision 28011729 of [[:en:Wikipedia:WikiProject_User_scripts/Scripts/Get_tidy_title]] function aswcGet_tidy_title(){ // Get's the URL version of the page title. var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href; // cut everything up to "title=" from the start and everything past "&action=edit" from the end editlk = editlk.substring(editlk.indexOf('title=') + 6, editlk.lastIndexOf('&action=edit')); return editlk // The result from this function might be needed unescape()ed }; // LOCALIZABLE STRINGS START. var lsMonth_names = ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], lsConflict = "Edit-Konflikt.", lsDialog1 = "Bitte wähle einen Edit unten:\n\n", lsDialog2 = "Unsigned Edit-Nummer:", lsInvalid1 = "Bitte eine gültige Zahl eintragen oder diese Operation annullieren.", lsInvalid2 = "Dieser Edit ist eine sogenannte Kleine Änderung. Trotzdem wählen?", // Minoredit lsNoRev = "Keine Veränderung gefunden. Besteht die Seite?", lsNoXMLHTTP = "Couldn't get XMLHTTP!", lsMinor = "K "; // LOCALIZABLE STRINGS END var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : false; // Try to use native XMLHTTP if (!xmlhttp && window.ActiveXObject) { // ActiveX XMLHTTP xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); if (!xmlhttp) xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } if (!xmlhttp) return alert(lsNoXMLHTTP); // No XMLHTTP xmlhttp.open("GET", "/w/query.php?format=xml&what=revisions&rvlimit=16&rvcomments&titles=" + aswcGet_tidy_title()); // Get timestamp, user, summary of last 16 edits xmlhttp.onreadystatechange = function (){ if(xmlhttp.readyState!=4) return; if (!xmlhttp) return alert("Error: "+lsNoXMLHTTP + "\n" + xmlhttp.status + ": " + xmlhttp.statusText ); // No XMLHTTP var xmldoc = xmlhttp.responseXML; // IE workaround suggested by [[User:Olliminatore]] if (!xmldoc.documentElement && window.ActiveXObject) { // !FIXME: IE6 can't read XML??? document.body.style.backgroundColor = "#CCCCFF"; // Debugging aid xmldoc = new ActiveXObject("Microsoft.XMLDOM"); xmldoc.async = false; xmldoc.loadXML(xmlhttp.responseText); } var revisions = xmldoc.documentElement.getElementsByTagName("rv"); // Get the revisions if (revisions.length < 1) return alert(lsNoRev); // No revisions var t = revisions[0].getAttribute("timestamp").replace(/[^0-9]/g, ""); // Get rid of non-numeric characters in timestamp if(t != document.editform.wpEdittime.value) // Detect an edit conflict return alert(lsConflict); var dialog_text = lsDialog1; var edit_data = []; var edit_data2 = []; // with minoredits var minor = ""; for (var n = 0; n < revisions.length; n++) { // Extract edit data and build dialog text minor = (revisions[n].getAttribute("minor") != null)? lsMinor : ""; edit_data[n] = {timestamp: revisions[n].getAttribute("timestamp").replace(/[^0-9]/g, ""), user: revisions[n].getAttribute("user"), comment: revisions[n].getAttribute("comment")}; dialog_text += ("[" + n.toString(16).toUpperCase() + "] " + edit_data[n].timestamp + " " + edit_data[n].user + ": " + minor + edit_data[n].comment).substring(0, 80) + "\n"; edit_data2[n] = edit_data[n]; if (minor) edit_data.pop() //continue; // Skip minor edits } while (true) { if (edit_data.length == 1) var unsigned_edit = 0; // no choice else if (is_gecko) // for Mozilla, def in wikibits.js var unsigned_edit = prompt(dialog_text + "\n" + lsDialog2, "0"); else { // for IE or other alert(dialog_text); var unsigned_edit = prompt(lsDialog2, "0"); } if (unsigned_edit == null) return; // Cancel button else if (isNaN(unsigned_edit = parseInt(unsigned_edit, 16))) return alert(lsInvalid1); // Non-numeric input else if (!(edit_data[unsigned_edit])) { if (confirm(lsInvalid2)){ // Non-existent edit unsigned_edit = edit_data2[unsigned_edit]; } else return; } else unsigned_edit = edit_data[unsigned_edit]; t = unsigned_edit.timestamp; // So the full name doesn't have to be used // LOCALIZABLE STRINGS START (current de:) insertTags("{{"+ssubst+"unsigned|" + unsigned_edit.user + "|" + (parseInt(t.substring(8, 10)) + parseInt(fetchTimezone().substring(0,2))) + ":" + t.substring(10, 12) + ", " + (t.substring(6, 8) - 0) + ". " + lsMonth_names[t.substring(4, 6) - 1] + " " + t.substring(0, 4) + "|3= " + usersignature + "}}", "", ""); // Format and insert the tag. The data returned by query.php is UTC, FetchTimezone is needed. // LOCALIZABLE STRINGS END return } }; xmlhttp.send(null); }; addOnloadHook(function(){ // put onload in wikibits.js // From [[:en:Wikipedia:WikiProject_User_scripts/Scripts/Add_LI_link]] function aswcAddlilink(tabs, url, name, id, title, key){ var na = document.createElement('a'); na.href = url; na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); if(id) li.id = id; li.appendChild(na); //tabs.appendChild(li); // to end ta_hi = document.getElementById('ca-history'); // to versions tab if (ta_hi) tabs.insertBefore(li, ta_hi); if (id) { if (key && title) ta[id] = [key, title]; else if (key) ta[id] = [key, '']; else if (title) ta[id] = ['', title]; } akeytt(); // re-render the title and accesskeys from existing code in wikibits.js return li }; if (!wgIsArticle) aswcAddlilink(document.getElementById('p-cactions').getElementsByTagName('ul')[0], "javascript:addSigWikiCode();", /* LOCALIZABLE STRINGS START */ "Unsigniert" , "ca-unsigned", "Markiere einen unsignierten Kommentar", "" /* LOCALIZABLE STRINGS END */); }); // Above by Invitatious. Dual-licensed under the terms of the GFDL v1.2 or the GPL v2. //</nowiki></pre>