'use strict'; var async = require('async'); var db = require('../../database'); var categories = require('../../categories'); var privileges = require('../../privileges'); var plugins = require('../../plugins'); var homePageController = {}; homePageController.get = function(req, res, next) { async.waterfall([ function(next) { db.getSortedSetRange('categories:cid', 0, -1, next); }, function(cids, next) { privileges.categories.filterCids('find', cids, 0, next); }, function(cids, next) { categories.getCategoriesFields(cids, ['name', 'slug'], next); }, function(categoryData, next) { categoryData = categoryData.map(function(category) { return { route: 'category/' + category.slug, name: 'Category: ' + category.name }; }); next(null, categoryData); } ], function(err, categoryData) { if (err || !categoryData) { categoryData = []; } plugins.fireHook('filter:homepage.get', {routes: [ { route: 'categories', name: 'Categories' }, { route: 'recent', name: 'Recent' }, { route: 'popular', name: 'Popular' } ].concat(categoryData)}, function(err, data) { data.routes.push({ route: '', name: 'Custom' }); res.render('admin/general/homepage', data); }); }); }; module.exports = homePageController;