Adds create user page to users admin.
Project: http://git-wip-us.apache.org/repos/asf/rave/repo Commit: http://git-wip-us.apache.org/repos/asf/rave/commit/e4eb840b Tree: http://git-wip-us.apache.org/repos/asf/rave/tree/e4eb840b Diff: http://git-wip-us.apache.org/repos/asf/rave/diff/e4eb840b Branch: refs/heads/angular Commit: e4eb840bdc5694f9c463b5831a2514ff9cebb635 Parents: c95138c Author: Jmeas <[email protected]> Authored: Wed Aug 20 14:48:38 2014 -0400 Committer: Jmeas <[email protected]> Committed: Fri Aug 22 12:33:19 2014 -0400 ---------------------------------------------------------------------- .../create-account/create-account-util.js | 1 + rave-portal-ng/src/less/core/core.less | 15 +++ .../admin/users/controllers/create-user.js | 27 ++++ .../admin/users/controllers/search-form.js | 1 + .../src/subapps/admin/users/routes.js | 9 ++ .../admin/users/services/users-messages.js | 5 + .../admin/users/templates/create-user.html | 131 +++++++++++++++++++ .../subapps/admin/users/templates/users.html | 4 +- rave-portal-ng/src/subapps/admin/users/users.js | 1 + 9 files changed, 192 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/rave/blob/e4eb840b/rave-portal-ng/mock-api/modules/authentication/create-account/create-account-util.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/mock-api/modules/authentication/create-account/create-account-util.js b/rave-portal-ng/mock-api/modules/authentication/create-account/create-account-util.js index ff574ea..98cdb5b 100644 --- a/rave-portal-ng/mock-api/modules/authentication/create-account/create-account-util.js +++ b/rave-portal-ng/mock-api/modules/authentication/create-account/create-account-util.js @@ -44,6 +44,7 @@ define(function(require) { relationshipStatus: (data.hasOwnProperty('relationshipStatus') ? data.relationshipStatus: ''), description: (data.hasOwnProperty('description') ? data.description: ''), locked: false, + sessionToken: '', enabled: true, expired: false, authorities: ['ROLE_USER'] http://git-wip-us.apache.org/repos/asf/rave/blob/e4eb840b/rave-portal-ng/src/less/core/core.less ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/less/core/core.less b/rave-portal-ng/src/less/core/core.less index 57462a0..1f43f74 100644 --- a/rave-portal-ng/src/less/core/core.less +++ b/rave-portal-ng/src/less/core/core.less @@ -38,6 +38,21 @@ cursor: pointer; } +/* Users admin */ +.paginationHeading { + padding: 20px 0; + + .pagination { + padding: 0; + margin: 0; + float: left; + } + + fieldset { + float: right; + } +} + /* Sticky footer */ * { margin: 0; http://git-wip-us.apache.org/repos/asf/rave/blob/e4eb840b/rave-portal-ng/src/subapps/admin/users/controllers/create-user.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/users/controllers/create-user.js b/rave-portal-ng/src/subapps/admin/users/controllers/create-user.js new file mode 100644 index 0000000..4f228fb --- /dev/null +++ b/rave-portal-ng/src/subapps/admin/users/controllers/create-user.js @@ -0,0 +1,27 @@ +/* + * createAccountController + * Passes our form off to the createAccountApi when the form is submitted + * + */ + +define(function(require) { + return ['$scope', 'createAccountApi', 'usersMessages', '$state', + function($scope, createAccountApi, usersMessages, $state) { + + // We call this method when they submit the form. + $scope.submit = function(accountInfo) { + + createAccountApi.createAccount(accountInfo) + + .then(function(res) { + usersMessages.createMessage(accountInfo.username); + $state.transitionTo('portal.admin.users'); + }) + + .catch(function(res) { + $scope.error = res.data.message; + }); + }; + } + ]; +}); http://git-wip-us.apache.org/repos/asf/rave/blob/e4eb840b/rave-portal-ng/src/subapps/admin/users/controllers/search-form.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/users/controllers/search-form.js b/rave-portal-ng/src/subapps/admin/users/controllers/search-form.js index 3aa4e90..81c78de 100644 --- a/rave-portal-ng/src/subapps/admin/users/controllers/search-form.js +++ b/rave-portal-ng/src/subapps/admin/users/controllers/search-form.js @@ -52,6 +52,7 @@ define(function(require) { usersList.$promise .then(function(response) { + $scope.filter = ''; $scope.users = response.data; var usersMeta = usersList.metadata; http://git-wip-us.apache.org/repos/asf/rave/blob/e4eb840b/rave-portal-ng/src/subapps/admin/users/routes.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/users/routes.js b/rave-portal-ng/src/subapps/admin/users/routes.js index d9e0f50..b87dbdb 100644 --- a/rave-portal-ng/src/subapps/admin/users/routes.js +++ b/rave-portal-ng/src/subapps/admin/users/routes.js @@ -9,6 +9,7 @@ define(function(require) { var usersCtrl = require('./controllers/users'); var userCtrl = require('./controllers/user'); + var createUserCtrl = require('./controllers/create-user'); return ['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { @@ -45,6 +46,14 @@ define(function(require) { return userResource.get({id: $stateParams.id}); }] } + }) + + // Create a new account + .state('portal.admin.users.create', { + url: '/users/create-user', + templateUrl: '/subapps/admin/users/templates/create-user.html', + authenticate: true, + controller: createUserCtrl }); } ]; http://git-wip-us.apache.org/repos/asf/rave/blob/e4eb840b/rave-portal-ng/src/subapps/admin/users/services/users-messages.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/users/services/users-messages.js b/rave-portal-ng/src/subapps/admin/users/services/users-messages.js index f5f8cef..c228779 100644 --- a/rave-portal-ng/src/subapps/admin/users/services/users-messages.js +++ b/rave-portal-ng/src/subapps/admin/users/services/users-messages.js @@ -12,6 +12,11 @@ define(function() { var className = ''; return { + createMessage: function(username) { + html = 'Created user "<b>' + username + '</b>"'; + className = 'alert-success'; + }, + updateMessage: function(username) { html = 'Updated user "<b>' + username + '</b>"'; className = 'alert-success'; http://git-wip-us.apache.org/repos/asf/rave/blob/e4eb840b/rave-portal-ng/src/subapps/admin/users/templates/create-user.html ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/users/templates/create-user.html b/rave-portal-ng/src/subapps/admin/users/templates/create-user.html new file mode 100644 index 0000000..61f4244 --- /dev/null +++ b/rave-portal-ng/src/subapps/admin/users/templates/create-user.html @@ -0,0 +1,131 @@ +<div class="row-fluid"> + <div class="span10 offset1"> + <a ui-sref="portal.admin.users">« Back to users</a> + <h1>Create New User</h1> + <form class="form-horizontal well create-account-form" name="createAccountForm" ng-submit="submit(accountInfo)"> + <h2> + Account Information + </h2> + <div class="alert"> + Fields marked with * are required. + </div> + <fieldset> + <div class="control-group" ng-class="{error: submitted && createAccountForm.username.$error.required}"> + <label class="control-label" for="username">*Username:</label> + <div class="controls"> + <input id="username" name="username" autofocus="autofocus" autocorrect="off" required autocapitalize="off" type="text" class="valid" ng-model="accountInfo.username"> + <span id="inline-help" ng-show="submitted && createAccountForm.username.$error.required"> + A username is required. + </span> + </div> + </div> + <div class="control-group" ng-class="{error: submitted && createAccountForm.accountPassword.$error.required}"> + <label class="control-label" for="accountPassword">*Password:</label> + <div class="controls"> + <input id="accountPassword" name="accountPassword" required type="password" ng-model="accountInfo.password"> + <span id="inline-help" ng-show="submitted && createAccountForm.accountPassword.$error.required"> + A password is required. + </span> + </div> + </div> + <div class="control-group" ng-class="{error: submitted && createAccountForm.confirmPassword.$error.required || createAccountForm.confirmPassword.$error.pwmatch}"> + <label class="control-label" for="confirm-password">*Confirm password:</label> + <div class="controls"> + <input id="confirm-password" name="confirmPassword" required type="password" ng-model="accountInfo.confirmPassword" pw-check="accountPassword"> + <span id="inline-help" ng-show="submitted && createAccountForm.confirmPassword.$error.required"> + Please confirm your password. + </span> + <span id="inline-help" ng-show="createAccountForm.confirmPassword.$error.pwmatch"> + The passwords don't match. + </span> + </div> + </div> + <div class="control-group" ng-class="{error: submitted && createAccountForm.email.$error.required}"> + <label class="control-label" for="email">*Email address:</label> + <div class="controls"> + <input type="email" id="email" name="email" required ng-model="accountInfo.email"> + <span id="inline-help" ng-show="submitted && createAccountForm.email.$error.required"> + An email is required. + </span> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="open-id">OpenID URL:</label> + <div class="controls"> + <input id="open-id" name="openId" type="text" ng-model="accountInfo.openIdUrl"> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="page-layout">Default page layout:</label> + <div class="controls"> + <select id="page-layout" name="default-page-layout" ng-model="accountInfo.defaultPageLayout"> + <option id="columns_1" value="columns_1">One Column</option> + <option id="columns_2" value="columns_2">Two Columns</option> + <option id="columns_2wn" value="columns_2wn">Two Columns (wide/narrow)</option> + <option id="columns_3" value="columns_3">Three Columns</option> + <option id="columns_3nwn" value="columns_3nwn">Three Columns (narrow/wide/narrow)</option> + <option id="columns_4" value="columns_4">Four Columns</option> + <option id="columns_3nwn_1_bottom" value="columns_3nwn_1_bottom">Four Columns (narrow/wide/narrow/bottom)</option> + </select> + </div> + </div> + </fieldset> + <fieldset> + <div class="control-group"> + <div class="controls"></div> + </div> + </fieldset> + <h2>Personal Information</h2> + <div class="alert alert-info"> + Don't want to include personal information? Don't worry â it's all optional. + </div> + <fieldset> + <div class="control-group"> + <label class="control-label" for="first-name">First name:</label> + <div class="controls"> + <input id="first-name" name="first-name" type="text" ng-model="accountInfo.firstName"> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="last-name">Last name:</label> + <div class="controls"> + <input id="last-name" name="last-name" type="text" ng-model="accountInfo.lastName"> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="display-name">Display name:</label> + <div class="controls"> + <input id="display-name" name="display-name" type="text" ng-model="accountInfo.displayName"> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="status">Relationship status:</label> + <div class="controls"> + <select id="status" name="status" ng-model="accountInfo.relationshipStatus"> + <option id="single" value="Single" selected>Single</option> + <option id="committed" value="Committed">Committed</option> + <option id="married" value="Married">Married</option> + <option id="other" value="Other">Other</option> + </select> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="about-me">Describe yourself:</label> + <div class="controls"> + <textarea id="about-me" name="about-me" ng-model="accountInfo.aboutMe"></textarea> + </div> + </div> + </fieldset> + <fieldset> + <div class="control-group" ng-class="{error: invalid}"> + <button class="btn btn-primary" ng-click="submitted=true"> + Create Account + </button> + <span class="help-inline" ng-show="error"> + {{ error }} + </span> + </div> + </fieldset> + </form> + </div> +</div> http://git-wip-us.apache.org/repos/asf/rave/blob/e4eb840b/rave-portal-ng/src/subapps/admin/users/templates/users.html ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/users/templates/users.html b/rave-portal-ng/src/subapps/admin/users/templates/users.html index ea70910..2ef9b78 100644 --- a/rave-portal-ng/src/subapps/admin/users/templates/users.html +++ b/rave-portal-ng/src/subapps/admin/users/templates/users.html @@ -4,7 +4,7 @@ <h2> Showing {{ usersMeta.start }} - {{ usersMeta.end }} of {{ usersMeta.totalUsers }} results </h2> - <div class="searchHeading paginationHeading"> + <div class="searchHeading paginationHeading clearfix"> <div class="pagination"> <ul> <li ng-switch on="prevPageDisabled()" ng-class="prevPageDisabled()"> @@ -67,7 +67,7 @@ <fieldset> <legend>Add New User</legend> <br> - <button class="btn btn-primary" href="/portal/app/admin/adduser?referringPageId=1"><i class="icon-plus icon-white"></i> Add user</button> + <button class="btn btn-primary" ui-sref="portal.admin.users.create"><i class="icon-plus icon-white"></i> Add user</button> <br> </fieldset> </form> http://git-wip-us.apache.org/repos/asf/rave/blob/e4eb840b/rave-portal-ng/src/subapps/admin/users/users.js ---------------------------------------------------------------------- diff --git a/rave-portal-ng/src/subapps/admin/users/users.js b/rave-portal-ng/src/subapps/admin/users/users.js index 95e8a3c..a2320fb 100644 --- a/rave-portal-ng/src/subapps/admin/users/users.js +++ b/rave-portal-ng/src/subapps/admin/users/users.js @@ -24,6 +24,7 @@ define(function(require) { users.factory('userResource', require('./resources/user')); users.controller('usersCtrl', require('./controllers/users')); users.controller('userCtrl', require('./controllers/user')); + users.controller('createUserCtrl', require('./controllers/create-user')); users.controller('searchCtrl', require('./controllers/search-form')); // Register the routes
