diff --git a/public/src/client/topic.js b/public/src/client/topic.js index faaaddbf00..c216943e32 100644 --- a/public/src/client/topic.js +++ b/public/src/client/topic.js @@ -18,6 +18,11 @@ define('forum/topic', [ currentUrl = ''; $(window).on('action:ajaxify.start', function(ev, data) { + if (Topic.replaceURLTimeout) { + clearTimeout(Topic.replaceURLTimeout); + Topic.replaceURLTimeout = 0; + } + if (ajaxify.currentPage !== data.url) { navigator.disable(); components.get('navbar/title').find('span').text('').hide(); diff --git a/public/src/client/topic/events.js b/public/src/client/topic/events.js index 7dfe57beed..7e04a5ffae 100644 --- a/public/src/client/topic/events.js +++ b/public/src/client/topic/events.js @@ -118,6 +118,7 @@ define('forum/topic/events', [ editedPostEl.html(data.post.content); editedPostEl.find('img:not(.not-responsive)').addClass('img-responsive'); app.replaceSelfLinks(editedPostEl.find('a')); + posts.wrapImagesInLinks(editedPostEl.parent()); editedPostEl.fadeIn(250); $(window).trigger('action:posts.edited', data); }); diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js index 02fdfbc26f..89c9e70e1d 100644 --- a/public/src/client/topic/posts.js +++ b/public/src/client/topic/posts.js @@ -217,15 +217,19 @@ define('forum/topic/posts', [ utils.addCommasToNumbers(posts.find('.formatted-number')); utils.makeNumbersHumanReadable(posts.find('.human-readable-number')); posts.find('.timeago').timeago(); + Posts.wrapImagesInLinks(posts); + + addBlockquoteEllipses(posts.find('[component="post/content"] > blockquote > blockquote')); + hidePostToolsForDeletedPosts(posts); + }; + + Posts.wrapImagesInLinks = function(posts) { posts.find('[component="post/content"] img:not(.emoji)').each(function() { var $this = $(this); if (!$this.parent().is('a')) { $this.wrap(''); } }); - - addBlockquoteEllipses(posts.find('[component="post/content"] > blockquote > blockquote')); - hidePostToolsForDeletedPosts(posts); }; Posts.showBottomPostBar = function() { diff --git a/src/privileges/categories.js b/src/privileges/categories.js index 31d1deeeb3..d51edbb9a8 100644 --- a/src/privileges/categories.js +++ b/src/privileges/categories.js @@ -191,6 +191,9 @@ module.exports = function(privileges) { }; privileges.categories.isAdminOrMod = function(cid, uid, callback) { + if (!parseInt(uid, 10)) { + return callback(null, false); + } helpers.some([ function (next) { user.isModerator(uid, cid, next); diff --git a/src/socket.io/posts/tools.js b/src/socket.io/posts/tools.js index fc4491ea44..d05c2b74be 100644 --- a/src/socket.io/posts/tools.js +++ b/src/socket.io/posts/tools.js @@ -13,9 +13,6 @@ var favourites = require('../../favourites'); module.exports = function(SocketPosts) { SocketPosts.loadPostTools = function(socket, data, callback) { - if (!socket.uid) { - return; - } if (!data) { return callback(new Error('[[error:invalid-data]]')) } @@ -37,7 +34,7 @@ module.exports = function(SocketPosts) { results.posts.tools = []; // TODO: add filter for this results.posts.deleted = parseInt(results.posts.deleted, 10) === 1; results.posts.favourited = results.favourited[0]; - results.posts.selfPost = socket.uid === parseInt(results.posts.uid, 10); + results.posts.selfPost = socket.uid && socket.uid === parseInt(results.posts.uid, 10); results.posts.display_moderator_tools = results.isAdminOrMod || results.posts.selfPost; results.posts.display_move_tools = results.isAdminOrMod; callback(null, results);