“MediaWiki:Gadget-deletion.js”的版本间的差异

来自萌娘共享
跳转至: 导航搜索
(创建页面,内容为“$(function() { if (mw.config.get('wgNamespaceNumber') !== 14) return; var globalDeletionLock = false; $(mw.util.addPortletLink('p-cactions', 'javascript:...”)
(没有差异)

2017年6月21日 (三) 00:07的版本

$(function() {
    if (mw.config.get('wgNamespaceNumber') !== 14) return;
    var globalDeletionLock = false;
    $(mw.util.addPortletLink('p-cactions', 'javascript:void(0);', '批量删除本分类下页面', 'startDeletion', '批量删除本分类下页面')).attr('class', "sysop-show").on('click', function() {
        if ($('#deletionControl')[0]) return;
        var node = $('<p/>').attr('id', 'deletionControl');
        $('.mw-category-generated h2:first').after(node);
        node.text('请选择要删除的页面:').append('(已选:<span id="delectionSelectingNumber"> - </span>/总计:<span id="delectionTotalNumber"> - </span>)').append($('<input/>').attr({
            type: 'button',
            value: '全选',
            id: 'selectAll'
        })).append($('<input/>').attr({
            type: 'button',
            value: '全不选',
            id: 'selectNone'
        })).append($('<input/>').attr({
            type: 'button',
            value: '提交',
            id: 'runDeletion'
        })).append($('<input/>').attr({
            type: 'button',
            value: '取消',
            id: 'cancelDeletion'
        }));
        $('body').addClass('deletion');
        $('.mw-category-generated li').prepend($('<input/>').attr({
            type: 'checkbox',
            class: 'selectBox'
        })).find('.stub').toggleClass('stub _stub');
        $('#delectionTotalNumber').text($('.mw-category-generated li :checkbox').length);
        $('.mw-category-generated li :checkbox').on('change', function() {
            $('#delectionSelectingNumber').text($('.mw-category-generated li :checkbox:checked').length);
        }).change();
    });
    $('.mw-category-generated').on('click', function(event) {
        var self = $(event.target);
        if (self.is('#selectAll')) $(this).find('li :checkbox').attr('checked', 'checked').first().change();
        else if (self.is('#selectNone')) $(this).find('li :checkbox').removeAttr('checked').first().change();
        else if (self.is('#cancelDeletion')) {
            $('#deletionControl').remove();
            $(this).find('._stub').toggleClass('stub _stub');
            $(this).find('.selectBox').remove();
            $('.disabled').removeClass('disabled');
        } else if (self.is('#runDeletion')) {
            if (!confirm('您确定要删除这些页面吗?(选中了' + $('.mw-category-generated li :checkbox:checked').length + '个页面)')) return;
            $(this).find('.selectBox').attr('disabled', 'disabled');
            self.parent().text('正在删除,已完成删除的页面将会被删除线划去,删除完成后请刷新本页面……');
            globalDeletionLock = true;
            var api = new mw.Api(),
                links = $(this).find('a').not(function() {
                    if (/User:AnnAngela\/SandBox/.test($(this).text()) || !$(this).closest('li').find(':checked')[0])
                        return $(this).addClass('disabled');
                });
            links.each(function() {
                var self = $(this).css('margin-right', '2em'),
                    link = decodeURIComponent(self.attr('href').replace('/', ''));
                api.postWithToken('csrf', {
                    action: 'delete',
                    format: 'json',
                    title: link,
                    tags: 'Bot',
                    reason: '批量删除【' + mw.config.get('wgPageName') + '】下的页面'
                }).then(function(data) {
                    self.css('text-decoration', 'line-through').after(' 删除成功');
                }, function(_, data) {
                    if (data.error) self.after('    删除失败:' + data.error.info);
                    else self.after('   删除失败(网络原因):' + data);
                });
            });
        } else if (self.is('a') && globalDeletionLock) {
            window.open(self[0].href, '_blank');
            return false;
        }
    });
});