all files / src/controllers/admin/ homepage.js

40% Statements 8/20
0% Branches 0/4
0% Functions 0/8
40% Lines 8/20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62                                                                                                           
'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;