UNPKG

sheercms

Version:

Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.

128 lines (110 loc) 3.55 kB
var logger = require('../logger'); var api = require('../api'); var auth = require('../auth'); var config = require('../config'); /* callback: (err) */ module.exports.init = function(server, callback) { //routes server.get('/cms/menus/list', auth.authenticate, routeMenusList); server.get('/cms/menus/get', auth.authenticate, routeMenusGet); server.post('/cms/menus/save', auth.authenticate, routeMenusSave); server.post('/cms/menus/delete', auth.authenticate, routeMenusDelete); if (callback) callback(null); }; function routeMenusList(req, res, next) { try { api.menus.getMenus(function(err, menus) { if (err) res.json({ success: false, message: err.message }); else res.json({ success: true, menus: menus }); }); } catch(e) { logger.error(e); res.json({ success: false, message: 'Error retrieving the menus.'}); } }; function routeMenusGet(req, res, next) { try { var id = req.query.menuId; api.menus.getMenu(id, function(err, menu) { if (err) res.json({ success: false, message: err.message }); else res.json({ success: true, menu: menu }); }); } catch(e) { logger.error(e); res.json({ success: false, message: 'Error retrieving the menu.'}); } }; function routeMenusSave(req, res, next) { try { var json = req.body.data; var menu = JSON.parse(json); //var username = req.user.username; //fix the menu items menu.items = fixMenuItems(menu.items); api.menus.saveMenu(menu, function(err, savedMenu) { if (err) res.json({ success: false, message: err.message }); else res.json({ success: true, menu: savedMenu }); }); } catch(e) { logger.error(e); res.json({ success: false, message: 'Error saving the menu.'}); } }; function fixMenuItems(items) { var arr = []; if (items) { for(var i = 0; i < items.length; i++) { var item = items[i]; var obj = new MenuItem(item); obj.items = fixMenuItems(item.items); obj.childCount = obj.items.length; arr.push(obj); } } return arr; } function routeMenusDelete(req, res, next) { try { var id = req.body.menuId; var bList = (req.body.list == true || req.body.list == 'true'); api.menus.deleteMenu(id, function(err) { if (err) res.json({ success: false, message: 'Error deleting the menu.'}); else { if (bList == true) { api.menus.getMenus(function(err, menus) { if (err) res.json({ success: false, message: err.message }); else res.json({ success: true, menus: menus }); }); } else res.json({ success: true }); } }); } catch(e) { logger.error(e); res.json({ success: false, message: 'Error deleting the menu.'}); } } function MenuItem(item) { var self = this; self.contentId = item.contentId; self.text = item.text; self.url = item.url; self.target = item.target; self.class = item.class; self.tooltip = item.tooltip; self.items = []; self.childCount = 0; }