Fix private response css

This commit is contained in:
Ivan Diaz 2018-10-04 21:41:28 -03:00
parent 72a7200e77
commit 621c44e28c
10 changed files with 63 additions and 49 deletions

1
.gitignore vendored
View File

@ -5,6 +5,7 @@ server/composer.lock
server/vendor server/vendor
server/files/ server/files/
!server/files/.gitkeep !server/files/.gitkeep
!server/files/.htaccess
server/.dbdata server/.dbdata
server/.fakemail server/.fakemail
server/apidoc server/apidoc

View File

@ -6,6 +6,7 @@ import API from 'lib-app/api-call';
import DateTransformer from 'lib-core/date-transformer'; import DateTransformer from 'lib-core/date-transformer';
import Icon from 'core-components/icon'; import Icon from 'core-components/icon';
import Tooltip from 'core-components/tooltip';
class TicketEvent extends React.Component { class TicketEvent extends React.Component {
static propTypes = { static propTypes = {
@ -84,8 +85,10 @@ class TicketEvent extends React.Component {
<span className="ticket-event__comment-pointer" /> <span className="ticket-event__comment-pointer" />
<div className="ticket-event__comment-author"> <div className="ticket-event__comment-author">
<span className="ticket-event__comment-author-name">{this.props.author.name}</span> <span className="ticket-event__comment-author-name">{this.props.author.name}</span>
<span className="ticket-event__comment-author-type">{i18n((this.props.author.staff) ? 'STAFF' : 'CUSTOMER')}</span> <span className="ticket-event__comment-badge-container">
{(this.props.private*1) ? <span className="ticket-event__comment-author-type">{i18n('PRIVATE')}</span> : null} <span className="ticket-event__comment-badge">{i18n((this.props.author.staff) ? 'STAFF' : 'CUSTOMER')}</span>
</span>
{(this.props.private*1) ? this.renderPrivateBadge() : null}
</div> </div>
<div className="ticket-event__comment-date">{DateTransformer.transformToString(this.props.date)}</div> <div className="ticket-event__comment-date">{DateTransformer.transformToString(this.props.date)}</div>
<div className="ticket-event__comment-content" dangerouslySetInnerHTML={{__html: this.props.content}}></div> <div className="ticket-event__comment-content" dangerouslySetInnerHTML={{__html: this.props.content}}></div>
@ -172,6 +175,16 @@ class TicketEvent extends React.Component {
); );
} }
renderPrivateBadge() {
return (
<span className="ticket-event__comment-badge-container">
<Tooltip content={i18n('PRIVATE_DESCRIPTION')} openOnHover>
<span className="ticket-event__comment-badge">{i18n('PRIVATE')}</span>
</Tooltip>
</span>
);
}
renderFileRow(file) { renderFileRow(file) {
let node = null; let node = null;

View File

@ -47,7 +47,7 @@
&__comment { &__comment {
position: relative; position: relative;
word-break: break-all; word-wrap: break-word;
&-pointer { &-pointer {
right: 100%; right: 100%;
@ -64,17 +64,19 @@
position: relative; position: relative;
padding: 12px; padding: 12px;
color: $primary-black; color: $primary-black;
}
&-type { &-badge-container {
font-size: 10.6px; margin-left: 12px;
padding-left: 10px; }
color: $secondary-blue;
background-color: very-light-grey; &-badge {
border: 2px solid; font-size: 10.6px;
border-radius: 4px; font-weight: bold;
padding: 4px; color: $primary-blue;
margin-left: 12px; background-color: $very-light-grey;
} padding: 6px;
width: 100px;
} }
&-date { &-date {
@ -109,10 +111,6 @@
.ticket-event__icon { .ticket-event__icon {
background-color: $primary-blue; background-color: $primary-blue;
} }
.ticket-event__comment-author-type {
color: $primary-blue;
}
} }
&_circled { &_circled {
@ -190,16 +188,9 @@
background-color: $light-yellow; background-color: $light-yellow;
border-color: $light-yellow; border-color: $light-yellow;
} }
.ticket-event__comment-content {
background-color: $very-light-yellow;
border-color: $very-light-yellow;
}
.ticket-event__staff-pic { .ticket-event__staff-pic {
background-color: $light-yellow; background-color: $light-yellow;
border-color: $light-yellow; border-color: $light-yellow;
} }
.ticket-event__file {
background-color: $light-yellow;
}
} }
} }

View File

@ -19,6 +19,7 @@ import Button from 'core-components/button';
import Message from 'core-components/message'; import Message from 'core-components/message';
import Icon from 'core-components/icon'; import Icon from 'core-components/icon';
import TextEditor from 'core-components/text-editor'; import TextEditor from 'core-components/text-editor';
import InfoTooltip from 'core-components/info-tooltip';
class TicketViewer extends React.Component { class TicketViewer extends React.Component {
static propTypes = { static propTypes = {
@ -214,9 +215,11 @@ class TicketViewer extends React.Component {
<div className="ticket-viewer__response"> <div className="ticket-viewer__response">
<Form {...this.getCommentFormProps()}> <Form {...this.getCommentFormProps()}>
<div className="ticket-viewer__response-title row">{i18n('RESPOND')}</div> <div className="ticket-viewer__response-title row">{i18n('RESPOND')}</div>
<div className="ticket-viewer__actions row"> <div className="row">
{this.renderCustomResponses()} <div className="ticket-viewer__response-actions">
{this.renderPrivate()} {this.renderCustomResponses()}
{this.renderPrivate()}
</div>
</div> </div>
<div className="ticket-viewer__response-field row"> <div className="ticket-viewer__response-field row">
<FormField name="content" validation="TEXT_AREA" required field="textarea" fieldProps={{allowImages: this.props.allowAttachments}}/> <FormField name="content" validation="TEXT_AREA" required field="textarea" fieldProps={{allowImages: this.props.allowAttachments}}/>
@ -256,17 +259,12 @@ class TicketViewer extends React.Component {
return customResponsesNode; return customResponsesNode;
} }
renderCommentError() {
return (
<Message className="ticket-viewer__message" type="error">{i18n('TICKET_COMMENT_ERROR')}</Message>
);
}
renderPrivate() { renderPrivate() {
if (this.props.userStaff) { if (this.props.userStaff) {
return ( return (
<div className="ticket-viewer__private"> <div className="ticket-viewer__response-private">
<FormField label={i18n('PRIVATE')} name="private" field="checkbox"/> <FormField label={i18n('PRIVATE')} name="private" field="checkbox"/>
<InfoTooltip className="ticket-viewer__response-private-info" text={i18n('PRIVATE_DESCRIPTION')} />
</div> </div>
); );
} else { } else {
@ -274,6 +272,12 @@ class TicketViewer extends React.Component {
} }
} }
renderCommentError() {
return (
<Message className="ticket-viewer__message" type="error">{i18n('TICKET_COMMENT_ERROR')}</Message>
);
}
getCommentFormProps() { getCommentFormProps() {
return { return {
onSubmit: this.onSubmit.bind(this), onSubmit: this.onSubmit.bind(this),

View File

@ -10,9 +10,6 @@
font-size: 16px; font-size: 16px;
padding: 6px 0; padding: 6px 0;
} }
&__private {
}
&__number { &__number {
color: white; color: white;
@ -74,12 +71,25 @@
text-align: left; text-align: left;
} }
&-custom { &-actions {
background-color: $very-light-grey; background-color: $very-light-grey;
display: flex;
justify-content: space-between;
}
&-custom {
padding: 20px 0 0 20px; padding: 20px 0 0 20px;
text-align: left; text-align: left;
} }
&-private {
padding: 20px 20px 0 0;
&-info {
margin-left: 5px;
}
}
&-buttons { &-buttons {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@ -87,11 +97,4 @@
} }
} }
&__actions {
background-color: $very-light-grey;
display:flex;
align-items:center;justify-content: space-between;
}
} }

View File

@ -7,7 +7,7 @@
border: 1px solid $grey; border: 1px solid $grey;
border-radius: 3px; border-radius: 3px;
.ql-container { .ql-editor {
min-height: 200px; min-height: 200px;
} }
} }

View File

@ -184,7 +184,7 @@ export default {
'HIMSELF': 'himself', 'HIMSELF': 'himself',
'ADD_USER': 'Add user', 'ADD_USER': 'Add user',
'UPLOAD_FILE': 'Upload file', 'UPLOAD_FILE': 'Upload file',
'PRIVATE': 'private', 'PRIVATE': 'Private',
'ENABLE_USER': 'Enable User', 'ENABLE_USER': 'Enable User',
'DISABLE_USER': 'Disable User', 'DISABLE_USER': 'Disable User',
@ -301,6 +301,7 @@ export default {
'SMTP_SERVER_DESCRIPTION': 'The configuration of the SMTP server allows the application to send mails. If you do not configure it, no emails will be sent by OpenSupports.', 'SMTP_SERVER_DESCRIPTION': 'The configuration of the SMTP server allows the application to send mails. If you do not configure it, no emails will be sent by OpenSupports.',
'ENABLE_USER_DESCRIPTION': 'This action allows the user to sign in and create tickets.', 'ENABLE_USER_DESCRIPTION': 'This action allows the user to sign in and create tickets.',
'DISABLE_USER_DESCRIPTION': 'User will be disabled and will not be able to sign in and create tickets.', 'DISABLE_USER_DESCRIPTION': 'User will be disabled and will not be able to sign in and create tickets.',
'PRIVATE_DESCRIPTION': 'This response will only be seen by staff members',
//ERRORS //ERRORS
'EMAIL_OR_PASSWORD': 'Email or password invalid', 'EMAIL_OR_PASSWORD': 'Email or password invalid',

View File

@ -6,7 +6,7 @@ $primary-blue: #414A59;
$secondary-blue: #20B8c5; $secondary-blue: #20B8c5;
$primary-yellow: #E5D151; $primary-yellow: #E5D151;
$light-yellow: rgba(229,209,81,0.6); $light-yellow: #fff19c;
$very-light-yellow: #ffffe0; $very-light-yellow: #ffffe0;
$primary-green: #82CA9C; $primary-green: #82CA9C;

View File

@ -1,4 +1,4 @@
RewriteEngine on RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [PT,L] RewriteRule .* index.php [PT,L]

1
server/files/.htaccess Normal file
View File

@ -0,0 +1 @@
Deny from all