Cosmetic refactoring of post_body.jsx
Этот коммит содержится в:
@@ -9,11 +9,11 @@ var formatText = require('../../static/js/marked/lib/marked.js');
|
||||
module.exports = React.createClass({
|
||||
componentWillReceiveProps: function(nextProps) {
|
||||
var linkData = utils.extractLinks(nextProps.post.message);
|
||||
this.setState({ links: linkData["links"], message: linkData["text"] });
|
||||
this.setState({links: linkData.links, message: linkData.text});
|
||||
},
|
||||
getInitialState: function() {
|
||||
var linkData = utils.extractLinks(this.props.post.message);
|
||||
return { links: linkData["links"], message: linkData["text"] };
|
||||
return {links: linkData.links, message: linkData.text};
|
||||
},
|
||||
render: function() {
|
||||
var post = this.props.post;
|
||||
@@ -22,52 +22,51 @@ module.exports = React.createClass({
|
||||
var inner = utils.textToJsx(this.state.message);
|
||||
var allowTextFormatting = config.AllowTextFormatting;
|
||||
|
||||
var comment = "";
|
||||
var reply = "";
|
||||
var postClass = "";
|
||||
var comment = '';
|
||||
var postClass = '';
|
||||
|
||||
if (parentPost) {
|
||||
var profile = UserStore.getProfile(parentPost.user_id);
|
||||
var apostrophe = "";
|
||||
var name = "...";
|
||||
var apostrophe = '';
|
||||
var name = '...';
|
||||
if (profile != null) {
|
||||
if (profile.username.slice(-1) === 's') {
|
||||
apostrophe = "'";
|
||||
} else {
|
||||
apostrophe = "'s";
|
||||
}
|
||||
name = <a className="theme" onClick={function(){ utils.searchForTerm(profile.username); }}>{profile.username}</a>;
|
||||
name = <a className='theme' onClick={utils.searchForTerm.bind(this, profile.username)}>{profile.username}</a>;
|
||||
}
|
||||
|
||||
var message = ""
|
||||
if(parentPost.message) {
|
||||
message = utils.replaceHtmlEntities(parentPost.message)
|
||||
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";
|
||||
message += ' plus 1 other file';
|
||||
} else if (parentPost.filenames.length > 2) {
|
||||
message += " plus " + (parentPost.filenames.length - 1) + " other files";
|
||||
message += ' plus ' + (parentPost.filenames.length - 1) + ' other files';
|
||||
}
|
||||
}
|
||||
|
||||
if (allowTextFormatting) {
|
||||
message = formatText(message, {sanitize: true, mangle: false, gfm: true, breaks: true, tables: false, smartypants: true, renderer: utils.customMarkedRenderer({disable: true})});
|
||||
comment = (
|
||||
<p className="post-link">
|
||||
<span>Commented on {name}{apostrophe} message: <a className="theme" onClick={this.props.handleCommentClick} dangerouslySetInnerHTML={{__html: message}} /></span>
|
||||
<p className='post-link'>
|
||||
<span>Commented on {name}{apostrophe} message: <a className='theme' onClick={this.props.handleCommentClick} dangerouslySetInnerHTML={{__html: message}} /></span>
|
||||
</p>
|
||||
);
|
||||
} else {
|
||||
comment = (
|
||||
<p className="post-link">
|
||||
<span>Commented on {name}{apostrophe} message: <a className="theme" onClick={this.props.handleCommentClick}>{message}</a></span>
|
||||
<p className='post-link'>
|
||||
<span>Commented on {name}{apostrophe} message: <a className='theme' onClick={this.props.handleCommentClick}>{message}</a></span>
|
||||
</p>
|
||||
);
|
||||
}
|
||||
|
||||
postClass += " post-comment";
|
||||
postClass += ' post-comment';
|
||||
}
|
||||
|
||||
var embed;
|
||||
@@ -75,22 +74,26 @@ module.exports = React.createClass({
|
||||
embed = utils.getEmbed(this.state.links[0]);
|
||||
}
|
||||
|
||||
var innerHolder = <p key={post.id + '_message'} className={postClass}><span>{inner}</span></p>;
|
||||
if (allowTextFormatting) {
|
||||
innerHolder = <div key={post.id + '_message'} className={postClass}><span>{inner}</span></div>;
|
||||
}
|
||||
|
||||
var fileAttachmentHolder = '';
|
||||
if (filenames && filenames.length > 0) {
|
||||
fileAttachmentHolder = (<FileAttachmentList
|
||||
filenames={filenames}
|
||||
modalId={'view_image_modal_' + post.id}
|
||||
channelId={post.channel_id}
|
||||
userId={post.user_id} />);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="post-body">
|
||||
{ comment }
|
||||
{allowTextFormatting ?
|
||||
<div key={post.id+"_message"} className={postClass}><span>{inner}</span></div>
|
||||
:
|
||||
<p key={post.id+"_message"} className={postClass}><span>{inner}</span></p>
|
||||
}
|
||||
{ filenames && filenames.length > 0 ?
|
||||
<FileAttachmentList
|
||||
filenames={filenames}
|
||||
modalId={"view_image_modal_" + post.id}
|
||||
channelId={post.channel_id}
|
||||
userId={post.user_id} />
|
||||
: "" }
|
||||
{ embed }
|
||||
<div className='post-body'>
|
||||
{comment}
|
||||
{innerHolder}
|
||||
{fileAttachmentHolder}
|
||||
{embed}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -434,8 +434,9 @@ module.exports = React.createClass({
|
||||
var isLastComment = utils.isComment(post) && (i === 0 || posts[order[i-1]].root_id != post.root_id);
|
||||
|
||||
var postKey = post.id;
|
||||
if (post.lastEditDate != undefined)
|
||||
if (post.lastEditDate) {
|
||||
postKey += post.lastEditDate;
|
||||
}
|
||||
|
||||
var postCtl = (
|
||||
<Post ref={post.id} sameUser={sameUser} sameRoot={sameRoot} post={post} parentPost={parentPost} key={postKey}
|
||||
|
||||
@@ -286,8 +286,9 @@ module.exports = React.createClass({
|
||||
}
|
||||
|
||||
var rootPostKey = root_post.id
|
||||
if (root_post.lastEditDate != undefined)
|
||||
if (root_post.lastEditDate) {
|
||||
rootPostKey += root_post.lastEditDate;
|
||||
}
|
||||
|
||||
var posts_array = [];
|
||||
|
||||
@@ -295,8 +296,9 @@ module.exports = React.createClass({
|
||||
var cpost = post_list.posts[postId];
|
||||
if (cpost.root_id == root_post.id) {
|
||||
var cpostKey = cpost.id
|
||||
if (cpost.lastEditDate != undefined)
|
||||
if (cpost.lastEditDate) {
|
||||
cpostKey += cpost.lastEditDate;
|
||||
}
|
||||
|
||||
cpost.cpostKey = cpostKey;
|
||||
posts_array.push(cpost);
|
||||
|
||||
@@ -634,6 +634,8 @@ module.exports.textToJsx = function(textToChange, options) {
|
||||
}
|
||||
if (!useTextFormatting && i !== lines.length - 1) {
|
||||
inner.push(<br key={'br_' + i}/>);
|
||||
} else if (useTextFormatting && !codeFlag && i < lines.length - 2) {
|
||||
inner.push(<br key={'br_' + i}/>);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -194,18 +194,6 @@ Lexer.prototype.token = function(src, top, bq) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// top-level paragraph
|
||||
if (top && (cap = this.rules.paragraph.exec(src))) {
|
||||
src = src.substring(cap[0].length);
|
||||
this.tokens.push({
|
||||
type: 'paragraph',
|
||||
text: cap[1].charAt(cap[1].length - 1) === '\n'
|
||||
? cap[1].slice(0, -1)
|
||||
: cap[1]
|
||||
});
|
||||
continue;
|
||||
}
|
||||
|
||||
// text
|
||||
if (cap = this.rules.text.exec(src)) {
|
||||
// Top-level should never reach here.
|
||||
@@ -240,7 +228,7 @@ var inline = {
|
||||
nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
|
||||
strong: /^\*((?:\*\*|[\s\S])+?)\*/,
|
||||
em: /^\b_((?:[^_]|__)+?)_\b/,
|
||||
code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,
|
||||
code: /^(`{1})\s*([^\r?\n|\r]*?[^`])\s*\1(?!`)/,
|
||||
br: /^ {2,}\n(?!\s*$)/,
|
||||
del: noop,
|
||||
text: /^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/
|
||||
@@ -394,13 +382,6 @@ InlineLexer.prototype.output = function(src) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// br
|
||||
if (cap = this.rules.br.exec(src)) {
|
||||
src = src.substring(cap[0].length);
|
||||
out += this.renderer.br();
|
||||
continue;
|
||||
}
|
||||
|
||||
// text
|
||||
if (cap = this.rules.text.exec(src)) {
|
||||
src = src.substring(cap[0].length);
|
||||
@@ -484,15 +465,6 @@ function Renderer(options) {
|
||||
}
|
||||
|
||||
Renderer.prototype.code = function(code, lang, escaped) {
|
||||
return '<pre>' + code + '</pre>';
|
||||
/*if (this.options.highlight) {
|
||||
var out = this.options.highlight(code, lang);
|
||||
if (out != null && out !== code) {
|
||||
escaped = true;
|
||||
code = out;
|
||||
}
|
||||
}
|
||||
|
||||
if (!lang) {
|
||||
return '<pre><code>'
|
||||
+ (escaped ? code : escape(code, true))
|
||||
@@ -504,7 +476,7 @@ Renderer.prototype.code = function(code, lang, escaped) {
|
||||
+ escape(lang, true)
|
||||
+ '">'
|
||||
+ (escaped ? code : escape(code, true))
|
||||
+ '\n</code></pre>\n';*/
|
||||
+ '\n</code></pre>\n';
|
||||
};
|
||||
|
||||
Renderer.prototype.blockquote = function(quote) {
|
||||
|
||||
Ссылка в новой задаче
Block a user