diff --git a/app/app/components/user-settings.js b/app/app/components/user-settings.js new file mode 100644 index 00000000..eadd980b --- /dev/null +++ b/app/app/components/user-settings.js @@ -0,0 +1,70 @@ +import Ember from 'ember'; + +const { + isPresent, + isEmpty, + computed, + set, + get +} = Ember; + +export default Ember.Component.extend({ + newUser: { firstname: "", lastname: "", email: "", active: true }, + userFirstnameError: computed('firstnameError', 'newUser.firstname', { + get() { + let error = get(this, 'firstnameError'); + let firstname = get(this, 'newUser.firstname'); + if (isPresent(error) && isEmpty(firstname)) { + return `error`; + } + + return; + } + }), + userLastnameError: computed('lastnameError', 'newUser.lastname', { + get() { + let error = get(this, 'lastnameError'); + let lastname = get(this, 'newUser.lastname'); + if (isPresent(error) && isEmpty(lastname)) { + return `error`; + } + + return; + } + }), + userEmailError: computed('emailError', 'newUser.email', { + get() { + let error = get(this, 'emailError'); + let email = get(this, 'newUser.email'); + if (isPresent(error)) { + return `error`; + } + + return; + } + }), + + actions: { + add() { + if (isEmpty(this.newUser.firstname)) { + set(this, 'firstnameError', 'error'); + return $("#newUserFirstname").focus(); + } + if (isEmpty(this.newUser.lastname)) { + set(this, 'lastnameError', 'error'); + return $("#newUserLastname").focus(); + } + if (isEmpty(this.newUser.email) || is.not.email(this.newUser.email)) { + set(this, 'emailError', 'error'); + return $("#newUserEmail").focus(); + } + + let user = get(this, 'newUser'); + + get(this, 'add')(user).then(() => { + this.set('newUser', { firstname: "", lastname: "", email: "", active: true }); + $("#newUserFirstname").focus(); + }); + } + } +}); diff --git a/app/app/pods/customize/general/controller.js b/app/app/pods/customize/general/controller.js index af81a271..a4e7701e 100644 --- a/app/app/pods/customize/general/controller.js +++ b/app/app/pods/customize/general/controller.js @@ -12,10 +12,6 @@ import Ember from 'ember'; import NotifierMixin from "../../../mixins/notifier"; -const { - isEmpty -} = Ember; - export default Ember.Controller.extend(NotifierMixin, { orgService: Ember.inject.service('organization'), diff --git a/app/app/pods/customize/users/controller.js b/app/app/pods/customize/users/controller.js index 03680753..7dddaad0 100644 --- a/app/app/pods/customize/users/controller.js +++ b/app/app/pods/customize/users/controller.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html // // You can operate outside the AGPL restrictions by purchasing // Documize Enterprise Edition and obtaining a commercial license -// by contacting . +// by contacting . // // https://documize.com @@ -17,30 +17,13 @@ export default Ember.Controller.extend(NotifierMixin, { newUser: { firstname: "", lastname: "", email: "", active: true }, actions: { - add: function () { - if (is.empty(this.newUser.firstname)) { - $("#newUserFirstname").addClass("error").focus(); - return; - } - if (is.empty(this.newUser.lastname)) { - $("#newUserLastname").addClass("error").focus(); - return; - } - if (is.empty(this.newUser.email) || is.not.email(this.newUser.email)) { - $("#newUserEmail").addClass("error").focus(); - return; - } + add(user) { + Ember.set(this, 'newUser', user); - $("#newUserFirstname").removeClass("error"); - $("#newUserLastname").removeClass("error"); - $("#newUserEmail").removeClass("error"); - - this.get('userService') + return this.get('userService') .add(this.get('newUser')) .then((user) => { this.showNotification('Added'); - this.set('newUser', { firstname: "", lastname: "", email: "", active: true }); - $("#newUserFirstname").focus(); this.get('model').pushObject(user); }) .catch(function (error) { @@ -76,4 +59,4 @@ export default Ember.Controller.extend(NotifierMixin, { this.showNotification('Password changed'); } } -}); \ No newline at end of file +}); diff --git a/app/app/pods/customize/users/template.hbs b/app/app/pods/customize/users/template.hbs index e858f5a8..555cf597 100644 --- a/app/app/pods/customize/users/template.hbs +++ b/app/app/pods/customize/users/template.hbs @@ -1,23 +1,5 @@
-
-
-
Add User
-
New users receive an invitation email with a random password
-
-
- - {{focus-input id="newUserFirstname" type="text" value=newUser.firstname}} -
-
- - {{input id="newUserLastname" type="text" value=newUser.lastname}} -
-
- - {{input id="newUserEmail" type="text" value=newUser.email}} -
-
Add
-
+ {{user-settings add=(action 'add')}}
{{settings/user-list users=model onDelete=(action "onDelete") onSave=(action "onSave") onPassword=(action "onPassword")}} diff --git a/app/app/templates/components/user-settings.hbs b/app/app/templates/components/user-settings.hbs new file mode 100644 index 00000000..a3d4da0c --- /dev/null +++ b/app/app/templates/components/user-settings.hbs @@ -0,0 +1,19 @@ +
+
+
Add User
+
New users receive an invitation email with a random password
+
+
+ + {{focus-input id="newUserFirstname" type="text" value=newUser.firstname class=userFirstnameError}} +
+
+ + {{input id="newUserLastname" type="text" value=newUser.lastname class=userLastnameError}} +
+
+ + {{input id="newUserEmail" type="text" value=newUser.email class=userEmailError}} +
+
Add
+