| 
									
										
										
										
											2017-02-18 01:56:23 -07:00
										 |  |  | 'use strict'; | 
					
						
							| 
									
										
										
										
											2015-09-15 15:56:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-22 16:47:30 +02:00
										 |  |  | var async = require('async'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var categories = require('../../categories'); | 
					
						
							|  |  |  | var analytics = require('../../analytics'); | 
					
						
							|  |  |  | var plugins = require('../../plugins'); | 
					
						
							| 
									
										
										
										
											2017-04-08 20:22:21 -06:00
										 |  |  | var translator = require('../../translator'); | 
					
						
							| 
									
										
										
										
											2015-09-15 15:56:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-29 14:47:01 -04:00
										 |  |  | var categoriesController = module.exports; | 
					
						
							| 
									
										
										
										
											2015-09-15 15:56:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-29 14:47:01 -04:00
										 |  |  | categoriesController.get = function (req, res, callback) { | 
					
						
							|  |  |  | 	async.waterfall([ | 
					
						
							|  |  |  | 		function (next) { | 
					
						
							|  |  |  | 			async.parallel({ | 
					
						
							|  |  |  | 				category: async.apply(categories.getCategories, [req.params.category_id], req.user.uid), | 
					
						
							| 
									
										
										
										
											2017-05-30 17:21:30 -04:00
										 |  |  | 				allCategories: async.apply(categories.buildForSelect, req.uid, 'read'), | 
					
						
							| 
									
										
										
										
											2017-05-29 14:47:01 -04:00
										 |  |  | 			}, next); | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		function (data, next) { | 
					
						
							|  |  |  | 			var category = data.category[0]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			if (!category) { | 
					
						
							|  |  |  | 				return callback(); | 
					
						
							| 
									
										
										
										
											2015-09-15 15:56:19 -04:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2017-05-29 14:47:01 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			data.allCategories.forEach(function (category) { | 
					
						
							|  |  |  | 				if (category) { | 
					
						
							| 
									
										
										
										
											2017-05-29 14:52:10 -04:00
										 |  |  | 					category.selected = parseInt(category.cid, 10) === parseInt(req.params.category_id, 10); | 
					
						
							| 
									
										
										
										
											2017-05-29 14:47:01 -04:00
										 |  |  | 				} | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			plugins.fireHook('filter:admin.category.get', { | 
					
						
							|  |  |  | 				req: req, | 
					
						
							|  |  |  | 				res: res, | 
					
						
							|  |  |  | 				category: category, | 
					
						
							|  |  |  | 				allCategories: data.allCategories, | 
					
						
							|  |  |  | 			}, next); | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		function (data) { | 
					
						
							| 
									
										
										
										
											2016-04-08 18:09:35 +03:00
										 |  |  | 			data.category.name = translator.escape(String(data.category.name)); | 
					
						
							| 
									
										
										
										
											2015-09-15 15:56:19 -04:00
										 |  |  | 			res.render('admin/manage/category', { | 
					
						
							|  |  |  | 				category: data.category, | 
					
						
							| 
									
										
										
										
											2017-05-29 14:47:01 -04:00
										 |  |  | 				allCategories: data.allCategories, | 
					
						
							| 
									
										
										
										
											2015-09-15 15:56:19 -04:00
										 |  |  | 			}); | 
					
						
							| 
									
										
										
										
											2017-05-29 14:47:01 -04:00
										 |  |  | 		}, | 
					
						
							|  |  |  | 	], callback); | 
					
						
							| 
									
										
										
										
											2015-09-15 15:56:19 -04:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-18 15:05:36 -07:00
										 |  |  | categoriesController.getAll = function (req, res) { | 
					
						
							| 
									
										
										
										
											2016-03-25 13:24:40 -04:00
										 |  |  | 	// Categories list will be rendered on client side with recursion, etc.
 | 
					
						
							| 
									
										
										
										
											2015-09-15 15:56:19 -04:00
										 |  |  | 	res.render('admin/manage/categories', {}); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | categoriesController.getAnalytics = function (req, res, next) { | 
					
						
							| 
									
										
										
										
											2017-05-29 14:47:01 -04:00
										 |  |  | 	async.waterfall([ | 
					
						
							|  |  |  | 		function (next) { | 
					
						
							|  |  |  | 			async.parallel({ | 
					
						
							|  |  |  | 				name: async.apply(categories.getCategoryField, req.params.category_id, 'name'), | 
					
						
							|  |  |  | 				analytics: async.apply(analytics.getCategoryAnalytics, req.params.category_id), | 
					
						
							|  |  |  | 			}, next); | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		function (data) { | 
					
						
							|  |  |  | 			res.render('admin/manage/category-analytics', data); | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 	], next); | 
					
						
							| 
									
										
										
										
											2016-03-25 13:24:40 -04:00
										 |  |  | }; |