From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.

//Mass rollback function

//Written by John254 and modified/rewritten by Writ Keeper with modifications by TheDJ; original is at /info/en/?search=User:John254/mass_rollback.js

//Adapted from User:Mr.Z-man/rollbackSummary.js

//Instructions: Selecting the "rollback all" tab when viewing a user's contributions history

//will open all rollback links displayed there. (Use with caution)

if(typeof wkContribsCheckboxInit === "undefined")

{

	wkContribsCheckboxInit = false;

}



if(typeof wkRollbackPortlet === "undefined")

{

	wkRollbackPortlet = "p-cactions";

}



function rollbackEverythingWKMR(editSummary) 

{

	if(editSummary === null)

	{

		return false;

	}

	if(mw.config.get("wgRelevantUserName") === mw.config.get("wgUserName"))

	{

		if(!(confirm("You are about to roll back *all* of *your own* edits. Please note that this will be very difficult to undo. Are you *ABSOLUTELY SURE* you want to do this?")))

		{

			return false;

		}

	}

	mw.loader.using( 'mediawiki.api' ).done( function()

	{

		var rbMetadata = {};

		rbMetadata.api = new mw.Api();

		rbMetadata.userName = mw.config.get("wgRelevantUserName");

		rbMetadata.ipRange = (rbMetadata.userName === null);

		rbMetadata.titleRegex = /title=([^&]+)/;

		rbMetadata.editSummary = editSummary;

		$("a[href*='action=rollback']").each(function(ind, el)

		{

			rollbackOneThingWKMR(el, rbMetadata);

		} );

	} );

	return false;

}

function rollbackSomeThingsWKMR(editSummary)

{

	if(editSummary === null)

	{

		return false;

	}

	mw.loader.using( 'mediawiki.api' ).done( function()

	{

		var rbMetadata = {};

		rbMetadata.api = new mw.Api();

		rbMetadata.userName = mw.config.get("wgRelevantUserName");

		rbMetadata.titleRegex = /title=([^&]+)/;

		rbMetadata.editSummary = editSummary;

		var rollbackList = $("input.revdelIds:checked").parents("li.mw-contributions-current").find("a[href*='action=rollback']");

		if(rollbackList.length <= 0)

		{

			mw.notify("You didn't select any edits that could be rolled back!");

			return;

		}

		$("input.revdelIds:checked").parents("li.mw-contributions-current").find("a[href*='action=rollback']").each(function(ind, el)

		{

			rollbackOneThingWKMR(el, rbMetadata);

		} );

	} );

}

function rollbackOneThingWKMR(, rbMetadata)

{

	var userName;

	//if we're in an anonymous IP range, we have to figure out each username on its own, since they might be different for each edit.

	if(rbMetadata.userName === null)

	{

		//the not clause is probably not necessary, but I'm including it just to be sure.

		userName = $().parents("li:first").children("a.mw-anonuserlink").not(".mw-contributions-title").text();

	}

	else

	{

		userName = rbMetadata.userName;

	}

	var params = {};

	if( rbMetadata.editSummary != '' )

	{

		params.summary = rbMetadata.editSummary;

	}

	rbMetadata.api.rollback( decodeURIComponent(rbMetadata.titleRegex.exec(.href)[1]), userName, params).done( function()

	{

		$().after("reverted");

		$().remove();

	} );

}

