From e85f38fbde2acf34f029763915e23f9b250bb816 Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 14 Sep 2016 20:03:15 -0300 Subject: [PATCH 1/4] Guillermo/Ivan - Frontend - Add edit-email form [skip ci] --- .../dashboard-edit-profile-page.js | 37 ++++++++++++++++++- .../dashboard-edit-profile-page.scss | 9 +++++ client/src/data/fixtures/user-fixtures.js | 10 +++++ 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.scss diff --git a/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.js b/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.js index 3cfb7621..3d00f610 100644 --- a/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.js +++ b/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.js @@ -1,14 +1,47 @@ import React from 'react'; +import API from 'lib-app/api-call'; + +import Header from 'core-components/header'; +import Form from 'core-components/form'; +import FormField from 'core-components/form-field'; +import SubmitButton from 'core-components/submit-button'; + class DashboardEditProfilePage extends React.Component { + state = { + loading: false + }; + render() { return ( -
- DASHBOARD EDIT PROFILE +
+
+
Edit Email
+
+ + CHANGE EMAIL +
); } + + onSubmit(formState) { + this.setState({ + loading: true + }); + + API.call({ + path: "/user/edit-email", + data: { + newEmail: formState.newEmail + } + }).then(function () { + this.setState({ + loading: false + }); + }.bind(this)); + } } export default DashboardEditProfilePage; diff --git a/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.scss b/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.scss new file mode 100644 index 00000000..872bab3c --- /dev/null +++ b/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.scss @@ -0,0 +1,9 @@ +@import '../../../../scss/vars'; + +.edit-profile-page { + &__title { + color: $dark-grey; + font-size: 20px; + text-align: left; + } +} \ No newline at end of file diff --git a/client/src/data/fixtures/user-fixtures.js b/client/src/data/fixtures/user-fixtures.js index e661d46c..36d03718 100644 --- a/client/src/data/fixtures/user-fixtures.js +++ b/client/src/data/fixtures/user-fixtures.js @@ -104,6 +104,16 @@ module.exports = [ } } }, + { + path: '/user/edit-email', + time: 1000, + response: function () { + return { + status: 'success', + data: {} + }; + } + }, { path: '/user/get', time: 100, From 3bd5db9bf03a3225522a45f675d39f92d2168bd9 Mon Sep 17 00:00:00 2001 From: AntonyAntonio Date: Fri, 16 Sep 2016 19:53:41 -0300 Subject: [PATCH 2/4] Guillermo - add-edit-password-frontend [skip ci] --- .../dashboard-edit-profile-page.js | 43 +++++++++++++++---- .../dashboard-list-tickets-page.js | 7 ++- client/src/data/fixtures/user-fixtures.js | 10 +++++ 3 files changed, 51 insertions(+), 9 deletions(-) diff --git a/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.js b/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.js index 3d00f610..8fc86afa 100644 --- a/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.js +++ b/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.js @@ -9,26 +9,35 @@ import SubmitButton from 'core-components/submit-button'; class DashboardEditProfilePage extends React.Component { - state = { - loading: false + state= { + loadingEmail: false, + loadingPass: false }; + render() { return (
-
+
Edit Email
-
- + + CHANGE EMAIL +
Edit password
+
+ + + + CHANGE PASSWORD +
); } - onSubmit(formState) { + onSubmitEditEmail(formState) { this.setState({ - loading: true + loadingEmail: true }); API.call({ @@ -38,7 +47,25 @@ class DashboardEditProfilePage extends React.Component { } }).then(function () { this.setState({ - loading: false + loadingEmail: false + }); + }.bind(this)); + } + + onSubmitEditPassword(formState) { + this.setState({ + loadingPass: true + }); + + API.call({ + path: "/user/edit-password", + data: { + oldPassword: formState.oldPassword, + newPassword: formState.password + } + }).then(function () { + this.setState({ + loadingPass: false }); }.bind(this)); } diff --git a/client/src/app/main/dashboard/dashboard-list-tickets/dashboard-list-tickets-page.js b/client/src/app/main/dashboard/dashboard-list-tickets/dashboard-list-tickets-page.js index f033fb93..e4ef056a 100644 --- a/client/src/app/main/dashboard/dashboard-list-tickets/dashboard-list-tickets-page.js +++ b/client/src/app/main/dashboard/dashboard-list-tickets/dashboard-list-tickets-page.js @@ -6,6 +6,7 @@ import i18n from 'lib-app/i18n'; import Header from 'core-components/header'; import Table from 'core-components/table'; import Button from 'core-components/button'; +import Tooltip from 'core-components/tooltip'; class DashboardListTicketsPage extends React.Component { static propTypes = { @@ -58,7 +59,11 @@ class DashboardListTicketsPage extends React.Component { let titleText = (ticket.unread) ? ticket.title + ' (1)' : ticket.title; return { - number: '#' + ticket.ticketNumber, + number: ( + + {'#' + ticket.ticketNumber} + + ), title: (
); } - + renderMessageEmail() { + switch (this.state.messageEmail) { + case 'success': + return {i18n('EMAIL_CHANGED')}; + case 'fail': + return {i18n('EMAIL_EXISTS')}; + default: + return null; + } + + } + renderMessagePass() { + switch (this.state.messagePass) { + case 'success': + return {i18n('PASSWORD_CHANGED')}; + case 'fail': + return {i18n('OLD_PASSWORD_INCORRECT')}; + default: + return null; + } + } onSubmitEditEmail(formState) { ModalContainer.openModal(); } @@ -44,7 +70,7 @@ class DashboardEditProfilePage extends React.Component { onSubmitEditPassword(formState) { ModalContainer.openModal(); } - + callEditEmailAPI(formState){ this.setState({ loadingEmail: true @@ -56,8 +82,14 @@ class DashboardEditProfilePage extends React.Component { } }).then(function () { this.setState({ - loadingEmail: false + loadingEmail: false, + messageEmail: "success" }); + }.bind(this)).catch(function (){ + this.setState({ + loadingEmail: false, + messageEmail: 'fail' + }) }.bind(this)); } @@ -73,10 +105,17 @@ class DashboardEditProfilePage extends React.Component { } }).then(function () { this.setState({ - loadingPass: false + loadingPass: false, + messagePass: "success" }); + }.bind(this)).catch(function (){ + this.setState({ + loadingPass: false, + messagePass: 'fail' + }) }.bind(this)); } + } export default DashboardEditProfilePage; diff --git a/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.scss b/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.scss index 872bab3c..d42e3ec5 100644 --- a/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.scss +++ b/client/src/app/main/dashboard/dashboard-edit-profile/dashboard-edit-profile-page.scss @@ -6,4 +6,8 @@ font-size: 20px; text-align: left; } + &__message{ + margin-top: 20px; + margin-bottom: 20px; + } } \ No newline at end of file diff --git a/client/src/data/languages/en.js b/client/src/data/languages/en.js index c4da923d..9523ca03 100644 --- a/client/src/data/languages/en.js +++ b/client/src/data/languages/en.js @@ -51,6 +51,9 @@ export default { 'SIGNUP_SUCCESS': 'You have registered successfully in our support system.', 'TICKET_SENT': 'Ticket has been created successfully.', 'VALID_RECOVER': 'Password recovered successfully', - 'EMAIL_EXISTS': 'Email already exists, please try to log in or recover password', - 'ARE_YOU_SURE': 'Are you sure?' + 'EMAIL_EXISTS': 'Email already exists', + 'ARE_YOU_SURE': 'Are you sure?', + 'EMAIL_CHANGED': 'Email has been changed successfully', + 'PASSWORD_CHANGED': 'Password has been changed successfully', + 'OLD_PASSWORD_INCORRECT': 'Old password is incorrect' }; \ No newline at end of file