LeproUserNumbers

By al.dexter Last update Dec 16, 2009 — Installed 3,871 times.

There are 4 previous versions of this script.

// ==UserScript==
// @name UserNumbers
// @namespace http://leprosorium.ru/*
// @description   show user numbers
// @include http://*leprosorium.ru/comments/*
// @include http://*leprosorium.ru/*
// @include http://*leprosorium.ru/users/*
// ==/UserScript==
// Autor: Din

appendUserNumbers();
appendUserNumbersMain();
appendProfileUserNumber();

document.addEventListener("DOMNodeInserted", function(eventObject)
{ 
	if (eventObject.relatedNode.nodeName == "DIV" && eventObject.relatedNode.lastChild.className && eventObject.relatedNode.lastChild.className.match(/post/))
		appendUserNumbersMain(eventObject.relatedNode.lastChild); 
}, false);

/*
General function to append user number below comment itself
 */
function appendUserNumbers()
{
	//Getting all comments from page
	var comments = document.getElementById("js-commentsHolder");
	
	if (comments == null)
	{
		return;
	}
	
	comments = comments.getElementsByClassName("post");
	
	//Adding user number
	for (var i = 0; i < comments.length; i++)
	{
		if (comments[i].getAttribute("used") != "true")
		{
			//User number
			var number = comments[i].className.match(/u([0-9]+)/)[1];
			//Creating new node
			var numberElement = document.createElement("span");
			numberElement.innerHTML = " | " + number.toString() + " ";
			//Appending to the lower line of comment
			var insertionNode = comments[i].getElementsByClassName("reply_link").item(0).parentNode;
			insertionNode.parentNode.insertBefore(numberElement, insertionNode);
	
			comments[i].setAttribute("used", "true");
		}
	}
	
}

/*
Main page handling
*/
function appendUserNumbersMain(specified_node)
{
	var posts = null;

	if (specified_node == null)
	{

		//Getting all comments from page
		posts = document.getElementById("js-posts_holder");
	
		if (posts == null)
		{
			return;
		}
	
		posts = posts.getElementsByClassName("post");
	
	}
	else
	{
		posts = [specified_node];
	}

	//Adding user number
	for (var i = 0; i < posts.length; i++)
	{
		if (posts[i].getAttribute("used") != "true")
		{
			//User number
			var number = posts[i].className.match(/u([0-9]+)/)[1];
			//Creating new node
			var numberElement = document.createElement("span");
			numberElement.innerHTML = " | " + number.toString() + " ";
			//Appending to the lower line of comment
			var insertionNode = posts[i].getElementsByClassName("p").item(0).getElementsByTagName("a").item(0);
			insertionNode.parentNode.insertBefore(numberElement, insertionNode.nextSibling.nextSibling);

			posts[i].setAttribute("used", "true");
		}
	}
}

function appendProfileUserNumber() {
	var uservote = document.getElementById("uservote")
	if (!uservote) return;
	uservote = uservote.getElementsByClassName("vote");
	if (uservote && uservote[0]) {
		var uid = uservote[0].getAttribute("uid");
		document.getElementById("main_inner").getElementsByClassName("username")[0].childNodes[0].innerHTML += "&nbsp; |&nbsp;" + uid;
	}
}