diff options
Diffstat (limited to 'web/react/components/post_info.jsx')
-rw-r--r-- | web/react/components/post_info.jsx | 249 |
1 files changed, 0 insertions, 249 deletions
diff --git a/web/react/components/post_info.jsx b/web/react/components/post_info.jsx deleted file mode 100644 index d0a4c828e..000000000 --- a/web/react/components/post_info.jsx +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -import * as Utils from '../utils/utils.jsx'; -import TimeSince from './time_since.jsx'; -import * as GlobalActions from '../action_creators/global_actions.jsx'; - -import Constants from '../utils/constants.jsx'; - -import {FormattedMessage} from 'mm-intl'; - -export default class PostInfo extends React.Component { - constructor(props) { - super(props); - - this.dropdownPosition = this.dropdownPosition.bind(this); - this.handlePermalink = this.handlePermalink.bind(this); - this.removePost = this.removePost.bind(this); - } - dropdownPosition(e) { - var position = $('#post-list').height() - $(e.target).offset().top; - var dropdown = $(e.target).next('.dropdown-menu'); - if (position < dropdown.height()) { - dropdown.addClass('bottom'); - } - } - createDropdown() { - var post = this.props.post; - var isOwner = this.props.currentUser.id === post.user_id; - var isAdmin = Utils.isAdmin(this.props.currentUser.roles); - - if (post.state === Constants.POST_FAILED || post.state === Constants.POST_LOADING || Utils.isPostEphemeral(post)) { - return ''; - } - - var type = 'Post'; - if (post.root_id && post.root_id.length > 0) { - type = 'Comment'; - } - - var dropdownContents = []; - var dataComments = 0; - if (type === 'Post') { - dataComments = this.props.commentCount; - } - - if (this.props.allowReply === 'true') { - dropdownContents.push( - <li - key='replyLink' - role='presentation' - > - <a - className='link__reply theme' - href='#' - onClick={this.props.handleCommentClick} - > - <FormattedMessage - id='post_info.reply' - defaultMessage='Reply' - /> - </a> - </li> - ); - } - - if (!Utils.isMobile()) { - dropdownContents.push( - <li - key='copyLink' - role='presentation' - > - <a - href='#' - onClick={this.handlePermalink} - > - <FormattedMessage - id='post_info.permalink' - defaultMessage='Permalink' - /> - </a> - </li> - ); - } - - if (isOwner || isAdmin) { - dropdownContents.push( - <li - key='deletePost' - role='presentation' - > - <a - href='#' - role='menuitem' - onClick={() => GlobalActions.showDeletePostModal(post, dataComments)} - > - <FormattedMessage - id='post_info.del' - defaultMessage='Delete' - /> - </a> - </li> - ); - } - - if (isOwner) { - dropdownContents.push( - <li - key='editPost' - role='presentation' - > - <a - href='#' - role='menuitem' - data-toggle='modal' - data-target='#edit_post' - data-refocusid='#post_textbox' - data-title={type} - data-message={post.message} - data-postid={post.id} - data-channelid={post.channel_id} - data-comments={dataComments} - > - <FormattedMessage - id='post_info.edit' - defaultMessage='Edit' - /> - </a> - </li> - ); - } - - if (dropdownContents.length === 0) { - return ''; - } - - return ( - <div> - <a - href='#' - className='dropdown-toggle post__dropdown theme' - type='button' - data-toggle='dropdown' - aria-expanded='false' - onClick={this.dropdownPosition} - /> - <ul - className='dropdown-menu' - role='menu' - > - {dropdownContents} - </ul> - </div> - ); - } - - handlePermalink(e) { - e.preventDefault(); - GlobalActions.showGetPostLinkModal(this.props.post); - } - - removePost() { - GlobalActions.emitRemovePost(this.props.post); - } - createRemovePostButton(post) { - if (!Utils.isPostEphemeral(post)) { - return null; - } - - return ( - <a - href='#' - className='post__remove theme' - type='button' - onClick={this.removePost} - > - {'×'} - </a> - ); - } - render() { - var post = this.props.post; - var comments = ''; - var showCommentClass = ''; - var commentCountText = this.props.commentCount; - - if (this.props.commentCount >= 1) { - showCommentClass = ' icon--show'; - } else { - commentCountText = ''; - } - - if (post.state !== Constants.POST_FAILED && post.state !== Constants.POST_LOADING && !Utils.isPostEphemeral(post)) { - comments = ( - <a - href='#' - className={'comment-icon__container' + showCommentClass} - onClick={this.props.handleCommentClick} - > - <span - className='comment-icon' - dangerouslySetInnerHTML={{__html: Constants.REPLY_ICON}} - /> - {commentCountText} - </a> - ); - } - - var dropdown = this.createDropdown(); - - return ( - <ul className='post__header post__header--info'> - <li className='col'> - <TimeSince - eventTime={post.create_at} - sameUser={this.props.sameUser} - /> - </li> - <li className='col col__reply'> - <div - className='dropdown' - ref='dotMenu' - > - {dropdown} - </div> - {comments} - {this.createRemovePostButton(post)} - </li> - </ul> - ); - } -} - -PostInfo.defaultProps = { - post: null, - commentCount: 0, - isLastComment: false, - allowReply: false, - sameUser: false -}; -PostInfo.propTypes = { - post: React.PropTypes.object.isRequired, - commentCount: React.PropTypes.number.isRequired, - isLastComment: React.PropTypes.bool.isRequired, - allowReply: React.PropTypes.string.isRequired, - handleCommentClick: React.PropTypes.func.isRequired, - sameUser: React.PropTypes.bool.isRequired, - currentUser: React.PropTypes.object.isRequired -}; |