User:Sreejithk2000/JustReplace.js

Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
mw.loader.using( 'mediawiki.util' ).done( function () {
	mw.util.addPortletLink('p-cactions', 'javascript:JustReplace();', 'Global replace', 'ca-justreplace', null);
} );

function JustReplace() {
	var currentFileName = mw.config.get("wgPageName").replace(/ /g, '_');
	var $ReplaceContainer = $('<div>', {
		id: 'ReplaceContainer'
	});
	$ReplaceContainer.append('<label for="ReplaceBy">Replace by</label>').append('<input type="text" id="ReplaceBy" style="width:97%;" value=' + currentFileName + '>');
	$ReplaceContainer.append('<br><br>');
	$ReplaceContainer.append('<input type="text" id="ReplaceReason" style="width:97%;" value = "' + (window.GlobalReplaceDefaultReason || '').replace(/\"/, "&quot;") + '">');
	$ReplaceContainer.append('<br><br>');
	$ReplaceContainer.append('<label for="ReplaceDelinkerOptOut">Do not use CommonsDelinker</label>').append('<input type="checkbox" id="ReplaceDelinkerOptOut">');
	
	var dlgButtons = {};
	dlgButtons['Submit'] = function() {

		var newFileName = $ReplaceContainer.find('#ReplaceBy').val();
		var replaceReason = $ReplaceContainer.find('#ReplaceReason').val();
		// Checkboxes have a "value" but their value is pointless to us. 
		// We want to know whether it is checked:
		var delinkerOptOut = $ReplaceContainer.find('#ReplaceDelinkerOptOut')[0].checked;

		mw.loader.using('ext.gadget.libGlobalReplace', function() {

			mw.libs.globalReplace(
			currentFileName,
			newFileName, "",
			replaceReason, delinkerOptOut).fail(function(r) {
				AjaxQuickDelete.showProgress(r);
			}).done(function(r) {
				window.location = window.location;
			}).progress(function(r) {
				AjaxQuickDelete.showProgress(r);
			}).fail(function(err) {
				AjaxQuickDelete.disableReport = true;
				AjaxQuickDelete.fail(err);
			});

		});


		$(this).dialog('close');

	};
	dlgButtons['Cancel'] = function() {
		$(this).dialog('close');
	};

	var $submitButton, $cancelButton;


	$('<div></div>').append($ReplaceContainer).dialog({
		width: 600,
		modal: true,
		title: 'Just replace',
		dialogClass: "wikiEditor-toolbar-dialog",
		close: function() {
			$(this).dialog("destroy");
			$(this).remove();
		},
		buttons: dlgButtons,
		open: function() {
			// Look out for http://bugs.jqueryui.com/ticket/6830 / jQuery UI 1.9
			var $buttons = $(this).parent().find('.ui-dialog-buttonpane button');
			$submitButton = $buttons.eq(0).specialButton('proceed');
			$cancelButton = $buttons.eq(1).specialButton('cancel');
		}
	});
}