/**
* Окно для отправки нового сообщения
* @module MessageArea
* @author Ihor Bielchenko
* @requires react
* @requires react#Component
* @requires Base.js
* @requires redux#bindActionCreators
* @requires react-redux#connect
* @requires actions/StateConfigAction.js
* @requires components/Common/Link.jsx
* @requires img/title-mail.png
* @requires img/orange-pencil.png
* @requires img/title-ok.png
*/
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import Base from '../../Base.js';
import * as StateConfigAction from '../../actions/StateConfigAction.js';
import Link from '../Common/Link.jsx';
import Mail from '../../img/title-mail.png';
import Pencil from '../../img/orange-pencil.png';
import Ok from '../../img/title-ok.png';
/**
* Окно для отправки нового сообщения
* @extends Component
*/
class MessageArea extends Component {
/**
* Закрыть попап
* @fires click
* @param {Object} e
*/
close(e) {
this.props.StateConfigAction.showElement(this.props.config, 'message_area');
}
/**
* Отпарвка сообщения
* @fires click
* @param {Object} e
*/
send(e) {
let el = document.getElementById('message-area');
if(el.value !== '' && el.value !== null) {
Base.serverSEND(JSON.stringify({
action: 'teacher/group/msg',
properties: {
group_id: this.props.user.current_group,
content: el.value
}
}), (r) => {
if(r.success === 1) {
this.props.config.sent_message_area = 1;
this.props.StateConfigAction.update(this.props.config);
}
});
}
}
/**
* Render component
* @return {Object} jsx object
*/
render() {
let lang = this.props.lang;
if(this.props.config.sent_message_area === 1) {
return <div className="modal fade show"
id="popup9"
tabIndex="-1"
role="dialog">
<div className="modal-dialog" role="document">
<div className="modal-content">
<div className="title">
<img src={Ok} alt="ok" />
<span>{lang.new_message_title}</span>
</div>
<div className="main-text">
{lang.sent_success_msg}
</div>
<Link
data-dismiss="modal"
className="button"
onClick={this.close.bind(this)}>{lang.close_msg_title}</Link>
</div>
</div>
</div>
}
return <div className="modal fade show"
id="popup8"
tabIndex="-1"
role="dialog">
<div className="modal-dialog" role="document">
<div className="modal-content">
<div className="title">
<img src={Mail} alt="mail" />
<span>{lang.new_message_title}</span>
</div>
<div className="blue-fon">
<div className="title-mes">
<img src={Pencil} alt="pencil" />
<textarea
id="message-area"
className="autosize"
placeholder={lang.review_msg_text}></textarea>
</div>
<hr className="main-hr" />
<span className="main-span">{lang.new_msg_teacher_placeholder}</span>
</div>
<div className="button-wrap">
<Link
data-dismiss="modal"
className="button disable-button"
onClick={this.close.bind(this)}>{lang.reset_title}</Link>
<Link
data-dismiss="modal"
className="button"
onClick={this.send.bind(this)}>{lang.send_title}</Link>
</div>
</div>
</div>
</div>
}
}
/**
* Init redux states
* @param {Object} state
* @return {Object}
*/
function mapStateToProps(state) {
return {
lang: state.lang,
user: state.user,
config: state.config
}
}
/**
* Init redux actions
* @param {Function} dispatch
* @return {Object}
*/
function mapDispatchToProps(dispatch) {
return {
StateConfigAction: bindActionCreators(StateConfigAction, dispatch),
}
}
export default connect(mapStateToProps, mapDispatchToProps)(MessageArea);