sheercms
Version:
Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.
86 lines (71 loc) • 2.51 kB
JavaScript
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;
};
});