change user.search to accept params
can search substr with startsWith:false
no infinite scroll on admin user search page
v1.18.x
barisusakli 10 years ago
parent fbd875b397
commit 6d31fee3f5

@ -267,14 +267,21 @@ define('admin/manage/users', ['admin/modules/selectable'], function(selectable)
handleUserCreate(); handleUserCreate();
function onUsersLoaded(users) { $('#load-more-users-btn').on('click', loadMoreUsers);
templates.parse('admin/manage/users', 'users', {users: users, requireEmailConfirmation: config.requireEmailConfirmation}, function(html) {
$('#users-container').append($(html)); $(window).off('scroll').on('scroll', function() {
selectable.enable('#users-container', '.user-selectable'); var bottom = ($(document).height() - $(window).height()) * 0.9;
});
} if ($(window).scrollTop() > bottom && !loadingMoreUsers) {
loadMoreUsers();
}
});
function loadMoreUsers() { function loadMoreUsers() {
if (active === 'search') {
return;
}
var set = 'users:joindate'; var set = 'users:joindate';
if (active === 'sort-posts') { if (active === 'sort-posts') {
set = 'users:postcount'; set = 'users:postcount';
@ -284,7 +291,6 @@ define('admin/manage/users', ['admin/modules/selectable'], function(selectable)
set = 'users:banned'; set = 'users:banned';
} }
loadingMoreUsers = true; loadingMoreUsers = true;
socket.emit('user.loadMore', { socket.emit('user.loadMore', {
set: set, set: set,
@ -297,15 +303,12 @@ define('admin/manage/users', ['admin/modules/selectable'], function(selectable)
}); });
} }
$('#load-more-users-btn').on('click', loadMoreUsers); function onUsersLoaded(users) {
templates.parse('admin/manage/users', 'users', {users: users, requireEmailConfirmation: config.requireEmailConfirmation}, function(html) {
$(window).off('scroll').on('scroll', function() { $('#users-container').append($(html));
var bottom = ($(document).height() - $(window).height()) * 0.9; selectable.enable('#users-container', '.user-selectable');
});
if ($(window).scrollTop() > bottom && !loadingMoreUsers) { }
loadMoreUsers();
}
});
}; };

@ -9,7 +9,7 @@ var usersController = {};
usersController.search = function(req, res, next) { usersController.search = function(req, res, next) {
res.render('admin/manage/users', { res.render('admin/manage/users', {
search_display: '', search_display: '',
loadmore_display: 'none', loadmore_display: 'hide',
users: [] users: []
}); });
}; };
@ -52,6 +52,9 @@ function getUsers(set, req, res, next) {
usersController.getCSV = function(req, res, next) { usersController.getCSV = function(req, res, next) {
user.getUsersCSV(function(err, data) { user.getUsersCSV(function(err, data) {
if (err) {
return next(err);
}
res.attachment('users.csv'); res.attachment('users.csv');
res.setHeader('Content-Type', 'text/csv'); res.setHeader('Content-Type', 'text/csv');
res.end(data); res.end(data);

@ -36,7 +36,7 @@ Categories.search = function(socket, data, callback) {
var username = data.username, var username = data.username,
cid = data.cid; cid = data.cid;
user.search(username, 'username', function(err, data) { user.search({query: username}, function(err, data) {
if (err) { if (err) {
return callback(err); return callback(err);
} }

@ -175,7 +175,7 @@ User.deleteUsers = function(socket, uids, callback) {
}; };
User.search = function(socket, data, callback) { User.search = function(socket, data, callback) {
user.search(data.query, data.type, function(err, searchData) { user.search({query: data.query, by: data.type, startsWith: false}, function(err, searchData) {
if (err) { if (err) {
return callback(err); return callback(err);
} }

@ -66,7 +66,7 @@ SocketUser.search = function(socket, username, callback) {
if (!socket.uid) { if (!socket.uid) {
return callback(new Error('[[error:not-logged-in]]')); return callback(new Error('[[error:not-logged-in]]'));
} }
user.search(username, 'username', callback); user.search({query: username}, callback);
}; };
// Password Reset // Password Reset

@ -6,18 +6,22 @@ var async = require('async'),
module.exports = function(User) { module.exports = function(User) {
User.search = function(query, type, callback) { User.search = function(data, callback) {
var query = data.query;
var by = data.by || 'username';
var startsWith = data.hasOwnProperty('startsWith') ? data.startsWith : true;
if (!query || query.length === 0) { if (!query || query.length === 0) {
return callback(null, {timing:0, users:[]}); return callback(null, {timing:0, users:[]});
} }
if (type === 'ip') { if (by === 'ip') {
return searchByIP(query, callback); return searchByIP(query, callback);
} }
var start = process.hrtime(); var start = process.hrtime();
var key = 'username:uid'; var key = 'username:uid';
if (type === 'email') { if (by === 'email') {
key = 'email:uid'; key = 'email:uid';
} }
@ -32,7 +36,11 @@ module.exports = function(User) {
var uids = []; var uids = [];
for(var i=0; i<values.length; ++i) { for(var i=0; i<values.length; ++i) {
if (values[i].toLowerCase().indexOf(query) === 0) { if (startsWith) {
if (values[i].toLowerCase().indexOf(query) === 0) {
uids.push(values[i]);
}
} else if (values[i].toLowerCase().indexOf(query) !== -1) {
uids.push(values[i]); uids.push(values[i]);
} }
} }

Loading…
Cancel
Save