User:Sebmol/addEditAndRevertLinks.js

// ============================================================ // BEGIN addEditAndRevertLinks // (von w:en:Benutzer:Berlin-Jurist so weit ich weiß) // Revert-Fkt hinzugefügt + Beschränkung auf Seiten wo es Sinn macht. w:en:Benutzer:Littl. // // verschiedene Fixes von w:en:Benutzer:PDD: // - verwirrende Extrabuttons auf den Diff-Seiten (oben in den Tabs) entfernt // - ausführlichere Revert-Informationen // - bessere Erkennung von zu revertierenden/editierenden Links // - optional Benutzer-Link in Revertinfo (über var revlinkshowuser) // - Anpassung auf neue MediaWiki-Oberfläche (31.5.2006) // function addEditAndRevertLinks (revlinkshowuser) { var is_history = (UrlParameters['action']=='history'); var is_diff = (UrlParameters['diff']>''); var mainNode = document; if (is_history) { for (var i=0; mainNode = document.body.getElementsByTagName("UL")[i]; i++) if (mainNode.id == "pagehistory") tagNodes (mainNode, is_history, is_diff, revlinkshowuser); }  else if (is_diff) { for (var i=0; mainNode = document.body.getElementsByTagName("TD")[i]; i++) if ((mainNode.className == "diff-otitle") || (mainNode.className == "diff-ntitle")) tagNodes (mainNode, is_history, is_diff, revlinkshowuser); } } // tagNodes (tagging descendant nodes of mainNode) function tagNodes (mainNode, is_history, is_diff, revlinkshowuser) { var Edit = '(edit)'; var Rv  = '(rev)'; var first= true; for (var i=0; aNode = mainNode.getElementsByTagName("A")[i]; i++) {    // if it's a link to an old version but not a diff-link and not already an edit link if (editlinkoldversion && (href = aNode.getAttribute("href")) && (href.search(/oldid=/) != -1)          && (href.search(/diff=/) == -1) && (href.search(/action=edit/) == -1) ) {      if (is_history) { // Create Edit Link (new skin has edit links on diffpage so we can skip this) var EditNode = document.createElement('a'); EditNode.setAttribute('href', href + '&action=edit#summary'); var EditTextNode = document.createTextNode(Edit); EditNode.appendChild(EditTextNode); // Add Edit Link To Old Version Link aNode.parentNode.insertBefore( EditNode, aNode.nextSibling ); // Insert whitespace before Edit Link aNode.parentNode.insertBefore( document.createTextNode(' '), aNode.nextSibling ); // jump over inserted (edit) anchor i++; }      // Create RV Link if (revertwithreason && ((is_history && !first) || (!is_history))) { var rvtimestamp = aNode.innerHTML.replace(/.*vom /,''); var rvtsdate = rvtimestamp.replace(/.*, /,''); var rvtstime = rvtimestamp.replace(/, .*/,''); // für ISO 8601 datumsformat: erstmal keine Umformung if (rvtsdate == rvtstime) rvtstime = ''; // Benutzernamen müsste man eigtl. aus dem href nehmen (um UTF8-Namen korrekt zu übernehmen), // aber dann brauchen wieder IPs eine Sonderbehandlung. Vielleicht später... var rvuser; if (is_history) rvuser = mainNode.getElementsByTagName("A")[i+1].innerHTML; else // is_diff rvuser = mainNode.getElementsByTagName("A")[i+2].innerHTML; var defaultgrund = 'Revert auf Version vom ' + rvtsdate + ((rvtstime == )?  : (' (' + rvtstime + ')')); if (revlinkshowuser) defaultgrund = 'Revert to version by User:' + rvuser + ' (' + rvtsdate +           ((rvtstime == '')? '' : (', ' + rvtstime)) + ')'; var Rvnode = document.createElement('a'); Rvnode.setAttribute('href', 'javascript:revertme("' + encodeURI(href) + '", "' + defaultgrund + '")'); var RvTextNode = document.createTextNode(Rv); Rvnode.appendChild(RvTextNode); aNode.parentNode.insertBefore( Rvnode, aNode.nextSibling ); aNode.parentNode.insertBefore( document.createTextNode(' '), aNode.nextSibling ); // jump over inserted (rev) anchor i++; } // END if2 first=false; } // END if1 } // END for } // revertme by Littl, extended by PDD function revertme (href, defaultgrund) { var detailgrund = prompt(defaultgrund, 'Reason: nonsense or vandalismus'); if (detailgrund != null) { grund=defaultgrund + '. ' + trim(detailgrund); if (detailgrund=='') grund=trim(defaultgrund); href=href + "&action=edit&" + speichernp + "=1&" + subjp + "=" + encodeURIComponent(grund); if (rvisminor) href = href + "&" + minorp + "=1"; window.open (href); window.focus; } } // END addEditAndRevertLinks // ============================================================ //