You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by vn...@apache.org on 2018/05/04 08:26:58 UTC

[04/21] guacamole-client git commit: GUACAMOLE-220: Migrate user management screen to new, common management button directive.

GUACAMOLE-220: Migrate user management screen to new, common management button directive.


Project: http://git-wip-us.apache.org/repos/asf/guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/guacamole-client/commit/0414cdd3
Tree: http://git-wip-us.apache.org/repos/asf/guacamole-client/tree/0414cdd3
Diff: http://git-wip-us.apache.org/repos/asf/guacamole-client/diff/0414cdd3

Branch: refs/heads/master
Commit: 0414cdd3edc4f5ba11900750ed26782e335de7b2
Parents: e045da1
Author: Michael Jumper <mj...@apache.org>
Authored: Tue May 1 09:53:26 2018 -0700
Committer: Michael Jumper <mj...@apache.org>
Committed: Tue May 1 17:20:32 2018 -0700

----------------------------------------------------------------------
 .../manage/controllers/manageUserController.js  | 105 +++++--------------
 .../webapp/app/manage/templates/manageUser.html |  13 +--
 2 files changed, 32 insertions(+), 86 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/0414cdd3/guacamole/src/main/webapp/app/manage/controllers/manageUserController.js
----------------------------------------------------------------------
diff --git a/guacamole/src/main/webapp/app/manage/controllers/manageUserController.js b/guacamole/src/main/webapp/app/manage/controllers/manageUserController.js
index 388e717..b1f4f2e 100644
--- a/guacamole/src/main/webapp/app/manage/controllers/manageUserController.js
+++ b/guacamole/src/main/webapp/app/manage/controllers/manageUserController.js
@@ -24,6 +24,7 @@ angular.module('manage').controller('manageUserController', ['$scope', '$injecto
         function manageUserController($scope, $injector) {
             
     // Required types
+    var Error                 = $injector.get('Error');
     var ManagementPermissions = $injector.get('ManagementPermissions');
     var PageDefinition        = $injector.get('PageDefinition');
     var PermissionFlagSet     = $injector.get('PermissionFlagSet');
@@ -36,7 +37,6 @@ angular.module('manage').controller('manageUserController', ['$scope', '$injecto
     var $q                       = $injector.get('$q');
     var authenticationService    = $injector.get('authenticationService');
     var dataSourceService        = $injector.get('dataSourceService');
-    var guacNotification         = $injector.get('guacNotification');
     var permissionService        = $injector.get('permissionService');
     var requestService           = $injector.get('requestService');
     var schemaService            = $injector.get('schemaService');
@@ -44,18 +44,6 @@ angular.module('manage').controller('manageUserController', ['$scope', '$injecto
     var userService              = $injector.get('userService');
 
     /**
-     * An action to be provided along with the object sent to showStatus which
-     * closes the currently-shown status dialog.
-     */
-    var ACKNOWLEDGE_ACTION = {
-        name        : "MANAGE_USER.ACTION_ACKNOWLEDGE",
-        // Handle action
-        callback    : function acknowledgeCallback() {
-            guacNotification.showStatus(false);
-        }
-    };
-
-    /**
      * The identifiers of all data sources currently available to the
      * authenticated user.
      *
@@ -409,9 +397,9 @@ angular.module('manage').controller('manageUserController', ['$scope', '$injecto
     }, requestService.WARN);
 
     /**
-     * Cancels all pending edits, returning to the management page.
+     * Cancels all pending edits, returning to the main list of users.
      */
-    $scope.cancel = function cancel() {
+    $scope.returnToUserList = function returnToUserList() {
         $location.url('/settings/users');
     };
 
@@ -424,21 +412,23 @@ angular.module('manage').controller('manageUserController', ['$scope', '$injecto
     };
             
     /**
-     * Saves the user, updating the existing user only.
+     * Saves the current user, creating a new user or updating the existing
+     * user depending on context, returning a promise which is resolved if the
+     * save operation succeeds and rejected if the save operation fails.
+     *
+     * @returns {Promise}
+     *     A promise which is resolved if the save operation succeeds and is
+     *     rejected with an {@link Error} if the save operation fails.
      */
     $scope.saveUser = function saveUser() {
 
         // Verify passwords match
         if ($scope.passwordMatch !== $scope.user.password) {
-            guacNotification.showStatus({
-                'className'  : 'error',
-                'title'      : 'MANAGE_USER.DIALOG_HEADER_ERROR',
-                'text'       : {
+            return $q.reject(new Error({
+                translatableMessage : {
                     key : 'MANAGE_USER.ERROR_PASSWORD_MISMATCH'
-                },
-                'actions'    : [ ACKNOWLEDGE_ACTION ]
-            });
-            return;
+                }
+            }));
         }
 
         // Save or create the user, depending on whether the user exists
@@ -448,7 +438,7 @@ angular.module('manage').controller('manageUserController', ['$scope', '$injecto
         else
             saveUserPromise = userService.createUser($scope.dataSource, $scope.user);
 
-        saveUserPromise.then(function savedUser() {
+        return saveUserPromise.then(function savedUser() {
 
             // Move permission flags if username differs from marker
             if ($scope.selfUsername !== $scope.user.username) {
@@ -468,70 +458,25 @@ angular.module('manage').controller('manageUserController', ['$scope', '$injecto
             }
 
             // Upon success, save any changed permissions
-            permissionService.patchPermissions($scope.dataSource, $scope.user.username, $scope.permissionsAdded, $scope.permissionsRemoved)
+            return permissionService.patchPermissions($scope.dataSource, $scope.user.username, $scope.permissionsAdded, $scope.permissionsRemoved)
             .then(function patchedUserPermissions() {
                 $location.url('/settings/users');
-            }, guacNotification.SHOW_REQUEST_ERROR);
+            });
 
-        }, guacNotification.SHOW_REQUEST_ERROR);
+        });
 
     };
     
     /**
-     * An action to be provided along with the object sent to showStatus which
-     * immediately deletes the current user.
-     */
-    var DELETE_ACTION = {
-        name        : "MANAGE_USER.ACTION_DELETE",
-        className   : "danger",
-        // Handle action
-        callback    : function deleteCallback() {
-            deleteUserImmediately();
-            guacNotification.showStatus(false);
-        }
-    };
-
-    /**
-     * An action to be provided along with the object sent to showStatus which
-     * closes the currently-shown status dialog.
-     */
-    var CANCEL_ACTION = {
-        name        : "MANAGE_USER.ACTION_CANCEL",
-        // Handle action
-        callback    : function cancelCallback() {
-            guacNotification.showStatus(false);
-        }
-    };
-
-    /**
-     * Immediately deletes the current user, without prompting the user for
-     * confirmation.
-     */
-    var deleteUserImmediately = function deleteUserImmediately() {
-
-        // Delete the user 
-        userService.deleteUser($scope.dataSource, $scope.user)
-        .then(function deletedUser() {
-            $location.path('/settings/users');
-        }, guacNotification.SHOW_REQUEST_ERROR);
-
-    };
-
-    /**
-     * Deletes the user, prompting the user first to confirm that deletion is
-     * desired.
+     * Deletes the current user, returning a promise which is resolved if the
+     * delete operation succeeds and rejected if the delete operation fails.
+     *
+     * @returns {Promise}
+     *     A promise which is resolved if the delete operation succeeds and is
+     *     rejected with an {@link Error} if the delete operation fails.
      */
     $scope.deleteUser = function deleteUser() {
-
-        // Confirm deletion request
-        guacNotification.showStatus({
-            'title'      : 'MANAGE_USER.DIALOG_HEADER_CONFIRM_DELETE',
-            'text'       : {
-                key : 'MANAGE_USER.TEXT_CONFIRM_DELETE'
-            },
-            'actions'    : [ DELETE_ACTION, CANCEL_ACTION]
-        });
-
+        return userService.deleteUser($scope.dataSource, $scope.user);
     };
 
 }]);

http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/0414cdd3/guacamole/src/main/webapp/app/manage/templates/manageUser.html
----------------------------------------------------------------------
diff --git a/guacamole/src/main/webapp/app/manage/templates/manageUser.html b/guacamole/src/main/webapp/app/manage/templates/manageUser.html
index 24db74e..02b3ddc 100644
--- a/guacamole/src/main/webapp/app/manage/templates/manageUser.html
+++ b/guacamole/src/main/webapp/app/manage/templates/manageUser.html
@@ -63,12 +63,13 @@
         </connection-permission-editor>
 
         <!-- Form action buttons -->
-        <div class="action-buttons">
-            <button ng-show="managementPermissions.canSaveObject" ng-click="saveUser()">{{'MANAGE_USER.ACTION_SAVE' | translate}}</button>
-            <button ng-show="managementPermissions.canCloneObject" ng-click="cloneUser()">{{'MANAGE_USER.ACTION_CLONE' | translate}}</button>
-            <button ng-click="cancel()">{{'MANAGE_USER.ACTION_CANCEL' | translate}}</button>
-            <button ng-show="managementPermissions.canDeleteObject" ng-click="deleteUser()" class="danger">{{'MANAGE_USER.ACTION_DELETE' | translate}}</button>
-        </div>
+        <management-buttons namespace="'MANAGE_USER'"
+              permissions="managementPermissions"
+              save="saveUser()"
+              delete="deleteUser()"
+              clone="cloneUser()"
+              return="returnToUserList()">
+        </management-buttons>
 
     </div>