$(document).ready(function()

{

	if(mw.config.get("wgCanonicalSpecialPageName") == "Contributions" && $("span.mw-rollback-link").length > 0)

	{

		mw.loader.using("mediawiki.util").done( function ()

		{

			mw.util.addPortletLink(wkRollbackPortlet, '#', "Rollback all", "ca-rollbackeverything", "rollback all edits displayed here");

			if(!wkContribsCheckboxInit)

			{

				if($("ul.mw-contributions-list .mw-revdelundel-link").length > 0)

				{

					$("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).prepend("<input type='checkbox' name='"+decodeURIComponent(pageTitle)+"' class='revdelIds' value='"+revId+"'>&nbsp;");

							$(el).children(".revdelIds").data("index", ind);

						}

					});

				}

				else

				{

					$("ul.mw-contributions-list a.mw-changeslist-date").each(function(ind,el){

						$(el).before("<input type='checkbox' class='revdelIds'>&nbsp;");

					});

				}

				wkContribsCheckboxInit = true;

			}

			mw.util.addPortletLink(wkRollbackPortlet, '#', "Rollback selected", "ca-rollbacksome", "rollback selected edits");

			$("#ca-rollbackeverything").click( function(event)

			{

				event.preventDefault();

				mw.loader.load( 'mediawiki.api' ); //start loading, while the user is in the prompt	

				return rollbackEverythingWKMR(prompt("Rollback all edits: Enter an edit summary, or leave blank to use the default (or hit Cancel to cancel the rollback entirely)"));

			});

			$("#ca-rollbacksome").click( function(event)

			{

				event.preventDefault();

				mw.loader.load( 'mediawiki.api' ); //start loading, while the user is in the prompt	

				return rollbackSomeThingsWKMR(prompt("Rollback selected edits: Enter an edit summary, or leave blank to use the default (or hit Cancel to cancel the rollback entirely)"));

			});

			$("#ca-rollbacksome").data("lastSelectedIndex", -1);



			$("input.revdelIds").off("click").click(

				function(ev)

				{

					var lastSelectedRevdel = $("#ca-rollbacksome").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++)

							{

								if(i != lastSelectedRevdel)

								{

									$(checkboxArrayi]).prop("checked", !($(checkboxArrayi]).prop("checked")));

								}

							}

						}

						else

						{

							for(var i = start; i > stop; i--)

							{

								if(i != lastSelectedRevdel)

								{

									$(checkboxArrayi]).prop("checked", !($(checkboxArrayi]).prop("checked")));

								}

							}

						}

					}

					 $("#ca-rollbacksome").data("lastSelectedIndex", newIndex);

				});



		});

	}

});
From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.

//Mass rollback function

//Written by John254 and modified/rewritten by Writ Keeper with modifications by TheDJ; original is at /info/en/?search=User:John254/mass_rollback.js

//Adapted from User:Mr.Z-man/rollbackSummary.js

//Instructions: Selecting the "rollback all" tab when viewing a user's contributions history

//will open all rollback links displayed there. (Use with caution)

if(typeof wkContribsCheckboxInit === "undefined")

{

	wkContribsCheckboxInit = false;

}



if(typeof wkRollbackPortlet === "undefined")

{

	wkRollbackPortlet = "p-cactions";

}



function rollbackEverythingWKMR(editSummary) 

{

	if(editSummary === null)

	{

		return false;

	}

	if(mw.config.get("wgRelevantUserName") === mw.config.get("wgUserName"))

	{

		if(!(confirm("You are about to roll back *all* of *your own* edits. Please note that this will be very difficult to undo. Are you *ABSOLUTELY SURE* you want to do this?")))

		{

			return false;

		}

	}

	mw.loader.using( 'mediawiki.api' ).done( function()

	{

		var rbMetadata = {};

		rbMetadata.api = new mw.Api();

		rbMetadata.userName = mw.config.get("wgRelevantUserName");

		rbMetadata.ipRange = (rbMetadata.userName === null);

		rbMetadata.titleRegex = /title=([^&]+)/;

		rbMetadata.editSummary = editSummary;

		$("a[href*='action=rollback']").each(function(ind, el)

		{

			rollbackOneThingWKMR(el, rbMetadata);

		} );

	} );

	return false;

}

function rollbackSomeThingsWKMR(editSummary)

