From d9d35a19441e73872f2dfb831a4abf2631274aea Mon Sep 17 00:00:00 2001 From: ykohata Date: Sat, 16 Jan 2016 01:15:30 +0900 Subject: [PATCH] [COR-523] Admin Tool does not make user's email active - Changed labels (Email, Active) - Added "Email Status" in detailed items - Fixed a bug that contents in the table is not refreshed after activation/deactivation --- src/app/users/constants.js | 4 ++++ src/app/users/user.js | 4 ++++ src/app/users/users.controller.js | 40 +++++++++++++++++++------------ src/app/users/users.html | 8 ++++--- src/app/users/users.service.js | 2 +- 5 files changed, 39 insertions(+), 19 deletions(-) diff --git a/src/app/users/constants.js b/src/app/users/constants.js index 8a06a53..7b58782 100644 --- a/src/app/users/constants.js +++ b/src/app/users/constants.js @@ -10,6 +10,10 @@ module.constant('users.Constants', { MSG_CLIPBOARD_COPIED: "Copied", + LABEL_EMAIL_STATUS_VERIFIED: "Verified", + + LABEL_EMAIL_STATUS_UNVERIFIED: "Unverified", + DICT_USER_STATUS: { 'A': 'Active', 'U': 'Unverified', diff --git a/src/app/users/user.js b/src/app/users/user.js index eb6f73c..9e42089 100644 --- a/src/app/users/user.js +++ b/src/app/users/user.js @@ -14,6 +14,10 @@ module.factory('User', ['$log', 'users.Constants', 'API_URL', User.prototype.statusDesc = function() { return $const.DICT_USER_STATUS[this.status]; }; + + User.prototype.emailStatusDesc = function() { + return !!this.emailActive ? $const.LABEL_EMAIL_STATUS_VERIFIED : $const.LABEL_EMAIL_STATUS_UNVERIFIED; + }; User.prototype.createdAtLabel = function() { return this.formatDate(this.createdAt); diff --git a/src/app/users/users.controller.js b/src/app/users/users.controller.js index 31e1e07..983e9e6 100644 --- a/src/app/users/users.controller.js +++ b/src/app/users/users.controller.js @@ -9,9 +9,16 @@ module.controller('users.UserSearchController', [ // footable angular.element(document).ready(function () { $('.footable').footable({ - addRowToggle: true + addRowToggle: true }); }); + + $scope.$on('users.TableDataUpdated', function(event){ + $timeout(function(){ + $('.footable').trigger('footable_redraw'); + }, 100); + }); + // auth $scope.authorized = function() { @@ -70,9 +77,7 @@ module.controller('users.UserSearchController', [ function(users) { $scope.users = users; $scope.formSearch.setLoading(false); - $timeout(function(){ - $('.footable').trigger('footable_redraw'); - }, 100); + $scope.$broadcast('users.TableDataUpdated'); }, function(error) { $alert.error(error.error, $scope); @@ -106,13 +111,18 @@ module.controller('users.UserSearchController', [ $alert.error('The user \'' + user.handle + '\' is invalid. Unable to activate it.', $scope); return; }; - if(window.confirm('Are you sure you want to activate user \'' + user.handle + '\'?')) { + + var confirmation = 'Are you sure you want to activate user \'' + user.handle + '\'?'; + if(!user.emailActive) { + confirmation += '\nEmail address is also verified by the operation. Please confirm it\'s valid.'; + } + if(window.confirm(confirmation)) { $scope.formSearch.setLoading(true); $userService.updateStatus(user.id, 'A').then( function(responseUser) { - user.active = responseUser.active; - user.status = responseUser.status; + angular.copy(responseUser, user); $scope.formSearch.setLoading(false); + $scope.$broadcast('users.TableDataUpdated'); }, function(error) { $alert.error(error.error, $scope); @@ -170,8 +180,8 @@ module.controller('users.UserSearchController', [ ]); module.controller('users.UserEditDialogController', [ - '$scope', '$modalInstance', 'UserService', 'Alert', 'user', - function ($scope, $modalInstance, $userService, $alert, user) { + '$scope', '$rootScope', '$modalInstance', 'UserService', 'Alert', 'user', + function ($scope, $rootScope, $modalInstance, $userService, $alert, user) { $scope.user = user; @@ -242,8 +252,8 @@ module.controller('users.UserEditDialogController', [ ]); module.controller('users.StatusUpdateDialogController', [ - '$scope', '$modalInstance', 'UserService', 'users.Constants', 'Alert', 'user', - function ($scope, $modalInstance, $userService, $const, $alert, user) { + '$scope', '$rootScope', '$modalInstance', 'UserService', 'users.Constants', 'Alert', 'user', + function ($scope, $rootScope, $modalInstance, $userService, $const, $alert, user) { $scope.form = { status : user.status, @@ -268,9 +278,9 @@ module.controller('users.StatusUpdateDialogController', [ $scope.form.setLoading(true); $userService.updateStatus(user.id, $scope.form.status, $scope.form.comment).then( function(responseUser) { - user.active = responseUser.active; - user.status = responseUser.status; + angular.copy(responseUser, user); $scope.form.setLoading(false); + $rootScope.$broadcast('users.TableDataUpdated'); $modalInstance.close(); }, function(error) { @@ -285,8 +295,8 @@ module.controller('users.StatusUpdateDialogController', [ ]); module.controller('users.StatusHistoryDialogController', [ - '$scope', '$modalInstance', 'UserService', 'users.Constants', 'Alert', 'user', - function ($scope, $modalInstance, $userService, $const, $alert, user) { + '$scope', '$rootScope', '$modalInstance', 'UserService', 'users.Constants', 'Alert', 'user', + function ($scope, $rootScope, $modalInstance, $userService, $const, $alert, user) { $scope.init = function() { $scope.achievements = []; diff --git a/src/app/users/users.html b/src/app/users/users.html index 67a4f81..808d746 100644 --- a/src/app/users/users.html +++ b/src/app/users/users.html @@ -60,13 +60,14 @@

Members

User ID Handle - Email + Primary Email Name - Status + User Status + Email Status Created at Modified at Activation Code - Active + User Active Action @@ -83,6 +84,7 @@

Members

+ {{user.emailStatusDesc()}} {{user.createdAtLabel()}} {{user.modifiedAtLabel()}} diff --git a/src/app/users/users.service.js b/src/app/users/users.service.js index f59390b..f5c6908 100644 --- a/src/app/users/users.service.js +++ b/src/app/users/users.service.js @@ -53,7 +53,7 @@ angular.module('supportAdminApp') var opts = options || {}; var query = ""; angular.forEach({ - "fields": opts.fields || "id,handle,email,active,status,credential,firstName,lastName,createdAt,modifiedAt", + "fields": opts.fields || "id,handle,email,active,emailActive,status,credential,firstName,lastName,createdAt,modifiedAt", "filter": opts.filter //"limit" : null, //"offset": null,