Adds messaging to the Categories admin section.
Project: http://git-wip-us.apache.org/repos/asf/rave/repo Commit: http://git-wip-us.apache.org/repos/asf/rave/commit/0b2f9a16 Tree: http://git-wip-us.apache.org/repos/asf/rave/tree/0b2f9a16 Diff: http://git-wip-us.apache.org/repos/asf/rave/diff/0b2f9a16 Branch: refs/heads/angular Commit: 0b2f9a16dba04667af567803669b3c34f2086870 Parents: 2e123d0 Author: Jmeas <[email protected]> Authored: Thu Aug 14 18:34:12 2014 -0400 Committer: Jmeas <[email protected]> Committed: Thu Aug 14 18:36:14 2014 -0400 ---------------------------------------------------------------------- bower.json | 5 +- rave-portal-ng/src/config/requirejs.js | 4 ++ .../src/subapps/admin/categories/categories.js | 7 ++- .../admin/categories/controllers/categories.js | 8 ++- .../admin/categories/controllers/category.js | 26 ++++++++-- .../admin/categories/controllers/create.js | 9 ++-- .../src/subapps/admin/categories/routes.js | 6 +++ .../categories/services/categories-messages.js | 53 ++++++++++++++++++++ .../admin/categories/templates/categories.html | 1 + .../admin/categories/templates/category.html | 6 +-- 10 files changed, 109 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/rave/blob/0b2f9a16/bower.json ---------------------------------------------------------------------- diff --git a/bower.json b/bower.json index dad944d..17b79d0 100644 --- a/bower.json +++ b/bower.json @@ -29,7 +29,8 @@ "jquery": "^1.0", "angular-cookies": "~1.2.21", "angular-resource": "~1.2.21", - "angular-cookie": "~4.0.2" + "angular-cookie": "~4.0.2", + "angular-sanitize": "~1.2.22" }, "devDependencies": { "angular-mocks": "~1.2.20", @@ -39,6 +40,6 @@ "moment": "~2.8.0" }, "resolutions": { - "angular": "1.2.21" + "angular": "~1.2.20" } } http://git-wip-us.apache.org/repos/asf/rave/blob/0b2f9a16/rave-portal-ng/src/config/requirejs.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/config/requirejs.js b/rave-portal-ng/src/config/requirejs.js index 27577f4..99f7b64 100644 --- a/rave-portal-ng/src/config/requirejs.js +++ b/rave-portal-ng/src/config/requirejs.js @@ -12,6 +12,7 @@ require.config({ localStorageDB: 'localStorageDB/localstoragedb', angularResource: 'angular-resource/angular-resource', angularCookie: 'angular-cookie/angular-cookie', + angularSanitize: 'angular-sanitize/angular-sanitize', moment: 'moment' }, @@ -38,6 +39,9 @@ require.config({ angularResource: { deps: ['angular'] }, + angularSanitize: { + deps: ['angular'] + }, localStorageDB: { exports: 'localStorageDB' } http://git-wip-us.apache.org/repos/asf/rave/blob/0b2f9a16/rave-portal-ng/src/subapps/admin/categories/categories.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/categories/categories.js b/rave-portal-ng/src/subapps/admin/categories/categories.js index a63af3b..0a35ee7 100644 --- a/rave-portal-ng/src/subapps/admin/categories/categories.js +++ b/rave-portal-ng/src/subapps/admin/categories/categories.js @@ -9,16 +9,21 @@ define(function(require) { // Our module dependencies require('uiRouter'); + require('angularSanitize'); // The array of names for Angular's dependency injection var categoriesDependencies = [ - 'ui.router' + 'ui.router', + 'ngSanitize' ]; // Create our module var categories = ng.module('admin.categories', categoriesDependencies); // Register the providers for categories + var categoriesMessages = require('./services/categories-messages'); + categories.factory('categoriesMessages', categoriesMessages); + var categoriesResource = require('./resources/categories'); categories.factory('categoriesResource', categoriesResource); http://git-wip-us.apache.org/repos/asf/rave/blob/0b2f9a16/rave-portal-ng/src/subapps/admin/categories/controllers/categories.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/categories/controllers/categories.js b/rave-portal-ng/src/subapps/admin/categories/controllers/categories.js index a0b1281..2c91c4c 100644 --- a/rave-portal-ng/src/subapps/admin/categories/controllers/categories.js +++ b/rave-portal-ng/src/subapps/admin/categories/controllers/categories.js @@ -5,8 +5,12 @@ */ define(function(require) { - return ['$scope', 'categoriesResource', '$stateParams', '$rootScope', 'categoriesList', - function($scope, categoriesResource, $stateParams, $rootScope, categoriesList) { + return ['$scope', 'categoriesResource', '$stateParams', '$rootScope', 'categoriesList', 'categoriesMessages', + function($scope, categoriesResource, $stateParams, $rootScope, categoriesList, categoriesMessages) { $scope.categories = categoriesList; + + $scope.showMessage = categoriesMessages.showMessage; + $scope.messageHtml = categoriesMessages.messageHtml; + $scope.messageClassName = categoriesMessages.messageClassName; }]; }); http://git-wip-us.apache.org/repos/asf/rave/blob/0b2f9a16/rave-portal-ng/src/subapps/admin/categories/controllers/category.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/categories/controllers/category.js b/rave-portal-ng/src/subapps/admin/categories/controllers/category.js index b6e3b38..12e6b85 100644 --- a/rave-portal-ng/src/subapps/admin/categories/controllers/category.js +++ b/rave-portal-ng/src/subapps/admin/categories/controllers/category.js @@ -7,8 +7,8 @@ define(function(require) { var $ = require('jquery'); - return ['$scope', 'categoryResource', '$state', '$stateParams', 'category', - function($scope, categoryResource, $state, $stateParams, category) { + return ['$scope', 'categoryResource', '$state', '$stateParams', 'category', 'categoriesMessages', + function($scope, categoryResource, $state, $stateParams, category, categoriesMessages) { $scope.category = category; $scope.category.$promise.then(function(res) { @@ -16,6 +16,11 @@ define(function(require) { }).catch(function(err) { }); + // Whether or not the user has updated the text of the category + $scope.isUpdated = function() { + return $scope.text !== $scope.category.text; + }; + // Remove the category from the list of categories in the scope this.removeFromList = function() { var oldCategory = _.findWhere($scope.categories, {ID:+$stateParams.id}); @@ -34,14 +39,23 @@ define(function(require) { var ctrl = this; $scope.onSave = function() { + var savedResource = categoryResource.update({ id: $stateParams.id, text: $scope.text }); savedResource.$promise - .then(ctrl.updateList) - .catch(function() { + .then(function(updatedResource) { + categoriesMessages.updateMessage({ + newText: $scope.text, + oldText: $scope.category.text + }); + ctrl.updateList(updatedResource); + $state.transitionTo('portal.admin.categories'); + }) + .catch(function(err) { + categoriesMessages.errorMessage(err.data); }); }; @@ -52,11 +66,13 @@ define(function(require) { deletedResource.$promise .then(function() { + categoriesMessages.deleteMessage($scope.category.text); ctrl.removeFromList(); $('#confirm-modal').modal('hide'); $state.transitionTo('portal.admin.categories'); }) - .catch(function() { + .catch(function(err) { + categoriesMessages.errorMessage(err.data); }); }; }]; http://git-wip-us.apache.org/repos/asf/rave/blob/0b2f9a16/rave-portal-ng/src/subapps/admin/categories/controllers/create.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/categories/controllers/create.js b/rave-portal-ng/src/subapps/admin/categories/controllers/create.js index cfb1c7d..c9a298a 100644 --- a/rave-portal-ng/src/subapps/admin/categories/controllers/create.js +++ b/rave-portal-ng/src/subapps/admin/categories/controllers/create.js @@ -5,8 +5,8 @@ */ define(function(require) { - return ['$scope', 'categoriesResource', - function($scope, categoriesResource) { + return ['$scope', 'categoriesResource', 'categoriesMessages', + function($scope, categoriesResource, categoriesMessages) { $scope.onCreate = function() { var newResource = categoriesResource.save({ text: $scope.newText @@ -14,9 +14,12 @@ define(function(require) { newResource.$promise .then(function() { + categoriesMessages.createMessage($scope.newText); + $scope.newText = ''; $scope.categories.push(newResource); }) - .catch(function() { + .catch(function(err) { + categoriesMessages.errorMessage(err.data); }); }; }]; http://git-wip-us.apache.org/repos/asf/rave/blob/0b2f9a16/rave-portal-ng/src/subapps/admin/categories/routes.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/categories/routes.js b/rave-portal-ng/src/subapps/admin/categories/routes.js index a716076..7f007d3 100644 --- a/rave-portal-ng/src/subapps/admin/categories/routes.js +++ b/rave-portal-ng/src/subapps/admin/categories/routes.js @@ -20,6 +20,9 @@ define(function(require) { templateUrl: '/subapps/admin/categories/templates/categories.html', authenticate: true, controller: categoriesCtrl, + onExit: ['categoriesMessages', function(categoriesMessages) { + categoriesMessages.clearMessage(); + }], resolve: { categoriesList: ['categoriesResource', function(categoriesResource) { @@ -34,6 +37,9 @@ define(function(require) { templateUrl: '/subapps/admin/categories/templates/category.html', authenticate: true, controller: categoryCtrl, + onEnter: ['categoriesMessages', function(categoriesMessages) { + categoriesMessages.clearMessage(); + }], resolve: { category: ['categoryResource', '$stateParams', function(categoryResource, $stateParams) { http://git-wip-us.apache.org/repos/asf/rave/blob/0b2f9a16/rave-portal-ng/src/subapps/admin/categories/services/categories-messages.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/categories/services/categories-messages.js b/rave-portal-ng/src/subapps/admin/categories/services/categories-messages.js new file mode 100644 index 0000000..812b658 --- /dev/null +++ b/rave-portal-ng/src/subapps/admin/categories/services/categories-messages.js @@ -0,0 +1,53 @@ +/* + * categoriesMessages + * A service to show messages on the categories page. Because other + * states can cause messages to display (namely the category state), + * we need a service that's shared between the two. + * + */ + +define(function() { + return function() { + var html = ''; + var className = ''; + + return { + createMessage: function(createdText) { + html = 'Created category "<b>' + createdText + '</b>."'; + className = 'alert-success'; + }, + + updateMessage: function(updateData) { + html = 'Renamed "<b>' + updateData.oldText + '</b>" to "<b>' + updateData.newText + '</b>."'; + className = 'alert-success'; + }, + + deleteMessage: function(deletedText) { + html = 'Deleted "<b>' + deletedText + '</b>".'; + className = 'alert-success'; + }, + + errorMessage: function(error) { + html = error; + className = 'alert-danger'; + }, + + clearMessage: function() { + html = null; + className = ''; + }, + + showMessage: function() { + return html ? true : false; + }, + + messageHtml: function() { + return html; + }, + + messageClassName: function() { + return className; + } + }; + }; +}); http://git-wip-us.apache.org/repos/asf/rave/blob/0b2f9a16/rave-portal-ng/src/subapps/admin/categories/templates/categories.html ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/categories/templates/categories.html b/rave-portal-ng/src/subapps/admin/categories/templates/categories.html index 40f5bad..37223d8 100644 --- a/rave-portal-ng/src/subapps/admin/categories/templates/categories.html +++ b/rave-portal-ng/src/subapps/admin/categories/templates/categories.html @@ -1,5 +1,6 @@ <article ui-view> <h2>Categories</h2> + <div class="alert" ng-class="messageClassName()" ng-bind-html="messageHtml()" ng-show="showMessage()"></div> <table id="categoryList" class="table table-striped table-bordered table-condensed"> <thead> <tr> http://git-wip-us.apache.org/repos/asf/rave/blob/0b2f9a16/rave-portal-ng/src/subapps/admin/categories/templates/category.html ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/categories/templates/category.html b/rave-portal-ng/src/subapps/admin/categories/templates/category.html index b179ad6..b051fd4 100644 --- a/rave-portal-ng/src/subapps/admin/categories/templates/category.html +++ b/rave-portal-ng/src/subapps/admin/categories/templates/category.html @@ -2,13 +2,13 @@ <a ui-sref="portal.admin.categories">« Back to Categories</a> <h2>Category â "{{ category.text }}"</h2> <div class="well"> - <section> + <form> <label for="text">Name: </label> <input id="text" name="text" type="text" ng-model="text"> <br><br> - <button class="btn" ng-click="onSave()">Save</button> + <button class="btn btn-primary" ng-click="onSave()" ng-disabled="!isUpdated()">Save</button> <button class="btn btn-danger" data-toggle="modal" data-target="#confirm-modal">Delete</button> - </section> + </form> </div> <div id="confirm-modal" class="modal hide" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-body">
