summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReed Garmsen <rgarmsen2295@gmail.com>2015-08-10 16:51:59 -0700
committerReed Garmsen <rgarmsen2295@gmail.com>2015-08-12 11:19:42 -0700
commite02883baf2fd2a0cfc21bd557bc0ecc69afd707c (patch)
treec874014e674764172e6caf73a34886ce7a020db4
parent23a331f933af834ed1a26806f087e61ca6ddd93a (diff)
downloadchat-e02883baf2fd2a0cfc21bd557bc0ecc69afd707c.tar.gz
chat-e02883baf2fd2a0cfc21bd557bc0ecc69afd707c.tar.bz2
chat-e02883baf2fd2a0cfc21bd557bc0ecc69afd707c.zip
Cosmetic refactoring of post_body.jsx
-rw-r--r--web/react/components/post_body.jsx69
-rw-r--r--web/react/components/post_list.jsx3
-rw-r--r--web/react/components/post_right.jsx6
-rw-r--r--web/react/utils/utils.jsx2
-rw-r--r--web/static/js/marked/lib/marked.js32
5 files changed, 46 insertions, 66 deletions
diff --git a/web/react/components/post_body.jsx b/web/react/components/post_body.jsx
index bf039d79b..fab6833e6 100644
--- a/web/react/components/post_body.jsx
+++ b/web/react/components/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>
);
}
diff --git a/web/react/components/post_list.jsx b/web/react/components/post_list.jsx
index 12875ee90..ad7f4a8bf 100644
--- a/web/react/components/post_list.jsx
+++ b/web/react/components/post_list.jsx
@@ -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}
diff --git a/web/react/components/post_right.jsx b/web/react/components/post_right.jsx
index 10a9400f5..19e4cf67a 100644
--- a/web/react/components/post_right.jsx
+++ b/web/react/components/post_right.jsx
@@ -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);
diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx
index bbe5003bc..2136accb4 100644
--- a/web/react/utils/utils.jsx
+++ b/web/react/utils/utils.jsx
@@ -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}/>);
}
}
diff --git a/web/static/js/marked/lib/marked.js b/web/static/js/marked/lib/marked.js
index 5c7d89f46..4085649a5 100644
--- a/web/static/js/marked/lib/marked.js
+++ b/web/static/js/marked/lib/marked.js
@@ -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) {