From cb097f11a18f65de6b657b2b75e6c026c26e9719 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 25 May 2017 00:13:11 +0200 Subject: [PATCH] add save user and create user --- .../src/common/resources/users.resource.js | 37 +- .../src/views/users/user.controller.js | 31 +- .../users/views/users/users.controller.js | 34 +- .../src/views/users/views/users/users.html | 646 +++++++++--------- 4 files changed, 421 insertions(+), 327 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js index 66a292d516..158640cff0 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js @@ -100,7 +100,34 @@ "GetById", { id: userId })), "Failed to retrieve data for user " + userId); + } + function createUser(user) { + if (!user) { + throw "user not specified"; + } + + return umbRequestHelper.resourcePromise( + $http.post( + umbRequestHelper.getApiUrl( + "userApiBaseUrl", + "PostCreateUser"), + user), + "Failed to save user"); + } + + function saveUser(user) { + if (!user) { + throw "user not specified"; + } + + return umbRequestHelper.resourcePromise( + $http.post( + umbRequestHelper.getApiUrl( + "userApiBaseUrl", + "PostSaveUser"), + user), + "Failed to save user"); } function getUserGroup() { @@ -151,12 +178,14 @@ } var resource = { - getUser: getUser, - getUserGroup: getUserGroup, - getUserGroups: getUserGroups, disableUsers: disableUsers, enableUsers: enableUsers, - getPagedResults: getPagedResults + getPagedResults: getPagedResults, + getUser: getUser, + createUser: createUser, + saveUser: saveUser, + getUserGroup: getUserGroup, + getUserGroups: getUserGroups }; return resource; diff --git a/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js b/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js index c559994fb9..c69fe3ad6e 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js @@ -1,9 +1,10 @@ (function () { "use strict"; - function UserEditController($scope, $timeout, $location, usersResource, $routeParams) { + function UserEditController($scope, $timeout, $location, $routeParams, usersResource, contentEditingHelper, localizationService, notificationsService) { var vm = this; + var localizeSaving = localizationService.localize("general_saving"); vm.page = {}; vm.user = {}; @@ -18,6 +19,7 @@ vm.resetPassword = resetPassword; vm.getUserStateType = getUserStateType; vm.changeAvatar = changeAvatar; + vm.save = save; function init() { @@ -32,6 +34,33 @@ } + function save() { + + vm.page.saveButtonState = "busy"; + + contentEditingHelper.contentEditorPerformSave({ + statusMessage: localizeSaving, + saveMethod: usersResource.saveUser, + scope: $scope, + content: vm.user, + // We do not redirect on failure for users - this is because it is not possible to actually save a user + // when server side validation fails - as opposed to content where we are capable of saving the content + // item if server side validation fails + redirectOnFailure: false, + rebindCallback: function (orignal, saved) {} + }).then(function (saved) { + + vm.user = saved; + vm.page.saveButtonState = "success"; + + }, function (err) { + + vm.page.saveButtonState = "error"; + + }); + + } + function goToPage(ancestor) { $location.path(ancestor.path).search("subview", ancestor.subView); } diff --git a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.controller.js b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.controller.js index 10db1fb908..81cb3737e5 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.controller.js @@ -1,9 +1,10 @@ (function () { "use strict"; - function UsersController($scope, $timeout, $location, usersResource) { + function UsersController($scope, $timeout, $location, usersResource, localizationService, contentEditingHelper) { var vm = this; + var localizeSaving = localizationService.localize("general_saving"); vm.users = []; vm.userGroups = []; @@ -69,6 +70,7 @@ vm.areAllSelected = areAllSelected; vm.searchUsers = searchUsers; vm.setOrderByFilter = setOrderByFilter; + vm.createUser = createUser; function init() { @@ -206,6 +208,34 @@ getUsers(); } + function createUser() { + + vm.newUser.id = -1; + vm.newUser.parentId = -1; + vm.page.createButtonState = "busy"; + + contentEditingHelper.contentEditorPerformSave({ + statusMessage: localizeSaving, + saveMethod: usersResource.createUser, + scope: $scope, + content: vm.newUser, + // We do not redirect on failure for users - this is because it is not possible to actually save a user + // when server side validation fails - as opposed to content where we are capable of saving the content + // item if server side validation fails + redirectOnFailure: false, + rebindCallback: function (orignal, saved) {} + }).then(function (saved) { + + vm.page.createButtonState = "success"; + + }, function (err) { + + vm.page.createButtonState = "error"; + + }); + + } + // helpers function getUsers() { @@ -225,7 +255,7 @@ formatDates(vm.users); vm.loading = false; - + }); } diff --git a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html index e4b9532ec0..3571719d8e 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html +++ b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html @@ -1,353 +1,359 @@
- +
- -
- - + + + +
- - - - - + + + + + + + - - - - - - -