mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-01-08 08:32:53 +01:00
Merge branch 'master' of https://github.com/designcreateplay/NodeBB
This commit is contained in:
@@ -613,7 +613,8 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
|
||||
'event:topic_deleted', 'event:topic_restored', 'event:topic:locked',
|
||||
'event:topic_unlocked', 'event:topic_pinned', 'event:topic_unpinned',
|
||||
'event:topic_moved', 'event:post_edited', 'event:post_deleted', 'event:post_restored',
|
||||
'posts.favourite', 'user.isOnline', 'posts.upvote', 'posts.downvote'
|
||||
'posts.favourite', 'user.isOnline', 'posts.upvote', 'posts.downvote',
|
||||
'event:topic.replyStart', 'event:topic.replyStop'
|
||||
]);
|
||||
|
||||
socket.on('get_users_in_room', function(data) {
|
||||
@@ -876,6 +877,14 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('event:topic.replyStart', function(uid) {
|
||||
$('.thread_active_users [data-uid="' + uid + '"]').addClass('replying');
|
||||
});
|
||||
|
||||
socket.on('event:topic.replyStop', function(uid) {
|
||||
$('.thread_active_users [data-uid="' + uid + '"]').removeClass('replying');
|
||||
});
|
||||
|
||||
function adjust_rep(value, pid, uid) {
|
||||
var votes = $('li[data-pid="' + pid + '"] .votes'),
|
||||
reputationElements = $('.reputation[data-uid="' + uid + '"]'),
|
||||
|
||||
@@ -4,6 +4,15 @@ define(['taskbar'], function(taskbar) {
|
||||
posts: {}
|
||||
};
|
||||
|
||||
function initialise() {
|
||||
socket.on('event:composer.ping', function(post_uuid) {
|
||||
if (composer.active === post_uuid) {
|
||||
socket.emit('modules.composer.pingActive', post_uuid);
|
||||
}
|
||||
});
|
||||
};
|
||||
initialise();
|
||||
|
||||
function maybeParse(response) {
|
||||
if (typeof response == 'string') {
|
||||
try {
|
||||
@@ -380,6 +389,16 @@ define(['taskbar'], function(taskbar) {
|
||||
} else {
|
||||
composer.createNewComposer(post_uuid);
|
||||
}
|
||||
|
||||
var tid = templates.get('topic_id');
|
||||
if (tid) {
|
||||
// Replying to a topic
|
||||
socket.emit('modules.composer.register', {
|
||||
uuid: post_uuid,
|
||||
tid: templates.get('topic_id'),
|
||||
uid: app.uid
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
composer.createNewComposer = function(post_uuid) {
|
||||
@@ -813,6 +832,8 @@ define(['taskbar'], function(taskbar) {
|
||||
taskbar.discard('composer', post_uuid);
|
||||
$('body').css({'margin-bottom': 0});
|
||||
$('.action-bar button').removeAttr('disabled');
|
||||
|
||||
socket.emit('modules.composer.unregister', post_uuid);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -18,7 +18,9 @@ var posts = require('../posts'),
|
||||
|
||||
/* Posts Composer */
|
||||
|
||||
SocketModules.composer = {};
|
||||
SocketModules.composer = {
|
||||
replyHash: {}
|
||||
};
|
||||
|
||||
SocketModules.composer.push = function(socket, pid, callback) {
|
||||
if (socket.uid || parseInt(meta.config.allowGuestPosting, 10)) {
|
||||
@@ -74,6 +76,42 @@ SocketModules.composer.renderHelp = function(socket, data, callback) {
|
||||
plugins.fireHook('filter:composer.help', '', callback);
|
||||
};
|
||||
|
||||
SocketModules.composer.register = function(socket, data) {
|
||||
var now = Date.now();
|
||||
server.in('topic_' + data.tid).emit('event:topic.replyStart', data.uid);
|
||||
|
||||
data.socket = socket;
|
||||
data.lastPing = now;
|
||||
data.lastAnswer = now;
|
||||
data.timer = setInterval(function() {
|
||||
if (data.lastPing === data.lastAnswer) {
|
||||
// Ping the socket to see if the composer is still active
|
||||
data.lastPing = Date.now();
|
||||
socket.emit('event:composer.ping', data.uuid);
|
||||
} else {
|
||||
server.in('topic_' + data.tid).emit('event:topic.replyStop', data.uid);
|
||||
delete SocketModules.composer.replyHash[data.uuid];
|
||||
}
|
||||
}, 1000*5); // Every 5 seconds...
|
||||
|
||||
SocketModules.composer.replyHash[data.uuid] = data;
|
||||
};
|
||||
|
||||
SocketModules.composer.unregister = function(socket, uuid) {
|
||||
var replyObj = SocketModules.composer.replyHash[uuid];
|
||||
if (uuid && replyObj) {
|
||||
server.in('topic_' + replyObj.tid).emit('event:topic.replyStop', replyObj.uid);
|
||||
delete SocketModules.composer.replyHash[replyObj.uuid];
|
||||
}
|
||||
};
|
||||
|
||||
SocketModules.composer.pingActive = function(socket, uuid) {
|
||||
var data = SocketModules.composer.replyHash[uuid];
|
||||
if (data) {
|
||||
data.lastAnswer = data.lastPing;
|
||||
}
|
||||
};
|
||||
|
||||
/* Chat */
|
||||
|
||||
SocketModules.chats = {};
|
||||
|
||||
Reference in New Issue
Block a user