From df3e007120084bd464f83fa73c154e2b74fa9f44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 9 Apr 2015 14:53:59 -0400 Subject: [PATCH] closes #2969 --- public/src/client/topic/events.js | 2 +- src/socket.io/posts.js | 29 +++++++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/public/src/client/topic/events.js b/public/src/client/topic/events.js index 77690dc9d9..0090e37af9 100644 --- a/public/src/client/topic/events.js +++ b/public/src/client/topic/events.js @@ -100,7 +100,7 @@ define('forum/topic/events', [ var editedPostEl = components.get('post/content', data.pid), topicTitle = components.get('topic/title'); - if (topicTitle.length) { + if (topicTitle.length && data.title) { topicTitle.fadeOut(250, function() { topicTitle.html(data.title).fadeIn(250); }); diff --git a/src/socket.io/posts.js b/src/socket.io/posts.js index d1a5bb7e39..d8a3104397 100644 --- a/src/socket.io/posts.js +++ b/src/socket.io/posts.js @@ -306,16 +306,41 @@ SocketPosts.edit = function(socket, data, callback) { return callback(err); } - websockets.in('topic_' + results.topic.tid).emit('event:post_edited', { + var result = { pid: data.pid, handle: data.handle, title: results.topic.title, isMainPost: results.topic.isMainPost, tags: results.topic.tags, content: results.content - }); + }; + if (parseInt(results.postData.deleted) !== 1) { + websockets.in('topic_' + results.topic.tid).emit('event:post_edited', result); + callback(); + return; + } + + socket.emit('event:post_edited', result); callback(); + + async.parallel({ + admins: async.apply(groups.getMembers, 'administrators', 0, -1), + moderators: async.apply(groups.getMembers, 'cid:' + results.topic.cid + ':privileges:mods', 0, -1), + uidsInTopic: async.apply(websockets.getUidsInRoom, 'topic_' + results.topic.tid) + }, function(err, results) { + if (err) { + return winston.error(err); + } + + var uids = results.uidsInTopic.filter(function(uid) { + return results.admins.indexOf(uid) !== -1 || results.moderators.indexOf(uid) !== -1; + }); + + uids.forEach(function(uid) { + websockets.in('uid_' + uid).emit('event:post_edited', result); + }); + }); }); };