User:Blablubbs/massrevdel NOS.js

// fork of User:Writ Keeper/Scripts/massRevdel.js as of Special:Permalink/1078676732, excluding the OS functionality mw.hook("wikipage.content").add(function {    mw.loader.using(["mediawiki.api"]).then(function  { var apiLimit = 500; var api = new mw.Api; if (mw.config.get("wgCanonicalSpecialPageName") == "Contributions") { wkContribsCheckboxInit = true; $("ul.mw-contributions-list:first").before(" Revision deletion\	 \	 \	\	  delete content \	  delete user name \	  delete edit summary \	  undelete content \	  undelete user name \  undelete edit summary \ Other reason \  ");            $("ul.mw-contributions-list .mw-revdelundel-link").each(function (ind, el) {                if ($(this).children("a").length > 0) {                    var revId = /ids=(\d+)/.exec($(this).children("a").attr("href"))[1];                    var pageTitle = /target=([^&]+)/.exec($(this).children("a").attr("href"))[1];                    el.innerHTML = "";                    $(el).children(".revdelIds").data("index", ind);                }            });            $("ul.mw-contributions-list").after(" ");

$("#revdelCP").data("revdelToolbarShowing", false); $("#revdelCP").data("lastSelectedIndex", -1);

//load canned summaries $.get("/w/index.php?title=MediaWiki:Revdelete-reason-dropdown&action=raw", function (data) {               reasons = data.replace(/\*\* ([^\*]+)/g, '$1 ');                reasons = reasons.replace(/\* ([^<]+)([^\*]+)/g, '<optgroup label="$1">$2 ');                $('#wpRevDeleteReasonList').append(reasons);            });

//attach handlers $("#revdelLabel").click(               function  {                    if ($("#revdelCP").data("revdelToolbarShowing")) {                        $("#revdelCP").data("revdelToolbarShowing", false);                        $("#revdelLabelImg").css("transform", "rotate(270deg)");                        $("#revdelCPBody").fadeOut;                    }                    else {                        $("#revdelCP").data("revdelToolbarShowing", true);                        $("#revdelLabelImg").css("transform", "none");                        $("#revdelCPBody").fadeIn;                    }                }            ); $("#revdelSelectAll").click(               function  {                    $('input.revdelIds').each(function  { $(this).prop("checked", true); });               }            );            $("#revdelSelectNone").click(                function  {                    $('input.revdelIds').each(function  { $(this).prop("checked", false); });               }            );

$("#revdelSelectInv").click(               function  {                    $('input.revdelIds').each(function  { $(this).prop("checked", !($(this).prop("checked"))); });               }            );            $("input.revdelIds").click(                function (ev) {                    var lastSelectedRevdel = $("#revdelCP").data("lastSelectedIndex");                    var newIndex = $(this).data("index");                    if (ev.shiftKey && lastSelectedRevdel >= 0) {                        var checkboxArray = $("input.revdelIds");                        var start = lastSelectedRevdel;                        var stop = newIndex;                        if (start < stop) {                            for (var i = start; i < stop; i++) {                                $(checkboxArray[i]).prop("checked", true);                            }                        }                        else {                            for (var i = start; i > stop; i--) {                                $(checkboxArray[i]).prop("checked", true);                            } }                   }                    $("#revdelCP").data("lastSelectedIndex", newIndex); }           );            $("#revdelSubmit").click( function { //figure out which revisions and pages we're working on. var revCount = 0; var numTitles = 0; var pageTitles = {}; $("input.revdelIds:checked").each(function (ind) {                       revCount = ind + 1;                        if (ind > apiLimit - 1) {                            mw.notify("You can't do more than " + apiLimit + " revdels at once! Canceling...");                            return false;                        }                        if (typeof pageTitles[$(this).attr("name")] == "undefined") {                            pageTitles[$(this).attr("name")] = $(this).val;                            numTitles++;                        }                        else {                            pageTitles[$(this).attr("name")] = pageTitles[$(this).attr("name")] + "|" + $(this).val;                        }                    }); if (numTitles == 0) { mw.notify("You didn't select any revisions to delete!"); return false; }                   var confirmString = "You are attempting to modify " + revCount + " revisions.\n\nThe following revision attributes will be changed:\n";

//figure out what we're doing to each revision. This is pretty clunky, but whatever. var deleteString = ""; var revealString = ""; var typeString = "revdel";

if ($("#revdelContent").prop("checked") == $("#undelContent").prop("checked")) { confirmString = confirmString + "-Content visibility won't change.\n"; }                   else if ($("#revdelContent").prop("checked")) { deleteString = "content"; confirmString = confirmString + "-Content will be deleted.\n"; }                   else { revealString = "content"; confirmString = confirmString + "-Content will be revealed.\n"; }                   if ($("#revdelComment").prop("checked") == $("#undelComment").prop("checked")) { confirmString = confirmString + "-Edit summary visibility won't change.\n"; }                   else if ($("#revdelComment").prop("checked")) { if (deleteString != "") { deleteString = deleteString + "|"; }                       deleteString = deleteString + "comment"; confirmString = confirmString + "-Edit summary will be deleted.\n"; }                   else { if (revealString != "") { revealString = revealString + "|"; }                       revealString = revealString + "comment"; confirmString = confirmString + "-Edit summary will be revealed.\n"; }                   if ($("#revdelName").prop("checked") == $("#undelName").prop("checked")) { confirmString = confirmString + "-User name visibility won't change.\n"; }                   else if ($("#revdelName").prop("checked")) { if (deleteString != "") { deleteString = deleteString + "|"; }                       deleteString = deleteString + "user"; confirmString = confirmString + "-User name will be deleted.\n"; }                   else { if (revealString != "") { revealString = revealString + "|"; }                       revealString = revealString + "user"; confirmString = confirmString + "-User name will be revealed.\n"; }                   if (deleteString == "" && revealString == "") { mw.notify("You didn't select any properties of the revisions to change!"); return false; }

var summary = "";

//construct the revdel summary if ($("#wpRevDeleteReasonList").val == "other") { if ($("#wpReason").val == "") { mw.notify("You didn't select or write in an edit summary for the logs!"); return false; }                       summary = $("#wpReason").val; }                   else { summary = $("#wpRevDeleteReasonList").val; if ($("#wpReason").val != "") { summary = summary + ": " + $("#wpReason").val; }                   }                    confirmString = confirmString + "\nYour revdel summary is: " + summary + "\n\nAre you sure you want to do this?";

if (confirm(confirmString)) { var numCompleted = 0; for (title in pageTitles) { var ajaxData; ajaxData = { action: "revisiondelete", type: "revision", ids: pageTitles[title], reason: summary }; if (deleteString != "") { ajaxData.hide = deleteString; }                           if (revealString != "") { ajaxData.show = revealString; }                           api.postWithToken('csrf', ajaxData).done(function  {                                numCompleted++;                                if (numCompleted == numTitles) {                                    mw.notify("modified " + revCount + " revision(s) successfully!");                                    return false;                                }                            }); }                   }                    return false; }           )        }    }); });