s1black

S1 blacklist ext.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Greasemonkey lub Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana będzie instalacja rozszerzenia Tampermonkey lub Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, musisz zainstalować rozszerzenie menedżera skryptów użytkownika.

(Mam już menedżera skryptów użytkownika, pozwól mi to zainstalować!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Musisz zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

(Mam już menedżera stylów użytkownika, pozwól mi to zainstalować!)

// ==UserScript==
// @name         s1black
// @namespace    http://www.xu81.com/
// @version      0.1
// @description  S1 blacklist ext.
// @author       viperasi
// @match        https://bbs.saraba1st.com/2b/*
// @match        https://bbs.stage1.cc/*
// @require      http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js
// @require      https://cdn.staticfile.org/remoteStorage/0.14.0/remotestorage.min.js
// @grant        GM_listValues
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_registerMenuCommand

// ==/UserScript==
'use strict';

var BLACKLIST = 's1blacklist';
var BLACKPRE = 's1black';
var BLACKINPUT = 's1blackname';
(function () {
    var href = window.location.href;
    if(href.indexOf('forum.php?mod=post') != -1){
        return;
    }else{
        viewlist();
        blackthread();
        blackcomment();
    }
})();

// 黑名单展示
function viewlist() {
    var navbar_ul = $("#toptb>.wp>.z");
    var view_li;
    if(navbar_ul.length>0){
        view_li = $('<a href="javascript:void(0);">S1黑名单</a>');
    }else{
        navbar_ul = $('#nv>ul');
        view_li = $('<li>').attr('id', 's1black_bl_view').append('<a href="javascript:void(0);">S1黑名单</a>');
    }
    
    var view_panel = $('<div>').css({
        'border': 'solid 2px',
        'border-radius': '4px',
        'padding': '5px',
        'width': '500px',
        'height': '500px',
        'background': '#f6f7eb',
        'position': 'fixed',
        'z-index': '999',
        'overflow': 'hidden',
        'left': '200px',
        'top': '200px'
    });
    var view_panel_tab = $('<ul>').addClass('tb').addClass('cl');
    var view_panel_li_user = $('<li>').attr('id', BLACKPRE + '_panel_li_user').addClass('a').css('cursor', 'pointer').append('<a>用户黑名单</a>').click(function(){
        $(this).addClass('a');
        $('#' + BLACKPRE + '_panel_li_thread').removeClass('a');
        $('#' + BLACKPRE + '_panel_thread').hide();
        $('#' + BLACKPRE + '_panel_user').show();
    });
    var view_panel_li_thread = $('<li>').attr('id', BLACKPRE + '_panel_li_thread').append('<a>帖子黑名单</a>').css('cursor', 'pointer').click(function(){
        $(this).addClass('a');
        $('#' + BLACKPRE + '_panel_li_user').removeClass('a');
        $('#' + BLACKPRE + '_panel_user').hide();
        $('#' + BLACKPRE + '_panel_thread').show();
    });
    view_panel_tab.append(view_panel_li_user).append(view_panel_li_thread).appendTo(view_panel);
    var panel_user = initUser();
    var panel_thread = initThread();
    var view_panel_close = $('<span>').css({
        'float': 'right',
        'margin-top': '-30px'
    }).addClass('flbc').append('关闭').click(function () {
        view_panel.hide();
    }).appendTo(view_panel);
    panel_user.appendTo(view_panel);
    panel_thread.appendTo(view_panel).hide();
    view_panel.appendTo('body#nv_forum').hide();
    view_li.on('click', function () {
        view_panel.show();
    });
    navbar_ul.append(view_li);

    var authi = $('.authi>a.xw1');
    $.each(authi, function(i, item){
        var btn = $('<button>').append('+').click(function(){
            add($(item).text(), 'user');
            location.reload();
        });
        $(item).parent().append(btn);
    });

    var threadTitle = $("h1.ts");
    var href = $(threadTitle.next('span.xg1')).find('a').attr('href');
    var threadBlock = $("<a>").css({
                'color': 'red',
                'cursor': 'pointer'
            }).append('[屏蔽主题]').click(function(){
                var threadId = href.substring(7, href.length - 9);
                add(threadId, 'thread');
            });
    threadTitle.after(threadBlock);

    var tlist = $('tbody[id^="normalthread"]');
    $.each(tlist, function (index, thread) {
        var tt = $(thread).find('a.s.xst');
        $.each(tt, function(index, title){
            var href = tt.attr('href');
            var threadId = href.substring(7, href.length - 9);
            var tb = $("<a>").css({
                'float': 'right',
                'cursor': 'pointer'
            }).append('[屏蔽主题]').click(function(){
                add(threadId, 'thread');
                location.reload();
            });
            tt.after(tb);
        });
    });
}

// 初始化用户面板
function initUser(){
    var list = get('user');
    var panel_user = $('<div>').attr('id', BLACKPRE + '_panel_user');   
    var view_panel_bar = $('<h3>').css('margin', '5px').append('黑名单用户:');
    var view_panel_add = $('<input>').css('width', '140px').attr({
        'id': BLACKINPUT,
        'placeholder': '用户ID'
    }).appendTo(view_panel_bar);
    var view_panel_add_btn = $('<button>').append('添加').click(function () {
        var theValue = $('#' + BLACKINPUT).val().trim();
        if (theValue != '') {
            add(theValue, 'user');
            $('#' + BLACKINPUT).val('');
            var btn = $('<a>').click(function () {
                if(window.confirm('确定要删除该ID吗?')){
                    del(theValue, 'user');
                }
            }).append(theValue);
            var item = $('<li>').attr('id', BLACKPRE + theValue).append(btn);
            view_panel_ul.append(item);
        }
    }).appendTo(view_panel_bar);
    panel_user.append(view_panel_bar);
    var view_panel_help = $('<div>').addClass('pbt').addClass('cl').append(
        $('<span>').addClass('z').append('添加、删除后请刷新页面.点击名字删除.')
    ).appendTo(panel_user);
    var view_panel_list = $('<div>').css('overflow', 'auto');
    var view_panel_ul = $('<ul>').addClass('ttp bm cl');
    $.each(list, function (i, name) {
        var btn = $('<a>').click(function () {
            if(window.confirm('确定要删除该ID吗?')){
                del(name, 'user');
            }
        }).append(name);
        var item = $('<li>').attr('id', BLACKPRE + name).append(btn);
        view_panel_ul.append(item);
    });
    panel_user.append(view_panel_ul);
    return panel_user;
}


//初始化帖子面板
function initThread(){
    var list = get('thread');
    var panel_thread = $('<div>').attr('id', BLACKPRE + '_panel_thread');
    var view_panel_bar = $('<h3>').css('margin', '5px').append('黑名单帖子:');
    var view_panel_add = $('<input>').css('width', '140px').attr({
        'id': BLACKINPUT + '_thread',
        'placeholder': '帖子ID'
    }).appendTo(view_panel_bar);
    var view_panel_add_btn = $('<button>').append('添加').click(function () {
        var theValue = $('#' + BLACKINPUT + '_thread').val().trim();
        if (theValue != '') {
            add(theValue, 'thread');
            $('#' + BLACKINPUT + '_thread').val('');
            var btn = $('<a>').click(function () {
                if(window.confirm('确定要删除该帖子吗?')){
                    del(theValue, 'thread');
                }
            }).append(theValue);
            var item = $('<li>').attr('id', BLACKPRE + '_thread_' + theValue).append(btn);
            view_panel_ul.append(item);
        }
    }).appendTo(view_panel_bar);
    panel_thread.append(view_panel_bar);
    var view_panel_help = $('<div>').addClass('pbt').addClass('cl').append(
        $('<span>').addClass('z').append('添加、删除后请刷新页面.点击ID删除.')
    ).appendTo(panel_thread);
    var view_panel_list = $('<div>').css('overflow', 'auto');
    var view_panel_ul = $('<ul>').addClass('ttp bm cl');
    $.each(list, function (i, name) {
        var btn = $('<a>').click(function () {
            if(window.confirm('确定要删除该帖子吗?')){
                del(name, 'thread');
            }
        }).append(name);
        var item = $('<li>').attr('id', BLACKPRE + '_thread_' + name).append(btn);
        view_panel_ul.append(item);
    });
    panel_thread.append(view_panel_ul);
    return panel_thread;
}

// 添加黑名单
function add(theValue, type) {
    var list = get(type);
    for (var i = 0; i < list.length; i++) {
        var name = list[i];
        if (name == theValue) {
            return;
        }
    }
    list.push(theValue);
    save(list, type);
}

// 删除黑名单
function del(theValue, type) {
    var list = get(type);
    var newlist = [];
    $.each(list, function (index, name) {
        if (theValue != name) {
            newlist.push(name);
        }
    });
    save(newlist, type);
    if(type == 'user')
        $('#' + BLACKPRE + theValue).remove();
    else
        $('#' + BLACKPRE + '_' + type + '_' + theValue).remove();
}

// 保存黑名单
function save(list, type) {
    if(type == 'user')
        GM_setValue(BLACKLIST, list);
    else
        GM_setValue(BLACKLIST + '_' + type, list);
}

// 获取黑名单列表
function get(type) {
    if(type == 'user')
        return GM_getValue(BLACKLIST, []);
    else
        return GM_getValue(BLACKLIST + '_' + type, []);
}

// 屏蔽帖子
function blackthread() {
    var list = get('user');
    var list_thread = get('thread');
    var tlist = $('tbody[id^="normalthread"]');
    $.each(tlist, function (index, thread) {
        var tname = $($(thread).find('cite>a')[0]).text();
        var tid = $(thread).attr('id');
        $.each(list, function (i, name) {
            if (tname === name) {
                $(thread).hide();
            }
        });
        $.each(list_thread, function(i, name){
            if(tid == 'normalthread_' + name){
                $(thread).hide();
            }
        });
    });
}

// 屏蔽回帖
function blackcomment() {
    var list = get('user');
    var tlist = $('a.xw1');
    $.each(tlist, function (index, thread) {
        var tname = $(thread).text();
        $.each(list, function (i, name) {
            if (tname === name) {
                var div_parent = $(thread).parents('div[id^="post_"]');
                div_parent.children().hide();
                var span = $('<span>').css({
                    'display': 'block',
                    'height': '20px',
                    'text-align': 'center',
                    'border': 'solid 1px'
                }).append('黑名单已隐藏, 这是你不想看到的人的言论, 你就点下去吧.').click(function () {
                    span.hide();
                    div_parent.children('table').show();
                });
                div_parent.append(span);
            }
        });
    });
}