User:MC10/rollbackSummary.js

/** * This script lets you use a custom summary with the rollback feature * by adding a "sum" link wherever a rollback link appears. When you * click "sum" you are prompted for a custom summary, and the script * adds an additional summary parameter to the rollback URL submitting it. * * For usage and extra options, see User:MC10/rollbackSummary. * Borrowed from User:Gracenotes/rollback.js * * Linkback: User:MC10/rollbackSummary.js */

(function ($, undefined) { // Wrap with jQuery   function addSumLink {        var rbnode = [], diffnode, index = {}, gebcn = document.getElementsByClassName            ? function(a, b, c) { return a.getElementsByClassName(c) }            : getElementsByClassName;        if (typeof window.rollbackLinksDisable === 'object' && Array.isArray(window.rollbackLinksDisable)) {            for (var i = 0; i < window.rollbackLinksDisable.length; i++)                index[window.rollbackLinksDisable[i]] = true;        }

if (!('user' in index) && mw.config.get("wgCanonicalSpecialPageName") === "Contributions" ||           !('recent' in index) && mw.config.get("wgCanonicalSpecialPageName") === "Recentchanges" ||            !('watchlist' in index) && mw.config.get("wgCanonicalSpecialPageName") === "Watchlist") { rbnode = gebcn(document.getElementById("bodyContent"), "span", "mw-rollback-link"); } else if (!('history' in index) && mw.config.get("wgAction") === "history") { rbnode = gebcn(document.getElementById("pagehistory"), "span", "mw-rollback-link"); } else if (!('diff' in index) && (diffnode = document.getElementById("mw-diff-ntitle2"))) { rbnode = gebcn(diffnode, "span", "mw-rollback-link"); }

for (var i = 0, len = rbnode.length; i < len; i++) addRollbackSummaryLink(rbnode[i]); };

function confirmRollback { var url = this.href; var user = url.match(/[?&]from=([^&]*)/); if (!user) return;

user = decodeURIComponent(user[1].replace(/\+/g, " ")); var summary = prompt("Enter a summary to use for rollback.\n\nLeave blank to use the default. $user will be replaced with \"" + user + "\".",           window.rollbackSummaryDefault); if (summary === undefined || summary === null) { return false; } else if (summary === "") { return true; }

this.href += "&summary=" + encodeURIComponent(summary.replace(/\$user/g, user)); return true; };

function addRollbackSummaryLink(rbnode) { var rblink = rbnode.getElementsByTagName("a")[0]; var alink = rblink.cloneNode(true); alink.className = ""; // don't confuse other scripts alink.firstChild.nodeValue = "sum"; alink.onclick = confirmRollback; rbnode.insertBefore(alink, rblink.nextSibling); rbnode.insertBefore(document.createTextNode(" | "), alink); };

if (window.rollbackLinksDisable === undefined) window.rollbackLinksDisable = [];

if (window.rollbackSummaryDefault === undefined) window.rollbackSummaryDefault = null; // = ""

$(addSumLink); }(jQuery)) // End wrap with jQuery

//