diff --git a/public/src/forum/users.js b/public/src/forum/users.js index 87621b5d9d..8a56698e5d 100644 --- a/public/src/forum/users.js +++ b/public/src/forum/users.js @@ -26,21 +26,30 @@ jQuery('.icon-spinner').removeClass('none'); socket.emit('api:admin.user.search', username); - console.log('sent'); }, 250); }); socket.removeAllListeners('api:admin.user.search'); socket.on('api:admin.user.search', function(data) { - console.log('derp'); - var html = templates.prepare(templates['users'].blocks['users']).parse({ + + jQuery('.icon-spinner').addClass('none'); + + if(data === null) { + $('#user-notfound-notify').html('You need to be logged in to search!') + .show() + .addClass('label-important') + .removeClass('label-success'); + return; + } + + var html = templates.prepare(templates['users'].blocks['users']).parse({ users: data }), userListEl = document.querySelector('.users'); userListEl.innerHTML = html; - jQuery('.icon-spinner').addClass('none'); + if(data && data.length === 0) { $('#user-notfound-notify').html('User not found!') diff --git a/public/templates/config.json b/public/templates/config.json index f84272d554..2aa8f4c9a9 100644 --- a/public/templates/config.json +++ b/public/templates/config.json @@ -16,10 +16,10 @@ "install/mail/?": "install/mail", "install/social/?": "install/social", "install/privileges/?": "install/privileges", - "users/sort-posts": "users", - "users/latest": "users", - "users/sort-reputation": "users", - "users/search": "users", + "users-sort-posts": "users", + "users-latest": "users", + "users-sort-reputation": "users", + "users-search": "users", "users[^]*edit": "accountedit", "users[^]*following": "following", "users[^]*followers": "followers", diff --git a/public/templates/users.tpl b/public/templates/users.tpl index edc66c1335..2bc1ade407 100644 --- a/public/templates/users.tpl +++ b/public/templates/users.tpl @@ -1,10 +1,10 @@
diff --git a/src/routes/user.js b/src/routes/user.js index 4b9216d16c..8145a42d2c 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -24,15 +24,23 @@ var user = require('./../user.js'), }); app.get('/users', function(req, res) { - - if(req.query.sort === 'posts') - res.send(app.build_header(res) + app.create_route("users", "users") + templates['footer']); - else if(req.query.sort === 'reputation') - res.send(app.build_header(res) + app.create_route("users", "users") + templates['footer']); - else if(req.query.sort === 'latest') - res.send(app.build_header(res) + app.create_route("users?sort=latest", "users") + templates['footer']); - else - res.send(app.build_header(res) + app.create_route("users", "users") + templates['footer']); + res.send(app.build_header(res) + app.create_route("users", "users") + templates['footer']); + }); + + app.get('/users-latest', function(req, res) { + res.send(app.build_header(res) + app.create_route("users-latest", "users") + templates['footer']); + }); + + app.get('/users-sort-posts', function(req, res) { + res.send(app.build_header(res) + app.create_route("users-sort-posts", "users") + templates['footer']); + }); + + app.get('/users-sort-reputation', function(req, res) { + res.send(app.build_header(res) + app.create_route("users-sort-reputation", "users") + templates['footer']); + }); + + app.get('/users-search', function(req, res) { + res.send(app.build_header(res) + app.create_route("users-search", "users") + templates['footer']); }); app.get('/users/:userslug', function(req, res) { @@ -253,33 +261,6 @@ var user = require('./../user.js'), res.json({search_display: 'none', users:data}); }); } - else if (req.query.search) { - res.json({search_display: 'block', users: []}); - } - else if(req.query.sort === "posts") { - user.getUserList(function(data) { - data = data.sort(function(a, b) { - return b.postcount - a.postcount; - }); - res.json({search_display: 'none', users:data}); - }); - } - else if(req.query.sort === "reputation") { - user.getUserList(function(data) { - data = data.sort(function(a, b) { - return b.reputation - a.reputation; - }); - res.json({search_display: 'none', users:data}); - }); - } - else if(req.query.sort === "latest") { - user.getUserList(function(data) { - data = data.sort(function(a, b) { - return b.joindate - a.joindate; - }); - res.json({search_display: 'none', users:data}); - }); - } else if(String(req.params.section).toLowerCase() === 'following') { getUserDataByUserSlug(req.params.userslug, callerUID, function(userData) { @@ -327,7 +308,42 @@ var user = require('./../user.js'), } app.get('/api/users/:userslug?/:section?', api_method); - app.get('/api/users', api_method); + app.get('/api/users-sort-posts', getUsersSortedByPosts); + app.get('/api/users-sort-reputation', getUsersSortedByReputation); + app.get('/api/users-latest', getUsersSortedByJoinDate); + app.get('/api/users-search', getUsersForSearch); + + function getUsersSortedByPosts(req, res) { + user.getUserList(function(data) { + data = data.sort(function(a, b) { + return b.postcount - a.postcount; + }); + res.json({search_display: 'none', users:data}); + }); + } + + function getUsersSortedByReputation(req, res) { + user.getUserList(function(data) { + data = data.sort(function(a, b) { + return b.reputation - a.reputation; + }); + res.json({search_display: 'none', users:data}); + }); + } + + function getUsersSortedByJoinDate(req, res) { + user.getUserList(function(data) { + data = data.sort(function(a, b) { + return b.joindate - a.joindate; + }); + res.json({search_display: 'none', users:data}); + }); + } + + function getUsersForSearch(req, res) { + res.json({search_display: 'block', users: []}); + } + function getUserDataByUserSlug(userslug, callerUID, callback) { diff --git a/src/websockets.js b/src/websockets.js index fb7a531447..99a9388e13 100644 --- a/src/websockets.js +++ b/src/websockets.js @@ -458,6 +458,8 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }), socket.emit('api:admin.user.search', data); }); } + else + socket.emit('api:admin.user.search', null); }); });