{

	if(editSummary === null)

	{

		return false;

	}

	mw.loader.using( 'mediawiki.api' ).done( function()

	{

		var rbMetadata = {};

		rbMetadata.api = new mw.Api();

		rbMetadata.userName = mw.config.get("wgRelevantUserName");

		rbMetadata.titleRegex = /title=([^&]+)/;

		rbMetadata.editSummary = editSummary;

		var rollbackList = $("input.revdelIds:checked").parents("li.mw-contributions-current").find("a[href*='action=rollback']");

		if(rollbackList.length <= 0)

		{

			mw.notify("You didn't select any edits that could be rolled back!");

			return;

		}

		$("input.revdelIds:checked").parents("li.mw-contributions-current").find("a[href*='action=rollback']").each(function(ind, el)

		{

			rollbackOneThingWKMR(el, rbMetadata);

		} );

	} );

}

function rollbackOneThingWKMR(, rbMetadata)

{

	var userName;

	//if we're in an anonymous IP range, we have to figure out each username on its own, since they might be different for each edit.

	if(rbMetadata.userName === null)

	{

		//the not clause is probably not necessary, but I'm including it just to be sure.

		userName = $().parents("li:first").children("a.mw-anonuserlink").not(".mw-contributions-title").text();

	}

	else

	{

		userName = rbMetadata.userName;

	}

	var params = {};

	if( rbMetadata.editSummary != '' )

	{

		params.summary = rbMetadata.editSummary;

	}

	rbMetadata.api.rollback( decodeURIComponent(rbMetadata.titleRegex.exec(.href)[1]), userName, params).done( function()

	{

		$().after("reverted");

		$().remove();

	} );

}

$(document).ready(function()

{

	if(mw.config.get("wgCanonicalSpecialPageName") == "Contributions" && $("span.mw-rollback-link").length > 0)

	{

		mw.loader.using("mediawiki.util").done( function ()

		{

			mw.util.addPortletLink(wkRollbackPortlet, '#', "Rollback all", "ca-rollbackeverything", "rollback all edits displayed here");

			if(!wkContribsCheckboxInit)

			{

				if($("ul.mw-contributions-list .mw-revdelundel-link").length > 0)

				{

					$("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).prepend("<input type='checkbox' name='"+decodeURIComponent(pageTitle)+"' class='revdelIds' value='"+revId+"'>&nbsp;");

							$(el).children(".revdelIds").data("index", ind);

						}

					});

				}

				else

				{

					$("ul.mw-contributions-list a.mw-changeslist-date").each(function(ind,el){

						$(el).before("<input type='checkbox' class='revdelIds'>&nbsp;");

					});

				}

				wkContribsCheckboxInit = true;

			}

			mw.util.addPortletLink(wkRollbackPortlet, '#', "Rollback selected", "ca-rollbacksome", "rollback selected edits");

			$("#ca-rollbackeverything").click( function(event)

			{

				event.preventDefault();

				mw.loader.load( 'mediawiki.api' ); //start loading, while the user is in the prompt	

				return rollbackEverythingWKMR(prompt("Rollback all edits: Enter an edit summary, or leave blank to use the default (or hit Cancel to cancel the rollback entirely)"));

			});

			$("#ca-rollbacksome").click( function(event)

			{

				event.preventDefault();

				mw.loader.load( 'mediawiki.api' ); //start loading, while the user is in the prompt	

				return rollbackSomeThingsWKMR(prompt("Rollback selected edits: Enter an edit summary, or leave blank to use the default (or hit Cancel to cancel the rollback entirely)"));

			});

			$("#ca-rollbacksome").data("lastSelectedIndex", -1);



			$("input.revdelIds").off("click").click(

				function(ev)

				{

					var lastSelectedRevdel = $("#ca-rollbacksome").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++)

							{

								if(i != lastSelectedRevdel)

								{

									$(checkboxArrayi]).prop("checked", !($(checkboxArrayi]).prop("checked")));

								}

							}

						}

						else

						{

							for(var i = start; i > stop; i--)

							{

								if(i != lastSelectedRevdel)

								{

									$(checkboxArrayi]).prop("checked", !($(checkboxArrayi]).prop("checked")));

								}

							}

						}

					}

					 $("#ca-rollbacksome").data("lastSelectedIndex", newIndex);

				});



		});

	}

});

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook