MySpace - Group/Forum Enhancement

By InsaneNinja Last update Aug 6, 2007 — Installed 1,403 times.
// ==UserScript==
// @name          MySpace - Group/Forum Enhancement
// @namespace     Insane Ninja - http://userscripts.org/people/774
// @homepage      http://userscripts.org/scripts/show/6339
// @description   2007-08-06 - Upgrades MySpace Groups/Forums with "quick reply", and direct page links. (Resurrected script, may not fully work right now)
// @include       *.myspace.com/*fuseaction=messageboard.*
// @include       *.myspace.com/*fuseaction=groups.*
// @include       http://groups.myspace.com/*
// ==/UserScript==

var enable_pagelinks    = true

var enable_quickreply   = true

var enable_betterreturn   = true

var enable_quickpost    = false // non-functional
var enable_backtopage   = false // non-functional

//
//****************************************************//
// DO NOT EDIT BELOW THIS
//****************************************************//
//

	function getArgs(  ) {
		var args = new Object(  );
		var query = location.search.substring(1).toLowerCase();     
		var pairs = query.split("&");
		for(var i = 0; i < pairs.length; i++) {
			var pos = pairs[i].indexOf('=');
			if (pos == -1) continue;
			var argname = pairs[i].substring(0,pos);
			var value = pairs[i].substring(pos+1);
			args[argname] = unescape(value);
		}
		return args;
	} var args = getArgs(  );


// Start of script

if	(
		(args.fuseaction && (args.fuseaction.toLowerCase() == 'messageboard.viewcategory' || args.fuseaction.toLowerCase() == 'groups.groupprofile'))
		||
		document.location.href.match(/groups\.myspace\.com\/[A-z0-9_-]+$/)
	)
{

	if (enable_pagelinks)
	{
	var topicList = document.evaluate("//table[@id='catstbl']/tbody/tr|//table/tbody/tr[td/img[@src='http://x.myspace.com/images/folder_smll.gif']]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); // Created By myspace.com/InsaneNinja

	for (var snapshotIndex = 0; snapshotIndex < topicList.snapshotLength; ++snapshotIndex )
	{
		var tableRow = topicList.snapshotItem(snapshotIndex);
		var tableCells = tableRow.getElementsByTagName('td');
		var topicCount = tableCells[1].innerHTML.replace(/<[^>]+>/,'').replace(/[^0-9]+/,'');

		if (topicCount > 15)
		{
			var loopCount = 0;

			var topicPages = Math.ceil(topicCount/15);

			var topicLinks = document.createElement('span');

			var topicURL = tableCells[0].getElementsByTagName('a')[0].href;

			for ( var i = topicPages-1; i >= 0; i-- )
			{
				topicLinks.innerHTML = ' <a href="'+topicURL+'&page=' + i + '" style="display:inline;visibility:visible;">' + (i+1) + '</a>' + topicLinks.innerHTML;

				if (++loopCount == 3 && i > 3)
				{
					i = 3;
					topicLinks.innerHTML = ' ..' + topicLinks.innerHTML;
				}
			}

			topicLinks.innerHTML = 'Page: ' + topicLinks.innerHTML;

			topicLinks.style.display = 'block';
			topicLinks.style.visibility = 'visable';

			tableCells[0].appendChild(topicLinks)
		}
	}
	}
}
else if (args.fuseaction.toLowerCase() == 'messageboard.viewthread')
{
	if (enable_quickreply)
	{
		replyContainer = document.evaluate("//div[@id='forumctr']//p[@class='buttons']/a/img[contains(@src,'button_post_reply.gif')]/parent::*/parent::*", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); // Created By myspace.com/InsaneNinja

		for (var snapshotIndex = 0; snapshotIndex < replyContainer.snapshotLength; ++snapshotIndex )
		{
			var replyContainer = replyContainer.snapshotItem(snapshotIndex);

			var replyContainerDiv = document.createElement('div');

			replyContainerDiv.innerHTML =
				'<div style="margin-top: 20px;"><form method="post" action="'+ document.location.href.replace(/messageboard\.viewThread/i,'messageboard.previewReply') +'">'
			+	'<input type="hidden" name="adTopicID" value="'+args.adtopicid+'">'
			+	'<input type="hidden" name="EntryID" value="'+args.entryid+'">'
			+	(args.page?'<input type="hidden" name="page" value="'+args.page+'">':'')
			+	'<table id="replyform" '
			+	'class="MyS_quickreply" ' // used for applying styles
			+	'align="center" cellspacing="0" align="center"><thead><tr><th style="text-align:center;">Quick Reply</th></tr></thead>'
			+	'<tbody><tr><td align="center"><textarea name="body" id="body" rows="8" cols="60" ></textarea><br><br>'
			+	'<input type="image" title="Post Reply" alt="Post Reply" src="http://x.myspace.com/images/replyFormSubmit.gif">'
			+	'<p align="right"><a href="http://userscripts.org/scripts/show/6339" style="font-weight: normal; color: #CCC">MyS Enhancer</p>'
			+	'</td></tr></tbody></table>'
			+	'</form></div>';

			replyContainer.parentNode.replaceChild(replyContainerDiv,replyContainer)
		}
	}
}
else if (false && args.fuseaction.toLowerCase() == 'messageboard.previewreply' && args.page)
{
	if (enable_backtopage)
	{
		var previewForm = document.evaluate("//form[@name='previewReply']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); // Created By myspace.com/InsaneNinja

		if (previewForm.snapshotLength) previewForm.snapshotItem(0).action += '&page='+args.page;
	}
}
else if (enable_betterreturn && args.fuseaction.toLowerCase() == 'messageboard.posted')
{
	if (args.groupid > 2)
	{
		var tableRows = document.getElementById('postmade').getElementsByTagName('tr');

		if (tableRows[2].innerHTML.match(/Back to Group/i))
		{
			var tableRowNew = tableRows[2].cloneNode(true);

			var tableRowNewLink = tableRowNew.getElementsByTagName('a')[0];
				tableRowNewLink.href = tableRowNewLink.href.replace(/groups.groupProfile/i,'messageboard.viewCategory');
				tableRowNewLink.innerHTML = tableRowNewLink.innerHTML.replace('to Group','to Index');

			tableRows[0].parentNode.insertBefore(tableRowNew, tableRows[2]);
			tableRows[1].innerHTML = tableRows[1].innerHTML.replace('to Forum','to Topic');
		}
		else
		if (tableRows[1].innerHTML.match(/Back to Forum/i) || !tableRows[2])
		{
			alert(true);
			var tableRowNew = tableRows[1].cloneNode(true);

			var tableRowNewLink = tableRowNew.getElementsByTagName('a')[0];
				tableRowNewLink.href = tableRowNewLink.href.replace(/groups.groupProfile/i,'messageboard.viewCategory');
				tableRowNewLink.innerHTML = tableRowNewLink.innerHTML.replace('to Group','to Index');

			tableRows[0].parentNode.insertBefore(tableRowNew, tableRows[1]);
			tableRows[1].innerHTML = tableRows[1].innerHTML.replace('to Forum','to Topic');
		}
	}

// http://forum.myspace.com/index.cfm?
//fuseaction=messageboard.posted
//	&categoryID=86
//	&adTopicID=12
//	&returnPath=http%3A%2F%2Fforum.myspace.com%2Findex.cfm%3Ffuseaction%3Dmessageboard.viewThread%26EntryID%3D1588211%26categoryID%3D86
}