diff --git a/public/src/app.js b/public/src/app.js index 02ded35449..0bdbef9ceb 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -365,14 +365,45 @@ var socket, }); } - app.createNewPosts = function (data) { + app.createNewPosts = function (data, infiniteLoaded) { + if(!data || (data.posts && !data.posts.length)) + return; + if (data.posts[0].uid !== app.uid) { data.posts[0].display_moderator_tools = 'none'; } + function removeAlreadyAddedPosts() { + data.posts = data.posts.filter(function(post) { + return $('#post-container li[data-pid="' + post.pid +'"]').length === 0; + }); + } + + function findInsertionPoint() { + var after = null, + firstPid = data.posts[0].pid; + $('#post-container li[data-pid]').each(function() { + if(parseInt(firstPid, 10) > parseInt($(this).attr('data-pid'), 10)) + after = $(this); + else + return false; + }); + return after; + } + + removeAlreadyAddedPosts(); + if(!data.posts.length) + return; + var insertAfter = findInsertionPoint(); + var html = templates.prepare(templates['topic'].blocks['posts']).parse(data); translator.translate(html, function(translatedHTML) { - $(translatedHTML).appendTo("#post-container") + var translated = $(translatedHTML); + if(!infiniteLoaded) { + translated.removeClass('infiniteloaded'); + } + + translated.insertAfter(insertAfter) .hide() .fadeIn('slow'); @@ -404,12 +435,12 @@ var socket, socket.emit('api:topic.loadMore', { tid: tid, - after: document.querySelectorAll('#post-container li[data-pid]').length + after: $('#post-container .post-row.infiniteloaded').length }, function (data) { app.infiniteLoaderActive = false; if (data.posts.length) { $('#loading-indicator').attr('done', '0'); - app.createNewPosts(data); + app.createNewPosts(data, true); } else { $('#loading-indicator').attr('done', '1'); } diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js index fde5f56f19..60ba06f1ef 100644 --- a/public/src/forum/topic.js +++ b/public/src/forum/topic.js @@ -118,7 +118,6 @@ define(function() { var loadingEl = document.getElementById('categories-loading'); if (loadingEl) { socket.once('api:categories.get', function(data) { - console.log(data); // Render categories var categoriesFrag = document.createDocumentFragment(), categoryEl = document.createElement('li'), @@ -286,8 +285,7 @@ define(function() { }); } }; - $('#post-container').on('click', '.post_reply', reply_fn); - $('.topic-main-buttons').on('click', '.post_reply', reply_fn); + $('.topic').on('click', '.post_reply', reply_fn); $('#post-container').on('click', '.quote', function() { if (thread_state.locked !== '1') { diff --git a/public/templates/topic.tpl b/public/templates/topic.tpl index 22cb8e9550..343c4a4013 100644 --- a/public/templates/topic.tpl +++ b/public/templates/topic.tpl @@ -26,7 +26,7 @@