diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js
index 42c6d8e6ab..e7bb1fe1bf 100644
--- a/public/src/forum/topic.js
+++ b/public/src/forum/topic.js
@@ -351,10 +351,82 @@ define(function() {
socket.on('api:get_users_in_room', function(data) {
- var activeEl = $('#thread_active_users');
- if (activeEl.length)
- activeEl.html(data);
+ if(data) {
+ var activeEl = $('#thread_active_users');
+ function createUserIcon(uid, picture, userslug, username) {
+ if(!activeEl.find("[href='/user/"+ data.users[i].userslug + "']").length) {
+ var userIcon = $('
');
+ userIcon.css('height', '24px');
+
+ var userLink = $('').append(userIcon);
+ userLink.attr('data-uid', uid);
+
+ userLink.tooltip({
+ placement: 'left',
+ title: username
+ });
+
+ return userLink;
+ }
+ }
+
+ // remove users that are no longer here
+ activeEl.children().each(function(index, element) {
+ if(element) {
+ var uid = $(element).attr('data-uid');
+ for(var i=0; i 8) {
+ break;
+ }
+ }
+
+ var remainingUsers = data.users.length - 9;
+ remainingUsers = remainingUsers < 0 ? 0 : remainingUsers;
+ var anonymousCount = parseInt(data.anonymousCount, 10);
+ activeEl.find('.anon').remove();
+ if(anonymousCount || remainingUsers) {
+
+ var anonLink = $('');
+ anonLink.css('padding', '5px');
+ activeEl.append(anonLink);
+
+ var title = '';
+ if(remainingUsers && anonymousCount)
+ title = remainingUsers + ' more user(s) and ' + anonymousCount + ' guest(s)';
+ else if(remainingUsers)
+ title = remainingUsers + ' more user(s)';
+ else
+ title = anonymousCount + ' guest(s)';
+
+ anonLink.tooltip({
+ placement: 'left',
+ title: title
+ });
+ }
+ }
app.populate_online_users();
});
diff --git a/public/src/templates.js b/public/src/templates.js
index 4f9055d0ad..cb153ed10d 100644
--- a/public/src/templates.js
+++ b/public/src/templates.js
@@ -172,13 +172,12 @@
template_data['relative_path'] = RELATIVE_PATH;
translator.translate(templates[tpl_url].parse(template_data), function (translatedTemplate) {
-
+
$('#content').html(translatedTemplate);
jQuery('#content [template-variable]').each(function (index, element) {
var value = null;
- console.log($(element).attr('value'));
- console.log($(element).attr('template-variable'));
+
switch ($(element).attr('template-type')) {
case 'boolean':
value = ($(element).val() === 'true' || $(element).val() === '1') ? true : false;
diff --git a/src/websockets.js b/src/websockets.js
index 0bce3e76b4..0aadc0abe4 100644
--- a/src/websockets.js
+++ b/src/websockets.js
@@ -157,8 +157,7 @@ module.exports.init = function(io) {
for (var i = 0; i < clients.length; ++i) {
var hs = clients[i].handshake;
-
- if (hs && !users[sessionID]) {
+ if (hs && clients[i].state.user.uid === 0) {
++anonCount;
}
}
@@ -185,11 +184,13 @@ module.exports.init = function(io) {
if (uids.length === 0) {
- io.sockets. in (roomName).emit('api:get_users_in_room', userList([], anonymousCount, 0));
+ io.sockets. in (roomName).emit('api:get_users_in_room', { users: [], anonymousCount:0 });
} else {
- user.getMultipleUserFields(uids, ['username', 'userslug'], function(err, users) {
- if (!err)
- io.sockets. in (roomName).emit('api:get_users_in_room', userList(users, anonymousCount, users.length));
+ user.getMultipleUserFields(uids, ['uid', 'username', 'userslug', 'picture'], function(err, users) {
+ //if (!err)
+ //io.sockets. in (roomName).emit('api:get_users_in_room', userList(users, anonymousCount, users.length));
+ if(!err)
+ io.sockets. in (roomName).emit('api:get_users_in_room', { users: users, anonymousCount:anonymousCount });
});
}
}