From 12896bd23eeba79884245c1c29fdc568cf21a7fa Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Mon, 14 Mar 2016 08:50:46 -0400 Subject: Converting to Webpack. Stage 1. --- web/react/components/post_attachment.jsx | 312 ------------------------------- 1 file changed, 312 deletions(-) delete mode 100644 web/react/components/post_attachment.jsx (limited to 'web/react/components/post_attachment.jsx') diff --git a/web/react/components/post_attachment.jsx b/web/react/components/post_attachment.jsx deleted file mode 100644 index 2eedfb7c1..000000000 --- a/web/react/components/post_attachment.jsx +++ /dev/null @@ -1,312 +0,0 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -import * as TextFormatting from '../utils/text_formatting.jsx'; - -import {intlShape, injectIntl, defineMessages} from 'mm-intl'; - -const holders = defineMessages({ - collapse: { - id: 'post_attachment.collapse', - defaultMessage: '▲ collapse text' - }, - more: { - id: 'post_attachment.more', - defaultMessage: '▼ read more' - } -}); - -class PostAttachment extends React.Component { - constructor(props) { - super(props); - - this.getFieldsTable = this.getFieldsTable.bind(this); - this.getInitState = this.getInitState.bind(this); - this.shouldCollapse = this.shouldCollapse.bind(this); - this.toggleCollapseState = this.toggleCollapseState.bind(this); - } - - componentDidMount() { - $(this.refs.attachment).on('click', '.attachment-link-more', this.toggleCollapseState); - } - - componentWillUnmount() { - $(this.refs.attachment).off('click', '.attachment-link-more', this.toggleCollapseState); - } - - componentWillMount() { - this.setState(this.getInitState()); - } - - getInitState() { - const shouldCollapse = this.shouldCollapse(); - const text = TextFormatting.formatText(this.props.attachment.text || ''); - const uncollapsedText = text + (shouldCollapse ? `${this.props.intl.formatMessage(holders.collapse)}` : ''); - const collapsedText = shouldCollapse ? this.getCollapsedText() : text; - - return { - shouldCollapse, - collapsedText, - uncollapsedText, - text: shouldCollapse ? collapsedText : uncollapsedText, - collapsed: shouldCollapse - }; - } - - toggleCollapseState(e) { - e.preventDefault(); - - let state = this.state; - state.text = state.collapsed ? state.uncollapsedText : state.collapsedText; - state.collapsed = !state.collapsed; - this.setState(state); - } - - shouldCollapse() { - const text = this.props.attachment.text || ''; - return (text.match(/\n/g) || []).length >= 5 || text.length > 700; - } - - getCollapsedText() { - let text = this.props.attachment.text || ''; - if ((text.match(/\n/g) || []).length >= 5) { - text = text.split('\n').splice(0, 5).join('\n'); - } else if (text.length > 700) { - text = text.substr(0, 700); - } - - return TextFormatting.formatText(text) + `${this.props.intl.formatMessage(holders.more)}`; - } - - getFieldsTable() { - const fields = this.props.attachment.fields; - if (!fields || !fields.length) { - return ''; - } - - const compactTable = fields.filter((field) => field.short).length > 0; - let tHead; - let tBody; - - if (compactTable) { - let headerCols = []; - let bodyCols = []; - - fields.forEach((field, i) => { - headerCols.push( - - {field.title} - - ); - bodyCols.push( - - - ); - }); - - tHead = ( - - {headerCols} - - ); - tBody = ( - - {bodyCols} - - ); - } else { - tBody = []; - - fields.forEach((field, i) => { - tBody.push( - - - {field.title} - - - - - ); - }); - } - - return ( - - - {tHead} - - - {tBody} - -
- ); - } - - render() { - const data = this.props.attachment; - - let preText; - if (data.pretext) { - preText = ( -
-
- ); - } - - let author = []; - if (data.author_name || data.author_icon) { - if (data.author_icon) { - author.push( - - ); - } - if (data.author_name) { - author.push( - - {data.author_name} - - ); - } - } - if (data.author_link) { - author = ( - - {author} - - ); - } - - let title; - if (data.title) { - if (data.title_link) { - title = ( -

- - {data.title} - -

- ); - } else { - title = ( -

- {data.title} -

- ); - } - } - - let text; - if (data.text) { - text = ( -
-
- ); - } - - let image; - if (data.image_url) { - image = ( - - ); - } - - let thumb; - if (data.thumb_url) { - thumb = ( -
- -
- ); - } - - const fields = this.getFieldsTable(); - - let useBorderStyle; - if (data.color && data.color[0] === '#') { - useBorderStyle = {borderLeftColor: data.color}; - } - - return ( -
- {preText} -
-
- {author} - {title} -
-
- {text} - {image} - {fields} -
- {thumb} -
-
-
-
-
- ); - } -} - -PostAttachment.propTypes = { - intl: intlShape.isRequired, - attachment: React.PropTypes.object.isRequired -}; - -export default injectIntl(PostAttachment); -- cgit v1.2.3-1-g7c22