跳转到内容

User:Liangent/Gadgets/Toolkit/deepcopy.js

维基百科,自由的百科全书

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ 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);
});