diff --git a/gui/app/components/customize/user-admin.js b/gui/app/components/customize/user-admin.js index 2e3f5151..376e423c 100644 --- a/gui/app/components/customize/user-admin.js +++ b/gui/app/components/customize/user-admin.js @@ -9,9 +9,8 @@ // // https://documize.com -import { debounce } from '@ember/runloop'; - import Component from '@ember/component'; +import { schedule, debounce } from '@ember/runloop'; import AuthProvider from '../../mixins/auth'; import DropdownMixin from '../../mixins/dropdown'; @@ -24,6 +23,7 @@ export default Component.extend(AuthProvider, DropdownMixin, { filteredUsers: [], selectedUsers: [], hasSelectedUsers: false, + showDeleteDialog: false, didReceiveAttrs() { this._super(...arguments); @@ -39,11 +39,6 @@ export default Component.extend(AuthProvider, DropdownMixin, { this.set('filteredUsers', users); }, - willDestroyElement() { - this._super(...arguments); - this.destroyDropdown(); - }, - onKeywordChange: function () { debounce(this, this.filterUsers, 350); }.observes('filter'), @@ -101,76 +96,45 @@ export default Component.extend(AuthProvider, DropdownMixin, { this.attrs.onSave(user); }, - edit(id) { - let self = this; - + onShowEdit(id) { let user = this.users.findBy("id", id); let userCopy = user.getProperties('id', 'created', 'revised', 'firstname', 'lastname', 'email', 'initials', 'active', 'editor', 'admin', 'viewUsers', 'accounts'); + this.set('editUser', userCopy); this.set('password', { password: "", confirmation: "" }); - $(".edit-user-dialog").css("display", "block"); - $("input").removeClass("error"); - this.closeDropdown(); - - let dropOptions = Object.assign(this.get('dropDefaults'), { - target: $(".edit-button-" + id)[0], - content: $(".edit-user-dialog")[0], - classes: 'drop-theme-basic', - position: "bottom right", - remove: false}); - - let drop = new Drop(dropOptions); - self.set('dropdown', drop); - - drop.on('open', function () { - self.$("#edit-firstname").focus(); + $('#edit-user-modal').on('show.bs.modal', function(event) { // eslint-disable-line no-unused-vars + schedule('afterRender', () => { + $("#edit-firstname").focus(); + }); }); + + $('#edit-user-modal').modal('dispose'); + $('#edit-user-modal').modal({show: true}); }, - confirmDelete(id) { - let user = this.users.findBy("id", id); - this.set('deleteUser', user); - $(".delete-user-dialog").css("display", "block"); - - this.closeDropdown(); - - let dropOptions = Object.assign(this.get('dropDefaults'), { - target: $(".delete-button-" + id)[0], - content: $(".delete-user-dialog")[0], - classes: 'drop-theme-basic', - position: "bottom right", - remove: false}); - - let drop = new Drop(dropOptions); - this.set('dropdown', drop); - }, - - cancel() { - this.closeDropdown(); - }, - - save() { + onUpdate() { let user = this.get('editUser'); let password = this.get('password'); if (is.empty(user.firstname)) { - $("#edit-firstname").addClass("error").focus(); + $("#edit-firstname").addClass("is-invalid").focus(); return; } if (is.empty(user.lastname)) { - $("#edit-lastname").addClass("error").focus(); + $("#edit-lastname").addClass("is-invalid").focus(); return; } - if (is.empty(user.email)) { - $("#edit-email").addClass("error").focus(); + if (is.empty(user.email) || is.not.email(user.email)) { + $("#edit-email").addClass("is-invalid").focus(); return; } - this.closeDropdown(); + $('#edit-user-modal').modal('hide'); + $('#edit-user-modal').modal('dispose'); this.attrs.onSave(user); @@ -180,12 +144,19 @@ export default Component.extend(AuthProvider, DropdownMixin, { } }, - delete() { - this.closeDropdown(); + onShowDelete(id) { + this.set('deleteUser', this.users.findBy("id", id)); + this.set('showDeleteDialog', true); + }, + + onDelete() { + this.set('showDeleteDialog', false); this.set('selectedUsers', []); this.set('hasSelectedUsers', false); this.attrs.onDelete(this.get('deleteUser.id')); + + return true; }, onBulkDelete() { diff --git a/gui/app/components/customize/user-settings.js b/gui/app/components/customize/user-settings.js index 100e59dd..17d1f003 100644 --- a/gui/app/components/customize/user-settings.js +++ b/gui/app/components/customize/user-settings.js @@ -10,7 +10,6 @@ // https://documize.com import { empty, and } from '@ember/object/computed'; - import Component from '@ember/component'; import { isEmpty } from '@ember/utils'; import { get, set } from '@ember/object'; diff --git a/gui/app/pods/customize/users/controller.js b/gui/app/pods/customize/users/controller.js index 9c4560c9..ee40fa83 100644 --- a/gui/app/pods/customize/users/controller.js +++ b/gui/app/pods/customize/users/controller.js @@ -10,12 +10,10 @@ // https://documize.com import { set } from '@ember/object'; - import { inject as service } from '@ember/service'; import Controller from '@ember/controller'; -import NotifierMixin from '../../../mixins/notifier'; -export default Controller.extend(NotifierMixin, { +export default Controller.extend({ userService: service('user'), newUser: { firstname: "", lastname: "", email: "", active: true }, @@ -26,7 +24,6 @@ export default Controller.extend(NotifierMixin, { return this.get('userService') .add(this.get('newUser')) .then((user) => { - this.showNotification('Added'); this.get('model').pushObject(user); }) .catch(function (error) { @@ -38,8 +35,6 @@ export default Controller.extend(NotifierMixin, { onDelete(userId) { let self = this; this.get('userService').remove(userId).then(function () { - self.showNotification('Deleted'); - self.get('userService').getComplete().then(function (users) { self.set('model', users); }); @@ -49,7 +44,6 @@ export default Controller.extend(NotifierMixin, { onSave(user) { let self = this; this.get('userService').save(user).then(function () { - self.showNotification('Saved'); self.get('userService').getComplete().then(function (users) { self.set('model', users); @@ -59,7 +53,6 @@ export default Controller.extend(NotifierMixin, { onPassword(user, password) { this.get('userService').updatePassword(user.id, password); - this.showNotification('Password changed'); } } }); diff --git a/gui/app/pods/customize/users/template.hbs b/gui/app/pods/customize/users/template.hbs index 398170d1..f5ff22c4 100644 --- a/gui/app/pods/customize/users/template.hbs +++ b/gui/app/pods/customize/users/template.hbs @@ -1,3 +1,12 @@ +