Merge pull request #472 from rgarmsen2295/mm-1853

MM-1853 Prevents users from typing more than 4000 characters into any any post/comment
This commit is contained in:
Christopher Speller
2015-08-27 10:01:54 -04:00
6 changed files with 72 additions and 8 deletions

View File

@@ -105,14 +105,17 @@ module.exports = React.createClass({
this.lastTime = t;
}
},
handleUserInput: function(messageText) {
handleUserInput: function(message) {
var messageText = utils.truncateText(message);
var newPostError = utils.checkMessageLengthError(messageText, this.state.postError, 'Comment length cannot exceed ' + Constants.MAX_POST_LEN + ' characters');
var draft = PostStore.getCommentDraft(this.props.rootId);
draft.message = messageText;
PostStore.storeCommentDraft(this.props.rootId, draft);
$('.post-right__scroll').scrollTop($('.post-right__scroll')[0].scrollHeight);
$('.post-right__scroll').perfectScrollbar('update');
this.setState({messageText: messageText});
this.setState({messageText: messageText, postError: newPostError});
},
handleUploadStart: function(clientIds, channelId) {
var draft = PostStore.getCommentDraft(this.props.rootId);

View File

@@ -18,6 +18,7 @@ var Constants = require('../utils/constants.jsx');
var ActionTypes = Constants.ActionTypes;
module.exports = React.createClass({
displayName: 'CreatePost',
lastTime: 0,
handleSubmit: function(e) {
e.preventDefault();
@@ -131,9 +132,12 @@ module.exports = React.createClass({
this.lastTime = t;
}
},
handleUserInput: function(messageText) {
handleUserInput: function(message) {
var messageText = utils.truncateText(message);
var newPostError = utils.checkMessageLengthError(messageText, this.state.postError, 'Message length cannot exceed ' + Constants.MAX_POST_LEN + ' characters');
this.resizePostHolder();
this.setState({messageText: messageText});
this.setState({messageText: messageText, postError: newPostError});
var draft = PostStore.getCurrentDraft();
draft['message'] = messageText;

View File

@@ -3,6 +3,8 @@
var Client = require('../utils/client.jsx');
var AsyncClient = require('../utils/async_client.jsx');
var Constants = require('../utils/constants.jsx');
var utils = require('../utils/utils.jsx');
var Textbox = require('./textbox.jsx');
var BrowserStore = require('../stores/browser_store.jsx');
@@ -37,7 +39,9 @@ module.exports = React.createClass({
$(this.state.refocusId).focus();
},
handleEditInput: function(editText) {
this.setState({ editText: editText });
var editMessage = utils.truncateText(editText);
var newError = utils.checkMessageLengthError(editMessage, this.state.error, 'New message length cannot exceed ' + Constants.MAX_POST_LEN + ' characters');
this.setState({editText: editMessage, error: newError});
},
handleEditKeyPress: function(e) {
if (e.which == 13 && !e.shiftKey && !e.altKey) {
@@ -53,7 +57,7 @@ module.exports = React.createClass({
var self = this;
$(this.refs.modal.getDOMNode()).on('hidden.bs.modal', function(e) {
self.setState({ editText: "", title: "", channel_id: "", post_id: "", comments: 0, refocusId: "" });
self.setState({editText: "", title: "", channel_id: "", post_id: "", comments: 0, refocusId: "", error: ''});
});
$(this.refs.modal.getDOMNode()).on('show.bs.modal', function(e) {
@@ -69,7 +73,7 @@ module.exports = React.createClass({
return { editText: "", title: "", post_id: "", channel_id: "", comments: 0, refocusId: "" };
},
render: function() {
var error = this.state.error ? <div className='form-group has-error'><label className='control-label'>{ this.state.error }</label></div> : null;
var error = this.state.error ? <div className='form-group has-error'><br /><label className='control-label'>{ this.state.error }</label></div> : <div className='form-group'><br /></div>;
return (
<div className="modal fade edit-modal" ref="modal" id="edit_post" role="dialog" tabIndex="-1" aria-hidden="true">

View File

@@ -257,7 +257,7 @@ module.exports = React.createClass({
return (
<div ref='wrapper' className='textarea-wrapper'>
<CommandList ref='commands' addCommand={this.addCommand} channelId={this.props.channelId} />
<textarea id={this.props.id} ref='message' className={'form-control custom-textarea ' + this.state.connection} spellCheck='true' autoComplete='off' autoCorrect='off' rows='1' placeholder={this.props.createMessage} value={this.props.messageText} onInput={this.handleChange} onChange={this.handleChange} onKeyPress={this.handleKeyPress} onKeyDown={this.handleKeyDown} onFocus={this.handleFocus} onBlur={this.handleBlur} onPaste={this.handlePaste} />
<textarea id={this.props.id} ref='message' className={'form-control custom-textarea ' + this.state.connection} spellCheck='true' autoComplete='off' autoCorrect='off' rows='1' maxLength={Constants.MAX_POST_LEN} placeholder={this.props.createMessage} value={this.props.messageText} onInput={this.handleChange} onChange={this.handleChange} onKeyPress={this.handleKeyPress} onKeyDown={this.handleKeyDown} onFocus={this.handleFocus} onBlur={this.handleBlur} onPaste={this.handlePaste} />
</div>
);
}