_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

User:Epicgenius/rollback.js

In this article we are going to address the topic of User:Epicgenius/rollback.js from a broad and detailed perspective. This topic has been the subject of debate and study in different areas, so it is relevant to analyze it from various disciplines and approaches. Throughout the article, we will explore different aspects related to User:Epicgenius/rollback.js, including its impact on society, its evolution over time, and possible future implications. In addition, we will immerse ourselves in the different opinions and positions that exist around this topic, with the aim of offering a complete and balanced vision. Through this comprehensive approach, we seek to provide the reader with a deep and enriching understanding of User:Epicgenius/rollback.js, thus enriching knowledge and reflection on this topic.
// Created by Gracenotes
// Derived from ]
// Credits: Porchcrop for some minor improvements. Information shown at ]

function addSumLink() {
    var rbnode = , diffnode, index = {}, gebcn = function(a, b, c) { return a.getElementsByClassName(c) };
    if (typeof rollbackLinksDisable == 'object' && rollbackLinksDisable instanceof Array)
        for (var i = 0; i < rollbackLinksDisable.length; i++)
            index] = 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);
};

function confirmRollback() {
    var url = this.href;
    var user = url.match(/from=(*)/);
    if (!user) return;
    user = decodeURIComponent(user.replace(/\+/g, " "));
    var summary = prompt("Enter summary for rollback (or leave as current to use default summary):",
                         "Reverted edits by ] (]) to last version by $1");
    if (summary == null || summary == "") return false;
    else if (summary == "Reverted edits by ] (]) to last version by $1")
        return true;
    this.href = this.href.replace("?", "?summary=" + encodeURIComponent(summary) + "&"); 
};

function addRollbackSummaryLink(rbnode) {
    var rblink = rbnode.getElementsByTagName("a");
    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 (typeof rollbackLinksDisable == 'undefined')
    rollbackLinksDisable = ;
if (typeof rollbackSummaryDefault == 'undefined')
    rollbackSummaryDefault = ""; 

$(addSumLink);