diff --git a/public/src/client/pagination.js b/public/src/client/pagination.js index 3d306e9f65..e2df0a6ebe 100644 --- a/public/src/client/pagination.js +++ b/public/src/client/pagination.js @@ -20,16 +20,14 @@ define('forum/pagination', function() { }; pagination.loadPage = function(page, callback) { + callback = callback || function() {}; page = parseInt(page, 10); - if(!utils.isNumber(page) || page < 1 || page > pagination.pageCount) { + if (!utils.isNumber(page) || page < 1 || page > pagination.pageCount) { + callback(false); return false; } - - ajaxify.go(window.location.pathname.slice(1) + '?page=' + page, function() { - if (typeof callback === 'function') { - callback(); - } - }); + var url = window.location.pathname.slice(1).split('/').slice(0, 3).join('/') + '?page=' + page; + ajaxify.go(url, callback); return true; }; diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js index 7d3933b8de..d95a015c9e 100644 --- a/public/src/client/topic/posts.js +++ b/public/src/client/topic/posts.js @@ -31,11 +31,18 @@ define('forum/topic/posts', [ }; function onNewPostPagination(data) { + function scrollToPost() { + navigator.scrollBottom(data.posts[0].index); + } + var posts = data.posts; + + pagination.pageCount = Math.max(1, Math.ceil((posts[0].topic.postcount - 1) / config.postsPerPage)); + if (pagination.currentPage === pagination.pageCount) { - createNewPosts(data); - } else if(data.posts && data.posts.length && parseInt(data.posts[0].uid, 10) === parseInt(app.user.uid, 10)) { - pagination.loadPage(pagination.pageCount); + createNewPosts(data, scrollToPost); + } else if (parseInt(posts[0].uid, 10) === parseInt(app.user.uid, 10)) { + pagination.loadPage(pagination.pageCount, scrollToPost); } } diff --git a/src/topics/create.js b/src/topics/create.js index 2eb882da80..1e9336fedc 100644 --- a/src/topics/create.js +++ b/src/topics/create.js @@ -243,7 +243,7 @@ module.exports = function(Topics) { posts.getUserInfoForPosts([postData.uid], uid, next); }, topicInfo: function(next) { - Topics.getTopicFields(tid, ['tid', 'title', 'slug', 'cid'], next); + Topics.getTopicFields(tid, ['tid', 'title', 'slug', 'cid', 'postcount'], next); }, settings: function(next) { user.getSettings(uid, next);