From ade9a44b116ea570a911901f309883fcf05a8f28 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 16 Sep 2015 14:45:39 -0400 Subject: [PATCH] closes #3590 --- public/language/en_GB/global.json | 3 ++- public/src/client/popular.js | 20 +------------------- public/src/client/users.js | 22 +++++++--------------- src/controllers/popular.js | 17 +++++++++++++++-- src/controllers/users.js | 26 +++++++++++++++++--------- src/routes/index.js | 3 +-- 6 files changed, 43 insertions(+), 48 deletions(-) diff --git a/public/language/en_GB/global.json b/public/language/en_GB/global.json index 5a9b750b96..ea54c184ec 100644 --- a/public/language/en_GB/global.json +++ b/public/language/en_GB/global.json @@ -104,5 +104,6 @@ "privacy": "Privacy", "follow": "Follow", "unfollow": "Unfollow", - "delete_all": "Delete All" + "delete_all": "Delete All", + "map": "Map" } diff --git a/public/src/client/popular.js b/public/src/client/popular.js index 6331df49a6..2a1a358c82 100644 --- a/public/src/client/popular.js +++ b/public/src/client/popular.js @@ -8,26 +8,8 @@ define('forum/popular', function() { Popular.init = function() { app.enterRoom('popular_topics'); - selectActivePill(); + $('.nav-pills li').removeClass('active').find('a[href="' + window.location.pathname + '"]').parent().addClass('active'); }; - function selectActivePill() { - var active = getActiveSection(); - - $('.nav-pills li').removeClass('active'); - $('.nav-pills li a').each(function() { - var $this = $(this); - if ($this.attr('href').match(active)) { - $this.parent().addClass('active'); - return false; - } - }); - } - - function getActiveSection() { - var parts = window.location.href.split('/'); - return parts[parts.length - 1]; - } - return Popular; }); diff --git a/public/src/client/users.js b/public/src/client/users.js index e0d4166a49..24aa1730bb 100644 --- a/public/src/client/users.js +++ b/public/src/client/users.js @@ -9,16 +9,8 @@ define('forum/users', ['translator'], function(translator) { Users.init = function() { app.enterRoom('user_list'); - var active = getActiveSection(); - - $('.nav-pills li').removeClass('active'); - $('.nav-pills li a').each(function() { - var $this = $(this); - if ($this.attr('href').match(active)) { - $this.parent().addClass('active'); - return false; - } - }); + + $('.nav-pills li').removeClass('active').find('a[href="' + window.location.pathname + '"]').parent().addClass('active'); handleSearch(); @@ -41,14 +33,14 @@ define('forum/users', ['translator'], function(translator) { function loadMoreUsers() { var set = ''; var activeSection = getActiveSection(); - if (activeSection === 'latest') { - set = 'users:joindate'; - } else if (activeSection === 'sort-posts') { + if (activeSection === 'sort-posts') { set = 'users:postcount'; } else if (activeSection === 'sort-reputation') { set = 'users:reputation'; - } else if (activeSection === 'online' || activeSection === 'users') { + } else if (activeSection === 'online') { set = 'users:online'; + } else if (activeSection === 'users') { + set = 'users:joindate'; } if (set) { @@ -81,8 +73,8 @@ define('forum/users', ['translator'], function(translator) { templates.parse('users', 'users', data, function(html) { translator.translate(html, function(translated) { translated = $(translated); - translated.find('span.timeago').timeago(); $('#users-container').append(translated); + translated.find('span.timeago').timeago(); $('#users-container .anon-user').appendTo($('#users-container')); }); }); diff --git a/src/controllers/popular.js b/src/controllers/popular.js index 6f80254f47..bfadc9f228 100644 --- a/src/controllers/popular.js +++ b/src/controllers/popular.js @@ -19,7 +19,14 @@ var terms = { popularController.get = function(req, res, next) { - var term = terms[req.params.term] || 'day'; + var term = terms[req.params.term] || 'alltime'; + + var termToBreadcrumb = { + day: '[[recent:day]]', + week: '[[recent:week]]', + month: '[[recent:month]]', + alltime: '[[global:header.popular]]' + }; if (!req.uid) { if (anonCache[term] && (Date.now() - lastUpdateTime) < 60 * 60 * 1000) { @@ -40,7 +47,13 @@ popularController.get = function(req, res, next) { }; if (req.path.startsWith('/api/popular') || req.path.startsWith('/popular')) { - data.breadcrumbs = helpers.buildBreadcrumbs([{text: '[[global:header.popular]]'}]); + var breadcrumbs = [{text: termToBreadcrumb[term]}]; + + if (req.params.term) { + breadcrumbs.unshift({text: '[[global:header.popular]]', url: '/popular'}); + } + + data.breadcrumbs = helpers.buildBreadcrumbs(breadcrumbs); } if (!req.uid) { diff --git a/src/controllers/users.js b/src/controllers/users.js index 679a5328d1..ad34af5403 100644 --- a/src/controllers/users.js +++ b/src/controllers/users.js @@ -14,10 +14,6 @@ var async = require('async'), db = require('../database'), helpers = require('./helpers'); -usersController.redirectToOnlineUsers = function(req, res, next) { - helpers.redirect(res, '/users/online'); -}; - usersController.getOnlineUsers = function(req, res, next) { var websockets = require('../socket.io'); @@ -51,7 +47,7 @@ usersController.getOnlineUsers = function(req, res, next) { anonymousUserCount: websockets.getOnlineAnonCount(), defaultGravatar: user.createGravatarURLFromEmail(''), title: '[[pages:users/online]]', - breadcrumbs: helpers.buildBreadcrumbs([{text: '[[pages:users/online]]'}]) + breadcrumbs: helpers.buildBreadcrumbs([{text: '[[global:users]]', url: '/users'}, {text: '[[pages:users/online]]'}]) }; render(req, res, userData, next); @@ -80,12 +76,20 @@ usersController.getUsers = function(set, start, stop, req, res, next) { var setToCrumbs = { 'users:postcount': '[[users:top_posters]]', 'users:reputation': '[[users:most_reputation]]', - 'users:joindate': '[[pages:users/latest]]' + 'users:joindate': '[[global:users]]' }; + + var breadcrumbs = [{text: setToCrumbs[set]}]; + + if (set !== 'users:joindate') { + breadcrumbs.unshift({text: '[[global:users]]', url: '/users'}); + } + usersController.getUsersAndCount(set, req.uid, start, stop, function(err, data) { if (err) { return next(err); } + var pageCount = Math.ceil(data.count / (parseInt(meta.config.userSearchResultsPerPage, 10) || 20)); var userData = { search_display: 'hidden', @@ -93,7 +97,7 @@ usersController.getUsers = function(set, start, stop, req, res, next) { users: data.users, pagination: pagination.create(1, pageCount), title: setToTitles[set] || '[[pages:users/latest]]', - breadcrumbs: helpers.buildBreadcrumbs([{text: setToCrumbs[set]}]) + breadcrumbs: helpers.buildBreadcrumbs(breadcrumbs) }; userData['route_' + set] = true; render(req, res, userData, next); @@ -136,7 +140,7 @@ usersController.getUsersForSearch = function(req, res, next) { loadmore_display: 'hidden', users: data.users, title: '[[pages:users/search]]', - breadcrumbs: helpers.buildBreadcrumbs([{text: '[[pages:users/search]]'}]) + breadcrumbs: helpers.buildBreadcrumbs([{text: '[[global:users]]', url: '/users'}, {text: '[[global:search]]'}]) }; render(req, res, userData, next); @@ -212,7 +216,11 @@ usersController.getMap = function(req, res, next) { } }); - res.render('usersMap', {rooms: data, title: '[[pages:users/map]]', breadcrumbs: helpers.buildBreadcrumbs([{text: '[[pages:users/map]]'}])}); + res.render('usersMap', { + rooms: data, + title: '[[pages:users/map]]', + breadcrumbs: helpers.buildBreadcrumbs([{text: '[[global:users]]', url: '/users'}, {text: '[[global:map]]'}]) + }); }); }; diff --git a/src/routes/index.js b/src/routes/index.js index dfda79e76d..6e8ac89fbb 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -78,11 +78,10 @@ function accountRoutes(app, middleware, controllers) { function userRoutes(app, middleware, controllers) { var middlewares = [middleware.checkGlobalPrivacySettings]; - setupPageRoute(app, '/users', middleware, middlewares, controllers.users.redirectToOnlineUsers); + setupPageRoute(app, '/users', middleware, middlewares, controllers.users.getUsersSortedByJoinDate); setupPageRoute(app, '/users/online', middleware, middlewares, controllers.users.getOnlineUsers); setupPageRoute(app, '/users/sort-posts', middleware, middlewares, controllers.users.getUsersSortedByPosts); setupPageRoute(app, '/users/sort-reputation', middleware, middlewares, controllers.users.getUsersSortedByReputation); - setupPageRoute(app, '/users/latest', middleware, middlewares, controllers.users.getUsersSortedByJoinDate); setupPageRoute(app, '/users/search', middleware, middlewares, controllers.users.getUsersForSearch); setupPageRoute(app, '/users/map', middleware, middlewares, controllers.users.getMap); }