From e4fa0289d6b493c111936605e9793031c775940e Mon Sep 17 00:00:00 2001 From: barisusakli Date: Mon, 22 Aug 2016 14:38:04 +0300 Subject: [PATCH] closes #4961 --- public/src/admin/advanced/events.js | 24 +++--------------------- src/controllers/admin/events.js | 24 ++++++++++++++++++++++-- src/events.js | 13 ++++++++----- src/socket.io/admin.js | 14 -------------- src/socket.io/user/ban.js | 15 ++++++++++++++- src/views/admin/advanced/events.tpl | 1 + 6 files changed, 48 insertions(+), 43 deletions(-) diff --git a/public/src/admin/advanced/events.js b/public/src/admin/advanced/events.js index 9075947d60..a952666786 100644 --- a/public/src/admin/advanced/events.js +++ b/public/src/admin/advanced/events.js @@ -1,8 +1,9 @@ "use strict"; -/* global define, socket, app, templates */ +/* global define, socket, app */ -define('admin/advanced/events', ['forum/infinitescroll'], function(infinitescroll) { + +define('admin/advanced/events', function() { var Events = {}; Events.init = function() { @@ -16,25 +17,6 @@ define('admin/advanced/events', ['forum/infinitescroll'], function(infinitescrol }); }); - infinitescroll.init(function(direction) { - if (direction < 0 || !$('.events').length) { - return; - } - - infinitescroll.loadMore('admin.getMoreEvents', $('[data-next]').attr('data-next'), function(data, done) { - if (data.events && data.events.length) { - templates.parse('admin/advanced/events', 'events', {events: data.events}, function(html) { - $('.events-list').append(html); - done(); - }); - - $('[data-next]').attr('data-next', data.next); - } else { - done(); - } - }); - }); - }; return Events; diff --git a/src/controllers/admin/events.js b/src/controllers/admin/events.js index ceee1e2a70..0e431d3d4e 100644 --- a/src/controllers/admin/events.js +++ b/src/controllers/admin/events.js @@ -1,18 +1,38 @@ 'use strict'; +var async = require('async'); + +var db = require('../../database'); var events = require('../../events'); +var pagination = require('../../pagination'); var eventsController = {}; eventsController.get = function(req, res, next) { - events.getEvents(0, 19, function(err, events) { + + var page = parseInt(req.query.page, 10) || 1; + var itemsPerPage = 20; + var start = (page - 1) * 20; + var stop = start + itemsPerPage - 1; + + async.parallel({ + eventCount: function(next) { + db.sortedSetCard('events:time', next); + }, + events: function(next) { + events.getEvents(start, stop, next); + } + }, function(err, results) { if (err) { return next(err); } + var pageCount = Math.max(1, Math.ceil(results.eventCount / itemsPerPage)); + res.render('admin/advanced/events', { - events: events, + events: results.events, + pagination: pagination.create(page, pageCount), next: 20 }); }); diff --git a/src/events.js b/src/events.js index 968e1b2f39..9ef6a05385 100644 --- a/src/events.js +++ b/src/events.js @@ -46,17 +46,20 @@ var async = require('async'), }); db.getObjects(keys, next); }, + function(eventsData, next) { + addUserData(eventsData, 'uid', 'user', next); + }, + function(eventsData, next) { + addUserData(eventsData, 'targetUid', 'targetUser', next); + }, function(eventsData, next) { eventsData.forEach(function(event) { var e = utils.merge(event); - e.eid = e.uid = e.type = e.ip = undefined; + e.eid = e.uid = e.type = e.ip = e.user = undefined; event.jsonString = JSON.stringify(e, null, 4); event.timestampISO = new Date(parseInt(event.timestamp, 10)).toUTCString(); }); - addUserData(eventsData, 'uid', 'user', next); - }, - function(eventsData, next) { - addUserData(eventsData, 'targetUid', 'targetUser', next); + next(null, eventsData); } ], callback); }; diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js index 556eee0290..c599abf491 100644 --- a/src/socket.io/admin.js +++ b/src/socket.io/admin.js @@ -251,20 +251,6 @@ SocketAdmin.errors.clear = function(socket, data, callback) { meta.errors.clear(callback); }; -SocketAdmin.getMoreEvents = function(socket, next, callback) { - var start = parseInt(next, 10); - if (start < 0) { - return callback(null, {data: [], next: next}); - } - var stop = start + 10; - events.getEvents(start, stop, function(err, events) { - if (err) { - return callback(err); - } - callback(null, {events: events, next: stop + 1}); - }); -}; - SocketAdmin.deleteAllEvents = function(socket, data, callback) { events.deleteAll(callback); }; diff --git a/src/socket.io/user/ban.js b/src/socket.io/user/ban.js index a2c4ea50d3..41c60411e0 100644 --- a/src/socket.io/user/ban.js +++ b/src/socket.io/user/ban.js @@ -34,7 +34,20 @@ module.exports = function(SocketUser) { }; SocketUser.unbanUsers = function(socket, uids, callback) { - toggleBan(socket.uid, uids, user.unban, callback); + toggleBan(socket.uid, uids, user.unban, function(err) { + if (err) { + return callback(err); + } + + async.each(uids, function(uid, next) { + events.log({ + type: 'user-unban', + uid: socket.uid, + targetUid: uid, + ip: socket.ip + }, next); + }, callback); + }); }; function toggleBan(uid, uids, method, callback) { diff --git a/src/views/admin/advanced/events.tpl b/src/views/admin/advanced/events.tpl index f69d7928a5..f1c0973501 100644 --- a/src/views/admin/advanced/events.tpl +++ b/src/views/admin/advanced/events.tpl @@ -23,6 +23,7 @@
{events.jsonString}
+