mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-04 19:41:16 +01:00
Merge branch 'master' of github.com:psychobunny/node-forum
This commit is contained in:
@@ -399,10 +399,12 @@ body .navbar .nodebb-inline-block {
|
||||
.icon-circle {
|
||||
font-size: 12px;
|
||||
color: green;
|
||||
margin-right:3px;
|
||||
}
|
||||
.icon-circle-blank {
|
||||
font-size: 12px;
|
||||
color: red;
|
||||
margin-right:3px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -86,9 +86,11 @@ var socket,
|
||||
uid = el.parents('li').attr('data-uid');
|
||||
|
||||
if (uid && jQuery.inArray(uid, users) !== -1) {
|
||||
el.prepend('<i class="icon-circle"></i> ');
|
||||
el.find('i').remove();
|
||||
el.prepend('<i class="icon-circle"></i>');
|
||||
} else {
|
||||
el.prepend('<i class="icon-circle-blank"></i> ');
|
||||
el.find('i').remove();
|
||||
el.prepend('<i class="icon-circle-blank"></i>');
|
||||
}
|
||||
|
||||
el.processed = true;
|
||||
@@ -208,25 +210,25 @@ var socket,
|
||||
}
|
||||
};
|
||||
|
||||
app.populate_online_users = function() {
|
||||
var uids = [];
|
||||
|
||||
jQuery('.post-row').each(function() {
|
||||
uids.push(this.getAttribute('data-uid'));
|
||||
});
|
||||
|
||||
socket.emit('api:user.get_online_users', uids);
|
||||
}
|
||||
|
||||
app.process_page = function() {
|
||||
|
||||
function populate_online_users() {
|
||||
var uids = [];
|
||||
|
||||
jQuery('.post-row').each(function() {
|
||||
uids.push(this.getAttribute('data-uid'));
|
||||
});
|
||||
|
||||
socket.emit('api:user.get_online_users', uids);
|
||||
}
|
||||
|
||||
// here is where all modules' onNavigate should be called, I think.
|
||||
require(['mobileMenu'], function(mobileMenu) {
|
||||
mobileMenu.onNavigate();
|
||||
});
|
||||
|
||||
|
||||
populate_online_users();
|
||||
app.populate_online_users();
|
||||
|
||||
setTimeout(function() {
|
||||
window.scrollTo(0, 1); // rehide address bar on mobile after page load completes.
|
||||
|
||||
@@ -324,6 +324,8 @@
|
||||
var activeEl = $('#thread_active_users');
|
||||
if(activeEl.length)
|
||||
activeEl.html(data);
|
||||
|
||||
app.populate_online_users();
|
||||
});
|
||||
|
||||
socket.on('event:rep_up', function(data) {
|
||||
@@ -351,6 +353,7 @@
|
||||
tempContainer.replaceWith(tempContainer.contents());
|
||||
infiniteLoaderActive = false;
|
||||
|
||||
app.populate_online_users();
|
||||
addCommasToNumbers();
|
||||
});
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<a target="_blank" href="http://www.nodebb.org" class="btn btn-large"><i class="icon-github-alt"></i> Get Themes</a>
|
||||
<a target="_blank" href="http://www.nodebb.org" class="btn btn-large"><i class="icon-twitter"></i> dcplabs</a>
|
||||
</p>
|
||||
<p><small>You are running <strong>NodeBB v0.0.1</strong>. This is where we will check to make sure your <strong>NodeBB</strong> is latest, etc.</small></p>
|
||||
<p><small>You are running <strong>NodeBB v{version}</strong>. This is where we will check to make sure your <strong>NodeBB</strong> is latest, etc.</small></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
|
||||
var user = require('./../user.js'),
|
||||
topics = require('./../topics.js'),
|
||||
RDB = require('./../redis.js')
|
||||
RDB = require('./../redis.js'),
|
||||
pkg = require('./../../package.json'),
|
||||
categories = require('./../categories.js');
|
||||
|
||||
(function(Admin) {
|
||||
@@ -57,6 +58,9 @@ var user = require('./../user.js'),
|
||||
|
||||
function api_method(req, res) {
|
||||
switch(req.params.method) {
|
||||
case 'index':
|
||||
res.json({version:pkg.version});
|
||||
break;
|
||||
case 'users' :
|
||||
if (req.params.tab == 'search') {
|
||||
res.json({search_display: 'block', users: []});
|
||||
|
||||
@@ -51,16 +51,15 @@ marked.setOptions({
|
||||
}
|
||||
|
||||
function addUserInfoToPosts(next) {
|
||||
var done = 0;
|
||||
|
||||
for(var i=0, ii=postData.length; i<ii; ++i) {
|
||||
|
||||
posts.addUserInfoToPost(postData[i], function() {
|
||||
++done;
|
||||
if(done === postData.length)
|
||||
next(null, null);
|
||||
function iterator(post, callback) {
|
||||
posts.addUserInfoToPost(post, function() {
|
||||
callback(null);
|
||||
});
|
||||
}
|
||||
|
||||
async.each(postData, iterator, function(err) {
|
||||
next(err, null);
|
||||
});
|
||||
}
|
||||
|
||||
function getPrivileges(next) {
|
||||
|
||||
23
src/user.js
23
src/user.js
@@ -904,29 +904,6 @@ var utils = require('./../public/src/utils.js'),
|
||||
}
|
||||
};
|
||||
|
||||
User.get_online_users = function(socket, uids) {
|
||||
RDB.sismembers('users:online', uids, function(err, data) {
|
||||
RDB.handle(err);
|
||||
socket.emit('api:user.get_online_users', data);
|
||||
});
|
||||
};
|
||||
|
||||
User.go_online = function(uid) {
|
||||
RDB.sadd('users:online', uid, function(err) {
|
||||
if (err) {
|
||||
RDB.handle(err);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
User.go_offline = function(uid) {
|
||||
RDB.srem('users:online', uid, function(err) {
|
||||
if (err) {
|
||||
RDB.handle(err);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
User.active = {
|
||||
get_record : function(socket) {
|
||||
RDB.mget(['global:active_user_record', 'global:active_user_record_date'], function(err, data) {
|
||||
|
||||
@@ -58,43 +58,35 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }),
|
||||
var hs = socket.handshake;
|
||||
|
||||
var uid = users[hs.sessionID];
|
||||
// if (uid > 0) {
|
||||
userSockets[uid] = userSockets[uid] || [];
|
||||
userSockets[uid].push(socket);
|
||||
user.go_online(uid);
|
||||
|
||||
socket.join('uid_' + uid);
|
||||
// }
|
||||
|
||||
/*process.on('uncaughtException', function(err) {
|
||||
// handle the error safely
|
||||
console.log("error message "+err);
|
||||
socket.emit('event:consolelog',{type:'uncaughtException', stack:err.stack, error:err.toString()});
|
||||
});*/
|
||||
userSockets[uid] = userSockets[uid] || [];
|
||||
userSockets[uid].push(socket);
|
||||
|
||||
|
||||
socket.join('uid_' + uid);
|
||||
|
||||
socket.emit('event:connect', {status: 1});
|
||||
|
||||
socket.on('disconnect', function() {
|
||||
// if (uid > 0) {
|
||||
user.go_offline(uid);
|
||||
|
||||
var index = userSockets[uid].indexOf(socket);
|
||||
if(index !== -1) {
|
||||
userSockets[uid].splice(index, 1);
|
||||
}
|
||||
|
||||
if(userSockets[uid].length === 0)
|
||||
delete users[hs.sessionID];
|
||||
var index = userSockets[uid].indexOf(socket);
|
||||
if(index !== -1) {
|
||||
userSockets[uid].splice(index, 1);
|
||||
}
|
||||
|
||||
for(var roomName in rooms) {
|
||||
|
||||
for(var roomName in rooms) {
|
||||
|
||||
socket.leave(roomName);
|
||||
socket.leave(roomName);
|
||||
|
||||
if(rooms[roomName][hs.sessionID]) {
|
||||
delete rooms[roomName][hs.sessionID];
|
||||
}
|
||||
|
||||
updateRoomBrowsingText(roomName);
|
||||
}
|
||||
if(rooms[roomName][socket.id]) {
|
||||
delete rooms[roomName][socket.id];
|
||||
}
|
||||
|
||||
// }
|
||||
updateRoomBrowsingText(roomName);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('api:get_all_rooms', function(data) {
|
||||
@@ -105,9 +97,9 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }),
|
||||
|
||||
function getUidsInRoom(room) {
|
||||
var uids = [];
|
||||
for(var sessionId in room) {
|
||||
if(uids.indexOf(room[sessionId]) === -1)
|
||||
uids.push(room[sessionId]);
|
||||
for(var socketId in room) {
|
||||
if(uids.indexOf(room[socketId]) === -1)
|
||||
uids.push(room[socketId]);
|
||||
}
|
||||
return uids;
|
||||
}
|
||||
@@ -118,6 +110,7 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }),
|
||||
|
||||
for(var i=0; i<clients.length; ++i) {
|
||||
var hs = clients[i].handshake;
|
||||
|
||||
if(hs && !users[hs.sessionID]) {
|
||||
++anonCount;
|
||||
}
|
||||
@@ -163,17 +156,17 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }),
|
||||
|
||||
rooms[data.enter] = rooms[data.enter] || {};
|
||||
|
||||
if(data.leave) {
|
||||
if (uid) {
|
||||
rooms[data.enter][hs.sessionID] = uid;
|
||||
if (uid) {
|
||||
rooms[data.enter][socket.id] = uid;
|
||||
|
||||
if (data.leave && rooms[data.leave] && rooms[data.leave][hs.sessionID]) {
|
||||
delete rooms[data.leave][hs.sessionID];
|
||||
}
|
||||
if (data.leave && rooms[data.leave] && rooms[data.leave][socket.id]) {
|
||||
delete rooms[data.leave][socket.id];
|
||||
}
|
||||
updateRoomBrowsingText(data.leave);
|
||||
}
|
||||
|
||||
|
||||
if(data.leave)
|
||||
updateRoomBrowsingText(data.leave);
|
||||
|
||||
updateRoomBrowsingText(data.enter);
|
||||
|
||||
if (data.enter != 'admin')
|
||||
@@ -185,7 +178,6 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }),
|
||||
|
||||
socket.on('api:updateHeader', function(data) {
|
||||
if(uid) {
|
||||
|
||||
user.getUserFields(uid, data.fields, function(fields) {
|
||||
fields.uid = uid;
|
||||
socket.emit('api:updateHeader', fields);
|
||||
@@ -237,7 +229,16 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }),
|
||||
});
|
||||
|
||||
socket.on('api:user.get_online_users', function(data) {
|
||||
user.get_online_users(socket, data);
|
||||
var returnData = [];
|
||||
|
||||
for(var i=0; i<data.length; ++i) {
|
||||
var uid = data[i];
|
||||
if(userSockets[uid] && userSockets[uid].length > 0)
|
||||
returnData.push(uid);
|
||||
else
|
||||
returnData.push(0);
|
||||
}
|
||||
socket.emit('api:user.get_online_users', returnData);
|
||||
});
|
||||
|
||||
socket.on('api:user.changePassword', function(data) {
|
||||
|
||||
Reference in New Issue
Block a user