// GameTap Popular Forums handler var popularURL = '/forums/json/jsonpopularthreads.jspa'; // var popularURL = '/js/community/test.json'; var profileURL = "/profile/show/profile?sn="; var jsonCache; var popularElement; var popularDebug = false; var defaultCategory = '4'; var defaultForum = '1'; var defaultElement = 'popular-threads'; function logging(string) { if(popularDebug) { console.log(string); } } /** * get the popular threads based on categories. If no category ids are * supplied it will use a default batch. */ /* function popularThreads(element) { popularElement = element || defaultElement; var param = 'param=empty'; logging('fetching with param ' + param + ' for element ' + element); getJSONData(param, displayThreads); } */ function popularThreads(element) { popularElement = element || defaultElement; popularThreadsByCategory(element, defaultCategory); } function popularThreadsByCategory(element, category) { category = category || defaultCategory; popularElement = element || defaultElement; var param = 'categoryID=' + category; logging('fetching with param ' + param + ' for element ' + element); getJSONData(param, displayThreads); } /* FIXME - consolidate with the above after AGP redesign */ function popularThreadsByCategory_home(element, category) { category = category || defaultCategory; popularElement = element || defaultElement; var param = 'categoryID=' + category; logging('fetching with param ' + param + ' for element ' + element); getJSONData(param, displayThreadsHome); } function popularThreadsByForum(element, forum) { forum = forum || defaultForum; popularElement = element || defaultElement; var param = 'forumID=' + forum; logging('fetching with param ' + param + ' for element ' + element); getJSONData(param, displayThreads); } function displayThreads(json) { if( typeof json != 'undefined' ) { logging('building DOM object with length ' + json.threads.length); var discussionDiv = Builder.node('div', {className:'box-content discussions'}); for(var x = 0; x < json.threads.length; x++) { var threaddiv = Builder.node('div', {className:'row'}); var textdiv = Builder.node('div', {className:'text',style:'width:95%'}); var textSpan = Builder.node('span'); var title = Builder.node('strong'); var s = json.threads[x].title; var ss = new String(s); ss = ss.replace(/&/g, "&"); var titlehref = Builder.node('a', {href:json.threadurl + json.threads[x].id}, ss); title.appendChild(titlehref); textSpan.appendChild(title); textSpan.appendChild(Builder.node('br')); textSpan.appendChild(Builder.node('br')); s = json.threads[x].excerpt; ss = new String(s); ss = ss.replace(/&/g, "&"); var excerptSpan = Builder.node('span', ss); excerptSpan.appendChild(Builder.node('br')); excerptSpan.appendChild(Builder.node('br')); textdiv.appendChild(textSpan); textdiv.appendChild(excerptSpan); logging('after text span for title and excerpt'); var poster = Builder.node('strong'); var posterhref = Builder.node('a', {href:profileURL + json.threads[x].lastsn}, json.threads[x].lastsn); poster.appendChild(posterhref); logging('after poster'); var postedSpan = Builder.node('span', 'Posted: ' + json.threads[x].modificationdate + ' by '); logging('after postedSpan creation'); textdiv.appendChild(postedSpan); textdiv.appendChild(poster); logging('afer textdiv append of postedSpan'); threaddiv.appendChild(textdiv); logging('after threaddiv appends'); discussionDiv.appendChild(threaddiv); if((x + 1) < json.threads.length) { discussionDiv.appendChild(Builder.node('div', {className:'line'})); } logging('end of for loop for element ' + x); } logging('before append to main object'); $(popularElement).appendChild(discussionDiv); logging('done with DOM object'); } } /** * FIXME This needs to be consolidated with the above function after AGP redesign is complete */ function displayThreadsHome(json) { if( typeof json != 'undefined' ) { logging('building DOM object with length ' + json.threads.length); var discussionDiv = Builder.node('div', {className:'box-content discussions'}); for(var x = 0; x < json.threads.length; x++) { var threaddiv = Builder.node('div', {className:'row'}); var textdiv = Builder.node('div', {className:'talk_text_home',style:'width:95%'}); var textSpan = Builder.node('div'); var title = Builder.node('strong', {className:'talk_subhead_home'}); s = json.threads[x].title; ss = new String(s); ss = ss.replace(/&/g, "&"); var titlehref = Builder.node('a', {href:json.threadurl + json.threads[x].id}, ss); title.appendChild(titlehref); textSpan.appendChild(title); /*textSpan.appendChild(Builder.node('br'));*/ /*textSpan.appendChild(Builder.node('br'));*/ s = json.threads[x].excerpt; ss = new String(s); ss = ss.replace(/&/g, "&"); if (ss.length > 70) { ss = ss.substring(0,67) + '...'; } var excerptSpan = Builder.node('div', ss); /*excerptSpan.appendChild(Builder.node('br'));*/ /*excerptSpan.appendChild(Builder.node('br'));*/ textdiv.appendChild(textSpan); //textdiv.appendChild(Builder.node('br')); //textdiv.appendChild(Builder.node('br')); textdiv.appendChild(excerptSpan); //textdiv.appendChild(Builder.node('br')); //textdiv.appendChild(Builder.node('br')); logging('after text span for title and excerpt'); var poster = Builder.node('strong'); var posterhref = Builder.node('a', {href:profileURL + json.threads[x].lastsn}, json.threads[x].lastsn); poster.appendChild(posterhref); logging('after poster'); var postedSpan = Builder.node('span', 'Posted: ' + json.threads[x].modificationdate + ' by '); logging('after postedSpan creation'); textdiv.appendChild(postedSpan); textdiv.appendChild(poster); logging('afer textdiv append of postedSpan'); threaddiv.appendChild(textdiv); logging('after threaddiv appends'); discussionDiv.appendChild(threaddiv); if((x + 1) < json.threads.length) { discussionDiv.appendChild(Builder.node('div', {className:'line'})); } logging('end of for loop for element ' + x); } logging('before append to main object'); $(popularElement).appendChild(discussionDiv); logging('done with DOM object'); } } function getJSONData(param, callback) { logging('in getJSONData'); if( typeof jsonCache != 'undefined') { callback(jsonCache); return; } new Ajax.Request(popularURL + '?type=json&' + param, { method: 'get', onSuccess: function(transport) { jsonCache = transport.responseText.evalJSON(); callback(jsonCache); }, onFailure: function() { //alert('Something went wrong...') } }); }