// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. // See License.txt for license information. var CreateComment = require( './create_comment.jsx' ); var UserStore = require('../stores/user_store.jsx'); var utils = require('../utils/utils.jsx'); var ViewImageModal = require('./view_image.jsx'); var Constants = require('../utils/constants.jsx'); module.exports = React.createClass({ handleImageClick: function(e) { this.setState({startImgId: parseInt($(e.target.parentNode).attr('data-img-id'))}); }, componentWillReceiveProps: function(nextProps) { var linkData = utils.extractLinks(nextProps.post.message); this.setState({ links: linkData["links"], message: linkData["text"] }); }, componentDidMount: function() { var filenames = this.props.post.filenames; var self = this; if (filenames) { var re1 = new RegExp(' ', 'g'); var re2 = new RegExp('\\(', 'g'); var re3 = new RegExp('\\)', 'g'); for (var i = 0; i < filenames.length && i < Constants.MAX_DISPLAY_FILES; i++) { var fileInfo = utils.splitFileLocation(filenames[i]); if (Object.keys(fileInfo).length === 0) continue; var type = utils.getFileType(fileInfo.ext); if (type === "image") { $('').attr('src', fileInfo.path+'_thumb.jpg').load(function(path, name){ return function() { $(this).remove(); if (name in self.refs) { var imgDiv = self.refs[name].getDOMNode(); $(imgDiv).removeClass('post__load'); $(imgDiv).addClass('post__image'); var url = path.replace(re1, '%20').replace(re2, '%28').replace(re3, '%29'); $(imgDiv).css('background-image', 'url('+url+'_thumb.jpg)'); } }}(fileInfo.path, filenames[i])); } } } }, getInitialState: function() { var linkData = utils.extractLinks(this.props.post.message); return { startImgId: 0, links: linkData["links"], message: linkData["text"] }; }, render: function() { var post = this.props.post; var filenames = this.props.post.filenames; var parentPost = this.props.parentPost; var postImageModalId = "view_image_modal_" + post.id; var inner = utils.textToJsx(this.state.message); var comment = ""; var reply = ""; var postClass = ""; if (parentPost) { var profile = UserStore.getProfile(parentPost.user_id); var apostrophe = ""; var name = "..."; if (profile != null) { if (profile.username.slice(-1) === 's') { apostrophe = "'"; } else { apostrophe = "'s"; } name = {profile.username}; } var message = "" if(parentPost.message) { message = utils.replaceHtmlEntities(parentPost.message) } else if (parentPost.filenames.length) { message = parentPost.filenames[0].split('/').pop(); if (parentPost.filenames.length === 2) { message += " plus 1 other file"; } else if (parentPost.filenames.length > 2) { message += " plus " + (parentPost.filenames.length - 1) + " other files"; } } comment = (

Commented on {name}{apostrophe} message: {message}

); postClass += " post-comment"; } var postFiles = []; var images = []; if (filenames) { for (var i = 0; i < filenames.length; i++) { var fileInfo = utils.splitFileLocation(filenames[i]); if (Object.keys(fileInfo).length === 0) continue; var type = utils.getFileType(fileInfo.ext); if (type === "image") { if (i < Constants.MAX_DISPLAY_FILES) { postFiles.push(
); } images.push(filenames[i]); } else if (i < Constants.MAX_DISPLAY_FILES) { postFiles.push(
); } } } var embed; if (postFiles.length === 0 && this.state.links) { embed = utils.getEmbed(this.state.links[0]); } return (
{ comment }

{inner}

{ filenames && filenames.length > 0 ?
{ postFiles }
: "" } { embed } { images.length > 0 ? : "" }
); } });