diff --git a/src/controllers/categories.js b/src/controllers/categories.js index 34e1bc1f0b..bbffcf1a86 100644 --- a/src/controllers/categories.js +++ b/src/controllers/categories.js @@ -9,70 +9,12 @@ var categoriesController = {}, privileges = require('../privileges'), user = require('../user'), categories = require('../categories'), - topics = require('../topics'), meta = require('../meta'), plugins = require('../plugins'), pagination = require('../pagination'), helpers = require('./helpers'), utils = require('../../public/src/utils'); -categoriesController.recent = function(req, res, next) { - var stop = (parseInt(meta.config.topicsPerList, 10) || 20) - 1; - topics.getTopicsFromSet('topics:recent', req.uid, 0, stop, function(err, data) { - if (err) { - return next(err); - } - - data['feeds:disableRSS'] = parseInt(meta.config['feeds:disableRSS'], 10) === 1; - data.rssFeedUrl = nconf.get('relative_path') + '/recent.rss'; - data.breadcrumbs = helpers.buildBreadcrumbs([{text: '[[recent:title]]'}]); - - plugins.fireHook('filter:recent.build', {req: req, res: res, templateData: data}, function(err, data) { - if (err) { - return next(err); - } - res.render('recent', data.templateData); - }); - }); -}; - -var anonCache = {}, lastUpdateTime = 0; - -categoriesController.popular = function(req, res, next) { - var terms = { - daily: 'day', - weekly: 'week', - monthly: 'month', - alltime: 'alltime' - }; - var term = terms[req.params.term] || 'day'; - - if (!req.uid) { - if (anonCache[term] && (Date.now() - lastUpdateTime) < 60 * 60 * 1000) { - return res.render('popular', anonCache[term]); - } - } - - topics.getPopular(term, req.uid, meta.config.topicsPerList, function(err, topics) { - if (err) { - return next(err); - } - - var data = { - topics: topics, - 'feeds:disableRSS': parseInt(meta.config['feeds:disableRSS'], 10) === 1, - rssFeedUrl: nconf.get('relative_path') + '/popular/' + (req.params.term || 'daily') + '.rss', - breadcrumbs: helpers.buildBreadcrumbs([{text: '[[global:header.popular]]'}]) - }; - - if (!req.uid) { - anonCache[term] = data; - lastUpdateTime = Date.now(); - } - - res.render('popular', data); - }); -}; categoriesController.list = function(req, res, next) { async.parallel({ diff --git a/src/controllers/index.js b/src/controllers/index.js index f08d696765..70854a548a 100644 --- a/src/controllers/index.js +++ b/src/controllers/index.js @@ -19,6 +19,8 @@ var Controllers = { topics: require('./topics'), categories: require('./categories'), unread: require('./unread'), + recent: require('./recent'), + popular: require('./popular'), tags: require('./tags'), search: require('./search'), users: require('./users'), diff --git a/src/controllers/popular.js b/src/controllers/popular.js new file mode 100644 index 0000000000..6f1b025bc1 --- /dev/null +++ b/src/controllers/popular.js @@ -0,0 +1,51 @@ + +'use strict'; + +var nconf = require('nconf'), + topics = require('../topics'), + meta = require('../meta'), + helpers = require('./helpers'); + +var popularController = {}; + +var anonCache = {}, lastUpdateTime = 0; + +var terms = { + daily: 'day', + weekly: 'week', + monthly: 'month', + alltime: 'alltime' +}; + +popularController.get = function(req, res, next) { + + var term = terms[req.params.term] || 'day'; + + if (!req.uid) { + if (anonCache[term] && (Date.now() - lastUpdateTime) < 60 * 60 * 1000) { + return res.render('popular', anonCache[term]); + } + } + + topics.getPopular(term, req.uid, meta.config.topicsPerList, function(err, topics) { + if (err) { + return next(err); + } + + var data = { + topics: topics, + 'feeds:disableRSS': parseInt(meta.config['feeds:disableRSS'], 10) === 1, + rssFeedUrl: nconf.get('relative_path') + '/popular/' + (req.params.term || 'daily') + '.rss', + breadcrumbs: helpers.buildBreadcrumbs([{text: '[[global:header.popular]]'}]) + }; + + if (!req.uid) { + anonCache[term] = data; + lastUpdateTime = Date.now(); + } + + res.render('popular', data); + }); +}; + +module.exports = popularController; \ No newline at end of file diff --git a/src/controllers/recent.js b/src/controllers/recent.js new file mode 100644 index 0000000000..99b65bab88 --- /dev/null +++ b/src/controllers/recent.js @@ -0,0 +1,34 @@ + +'use strict'; + +var nconf = require('nconf'), + topics = require('../topics'), + meta = require('../meta'), + helpers = require('./helpers'), + plugins = require('../plugins'); + +var recentController = {}; + +recentController.get = function(req, res, next) { + + var stop = (parseInt(meta.config.topicsPerList, 10) || 20) - 1; + + topics.getTopicsFromSet('topics:recent', req.uid, 0, stop, function(err, data) { + if (err) { + return next(err); + } + + data['feeds:disableRSS'] = parseInt(meta.config['feeds:disableRSS'], 10) === 1; + data.rssFeedUrl = nconf.get('relative_path') + '/recent.rss'; + data.breadcrumbs = helpers.buildBreadcrumbs([{text: '[[recent:title]]'}]); + + plugins.fireHook('filter:recent.build', {req: req, res: res, templateData: data}, function(err, data) { + if (err) { + return next(err); + } + res.render('recent', data.templateData); + }); + }); +}; + +module.exports = recentController; \ No newline at end of file diff --git a/src/controllers/unread.js b/src/controllers/unread.js index 02f0b0cc1f..edf663ce8d 100644 --- a/src/controllers/unread.js +++ b/src/controllers/unread.js @@ -12,8 +12,7 @@ var async = require('async'), var unreadController = {}; - -unreadController.unread = function(req, res, next) { +unreadController.get = function(req, res, next) { var stop = (parseInt(meta.config.topicsPerList, 10) || 20) - 1; var results; var cid = req.query.cid; diff --git a/src/routes/index.js b/src/routes/index.js index 4935edc372..a70bcec510 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -47,9 +47,9 @@ function tagRoutes(app, middleware, controllers) { function categoryRoutes(app, middleware, controllers) { setupPageRoute(app, '/categories', middleware, [], controllers.categories.list); - setupPageRoute(app, '/popular/:term?', middleware, [], controllers.categories.popular); - setupPageRoute(app, '/recent', middleware, [], controllers.categories.recent); - setupPageRoute(app, '/unread', middleware, [middleware.authenticate], controllers.unread.unread); + setupPageRoute(app, '/popular/:term?', middleware, [], controllers.popular.get); + setupPageRoute(app, '/recent', middleware, [], controllers.recent.get); + setupPageRoute(app, '/unread', middleware, [middleware.authenticate], controllers.unread.get); setupPageRoute(app, '/category/:category_id/:slug/:topic_index', middleware, [], controllers.categories.get); setupPageRoute(app, '/category/:category_id/:slug?', middleware, [], controllers.categories.get);