From b292aeea728d75b8ed7542e7cb91d4524a0ebca5 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Mon, 11 May 2015 15:12:23 -0400 Subject: [PATCH] closes #3120 also dont allow loading posts of a topic if its deleted via topics.loadMore --- public/language/en_GB/topic.json | 1 + public/src/modules/navigator.js | 1 - src/categories/topics.js | 8 ++++++-- src/posts/create.js | 2 +- src/socket.io/topics.js | 5 ++++- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/public/language/en_GB/topic.json b/public/language/en_GB/topic.json index 1bfdbb25ea..eab097418b 100644 --- a/public/language/en_GB/topic.json +++ b/public/language/en_GB/topic.json @@ -7,6 +7,7 @@ "no_posts_found": "No posts found!", "post_is_deleted": "This post is deleted!", + "topic_is_deleted": "This topic is deleted!", "profile": "Profile", "posted_by": "Posted by %1", diff --git a/public/src/modules/navigator.js b/public/src/modules/navigator.js index 443f404cea..c1a0963f18 100644 --- a/public/src/modules/navigator.js +++ b/public/src/modules/navigator.js @@ -179,7 +179,6 @@ define('navigator', ['forum/pagination', 'components'], function(pagination, com } if (config.usePagination) { - var page = Math.max(1, Math.ceil(postIndex / config.postsPerPage)); if(parseInt(page, 10) !== pagination.currentPage) { diff --git a/src/categories/topics.js b/src/categories/topics.js index 805ab30c4a..9da0957c8b 100644 --- a/src/categories/topics.js +++ b/src/categories/topics.js @@ -48,8 +48,12 @@ module.exports = function(Categories) { return callback(err); } var isAdminOrMod = results.isAdmin || results.isModerator; - results.topics = results.topics.filter(function(topic) { - return (!topic.deleted || isAdminOrMod || topic.isOwner); + results.topics.forEach(function(topic) { + if (!(!topic.deleted || isAdminOrMod || topic.isOwner)) { + topic.title = '[[topic:topic_is_deleted]]'; + topic.slug = topic.tid; + topic.teaser = null; + } }); callback(null, {topics: results.topics, nextStart: data.stop + 1}); diff --git a/src/posts/create.js b/src/posts/create.js index 1bce6e69c7..4e4aa5433a 100644 --- a/src/posts/create.js +++ b/src/posts/create.js @@ -14,7 +14,7 @@ module.exports = function(Posts) { Posts.create = function(data, callback) { var uid = data.uid, tid = data.tid, - content = data.content, + content = data.content.toString(), timestamp = data.timestamp || Date.now(); if (!uid && parseInt(uid, 10) !== 0) { diff --git a/src/socket.io/topics.js b/src/socket.io/topics.js index d4bb12a993..5f4cd80eb3 100644 --- a/src/socket.io/topics.js +++ b/src/socket.io/topics.js @@ -448,13 +448,16 @@ SocketTopics.loadMore = function(socket, data, callback) { }, postCount: function(next) { topics.getPostCount(data.tid, next); + }, + topic: function(next) { + topics.getTopicFields(data.tid, ['deleted'], next); } }, function(err, results) { if (err) { return callback(err); } - if (!results.privileges.read) { + if (!results.privileges.read || (parseInt(results.topic.deleted, 10) && !results.privileges.view_deleted)) { return callback(new Error('[[error:no-privileges]]')); }