diff --git a/models/template.go b/models/template.go index 474d7acf..b62ed4f5 100644 --- a/models/template.go +++ b/models/template.go @@ -11,6 +11,16 @@ type Template struct { ModifiedDate time.Time `json:"modified_date"` } +func (t *Template) Validate() (string, bool) { + switch { + case t.Name == "": + return "Template Name not specified", false + case t.Text == "" && t.Html == "": + return "Need to specify at least plaintext or HTML format", false + } + return "", true +} + type UserTemplate struct { UserId int64 `json:"-"` TemplateId int64 `json:"-"` diff --git a/static/js/app/app.js b/static/js/app/app.js index 95d4e302..742c324c 100644 --- a/static/js/app/app.js +++ b/static/js/app/app.js @@ -18,7 +18,7 @@ app.config(function($routeProvider) { templateUrl: 'js/app/partials/campaign_results.html', controller: 'CampaignResultsCtrl' }) - + .when('/users', { templateUrl: 'js/app/partials/users.html', controller: 'GroupCtrl' @@ -38,31 +38,32 @@ app.config(function($routeProvider) { // Example provided by http://docs.angularjs.org/api/ng/type/ngModel.NgModelController app.directive('contenteditable', function() { return { - restrict: 'A', // only activate on element attribute - require: '?ngModel', // get a hold of NgModelCtrl - link: function(scope, element, attrs, ngModel) { - if(!ngModel) return; // do nothing if no ng-model - - // Specify how UI should be updated - ngModel.$render = function() { - element.html(ngModel.$viewValue || ''); - }; - - // Listen for change events to enable binding - element.on('blur keyup change', function() { - scope.$apply(read); - }); - - // Write data to the model - function read() { - var html = element.html(); - // When we clear the content editable the browser leaves a
behind - // If strip-br attribute is provided then we strip this out - if( attrs.stripBr && html == '
' ) { - html = ''; - } - ngModel.$setViewValue(html); + restrict: 'A', // only activate on element attribute + require: '?ngModel', // get a hold of NgModelCtrl + link: function(scope, element, attrs, ngModel) { + if (!ngModel) return; // do nothing if no ng-model + + // Specify how UI should be updated + ngModel.$render = function() { + element.html(ngModel.$viewValue || ''); + }; + + // Listen for change events to enable binding + element.on('blur keyup change', function() { + scope.$apply(read); + }); + + // Write data to the model + + function read() { + var html = element.html(); + // When we clear the content editable the browser leaves a
behind + // If strip-br attribute is provided then we strip this out + if (attrs.stripBr && html == '
') { + html = ''; + } + ngModel.$setViewValue(html); + } } - } }; - }); \ No newline at end of file +}); \ No newline at end of file