UNPKG

sheercms

Version:

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

86 lines (71 loc) 2.51 kB
app.service('MenuService', function($q, $http, DSCacheFactory) { var self = this; var menuCache = DSCacheFactory('menuCache', { maxAge: 1800000, // Items added to this cache expire after 30 minutes. cacheFlushInterval: 3600000, // This cache will clear itself every hour. deleteOnExpire: 'aggressive', // Items will be deleted from this cache right when they expire. storageMode: 'localStorage' // This cache will sync itself with `localStorage`. }); self.list = function(useCache) { var d = $q.defer(); var url = '/cms/menus/list'; var data = useCache ? menuCache.get(url) : null; if (data) { d.resolve(data); } else { $http.get(url).success(function (data) { if (data.success === true && data.menus && data.menus.length > 0) menuCache.put(url, data); d.resolve(data); }).error(function (data, status) { d.reject(data); }); } return d.promise; }; self.create = function(name) { var d = $q.defer(); var menu = { name: name }; var json = JSON.stringify(menu); $http.post("/cms/menus/save", {data:json}).success(function(data) { menuCache.removeAll(); d.resolve(data); }).error(function(data, status) { d.reject(data); }); return d.promise; }; self.save = function(menu) { var d = $q.defer(); var json = JSON.stringify(menu); $http.post("/cms/menus/save", {data:json}).success(function(data) { menuCache.removeAll(); d.resolve(data); }).error(function(data, status) { d.reject(data); }); return d.promise; }; self.getMenu = function(id) { var d = $q.defer(); $http({ url:"/cms/menus/get", method: 'get', params: {menuId: id }}).success(function(data) { d.resolve(data); }).error(function(data, status) { d.reject(data); }); return d.promise; }; self.delete = function(id) { var d = $q.defer(); $http.post("/cms/menus/delete", {menuId: id, list: true }).success(function(data) { menuCache.removeAll(); d.resolve(data); }).error(function(data, status) { d.reject(data); }); return d.promise; }; });