mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-10 16:05:49 +01:00
closes #4961
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
"use strict";
|
"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 = {};
|
var Events = {};
|
||||||
|
|
||||||
Events.init = function() {
|
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;
|
return Events;
|
||||||
|
|||||||
@@ -1,18 +1,38 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
var async = require('async');
|
||||||
|
|
||||||
|
var db = require('../../database');
|
||||||
var events = require('../../events');
|
var events = require('../../events');
|
||||||
|
var pagination = require('../../pagination');
|
||||||
|
|
||||||
var eventsController = {};
|
var eventsController = {};
|
||||||
|
|
||||||
|
|
||||||
eventsController.get = function(req, res, next) {
|
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) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var pageCount = Math.max(1, Math.ceil(results.eventCount / itemsPerPage));
|
||||||
|
|
||||||
res.render('admin/advanced/events', {
|
res.render('admin/advanced/events', {
|
||||||
events: events,
|
events: results.events,
|
||||||
|
pagination: pagination.create(page, pageCount),
|
||||||
next: 20
|
next: 20
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -47,16 +47,19 @@ var async = require('async'),
|
|||||||
db.getObjects(keys, next);
|
db.getObjects(keys, next);
|
||||||
},
|
},
|
||||||
function(eventsData, next) {
|
function(eventsData, next) {
|
||||||
eventsData.forEach(function(event) {
|
|
||||||
var e = utils.merge(event);
|
|
||||||
e.eid = e.uid = e.type = e.ip = undefined;
|
|
||||||
event.jsonString = JSON.stringify(e, null, 4);
|
|
||||||
event.timestampISO = new Date(parseInt(event.timestamp, 10)).toUTCString();
|
|
||||||
});
|
|
||||||
addUserData(eventsData, 'uid', 'user', next);
|
addUserData(eventsData, 'uid', 'user', next);
|
||||||
},
|
},
|
||||||
function(eventsData, next) {
|
function(eventsData, next) {
|
||||||
addUserData(eventsData, 'targetUid', 'targetUser', 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 = e.user = undefined;
|
||||||
|
event.jsonString = JSON.stringify(e, null, 4);
|
||||||
|
event.timestampISO = new Date(parseInt(event.timestamp, 10)).toUTCString();
|
||||||
|
});
|
||||||
|
next(null, eventsData);
|
||||||
}
|
}
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -251,20 +251,6 @@ SocketAdmin.errors.clear = function(socket, data, callback) {
|
|||||||
meta.errors.clear(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) {
|
SocketAdmin.deleteAllEvents = function(socket, data, callback) {
|
||||||
events.deleteAll(callback);
|
events.deleteAll(callback);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -34,7 +34,20 @@ module.exports = function(SocketUser) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SocketUser.unbanUsers = function(socket, uids, callback) {
|
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) {
|
function toggleBan(uid, uids, method, callback) {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
<pre>{events.jsonString}</pre>
|
<pre>{events.jsonString}</pre>
|
||||||
</div>
|
</div>
|
||||||
<!-- END events -->
|
<!-- END events -->
|
||||||
|
<!-- IMPORT partials/paginator.tpl -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user