Cosmetic refactoring of post_body.jsx

Этот коммит содержится в:
Reed Garmsen
2015-08-10 16:51:59 -07:00
родитель 23a331f933
Коммит e02883baf2
5 изменённых файлов: 46 добавлений и 66 удалений

Просмотреть файл

@@ -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) {