From 9df0b39a5d5f9e007d7630654d800550a0cf42bf Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 26 Jun 2013 12:37:35 -0400 Subject: [PATCH 1/2] started integrating infinite post loading for topic view (re: issue #42) --- public/src/forum/topic.js | 13 ++++--- src/postTools.js | 64 +++++++++++++++++++++++++++++++- src/posts.js | 5 +-- src/topics.js | 78 ++++++++++----------------------------- src/websockets.js | 14 +++++++ 5 files changed, 106 insertions(+), 68 deletions(-) diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js index 39c6df7bca..ceac6eaddf 100644 --- a/public/src/forum/topic.js +++ b/public/src/forum/topic.js @@ -305,17 +305,16 @@ data.posts[0].display_moderator_tools = 'none'; var html = templates.prepare(templates['topic'].blocks['posts']).parse(data), uniqueid = new Date().getTime(); - + jQuery('
') .appendTo("#post-container") .hide() .append(html) .fadeIn('slow'); - socket.once('api:post.privileges', function(privileges) { - if (privileges.editable) toggle_mod_tools(data.posts[0].pid, true); - }); - socket.emit('api:post.privileges', data.posts[0].pid); + for(var x=0,numPosts=data.posts.length;x Date: Wed, 26 Jun 2013 13:38:05 -0400 Subject: [PATCH 2/2] enabling infinite post loader (re: issue #42), fixes #42 --- public/src/forum/topic.js | 33 +++++++++++++++++++++++++-------- src/posts.js | 17 +++++++++-------- src/websockets.js | 10 ++++++---- 3 files changed, 40 insertions(+), 20 deletions(-) diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js index ceac6eaddf..3e65275d77 100644 --- a/public/src/forum/topic.js +++ b/public/src/forum/topic.js @@ -8,7 +8,8 @@ deleted: templates.get('deleted'), pinned: templates.get('pinned') }, - topic_name = templates.get('topic_name'); + topic_name = templates.get('topic_name'), + infiniteLoaderActive = false; function addCommasToNumbers() { $('.formatted-number').each(function(index, element) { @@ -204,6 +205,20 @@ followEl[0].addEventListener('click', function() { socket.emit('api:topic.follow', tid); }, false); + + // Infinite scrolling of posts + window.addEventListener('scroll', function() { + var windowHeight = document.body.offsetHeight - $(window).height(), + half = windowHeight / 2; + + if (document.body.scrollTop > half && !infiniteLoaderActive) { + infiniteLoaderActive = true; + socket.emit('api:topic.loadMore', { + tid: tid, + after: document.querySelectorAll('#post-container li[data-pid]').length + }); + } + }); }); @@ -304,18 +319,20 @@ socket.on('event:new_post', function(data) { data.posts[0].display_moderator_tools = 'none'; var html = templates.prepare(templates['topic'].blocks['posts']).parse(data), - uniqueid = new Date().getTime(); - - jQuery('
') - .appendTo("#post-container") - .hide() - .append(html) - .fadeIn('slow'); + uniqueid = new Date().getTime(), + tempContainer = jQuery('
') + .appendTo("#post-container") + .hide() + .append(html) + .fadeIn('slow'); for(var x=0,numPosts=data.posts.length;x