sharepoint fix expand

By shy halsband Last update Oct 31, 2006 — Installed 444 times.
// ==UserScript==
// @name          sharepoint fix expand
// @namespace     
// @description   fix expanf functionality for sharepoint pages
// @include       *intranet*
// ==/UserScript==

myExpGroupBy = function (formObj)
{
	docElts = document.getElementsByTagName('*');
	numElts = docElts.length;
	img = formObj.wrappedJSObject.target
	srcPath = img.src;
	index = srcPath.lastIndexOf("/");
	imgName = srcPath.slice(index+1);
	if (imgName =='plus.gif')
	{
		fOpen = true;
		displayStr = "block";
		img.src = '/_layouts/images/minus.gif';
	}
	else
	{
		fOpen = false;
		displayStr = "none";
		img.src = '/_layouts/images/plus.gif';
	}
	oldName = img.name;
	img.name = img.alt;
	img.alt = oldName;
	spanNode = img;
	while(spanNode != null)
	{
		spanNode = spanNode.parentNode;
		if (spanNode != null &&
			spanNode.id != null &&
			spanNode.id.length > 5 &&
			spanNode.id.substr(0, 5) == "group")
			break;
	}
	parentNode = spanNode;
	while(parentNode != null)
	{
		parentNode = parentNode.parentNode;
		if (parentNode != null &&
			parentNode.tagName == "TABLE")
			break;
	}
	lastNode = null;
	if (parentNode != null)
	{
		lastNode = parentNode.lastChild;
		if (lastNode != null && lastNode.tagName == "TBODY")
			lastNode = lastNode.lastChild;
		if (lastNode != null && lastNode.tagName == "TR" && lastNode.lastChild != null)
			lastNode = lastNode.lastChild;
	}
	for(var i=0;i<numElts;i++)
	{
		var childObj = docElts[i];
		if (childObj == spanNode)
			break;
	}
	ID = spanNode.id.slice(5);
	for(var j=i + 1; j<numElts; j++)
	{
		var childObj = docElts[j];        
		if (childObj.id.length > 5 &&
			childObj.id.substr(0, 5) == "group")
		{
			curID = childObj.id.slice(5);
			if (curID <= ID)
				return;
		}
		if (childObj != img && 
			childObj.tagName=="IMG" &&
			childObj.src && 
			childObj.src.slice(childObj.src.length - 25) == '/_layouts/images/plus.gif')
		{
			childObj.src = '/_layouts/images/minus.gif';
			oldName = childObj.name;
			childObj.name = childObj.alt;
			childObj.alt = oldName;
		}
		if (childObj.tagName == spanNode.tagName &&
			childObj.id != "footer")
		{
			childObj.style.display = displayStr;
		}
		if ((childObj.tagName == "TABLE" && lastNode == null) || childObj == lastNode)
			break;
	}
}

window.fixpage = function()
{
	docElts = document.getElementsByTagName('a');
	numElts = docElts.length;
	for(var i=0;i<numElts;i++)
	{
		var aElmnt = docElts[i];
		if (aElmnt.attributes[0].nodeValue == "javascript:ExpGroupBy(this);return false;")
		{
			aElmnt.addEventListener("click", myExpGroupBy, true);
		}
	}
}

window.addEventListener(
    'load', 
    window.fixpage(),
    true);