Show many more comments
// ==UserScript==
// @name I Love Comments *OLD*
// @namespace tag://kongregate
// @description Show many more comments
// @author UnknownGuardian
// @version 1.0.0
// @date 03.02.2013
// @include http://www.kongregate.com/games/*/*/*
// ==/UserScript==
function main() {
var bottom = '<li style="list-style-type: none;" id="additional_feed_items"><div id="show_more_feed_items_label"><a id="show_more_comments" class="h6" href="#">Show more</a></div><span class="spinner spinner_big" id="more_feed_items_indicator" style="display:none" title="loading…">​</span></li>';
function init() {
console.log("I love comments init");
if(window.location.href.indexOf("/comments") == -1)
{
return;
}
$$(".comment_list")[0].insert(bottom);
$("show_more_comments").onclick = getNextCommentPage;
}
function getNextCommentPage(e) {
var nextURL = $$(".next")[0].down().getAttribute('href');
new Ajax.Request(nextURL, {
method:"get",
requestHeaders: { "Accept" : "text/html, */*" },
onComplete:function(transport) {
var text = transport.responseText;
var start = text.indexOf('<div class="comment_list">') + '<div class="comment_list">'.length;
var end = text.substr(start).indexOf('var comments_controller') - 75;
var content = text.substr(start,end);
$$(".comment_list")[0].innerHTML += content;
var paginationStart = text.indexOf('pagination simple_pagination">') + 'pagination simple_pagination">'.length;
var paginationEnd = text.substr(paginationStart).indexOf('</ul>');
var paginationContent = text.substr(paginationStart, paginationEnd);
$$(".pagination")[0].innerHTML = paginationContent;
$("additional_feed_items").remove(); //so we can put this at bottom.
$$(".comment_list")[0].insert(bottom);
//grab our new comments, and add them to the controller.
var length = comments_controller._comment_ids.length;
$$(".user_message").each( function(item)
{
comments_controller._comment_ids.push( parseInt(item.id.substring(8)) );
});
comments_controller._comment_ids.splice(0,length)
//refresh the controller. I should have just called the function instead of bind.
comments_controller.checkUserRatingStatus.bind(comments_controller)();
if($$(".next")[0].down() != null)
{
$("show_more_comments").onclick = getNextCommentPage;
}
else
{
$("show_more_comments").remove();
}
}
});
if(e != null)
e.preventDefault();
return false;
}
init();
}
// This injects our script onto the page.
// Borrowed from: http://stackoverflow.com/a/2303228
var script = document.createElement('script');
script.appendChild(document.createTextNode('('+ main +')();'));
(document.body || document.head || document.documentElement).appendChild(script);