Greasy Fork is available in English.

Naver Cafe Blacklist Userscript

Naver Cafe Hide blacklist

Устаревшая версия за 27.08.2017. Перейдите к последней версии.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey, Greasemonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Userscripts.

Чтобы установить этот скрипт, сначала вы должны установить расширение браузера, например Tampermonkey.

Чтобы установить этот скрипт, вы должны установить расширение — менеджер скриптов.

(у меня уже есть менеджер скриптов, дайте мне установить скрипт!)

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

(у меня уже есть менеджер стилей, дайте мне установить скрипт!)

// ==UserScript==
// @name         Naver Cafe Blacklist Userscript
// @namespace    BossLeader
// @version      1.0
// @require
// @description  Naver Cafe Hide blacklist
// @author       BossLeader
// @match        http://cafe.naver.com/joonggonara*
// @grant        none
// ==/UserScript==


function ui2(e, p_memberid, lv_open_type, p_nickname, p_clubid, p_memberinfo, p_entireBoardStaff, p_memberleveluse, p_cluburl, p_activityStopExecutable, p_menuid, sMode) {
    e = e || window.event;
    var sType = ""
    , elIFrame = self.frameElement;
    var ajax = new Ajax("/CafeMemberExistCheck.nhn",{
        method: "POST",
        params: {
            clubid: p_clubid,
            memberid: p_memberid
        },
        onLoad: onCafeMemberCheckAjaxLoad
    });
    if (!ui_sBeforeID) {
        ui_sBeforeID = "menu_parent";
    }
    sNewID = "elFloatLayer_" + Math.floor(Math.random() * 100000);
    if (uiFactory == null) {
        uiFactory = new uiFactoryObject2();
    }
    sType = "loadingBar";
    if (elIFrame) {
        var nPosTop = Element.realPos(Event.ready(e).element).top
        , nFrameHeight = document.documentElement.offsetHeight
        , nDiff = (nPosTop + _nUIMaxHeight) - nFrameHeight
        , nNewHeight = nFrameHeight + nDiff;
        if (nNewHeight > nFrameHeight) {
            elIFrame.style.height = nNewHeight + "px";
        }
    }
    uiFactory.createUi(ui_sBeforeID, sNewID, sType);
    ui_sBeforeID = sNewID;
    var bApplyMember = false;
    var bSecedeMember = false;
    var bActivityStop = false;
    function onCafeMemberCheckAjaxLoad() {
        try {
            var oJsonData = eval("(" + arguments[0].responseText + ")");
            if (oJsonData.exist != "true") {
                bSecedeMember = true;
            }
            if (oJsonData.apply == "true") {
                bApplyMember = true;
            }
            if (oJsonData.activityStop == "true") {
                bActivityStop = true;
            }
            sType = "menu";
            uiFactory.setParameter(p_memberid, lv_open_type, p_nickname, p_clubid, p_memberinfo, p_memberleveluse, p_cluburl, p_menuid);
            var htParam = {
                p_memberid: p_memberid,
                lv_open_type: lv_open_type,
                p_nickname: p_nickname,
                p_clubid: p_clubid,
                p_memberinfo: p_memberinfo,
                p_entireBoardStaff: p_entireBoardStaff,
                p_memberleveluse: p_memberleveluse,
                p_cluburl: p_cluburl,
                p_activityStopExecutable: p_activityStopExecutable,
                bApplyMember: bApplyMember,
                bSecedeMember: bSecedeMember,
                bActivityStop: bActivityStop
            };
            if (elIFrame) {
                htParam.fAfterCreate = function() {
                    nFrameHeight = document.documentElement.offsetHeight;
                    var cafe_main_IframeHeight = parseInt(top.$("cafe_main").style.height);
                    if (nNewHeight > nFrameHeight) {
                        newCafeMainIframeHeight = (cafe_main_IframeHeight + (nNewHeight - nFrameHeight)) + "px";
                        elIFrame.style.height = nNewHeight + "px";
                        top.$("cafe_main").style.height = newCafeMainIframeHeight;
                    }
                }
                ;
            }
            uiFactory.createUi(ui_sBeforeID, sNewID, sType, htParam);
        } catch (e) {}
    }
    if (sMode == "WIDGET") {
        var nDiffTop = $("lm-list").scrollTop;
        var nHeightElement = Event && Event.ready ? Event.ready(e).element.offsetHeight : 13;
        nDiffTop = -(nDiffTop == 0 ? 0 : nDiffTop - nHeightElement);
        oCL.show(sNewID, e, nDiffTop);
    } else {
        oCL.show(sNewID, e);
    }
}
function uiFactoryObject2() {
    var a;
    this.setParameter = function(f, k, g, c, h, e, b, d) {
        ui_memberid = f;
        if (k == null) {
            ui_open_type = "3";
        }
        ui_open_type = k.toString();
        if (g == null) {
            ui_nickname = "";
        } else {
            ui_nickname = g;
        }
        if (d != null) {
            ui_menuid = d;
        }
        ui_clubid = c;
        ui_memberinfo = h;
        ui_memberleveluse = e;
        ui_cluburl = b;
    };
    this.createUi = function(f, h, b, c) {
        if (!document.getElementById(f)) {
            var e = document.createElement("DIV");
            e.id = "menu_parent";
            e.style.display = "block";
            e.style.position = "absolute";
            e.className = "perid-layer";
            document.body.appendChild(e);
        }
        var k = document.getElementById(f);
        k.id = h;
        k.innerHTML = "";
        if (b == "loadingBar") {
            k.style.width = "109px";
            var l = document.createElement("dl");
            l.className = "nm_load";
            var g = document.createElement("dt");
            g.innerHTML = sLoadBarTmpl;
            l.appendChild(g);
            var d = document.createElement("dd");
            d.innerHTML = "정보를 불러오는<br>중입니다";
            l.appendChild(d);
            k.appendChild(l);
        } else {
            if (b == "menu") {
                k.style.width = "209px";
                k.innerHTML = "";
                var m = document.createElement("UL");
                m.appendChild(this.createFragment(c));
                k.appendChild(m);
                if (typeof c.fAfterCreate == "function") {
                    c.fAfterCreate();
                }
            }
        }
    };
    this.createFragment = function(g) {
        var f = this.setUiArr(g);
        var d;
        d = document.createDocumentFragment();
        var b = false;
        for (var c = 0, e = f.length; c < e; c++) {
            if (f[c] == "|" && c + 1 < e) {
                b = true;
            } else {
                d.appendChild(this.setMenuItem(f[c], b, g));
                b = false;
            }
        }
function AddBlackList(){
    uiFactory.hideUi();
    var blockedID = window.localStorage.getItem("blockedID").split(',');
    var blockedName = window.localStorage.getItem("blockedName").split(',');
    var i;
    for (i = 0; i < blockedID.length; i++) {
        if (blockedID[i] == '') {blockedID[i] = g.p_memberid; blockedName[i] = g.p_nickname; alert('추가됨 '+blockedID.length); break; }
        if (blockedID[i] == g.p_memberid) {alert('이미 차단된 사용자입니다.'); break;}
    }
    if (i >= blockedID.length) {
        blockedID[i] = g.p_memberid;
        blockedName[i] = g.p_nickname;
        alert('추가됨 '+blockedID.length);
    }
    window.localStorage.setItem("blockedID", blockedID);
    window.localStorage.setItem("blockedName", blockedName);
    top.$('cafe_main').SetBFilter();
    return false;
}
        d.appendChild(this.setMenuItem2('#차단하기#', true, AddBlackList));
        d.appendChild(this.setMenuItem2(g.p_nickname, true));
        d.appendChild(this.setMenuItem2(g.p_memberid, false));
        d.appendChild(this.setMenuItem2('comment - not yet', true));
        //d.appendChild(this.setMenuItem2('lv: '+g.lv_open_type, false, g));
        //d.appendChild(this.setMenuItem2('clubid: '+g.p_clubid, false, g));
        //d.appendChild(this.setMenuItem2('memberinfo: '+g.p_memberinfo, false, g));
        //d.appendChild(this.setMenuItem2('entireBoardStaff: '+g.p_entireBoardStaff, false, g));
        //d.appendChild(this.setMenuItem2('memberleveluse: '+g.p_memberleveluse, false, g));
        //d.appendChild(this.setMenuItem2('cluburl:  '+g.p_cluburl, false, g));
        //d.appendChild(this.setMenuItem2('activityStopExecutable: '+g.p_activityStopExecutable, false, g));
        //d.appendChild(this.setMenuItem2('bApplyMember: '+g.bApplyMember, false, g));
        //d.appendChild(this.setMenuItem2('bSecedeMember: '+g.bSecedeMember, false, g));
        //d.appendChild(this.setMenuItem2('bActivityStop: '+g.bActivityStop, false, g));
        return d;
    };
    this.setUiArr = function(c) {
        var b = [];
        if (c.p_memberinfo == "me" || c.p_memberinfo == "st" || c.p_memberinfo == "ma") {
            if (c.bApplyMember) {
                b.push("inviteCafe");
                b.push("sendMemo");
                b.push("viewBlog");
                return b;
            }
            if (c.bSecedeMember) {
                if (c.p_memberinfo == "ma" || c.p_entireBoardStaff == "true") {
                    b.push("viewArticle");
                    return b;
                }
            } else {
                b.push("viewArticle");
                if (c.p_memberid != g_sUserId) {
                    b.push("inviteCafeChat");
                    b.push("sendMemo");
                }
            }
        }
        b.push("|");
        if (c.p_memberid != g_sUserId) {
            if (c.p_memberinfo == "st" || c.p_memberinfo == "ma") {
                if (c.p_memberleveluse == "true") {
                    b.push("updateLevel");
                }
                if (c.p_activityStopExecutable == "true") {
                    if (c.bActivityStop == false) {
                        b.push("activityStop");
                    } else {
                        b.push("activityStopRelease");
                    }
                }
                b.push("kickMember");
                b.push("|");
            } else {
                if (c.p_activityStopExecutable == "true") {
                    if (c.bActivityStop == false) {
                        b.push("activityStop");
                    } else {
                        b.push("activityStopRelease");
                    }
                    b.push("|");
                }
            }
        }
        if (c.p_memberid != g_sUserId) {
            b.push("subscribeNaverMe");
        }
        b.push("inviteCafe");
        b.push("|");
        b.push("viewBlog");
        return b;
    };
    this.setMenuItem = function(c, f, g) {
        var b;
        b = document.createElement("Li");
        if (f) {
            b.className = "line";
        }
        var d = document.createElement("A");
        d.href = "#";
        d.onclick = function() {
            execMenuItem(c, g.p_memberid, g.p_membernick);
            return false;
        };
        var e = document.createElement("SPAN");
        e.innerHTML = uiMenuArr[c];
        d.appendChild(e);
        b.appendChild(d);
        return b;
    };
    this.setMenuItem2 = function(text, line, func) {
        var ret;
        ret = document.createElement("Li");
        if (line) {
            ret.className = "line";
        }
        var atag = document.createElement("A");
        atag.href = "#";
        if(func != undefined) atag.onclick = func;
        var e = document.createElement("SPAN");
        e.innerHTML = text;
        atag.appendChild(e);
        ret.appendChild(atag);
        return ret;
    };
    this.hideUi = function() {
        oCL.hide(ui_sBeforeID);
    };
}
function Ready(){
    $("front-img").innerHTML = 'Iframe is loaded.';
    var x = $('cafe_main');
    var y = (x.contentWindow || x.contentDocument);
    if (y.document) y = y.document;

    var articlelist = y.querySelector('form > .board-box > tbody');
    var ListInfo = [];
    function SetLIstInfo() {
        if(!articlelist) return;
        for (i = 0; i < articlelist.childElementCount; i+=2) {
            var p_memberid, p_nickname, p_title, p_memo;
            var str = articlelist.children[i].querySelector('.p-nick a').getAttribute("onclick").split(',');
            p_memberid = str[1].trim().replace(/\'|\"/g,'');
            p_nickname = str[3].trim().replace(/\'|\"/g,'');
            p_title = articlelist.children[i].querySelector('span.aaa a').text;
            p_memo = '';
            //alert('11'+p_memberid+'11\r11'+ p_nickname +'11\r11'+p_title);
            
            ListInfo[ListInfo.length] =  {
                p_memberid: p_memberid,
                p_nickname: p_nickname,
                p_title: p_title,
                p_memo: p_memo,
            };
        };
    };
    SetLIstInfo();
    function shownhide(i, nFilterState) { // 0: showall 1: black 2: hide
        if(!articlelist) return;
        var num = i*2;
        if (nFilterState == 1) {
            articlelist.children[num].style = 'background-color:#505050;';
            articlelist.children[num+1].style = '';
        } else if (nFilterState == 2) {
            articlelist.children[num].style = 'display: none;';
            articlelist.children[num+1].style = 'display: none;';
        } else {
            articlelist.children[num].style = '';
            articlelist.children[num+1].style = '';
        };
    };
    function SetBFilter() {
        var blockedID = storage.getItem("blockedID").split(",");
        var blockedName = storage.getItem("blockedName").split(",");
        var nFilterState = Number(storage.getItem("nFilterState"));
        if (blockedID[0] === null || blockedID[0] === '') {
            //alert('BlockedUsers : 0'); 
            for (i = 0; i < ListInfo.length; i++) {
                shownhide(i, 0);// 0: showall 1: black 2: hide
                ToggleFilter.text = '필터 OFF...';
            };
            return false;
        }
        var cnt = 0;
        for (i = 0; i < ListInfo.length; i++) {
            if (blockedID.indexOf(ListInfo[i].p_memberid) == -1) continue;
            //founded
            shownhide(i, nFilterState);// 0: showall 1: black 2: hide
            cnt++;
        };
        if (nFilterState == 0) {
            ToggleFilter.text = '필터 OFF...';
        } else {
            ToggleFilter.text = '필터'+nFilterState+' ON (차단: '+cnt+')';
        };
    };
    x.SetBFilter = function() {SetBFilter(); };
    //alert(ListInfo.length + ' ' + ListInfo[1].p_memberid);
        
    var z = y.querySelectorAll('.p-nick a');
    //alert(z.length);

    for (i = 0; i < z.length; i++) {
        var str = z[i].getAttribute("onclick").replace('ui(','ui2(') ;
        z[i].setAttribute('onclick',ui2.toString()+uiFactoryObject2.toString()+str);
    }
        //alert(z[0].getAttribute("onclick"));

    function toBool(a) {
        return ("false" === a) ? false : true;
    }

    var storage = window.localStorage;
    CheckUserData(storage);
   // var blockedUsers = storage.getItem("BlockedUsers").split(",");
    //var hideBlockedUsers = toBool(storage.getItem("hideBlockedUsers"));
    //var redactText = storage.getItem("RedactText");
    var ShowBlackList, ResetBlackList, ToggleFilter, btnMemberView;
  //  " | <a id='setBlackList' href='#'>블랙리스트</a>: " + filteredAuthors + "
    //헤드.
    var head = y.querySelector('.fr');
    var line = head.querySelector('span.fl');
    if ( head != undefined && line && line !== undefined) {
        
        function add(str, id){
            //구분자.
            var fl = line.cloneNode(true);
            head.insertBefore(fl, head.childNodes[0]);
            //버튼1 - Show BlackList
            var d = document.createElement('div');
            d.setAttribute('id',id);
            d.style = 'float: left; margin-top: 3px; margin-right: 5px;';
            var sa = document.createElement("a");
            sa.setAttribute('href','#');
            var t = document.createTextNode(str);
            sa.appendChild(t);
            d.appendChild(sa);
            head.insertBefore(d, head.childNodes[0]);
            return sa;
        };
        ShowBlackList = add('차단목록 보기', 'ShowBlackList');
        ShowBlackList.onclick  = function() {
            var blockedID = storage.getItem("blockedID").split(",");
            var blockedName = storage.getItem("blockedName").split(",");
            if (blockedID[0] === null || blockedID[0] === '') {
                alert('BlockedUsers : 0'); return false;
            }
            var str = 'BlockedUsers : '+blockedID.length+'\r';
            for (i = 0; i < blockedID.length; i++) {
                str = str + blockedName[i] + '/' + blockedID[i] + '\r';
            }
            alert(str); return false;
        };
        ResetBlackList = add('목록 초기화', 'ResetBlackList');
        ResetBlackList.onclick = function() {
            var txt;
            var r = confirm("차단 목록을 초기화합니다! \r초기화된 목록은 복구할 수 없습니다!");
            if (r == true) {
                storage.removeItem("BlockedUsers");
                storage.setItem("blockedID","");
                storage.setItem("blockedName","");
                storage.setItem("nFilterState", 0);
                SetBFilter();
            } else {
                txt = "You pressed Cancel!";
            };
            return false;
        };
        ToggleFilter = add('필터ON/OFF', 'ToggleFilter');
        ToggleFilter.onclick = function() {
            var nFilterState = Number(storage.getItem("nFilterState"));
            nFilterState++; if (nFilterState > 2) { nFilterState = 0; };
            storage.setItem("nFilterState", nFilterState);
            SetBFilter();

            return false;
        };
        SetBFilter();
        //btnMemberView = add('btnMemberView', 'btnMemberView');
        //btnMemberView.onclick = function() {

        };
    };

//$(posts).each(function (){});//for debug


    function CheckUserData(storage)
    {
        // create default values if there isnt any storage (on first run)
        if (storage.getItem("blockedID") == null){
            storage.setItem("blockedID", "");
        }

        if (storage.getItem("blockedName") == null){
            storage.setItem("blockedName", "");
        }
        if (storage.getItem("nFilterState") == null){
            storage.setItem("nFilterState", "0");
        }


    };
}

$('cafe_main').addEventListener("load", Ready);