UNPKG

admin-lte-express

Version:

AdminLTE 2.3.2 with express and express-handlebars.

103 lines (92 loc) 2.63 kB
/** * Module dependencies. */ var fs = require('fs'); var Autoloader = exports.Autoloader = {}; Autoloader.controllers = function() { var controllers = []; fs.readdirSync(__dirname + '/../controllers').forEach(function(name) { controllers.push(name.split('.')[0]); }); return controllers; }; Autoloader.allRoutes = function() { var controllers = this.controllers(), routes = []; controllers.forEach(function(name) { routes.push('/' + name + '*'); }); return routes; }; Autoloader.load = function(parentApp, options) { var verbose = options.verbose; this.controllers().forEach(function(name) { verbose && console.log('\n %s:', name); var obj = require('../controllers/' + name); var name = obj.name || name; var prefix = obj.prefix || ''; var engine = obj.engine || 'handlebars'; var before = obj.before || false; var method; var path; var routeName; // generate routes based // on the exported methods for (var key in obj) { // "reserved" exports if (~['name', 'prefix', 'engine', 'before'].indexOf(key)) continue; // route exports switch (key) { case 'list': method = 'get'; path = '/' + name + 's'; break; case 'show': method = 'get'; path = '/' + name + '/:_id'; break; case 'new': method = 'get'; path = '/' + name + '/new'; break; case 'create': method = 'post'; path = '/' + name; break; case 'edit': method = 'get'; path = '/' + name + '/:_id/edit'; break; case 'update': method = 'put'; path = '/' + name + '/:_id'; break; case 'remove': method = 'get'; path = '/' + name + '/:_id/remove'; break; case 'delete': method = 'delete'; path = '/' + name + '/:_id'; break; case 'index': method = 'get'; path = (prefix === '') ? '/' : ''; break; default: method = 'get'; path = '/' + key; } path = prefix + path; routeName = name + '.' + key; if (before) { parentApp[method](path, routeName, before, obj[key]); verbose && console.log(' %s %s -> before -> %s', method.toUpperCase(), path, routeName); } else { parentApp[method](path, routeName, obj[key]); verbose && console.log(' %s %s -> %s', method.toUpperCase(), path, routeName); } } }); };