summaryrefslogtreecommitdiffstats
path: root/web/react/components/post.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'web/react/components/post.jsx')
-rw-r--r--web/react/components/post.jsx88
1 files changed, 88 insertions, 0 deletions
diff --git a/web/react/components/post.jsx b/web/react/components/post.jsx
new file mode 100644
index 000000000..afe978495
--- /dev/null
+++ b/web/react/components/post.jsx
@@ -0,0 +1,88 @@
+// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+var PostHeader = require('./post_header.jsx');
+var PostBody = require('./post_body.jsx');
+var PostInfo = require('./post_info.jsx');
+var AppDispatcher = require('../dispatcher/app_dispatcher.jsx');
+var Constants = require('../utils/constants.jsx');
+var ActionTypes = Constants.ActionTypes;
+
+module.exports = React.createClass({
+ componentDidMount: function() {
+ $('.edit-modal').on('show.bs.modal', function () {
+ $('.edit-modal .edit-modal-body').css('overflow-y', 'auto');
+ $('.edit-modal .edit-modal-body').css('max-height', $(window).height() * 0.7);
+ });
+ },
+ handleCommentClick: function(e) {
+ e.preventDefault();
+
+ data = {};
+ data.order = [this.props.post.id];
+ data.posts = this.props.posts;
+
+ AppDispatcher.handleServerAction({
+ type: ActionTypes.RECIEVED_POST_SELECTED,
+ post_list: data
+ });
+
+ AppDispatcher.handleServerAction({
+ type: ActionTypes.RECIEVED_SEARCH,
+ results: null
+ });
+ },
+ getInitialState: function() {
+ return { };
+ },
+ render: function() {
+ var post = this.props.post;
+ var parentPost = this.props.parentPost;
+ var posts = this.props.posts;
+
+ var type = "Post"
+ if (post.root_id.length > 0) {
+ type = "Comment"
+ }
+
+ var commentCount = 0;
+ var commentRootId = parentPost ? post.root_id : post.id;
+ var rootUser = "";
+ for (var postId in posts) {
+ if (posts[postId].root_id == commentRootId) {
+ commentCount += 1;
+ }
+ }
+
+ var error = this.state.error ? <div className='form-group has-error'><label className='control-label'>{ this.state.error }</label></div> : null;
+
+ if(this.props.sameRoot){
+ rootUser = "same--root";
+ }
+ else {
+ rootUser = "other--root";
+ }
+
+ var postType = "";
+ if(type != "Post"){
+ postType = "post--comment";
+ }
+
+ return (
+ <div>
+ <div id={post.id} className={"post " + this.props.sameUser + " " + rootUser + " " + postType}>
+ { !this.props.hideProfilePic ?
+ <div className="post-profile-img__container">
+ <img className="post-profile-img" src={"/api/v1/users/" + post.user_id + "/image"} height="36" width="36" />
+ </div>
+ : "" }
+ <div className="post__content">
+ <PostHeader post={post} sameRoot={this.props.sameRoot} commentCount={commentCount} handleCommentClick={this.handleCommentClick} isLastComment={this.props.isLastComment} />
+ <PostBody post={post} sameRoot={this.props.sameRoot} parentPost={parentPost} posts={posts} handleCommentClick={this.handleCommentClick} />
+ <PostInfo post={post} sameRoot={this.props.sameRoot} commentCount={commentCount} handleCommentClick={this.handleCommentClick} allowReply="true" />
+ </div>
+ </div>
+ </div>
+ );
+ }
+});