Naver Cafe Blacklist Userscript

Naver Cafe Hide blacklist

Από την 27/08/2017. Δείτε την τελευταία έκδοση.

// ==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);