User:Liangent/Gadgets/Toolkit/deepcopy.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
require(['jquery', 'jqueryui', 'mediawiki'], function() {
(function($) {
if (wgNamespaceNumber < 0) return;
$(function() {
$('#p-tb ul').append('<li id="t-deepcopy">' +
'<a title="Deep copy from another Wikipedia" href="#">Deep copy</a></li>'
).find('#t-deepcopy a').click(function(event) {
event.preventDefault();
var dialog = $('<div title="Deep copy">From:<br />' +
'<input type="text" class="deepcopy_source" value="en" /><br />' +
'<input type="text" class="deepcopy_source_project" value="wikipedia" /><br />' +
'<input type="checkbox" class="deepcopy_overwrite" /> Overwrite current' +
'<div class="deepcopy_messages" /></div>'
).dialog({
buttons: {
'Copy': function() {
$('input', dialog).attr('disabled', true);
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
}
$('.deepcopy_messages', dialog).append('Reading ... ');
$.ajax({
url: 'http://' + $('.deepcopy_source', dialog).val() +
'.' + $('.deepcopy_source_project', dialog).val() +
'.org/w/index.php?title=Special:Export&action=submit',
type: 'POST',
data: {
'pages': wgPageName,
'curonly': 1,
'templates': 1
},
success: function(data) {
$('.deepcopy_messages', dialog).append('Done');
$('mediawiki>page', data).each(function() {
var node = this;
var tt = $('title', node).text();
var pg = MediaWiki.Page(tt);
var msg = $('<div />').appendTo($('.deepcopy_messages', dialog)).text(tt);
msg.append(' ... ');
var doput = function() {
msg.append('Saving ... ');
pg.text({
text: $('revision>text', node).text(),
summary: 'Copied from [[:' + $('.deepcopy_source_project', dialog).val() +
':' + $('.deepcopy_source', dialog).val() +
':' + tt + ']]'
}, function() {
msg.append('Done');
}, function() {
msg.append('Error');
});
};
if ($('.deepcopy_overwrite:checked', dialog).length != 0) {
doput();
} else {
msg.append('Checking ... ');
pg.exists(function(ex) {
if (ex) {
msg.append('Exists');
} else {
msg.append('Done ... ');
doput();
}
}, function() {
msg.append('Error');
})
}
});
},
error: function() {
$('.deepcopy_messages', dialog).append('Error');
}
});
}
}
});
});
});
})(jQuery);
});