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

25% Statements 5/20
0% Branches 0/8
0% Functions 0/7
25% Lines 5/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                                                                                             
'use strict';
 
var settingsController = {};
var async = require('async'),
	meta = require('../../meta');
 
settingsController.get = function(req, res, next) {
	var term = req.params.term ? req.params.term : 'general';
 
	switch (req.params.term) {
		case 'email':
			renderEmail(req, res, next);
			break;
 
		default:
			res.render('admin/settings/' + term);
	}
};
 
 
function renderEmail(req, res, next) {
	var fs = require('fs'),
		path = require('path'),
		utils = require('../../../public/src/utils');
 
	var emailsPath = path.join(__dirname, '../../../public/templates/emails');
	utils.walk(emailsPath, function(err, emails) {
		async.map(emails, function(email, next) {
			var path = email.replace(emailsPath, '').substr(1).replace('.tpl', '');
 
			fs.readFile(email, function(err, original) {
				var text = meta.config['email:custom:' + path] ? meta.config['email:custom:' + path] : original.toString();
 
				next(err, {
					path: path,
					fullpath: email,
					text: text,
					original: original.toString()
				});
			});
		}, function(err, emails) {
			res.render('admin/settings/email', {
				emails: emails,
				sendable: emails.filter(function(email) {
					return email.path.indexOf('_plaintext') === -1 && email.path.indexOf('partials') === -1;
				})
			});
		});
	});
}
 
module.exports = settingsController;