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