From e24a0caa20fcd3c25ef12dac6e0459e2b91f3426 Mon Sep 17 00:00:00 2001
From: Riley Davis
Date: Tue, 21 Feb 2017 12:08:02 -0700
Subject: [PATCH 1/6] add EmptyCard component. fix typos. more PropTypes.
---
.../coral-admin/src/components/EmptyCard.js | 14 ++++++++++
.../ModerationQueue/ModerationQueue.js | 15 ++++++++---
.../ModerationQueue/components/Comment.js | 26 ++++++++++++++++---
.../ModerationQueue/components/FlagBox.js | 4 +--
4 files changed, 51 insertions(+), 8 deletions(-)
create mode 100644 client/coral-admin/src/components/EmptyCard.js
diff --git a/client/coral-admin/src/components/EmptyCard.js b/client/coral-admin/src/components/EmptyCard.js
new file mode 100644
index 000000000..e0f837e69
--- /dev/null
+++ b/client/coral-admin/src/components/EmptyCard.js
@@ -0,0 +1,14 @@
+import React, {PropTypes} from 'react';
+import {Card} from 'coral-ui';
+
+const EmptyCard = props => (
+
+ {props.children}
+
+);
+
+EmptyCard.propTypes = {
+ children: PropTypes.node.isRequired
+};
+
+export default EmptyCard;
diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js b/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js
index d30f24c1f..69685a22e 100644
--- a/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js
+++ b/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js
@@ -1,14 +1,17 @@
import React, {PropTypes} from 'react';
import Comment from './components/Comment';
+import EmptyCard from '../../components/EmptyCard';
import {actionsMap} from './helpers/moderationQueueActionsMap';
const ModerationQueue = ({activeTab = 'premod', ...props}) => {
+ const areComments = props.data[activeTab].length;
return (
-
+
{
- props.data[activeTab].map((comment, i) => {
+ areComments
+ ? props.data[activeTab].map((comment, i) => {
const status = comment.action_summaries ? 'FLAGGED' : comment.status;
return {
currentAsset={props.currentAsset}
/>;
})
+ : No more comments to moderate! You're all caught up. Go have some ☕️
}
@@ -29,7 +33,12 @@ const ModerationQueue = ({activeTab = 'premod', ...props}) => {
};
ModerationQueue.propTypes = {
- data: PropTypes.object.isRequired
+ data: PropTypes.object.isRequired,
+ acceptComment: PropTypes.func.isRequired,
+ rejectComment: PropTypes.func.isRequired,
+ showBanUserDialog: PropTypes.func.isRequired,
+ currentAsset: PropTypes.object,
+ suspectWords: PropTypes.arrayOf(PropTypes.string).isRequired
};
export default ModerationQueue;
diff --git a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js
index f8f50c6df..c8818aab9 100644
--- a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js
+++ b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, {PropTypes} from 'react';
import timeago from 'timeago.js';
import Linkify from 'react-linkify';
import Highlighter from 'react-highlight-words';
@@ -17,7 +17,7 @@ const lang = new I18n(translations);
const Comment = ({actions = [], ...props}) => {
const links = linkify.getMatches(props.comment.body);
- const actionSumaries = props.comment.action_summaries;
+ const actionSummaries = props.comment.action_summaries;
return (
@@ -62,11 +62,31 @@ const Comment = ({actions = [], ...props}) => {
- {actionSumaries && }
+ {actionSummaries && }
);
};
+Comment.propTypes = {
+ acceptComment: PropTypes.func.isRequired,
+ rejectComment: PropTypes.func.isRequired,
+ suspectWords: PropTypes.arrayOf(PropTypes.string).isRequired,
+ currentAsset: PropTypes.object,
+ isActive: PropTypes.bool.isRequired,
+ comment: PropTypes.shape({
+ body: PropTypes.string.isRequired,
+ action_summaries: PropTypes.array,
+ created_at: PropTypes.string.isRequired,
+ user: PropTypes.shape({
+ banned: PropTypes.bool
+ }),
+ asset: PropTypes.shape({
+ title: PropTypes.string,
+ id: PropTypes.string
+ })
+ })
+};
+
const linkStyles = {
backgroundColor: 'rgb(255, 219, 135)',
padding: '1px 2px'
diff --git a/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js b/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js
index bf5a34f29..6140abd90 100644
--- a/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js
+++ b/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js
@@ -5,7 +5,7 @@ const FlagBox = props => (
Flags:
- {props.actionSumaries.map((action, i) =>
+ {props.actionSummaries.map((action, i) =>
- {!action.reason ? No reason provided : action.reason} ({action.count})
)}
@@ -13,7 +13,7 @@ const FlagBox = props => (
);
FlagBox.propTypes = {
- actionSumaries: PropTypes.array.isRequired
+ actionSummaries: PropTypes.array.isRequired
};
export default FlagBox;
From 9000778d8fac4f027e830b7ccf589b3c880b23f6 Mon Sep 17 00:00:00 2001
From: Riley Davis
Date: Tue, 21 Feb 2017 12:39:29 -0700
Subject: [PATCH 2/6] empty result for users in Community
---
.../coral-admin/src/components/EmptyCard.js | 2 +-
.../src/containers/Community/Community.js | 19 ++++++++++---------
.../src/containers/Community/NoResults.js | 9 ---------
.../ModerationQueue/ModerationQueue.js | 6 +++++-
client/coral-admin/src/translations.json | 4 +++-
5 files changed, 19 insertions(+), 21 deletions(-)
delete mode 100644 client/coral-admin/src/containers/Community/NoResults.js
diff --git a/client/coral-admin/src/components/EmptyCard.js b/client/coral-admin/src/components/EmptyCard.js
index e0f837e69..42337a892 100644
--- a/client/coral-admin/src/components/EmptyCard.js
+++ b/client/coral-admin/src/components/EmptyCard.js
@@ -2,7 +2,7 @@ import React, {PropTypes} from 'react';
import {Card} from 'coral-ui';
const EmptyCard = props => (
-
+
{props.children}
);
diff --git a/client/coral-admin/src/containers/Community/Community.js b/client/coral-admin/src/containers/Community/Community.js
index bad5654cf..08a962c34 100644
--- a/client/coral-admin/src/containers/Community/Community.js
+++ b/client/coral-admin/src/containers/Community/Community.js
@@ -1,12 +1,12 @@
import React from 'react';
import I18n from 'coral-framework/modules/i18n/i18n';
-import translations from '../../translations.json';
+import translations from 'coral-admin/src/translations.json';
import styles from './Community.css';
import Table from './Table';
import Loading from './Loading';
-import NoResults from './NoResults';
import {Pager} from 'coral-ui';
+import EmptyCard from '../../components/EmptyCard';
const lang = new I18n(translations);
@@ -54,13 +54,14 @@ const Community = ({isFetching, commenters, ...props}) => {
{ isFetching &&
}
- { !hasResults &&
}
- { hasResults &&
-
+ {
+ hasResults
+ ?
+ :
{lang.t('community.no-results')}
}
(
-
- No users found with that user name or email address
-
-);
-
-export default NoResults;
diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js b/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js
index 69685a22e..0d48acc92 100644
--- a/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js
+++ b/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js
@@ -3,6 +3,10 @@ import React, {PropTypes} from 'react';
import Comment from './components/Comment';
import EmptyCard from '../../components/EmptyCard';
import {actionsMap} from './helpers/moderationQueueActionsMap';
+import I18n from 'coral-framework/modules/i18n/i18n';
+import translations from 'coral-admin/src/translations';
+
+const lang = new I18n(translations);
const ModerationQueue = ({activeTab = 'premod', ...props}) => {
const areComments = props.data[activeTab].length;
@@ -25,7 +29,7 @@ const ModerationQueue = ({activeTab = 'premod', ...props}) => {
currentAsset={props.currentAsset}
/>;
})
- : No more comments to moderate! You're all caught up. Go have some ☕️
+ : {lang.t('modqueue.emptyqueue')}
}
diff --git a/client/coral-admin/src/translations.json b/client/coral-admin/src/translations.json
index 5b15564d7..debfdcc08 100644
--- a/client/coral-admin/src/translations.json
+++ b/client/coral-admin/src/translations.json
@@ -7,7 +7,7 @@
"admin": "Administrator",
"moderator": "Moderator",
"role": "Select role...",
- "no-results": "No users found with that user name or email address.",
+ "no-results": "No users found with that user name or email address. They're hiding!",
"status": "Status",
"select-status": "Select status...",
"active": "Active",
@@ -32,6 +32,7 @@
"prevcomment": "Go to the previous comment",
"singleview": "Toggle single comment edit view",
"thismenu": "Open this menu",
+ "emptyqueue": "No more comments to moderate! You're all caught up. Go have some ☕️",
"showshortcuts": "Show Shortcuts"
},
"comment": {
@@ -152,6 +153,7 @@
"flagged": "marcado",
"shortcuts": "Atajos de teclado",
"close": "Cerrar",
+ "emptyqueue": "No se encontro ningún usuario. Están escondidos.",
"showshortcuts": "Mostrar atajos"
},
"comment": {
From f76befd6ac3517ade0962ab069c38eb6312378b0 Mon Sep 17 00:00:00 2001
From: Riley Davis
Date: Tue, 21 Feb 2017 12:48:01 -0700
Subject: [PATCH 3/6] no comments in user list
---
client/coral-settings/translations.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/client/coral-settings/translations.json b/client/coral-settings/translations.json
index 2a827a4f0..e255e2b64 100644
--- a/client/coral-settings/translations.json
+++ b/client/coral-settings/translations.json
@@ -1,12 +1,12 @@
{
"en":{
- "userNoComment": "This user has not yet left a comment.",
+ "userNoComment": "You've never left a comment. Join the conversation!",
"allComments": "All Comments",
"profileSettings": "Profile Settings",
"myCommentHistory": "My comment History"
},
"es":{
- "userNoComment": "Aún no ha escrito ningún comentario.",
+ "userNoComment": "No has dejado áun ningún comentario. ¡Unete a la conversación!",
"allComments": "Todos los comentarios",
"profileSettings": "Configuración del perfil",
"myCommentHistory": "Mi historial de comentarios"
From e7c4acde4d07c47b4e053cdf95f148713ccecf15 Mon Sep 17 00:00:00 2001
From: Riley Davis
Date: Tue, 21 Feb 2017 16:11:56 -0700
Subject: [PATCH 4/6] small bugfix
---
.../src/containers/ModerationQueue/components/Comment.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js
index c8818aab9..b39eeb2f8 100644
--- a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js
+++ b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js
@@ -42,7 +42,7 @@ const Comment = ({actions = [], ...props}) => {
/>
)}
- {props.comment.user.banned === 'banned' ?
+ {props.comment.user.status === 'banned' ?
{lang.t('comment.banned_user')}
@@ -78,7 +78,7 @@ Comment.propTypes = {
action_summaries: PropTypes.array,
created_at: PropTypes.string.isRequired,
user: PropTypes.shape({
- banned: PropTypes.bool
+ status: PropTypes.string
}),
asset: PropTypes.shape({
title: PropTypes.string,
From 80706d2fdff6ba547762d359270fe7d49671ac70 Mon Sep 17 00:00:00 2001
From: Wyatt Johnson
Date: Wed, 22 Feb 2017 10:33:47 -0700
Subject: [PATCH 5/6] fixed issue related to action create on suspect word
match
---
graph/mutators/comment.js | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/graph/mutators/comment.js b/graph/mutators/comment.js
index 33d2c4f85..5112ba829 100644
--- a/graph/mutators/comment.js
+++ b/graph/mutators/comment.js
@@ -150,10 +150,8 @@ const createPublicComment = (context, commentInput) => {
item_id: comment.id,
item_type: 'COMMENTS',
action_type: 'FLAG',
- metadata: {
- field: 'body',
- details: 'Matched suspect word filters.'
- }
+ group_id: 'Matched suspect word filter',
+ metadata: {}
})
.then(() => comment);
}
From 2acd099f3f598252e604bffcf98dc5205d4c75d6 Mon Sep 17 00:00:00 2001
From: Riley Davis
Date: Wed, 22 Feb 2017 11:15:13 -0700
Subject: [PATCH 6/6] add empty state for asset search
---
.../src/containers/Streams/Streams.js | 36 ++++++++++---------
client/coral-admin/src/translations.json | 2 ++
2 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/client/coral-admin/src/containers/Streams/Streams.js b/client/coral-admin/src/containers/Streams/Streams.js
index 62f2f009e..96130fcba 100644
--- a/client/coral-admin/src/containers/Streams/Streams.js
+++ b/client/coral-admin/src/containers/Streams/Streams.js
@@ -8,6 +8,7 @@ import {Link} from 'react-router';
import {Pager, Icon} from 'coral-ui';
import {DataTable, TableHeader, RadioGroup, Radio} from 'react-mdl';
+import EmptyCard from 'coral-admin/src/components/EmptyCard';
const limit = 25;
@@ -142,22 +143,25 @@ class Streams extends Component {
{lang.t('streams.oldest')}
-
-
- {lang.t('streams.article')}
-
- {lang.t('streams.pubdate')}
-
-
- {lang.t('streams.status')}
-
-
-
-
+ {
+ assetsIds.length
+ ?
+
+ {lang.t('streams.article')}
+
+ {lang.t('streams.pubdate')}
+
+
+ {lang.t('streams.status')}
+
+
+
+
+ : {lang.t('streams.empty_result')}
+ }
);
}
diff --git a/client/coral-admin/src/translations.json b/client/coral-admin/src/translations.json
index debfdcc08..7219a22ca 100644
--- a/client/coral-admin/src/translations.json
+++ b/client/coral-admin/src/translations.json
@@ -114,6 +114,7 @@
"comment_count": "Comments"
},
"streams": {
+ "empty_result": "No assets match this search. Maybe try widening your search?",
"search": "Search",
"filter-streams": "Filter Streams",
"stream-status": "Stream Status",
@@ -222,6 +223,7 @@
"comment_count": "Comentarios"
},
"streams": {
+ "empty_result": "No se encuentro articulo con esta busqueda. Tal vez extender la busqueda?",
"search": "",
"filter-streams": "",
"stream-status": "",