Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.

  • Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
  • Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
  • Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
  • Opera: натисніть Ctrl-F5
/*
* @author Andriy.v
* for ukwiki only
*/

//<nowiki>
if (window.mergeHistory === undefined) {
	window.mergeHistory = {
		install: function() {
			var mh = this;
			var link = mw.util.addPortletLink('p-cactions', '#', 'Об\'єднати');
			$( link ).click( function ( e ) {
			e.preventDefault();
			mh.showDialog();
			});
		},
		showDialog: function () {
			var mh = this;
			if( $( '#mh-dialog' ).length === 0 ) {
				$( "#mw-content-text" ).append('<div id="mh-dialog" style="display:none;" title=\"Об\'єднання історій редагувань\"><p style=\"font-size:80%\">Цей інструмент дозволяє спростити процес об\'єднання історій редагувань двох сторінок. </p>Введіть назву статті, історія якої буде приєднана до цієї сторінки:<input id="mh-merged" rows="8" cols="100"></input><br><input type="checkbox" id="mh-noredirect"></input><span style="margin-left:0.3em">Заборонити перенаправлення</span></div>');
			}
			mw.loader.using( 'jquery.ui', function() {
				$( '#mh-dialog' ).dialog({
					width: 700,
					buttons: {
						'Об\'єднати' : function() {
							mh.check();
						}
					}
				});
			});
			$('#mh-merged').focus();
		},
		check: function () {
			var mh = this;
			merged = $( '#mh-merged' ).val();
			var noredirect = '0';
			if ($('#mh-noredirect').is(':checked'))
				noredirect = '1';
			if( this.isEmpty( merged ) ) {
				$('#mh-dialog').append( '<p style="font-size:80%; color:red">"Введіть назву статті яку потрібно приєднати"</p>' );
				return 0;
			}
			else {
				var params = {
					action: 'query',
					titles: merged,
					prop: 'pageprops'
				};
				var api = new mw.Api();
				api.get(params).done(function (data) {
					if (data.query.pages[-1]) {
						alert('Вказаної сторінки не існує');
					}
					else {
						mh.deletePage(merged, noredirect);
					}
				});
			}
		},
		deletePage: function(page, noredirect) {
			var mh = this;
			this.wait('Триває процес об\'єднання');
			var params = {
				action: 'delete',
				title: mw.config.get( 'wgPageName' ),
				reason: '[[MediaWiki:Gadget-MergeHistory.js|Script]]: об\'єднання історії сторінки з [[' + page + ']]',
				format: 'json'
			},
			api = new mw.Api();
			api.postWithToken( 'csrf', params ).done( function ( data ) {
				mh.renamePage(page, mw.config.get( 'wgPageName' , noredirect));
			} );
		},
		renamePage: function(oldPage, newPage, noredirect) {
			var mh = this;
			var params = {
				action: 'move',
				from: oldPage,
				to: newPage,
				reason: '[[MediaWiki:Gadget-MergeHistory.js|Script]]: об\'єднання історії сторінки з [[' + oldPage + ']]',
				movetalk: '1',
				noredirect: noredirect,
				format: 'json'
			},
			api = new mw.Api();
			api.postWithToken( 'csrf', params ).done( function ( data ) {
				mh.restoreRevisions(oldPage);
			}).fail(function(error) {
				alert(error);
			});
		},
		restoreRevisions: function(page) {
			var mh = this;
			var params = {
				action: 'undelete',
				title: mw.config.get( 'wgPageName' ),
				reason: '[[MediaWiki:Gadget-MergeHistory.js|Script]]: об\'єднання історії сторінки з [[' + page + ']]',
				format: 'json'
			},
			api = new mw.Api();
			api.postWithToken( 'csrf', params ).done( function () {
				mh.success();
			} );
		},
		success: function() {
			this.wait('Перезавантаження сторінки');
			setTimeout(function(){
				$( '#mh-dialog' ).dialog('close');
					location.reload(); },1000
				);			
		},
		wait: function(mes) {
			$('#mh-dialog').dialog("close");
			$('#mh-dialog').prop('title', 'Зачекайте, будь ласка...');
			$('#mh-dialog').html('<p style="font-size: 120%; font-weight:bold;">' + mes + '</p>');
			$('#mh-dialog').dialog({
				modal: true,
				buttons: false
			});
		},
		isEmpty: function( str ) {
			return (!/\S/.test(str));
		}
	};
}

//</nowiki>
$(document).ready(function () {
	if(mw.config.get('wgArticleId') > 0 && mw.config.get('wgNamespaceNumber') > -1 ) {
		mergeHistory.install();
	}
});