跳转到内容

User:Hotaru Natsumi/js/substub track helper b.js

维基百科,自由的百科全书
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
/* ============================================================ *
 * [[User:Hotaru_Natsumi/小小作品状态追踪]] Helper Alter
 * @author: Hotaru Natsumi
 * @version: 1.1b
 *
 * 该脚本协助[[User:Hotaru_Natsumi/小小作品状态追踪]]页面的使用
 * 需要手动加载,不加载该脚本不会影响页面的功能,仍可逐个手动移除项目
 * 
 * 相较于普通版,b版不会锚定已有的链接单元格,而是在每行的最后添加一个复选框
 * 
 * 该脚本仅在[[User:Hotaru_Natsumi/小小作品状态追踪]]页面生效
 * ============================================================ */

(function($, mw){
    if(mw.config.values.wgPageName !== 'User:Hotaru_Natsumi/小小作品状态追踪') return;
    var $table = $('#mw-content-text table.wikitable');
    var $rows = $table.find('tr');
    var $header = $rows.eq(0);
    var $headerCells = $header.find('th');
    var $body = $rows.slice(1);
    var $bodyCells = $body.find('td');
    $body.each(function(i, row){
        var $row = $(row);
        var $firstCell = $row.find('td').eq(0);
        var $lastCell = $row.find('td').eq(-1);
        var title = $firstCell.find('span').text();
        var $checkbox = $('<td><input type="checkbox" name="' + title + '"></td>');
        $lastCell.after($checkbox);
    });
    var $removeButton = $('<th><a href="javascript:;">批量移除</a></th>');
    $removeButton.click(function(){
        var payload = ''
        $body.each(function(i, row){
            var $row = $(row);
            var $checkbox = $row.find('input[type="checkbox"]');
            if($checkbox.prop('checked')){
                payload += $checkbox.attr('name') + '|';
            }
        });
        if(payload==''){
            $('.mw-parser-output').after('<div id="hnsel-substub-result" style="border:solid #eaeaea; padding:5px; margin:3px; background:#efefef; border-radius: 3px">未选择选项</div>')
            var result = document.getElementById('hnsel-substub-result')
            result.scrollIntoView()
            return;
        }
        if (payload.slice(-1) == '|') payload = payload.slice(0, -1)
        $.ajax({
            url: 'https://hnatsumi-bot.toolforge.org/pop',
            type: 'POST',
            data: {
                'titles': payload
            },
            success: function(response){
                $('.mw-parser-output').after('<div id="hnsel-substub-result" style="border:solid #eaeaea; padding:5px; margin:3px; background:#efefef; border-radius: 3px">API返回:\r\n' + response + '</div>')
                var result = document.getElementById('hnsel-substub-result')
                result.scrollIntoView()
            }
        })
    });
    $headerCells.eq(-1).after($removeButton);
})(jQuery, mediaWiki)