// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import UserStore from '../stores/user_store.jsx'; import TeamStore from '../stores/team_store.jsx'; import * as Utils from '../utils/utils.jsx'; import TimeSince from './time_since.jsx'; import * as EventHelpers from '../dispatcher/event_helpers.jsx'; import Constants from '../utils/constants.jsx'; const Overlay = ReactBootstrap.Overlay; const Popover = ReactBootstrap.Popover; export default class PostInfo extends React.Component { constructor(props) { super(props); this.state = { copiedLink: false, show: false }; this.handlePermalinkCopy = this.handlePermalinkCopy.bind(this); } createDropdown() { var post = this.props.post; var isOwner = UserStore.getCurrentId() === post.user_id; var isAdmin = Utils.isAdmin(UserStore.getCurrentUser().roles); if (post.state === Constants.POST_FAILED || post.state === Constants.POST_LOADING || post.state === Constants.POST_DELETED) { 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(
  • {'Reply'}
  • ); } dropdownContents.push(
  • this.setState({target: e.target, show: !this.state.show})} > {'Permalink'}
  • ); if (isOwner || isAdmin) { dropdownContents.push(
  • EventHelpers.showDeletePostModal(post, dataComments)} > {'Delete'}
  • ); } if (isOwner) { dropdownContents.push(
  • {'Edit'}
  • ); } if (dropdownContents.length === 0) { return ''; } return (
    {commentCountText} ); } var dropdown = this.createDropdown(); const permalink = TeamStore.getCurrentTeamUrl() + '/pl/' + post.id; const copyButtonText = this.state.copiedLink ? (
    {'Copy '}
    ) : 'Copy'; const permalinkOverlay = (
    ); const containerPadding = 20; return ( ); } } PostInfo.defaultProps = { post: null, commentCount: 0, isLastComment: false, allowReply: false }; PostInfo.propTypes = { post: React.PropTypes.object, commentCount: React.PropTypes.number, isLastComment: React.PropTypes.bool, allowReply: React.PropTypes.string, handleCommentClick: React.PropTypes.func };