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

Reply via email to