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 (
-
@@ -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:

    @@ -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": "",