Jump to content

User:MC10/Rollback summary.js

From Simple English Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/** 
 * 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 [[:en:User:MC10/rollbackSummary]].
 * Borrowed from [[:en:User:Gracenotes/rollback.js]]
 *
 * Linkback: [[User:MC10/rollbackSummary.js]]
 */
 
(function ($, undefined) { // Wrap with jQuery
    function addSumLink() {
        var rbnode = [], diffnode, index = {}, gebcn = function(a, b, c) { return a ? a.getElementsByClassName(c) : [] };
        if (typeof window.rollbackLinksDisable === 'object' && $.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
 
// [[Category:Wikipedia scripts]]