LKBlackList

By Jacky-Q Last update Dec 25, 2008 — Installed 120 times. Daily Installs: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

There are 5 previous versions of this script.

// ==UserScript==
// @name           LKBlackList
// @namespace      forum.dragonsky.net
// @description    龙空黑名单 20081225build01
// @include        http://forum.dragonsky.net/viewthread.php*
// ==/UserScript==

var lang = [];
lang['default'] = {
	listManager:'黑名单管&#29702',
	cls:'封杀乃',
	quote:'该引用惨遭屏蔽',
	tbc:'正在建设ing'
};

//====================interface============================
var interf = []; 
interf['old']
={
	post: "getElementsByClass('postauthor','td') ",
	quote: "getElementsByClass('msgborder','div'); ",
	postID:"oldPostIDImpl(node)",
	quoteID:"node.childNodes[0].childNodes[1]?node.childNodes[0].childNodes[1].innerHTML: node.childNodes[1].childNodes[1].innerHTML"//第二个是屏蔽后引用位置
}
 
function  oldPostIDImpl(node){
	for(var i=0,j=node.childNodes.length;i<j;i++){
		if(node.childNodes[i].tagName !=null && node.childNodes[i].tagName.toLowerCase() == 'cite'){
			//alert(i+"-"+node.childNodes[i].innerHTML.match(/<b>(.*)<\/b>/)[1])
;
			return node.childNodes[i].innerHTML.match(/<b>(.*)<\/b>/)[1];
		}
	}
}
interf['new'] = {
	post:"getElementsByClass('postauthor','td')",
	quote:"getElementsByClass('quote','div')",
	postID:"oldPostIDImpl(node)",//"var posts =  getElementsByClass('postauthor','td');var tblID = node.parentNode.parentNode.parentNode.id;if(tblID == posts[0].parentNode.parentNode.parentNode.id || tblID == posts[posts.length-2].parentNode.parentNode.parentNode.id){ node.childNodes[3].childNodes[3].childNodes[1].firstChild.innerHTML;}else  node.childNodes[1].childNodes[3].childNodes[1].firstChild.innerHTML; ",
	quoteID:"node.childNodes[1].childNodes[1].innerHTML"
}
function selectInterface(){
	var result;
	if(getElementsByClass('postauthor','td')!= null && getElementsByClass('quote','div')!= null){
		result = interf['new']; 
	}else{
		result = interf['old'];
	}
	return result;
}
//============================================================

var curInterface;
window.addEventListener('load',inits,false);
//界面初始化
function inits(){
	
	curInterface = selectInterface();
	addBtn();
	filter();
	addManager();
}

//控制面板管理
function addManager(){
	var panel = getControlPanel();
	var mLink = document.createElement('a');
	mLink.innerHTML = lang['default'].listManager;
	mLink.title =  "黑名单管理";
	mLink.href ="javascript:;";
	mLink.addEventListener('click',manageList,false);
	mLink.style.display = 'block'; 
	var li = document.createElement('li');
	li.appendChild(mLink);
	panel.appendChild(li);
} 

function getControlPanel(){
	return document.getElementById("memcp_menu");
}
//黑名单管理接口
function manageList(){
	alert(lang['default'].tbc);
}
function getIDByPost(node){ 
	return eval(curInterface.postID);
} 
function getIDByQuote(node){
	//alert(node.childNodes[1].innerHTML.match(/<\i>(.+)<\/\i>/)[1] );
	return eval(curInterface.quoteID);
	//return node.childNodes[1].innerHTML.match(/<\i>(.+)<\/\i>/)[1];
}
/** 
 *展示documentNode的子节点,Y-遍历子节点的子节点,N-下一节点
 */
function alertChild(node){
	for(var i=0,j=node.childNodes.length;i<j;i++){
		var t = window.confirm(node.childNodes[i].tagName+":"+i);
		if(!t) continue; 
		alertChild(node.childNodes[i]);
	} 
}

function filter(){
	var list = getList();
	//filter post 
	var posts = eval(curInterface.post);
	for(var i=0,j=posts.length;i<j;i+=2){
		var curId = getIDByPost(posts[i]);
		if(list.indexOf(curId +',') >= 0) {
			var tblPost = posts[i].parentNode.parentNode.parentNode;
			tblPost.parentNode.style.display = 'none';
		}
	}
	//filter quote 
	var quotes = eval(curInterface.quote);
	for(var i=0,j=quotes.length;i<j;i++){
		if(list.indexOf(getIDByQuote(quotes[i])+',')>=0){
			quotes[i].innerHTML = ('\n<span>\n<i>'+lang['default'].quote+'</i></span>');
			quotes[i].style.border = '1px solid gray';
			
		}
	}
}

function hideID(){ 
	var targetID;
	targetID = getIDByPost(this.parentNode.parentNode);
	addtoList(targetID);
	filter();
}
function addBtn(){
	var posts = eval(curInterface.post);
	for(var i=0,j=posts.length;i<j;i+=2){
		var temp;
		if( i==0 || i== j-2)
			temp =  posts[i].childNodes[3];
		else 
			temp = posts[i].childNodes[1];
		var cls = document.createElement('span');
		cls.innerHTML="<a href='javascript:;'>"+lang['default'].cls+'</a>';
		cls.addEventListener('click',hideID,false);
		temp.appendChild(cls);
	}
}

function addtoList(id){
	var list = getList();
	if(list.indexOf(id+',') < 0){
		list += id+',';
	}
	GM_setValue('blackList',escape(list));
}
function removefromList(id){
	var list = getList();
	list = list.split(id+',').join('');
	GM_setValue('blackList',escape(list));
}
function getList(){
	return GM_getValue('blackList') != null ? unescape(GM_getValue('blackList')) :'';
}

function getElementsByClass(name,tag){
	var items = document.getElementsByTagName(tag);
	var result = [];
	
	for(var i=0,j=items.length;i<j;i++){
		if(items[i].className.indexOf(name) >=0)  {
			result.push(items[i]);
		}
	}
	return result;
}