UNPKG

sheercms

Version:

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

177 lines (152 loc) 5.09 kB
app.controller('TemplateController', function($scope, $rootScope, TemplateService) { $scope.templates = []; $scope.template = null; //the template being edited $scope.data = { title: "Templates", message: "", messageType: "", //alert-success, alert-warning, alert-info, alert-danger //fieldCheckCount: 0, editing: false, isNew: false, isAuthorized: false }; $scope.buttons = { back: false, newTemplate: true, refresh: true, save: false, delete: false }; $scope.showNewTemplate = function() { $scope.data.title = "New Template"; $scope.template = new Template(); $scope.data.editing = true; $scope.data.isNew = true; resetEditData(); updateButtons(); }; $scope.editTemplate = function(id) { clearMessage(); $scope.data.title = "Edit Template"; $scope.data.editing = true; $scope.data.isNew = false; resetEditData(); TemplateService.getTemplate(id).then(function(data) { if (data) { if (data.success && data.template) { $scope.template = data.template; updateButtons(); } else if (data.success) setMessage('Template not found.', 'alert-danger'); else setMessage(data.message, 'alert-danger'); } else { setMessage('Error loading the template data.', 'alert-danger'); } }); }; $scope.save = function() { setMessage("Saving template...", "alert-info"); TemplateService.save($scope.template).then(function(data) { if (data.success) { setMessage(data.message, "alert-success"); //update the template's properties $scope.template = data.template; $scope.data.isNew = false; updateButtons(); loadRecords(false, false); } else { setMessage(data.message, "alert-danger"); } }); }; $scope.delete = function() { if (confirm('Are you sure you want to delete this template?')) { setMessage("Deleting template...", "alert-info"); TemplateService.delete($scope.template.id).then(function (data) { if (data.success) { loadRecords(false, false); $scope.back(); setMessage(data.message, "alert-success"); } else { setMessage(data.message, "alert-danger"); } }); } }; $scope.back = function() { $scope.data.title = "Templates"; $scope.data.editing = false; $scope.template = null; clearMessage(); updateButtons(); }; $scope.reload = function() { loadRecords(true, false); } function resetEditData() { //$scope.data.fieldCheckAll = false; //$scope.data.fieldCheckCount = 0; } function isValidFieldName(name) { var pattern = /^[a-zA-Z]{1}[a-zA-Z0-9]{3,20}$/; //4-20 characters; starts with letter; numbers and letters only. return pattern.test(name); } function init() { $scope.$parent.resize('.template-view'); if ($scope.global.isAdmin === true) { $scope.data.isAuthorized = true; loadRecords(true, true); } else { $scope.data.isAuthorized = false; } } function loadRecords(showMessage, useCache) { TemplateService.list(useCache).then(function(data) { if (data.success) { if (showMessage) setMessage(data.message, "alert-success"); $scope.templates = data.templates; } else { setMessage(data.message, "alert-danger"); } }); } function updateButtons() { if ($scope.data.editing == true) { $scope.buttons.back = true; $scope.buttons.save = true; $scope.buttons.delete = ($scope.data.isNew === false); $scope.buttons.newTemplate = false; $scope.buttons.refresh = false; } else { $scope.buttons.back = false; $scope.buttons.save = false; $scope.buttons.delete = false; $scope.buttons.newTemplate = true; $scope.buttons.refresh = true; } } function clearMessage() { $scope.data.message = ""; $scope.data.messageType = ""; } function setMessage(msg, type) { $scope.data.message = msg; $scope.data.messageType = type; } function Template() { var self = this; self.name = ""; self.key = ""; self.desc = ""; self.icon = ""; self.viewText = ""; self.cacheSeconds = 0; } init(); });