-
person
-
{props.comment.get('name') || lang.t('comment.anon')}
-
{timeago().format(props.comment.get('createdAt') || (Date.now() - props.index * 60 * 1000), lang.getLocale().replace('-', '_'))}
- {props.comment.get('flagged') ?
{lang.t('comment.flagged')}
: null}
+export default props => {
+ const links = linkify.getMatches(props.comment.get('body'));
+
+ return (
+
+
+
+
person
+
{props.comment.get('name') || lang.t('comment.anon')}
+
{timeago().format(props.comment.get('createdAt') || (Date.now() - props.index * 60 * 1000), lang.getLocale().replace('-', '_'))}
+ {props.comment.get('flagged') ?
{lang.t('comment.flagged')}
: null}
+
+
+ {links ?
+
Contains Link : null}
+
+ {props.actions.map(action => canShowAction(action, props.comment) ? (
+ props.onClickAction(props.actionsMap[action].status, props.comment.get('id'))}
+ fab colored>
+
+
+ ) : null)}
+
+
-
- {props.actions.map(action => canShowAction(action, props.comment) ? (
-
props.onClickAction(props.actionsMap[action].status, props.comment.get('id'))}
- fab colored>
-
-
- ) : null)}
+
+
+
+ {props.comment.get('body')}
+
+
-
-
- {props.comment.get('body')}
-
-
-);
+
+ );
+};
// Check if an action can be performed over a comment
const canShowAction = (action, comment) => {
@@ -43,4 +58,9 @@ const canShowAction = (action, comment) => {
return true;
};
+const linkStyles = {
+ backgroundColor: 'rgb(255, 219, 135)',
+ padding: '1px 2px'
+};
+
const lang = new I18n(translations);
diff --git a/client/coral-admin/src/components/CommentList.css b/client/coral-admin/src/components/CommentList.css
index f683ca36b..2c58c81cf 100644
--- a/client/coral-admin/src/components/CommentList.css
+++ b/client/coral-admin/src/components/CommentList.css
@@ -121,3 +121,15 @@
}
}
+
+
+.hasLinks {
+ color: #f00;
+ text-align: right;
+ display: flex;
+ align-items: center;
+
+ i {
+ margin-right: 5px;
+ }
+}
diff --git a/package.json b/package.json
index c39df1451..9c2a397e0 100644
--- a/package.json
+++ b/package.json
@@ -44,9 +44,12 @@
"express": "^4.14.0",
"express-session": "^1.14.2",
"helmet": "^3.1.0",
+ "jsonwebtoken": "^7.1.9",
+ "lodash": "^4.16.6",
"lodash.debounce": "^4.0.8",
"mongoose": "^4.6.5",
"morgan": "^1.7.0",
+ "nodemailer": "^2.6.4",
"passport": "^0.3.2",
"passport-facebook": "^2.1.1",
"passport-local": "^1.0.0",
@@ -54,8 +57,8 @@
"nodemailer": "^2.6.4",
"lodash": "^4.17.2",
"natural": "^0.4.0",
- "naughty-words": "^1.0.1",
"prompt": "^1.0.0",
+ "react-linkify": "^0.1.3",
"redis": "^2.6.3",
"uuid": "^2.0.3"
},