From 93366c02da10edf3da6c6bde4c9a4af83bdc8263 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 27 Oct 2016 16:34:44 -0300 Subject: [PATCH] Ivan - Add custom response field [skip ci] --- client/src/app-components/ticket-event.js | 2 +- client/src/app-components/ticket-viewer.js | 48 ++++++++++++++++----- client/src/data/fixtures/ticket-fixtures.js | 10 ++--- 3 files changed, 43 insertions(+), 17 deletions(-) diff --git a/client/src/app-components/ticket-event.js b/client/src/app-components/ticket-event.js index dd99b24c..3130b91a 100644 --- a/client/src/app-components/ticket-event.js +++ b/client/src/app-components/ticket-event.js @@ -17,7 +17,7 @@ class TicketEvent extends React.Component { ]), author: React.PropTypes.object, content: React.PropTypes.string, - date: React.PropTypes.number + date: React.PropTypes.string }; render() { diff --git a/client/src/app-components/ticket-viewer.js b/client/src/app-components/ticket-viewer.js index c324386a..536730f3 100644 --- a/client/src/app-components/ticket-viewer.js +++ b/client/src/app-components/ticket-viewer.js @@ -1,11 +1,10 @@ import React from 'react'; import _ from 'lodash'; +import RichTextEditor from 'react-rte-browserify'; import i18n from 'lib-app/i18n'; import API from 'lib-app/api-call'; -import store from 'app/store'; import SessionStore from 'lib-app/session-store'; -import SessionActions from 'actions/session-actions'; import TicketEvent from 'app-components/ticket-event'; import AreYouSure from 'app-components/are-you-sure'; @@ -33,13 +32,11 @@ class TicketViewer extends React.Component { } }; - constructor(props) { - super(props); - - this.state = { - loading: false - }; - } + state = { + loading: false, + commentValue: RichTextEditor.createEmptyValue(), + commentEdited: false + }; render() { const ticket = this.props.ticket; @@ -61,7 +58,7 @@ class TicketViewer extends React.Component {
{i18n('RESPOND')}
{this.renderCustomResponses()}
-
+ {i18n('RESPOND_TICKET')} @@ -204,7 +201,7 @@ class TicketViewer extends React.Component { customResponsesNode = (
- +
); } @@ -212,6 +209,20 @@ class TicketViewer extends React.Component { return customResponsesNode; } + getCommentFormProps() { + return { + onSubmit: this.onSubmit.bind(this), + loading: this.state.loading, + onChange: (formState) => {this.setState({ + commentValue: formState.content, + commentEdited: true + })}, + values: { + 'content': this.state.commentValue + } + }; + } + onDepartmentDropdownChanged(event) { AreYouSure.openModal(null, this.changeDepartment.bind(this, event.index)); } @@ -268,6 +279,21 @@ class TicketViewer extends React.Component { }).then(this.onTicketModification.bind(this)); } + onCustomResponsesChanged({index}) { + let replaceContentWithCustomResponse = () => { + this.setState({ + commentValue: RichTextEditor.createValueFromString(this.props.customResponses[index-1].content || '', 'html'), + commentEdited: false + }); + }; + + if (this.state.commentEdited && index) { + AreYouSure.openModal(null, replaceContentWithCustomResponse); + } else { + replaceContentWithCustomResponse(); + } + } + onSubmit(formState) { this.setState({ loading: true diff --git a/client/src/data/fixtures/ticket-fixtures.js b/client/src/data/fixtures/ticket-fixtures.js index 5d05e16c..573ccd61 100644 --- a/client/src/data/fixtures/ticket-fixtures.js +++ b/client/src/data/fixtures/ticket-fixtures.js @@ -39,11 +39,11 @@ module.exports = [ return { status: 'success', data: [ - {name: 'Common issue #1', language: 'en', content: 'some content'}, - {name: 'Common issue #2', language: 'en', content: 'some content'}, - {name: 'Common issue #3', language: 'en', content: 'some content'}, - {name: 'Häufiges Problem #1', language: 'de', content: 'einige Inhalte'}, - {name: 'Häufiges Problem #2', language: 'de', content: 'einige Inhalte'} + {name: 'Common issue #1', language: 'en', content: 'some content 1'}, + {name: 'Common issue #2', language: 'en', content: 'some content 2'}, + {name: 'Common issue #3', language: 'en', content: 'some content 3'}, + {name: 'Häufiges Problem #1', language: 'de', content: 'einige Inhalte 1'}, + {name: 'Häufiges Problem #2', language: 'de', content: 'einige Inhalte 2'} ] }; }