MediaWiki:Gadget-MergeHistory.js
Перейти до навігації
Перейти до пошуку
Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.
- 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();
}
});