From 29753a958bdd2d2a07ad47aee486b853f529c576 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Tue, 30 May 2017 15:50:56 -0600 Subject: [PATCH 01/10] show comments on the UserDetail drawer --- .../src/components/ActionButton.js | 4 +- .../src/components/ModerationList.css | 6 +++ .../ModerationQueue/ModerationContainer.js | 8 +++- .../containers/ModerationQueue/UserDetail.css | 2 +- .../containers/ModerationQueue/UserDetail.js | 44 ++++++++++++++++++- .../ModerationQueue/components/Comment.js | 3 ++ .../src/graphql/queries/userDetail.graphql | 8 ++++ client/coral-ui/components/Drawer.css | 16 +++++-- client/coral-ui/components/Drawer.js | 4 +- graph/typeDefs.graphql | 3 ++ 10 files changed, 88 insertions(+), 10 deletions(-) diff --git a/client/coral-admin/src/components/ActionButton.js b/client/coral-admin/src/components/ActionButton.js index cfd7eb2da..42af5db24 100644 --- a/client/coral-admin/src/components/ActionButton.js +++ b/client/coral-admin/src/components/ActionButton.js @@ -17,11 +17,11 @@ const ActionButton = ({type = '', active, ...props}) => { return ( + >{props.minimal ? '' : t(`modqueue.${text}`)} ); }; diff --git a/client/coral-admin/src/components/ModerationList.css b/client/coral-admin/src/components/ModerationList.css index 4d4f37c9a..99927e7ad 100644 --- a/client/coral-admin/src/components/ModerationList.css +++ b/client/coral-admin/src/components/ModerationList.css @@ -189,6 +189,12 @@ width: 140px; } +.minimal { + width: 45px; + min-width: 0; + float: right; +} + .approve__active { box-shadow: none; color: white; diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js index 152121a63..06f7c9ef3 100644 --- a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js +++ b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js @@ -254,7 +254,13 @@ class ModerationContainer extends Component { {moderation.userDetailId && ( + hideUserDetail={hideUserDetail} + bannedWords={settings.wordlist.banned} + suspectWords={settings.wordlist.suspect} + showBanUserDialog={props.showBanUserDialog} + showSuspendUserDialog={props.showSuspendUserDialog} + acceptComment={props.acceptComment} + rejectComment={props.rejectComment} /> )} ); diff --git a/client/coral-admin/src/containers/ModerationQueue/UserDetail.css b/client/coral-admin/src/containers/ModerationQueue/UserDetail.css index e37971ada..7c84f62fa 100644 --- a/client/coral-admin/src/containers/ModerationQueue/UserDetail.css +++ b/client/coral-admin/src/containers/ModerationQueue/UserDetail.css @@ -36,6 +36,6 @@ background-color: transparent; font-size: 16px; position: absolute; - width: 100%; + width: 90%; outline: none; } diff --git a/client/coral-admin/src/containers/ModerationQueue/UserDetail.js b/client/coral-admin/src/containers/ModerationQueue/UserDetail.js index d9b85a060..cabd8bf9f 100644 --- a/client/coral-admin/src/containers/ModerationQueue/UserDetail.js +++ b/client/coral-admin/src/containers/ModerationQueue/UserDetail.js @@ -4,10 +4,18 @@ import styles from './UserDetail.css'; import {compose} from 'react-apollo'; import {getUserDetail} from 'coral-admin/src/graphql/queries'; import Slot from 'coral-framework/components/Slot'; +import Comment from './components/Comment'; +import {actionsMap} from './helpers/moderationQueueActionsMap'; class UserDetail extends React.Component { static propTypes = { id: PropTypes.string.isRequired, + bannedWords: PropTypes.array.isRequired, + suspectWords: PropTypes.array.isRequired, + showBanUserDialog: PropTypes.func.isRequired, + showSuspendUserDialog: PropTypes.func.isRequired, + acceptComment: PropTypes.func.isRequired, + rejectComment: PropTypes.func.isRequired, hideUserDetail: PropTypes.func.isRequired } @@ -22,13 +30,22 @@ class UserDetail extends React.Component { } render () { - const {data, hideUserDetail} = this.props; + const { + data, + hideUserDetail, + bannedWords, + suspectWords, + showBanUserDialog, + showSuspendUserDialog, + acceptComment, + rejectComment + } = this.props; if (!('user' in data)) { return null; } - const {user, totalComments, rejectedComments} = data; + const {user, comments, totalComments, rejectedComments} = data; const localProfile = user.profiles.find((p) => p.provider === 'local'); let profile; if (localProfile) { @@ -64,6 +81,29 @@ class UserDetail extends React.Component {

{`${(rejectedPercent).toFixed(1)}%`}

+
+ { + comments.map((comment, i) => { + const status = comment.action_summaries ? 'FLAGGED' : comment.status; + return {}} + actions={actionsMap[status]} + showBanUserDialog={showBanUserDialog} + showSuspendUserDialog={showSuspendUserDialog} + acceptComment={acceptComment} + rejectComment={rejectComment} + currentAsset={null} + currentUserId={this.props.id} + minimal={true} />; + }) + } +
); } diff --git a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js index bf6b050a1..fe41f4d34 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js @@ -23,6 +23,7 @@ const Comment = ({ viewUserDetail, suspectWords, bannedWords, + minimal, ...props }) => { const links = linkify.getMatches(comment.body); @@ -118,6 +119,7 @@ const Comment = ({ (action === 'APPROVE' && comment.status === 'ACCEPTED'); return ( { return (
×
- {children} +
+ {children} +
); }; diff --git a/graph/typeDefs.graphql b/graph/typeDefs.graphql index 1abb894b8..15278f97e 100644 --- a/graph/typeDefs.graphql +++ b/graph/typeDefs.graphql @@ -148,6 +148,9 @@ enum ACTION_TYPE { # CommentsQuery allows the ability to query comments by a specific methods. input CommentsQuery { + # Author of the comments + author_id: ID + # Current status of a comment. Requires the `ADMIN` role. statuses: [COMMENT_STATUS!] From 6e458e01491bfa4fd8731d1b3ec9949ad4ad6518 Mon Sep 17 00:00:00 2001 From: riley Date: Wed, 31 May 2017 10:54:34 -0600 Subject: [PATCH 02/10] resolve missing files --- .../Moderation/components/UserDetail.js | 114 ++++++++++++++++++ .../Moderation/containers/UserDetail.js | 3 + 2 files changed, 117 insertions(+) create mode 100644 client/coral-admin/src/routes/Moderation/components/UserDetail.js diff --git a/client/coral-admin/src/routes/Moderation/components/UserDetail.js b/client/coral-admin/src/routes/Moderation/components/UserDetail.js new file mode 100644 index 000000000..2fe9730b9 --- /dev/null +++ b/client/coral-admin/src/routes/Moderation/components/UserDetail.js @@ -0,0 +1,114 @@ +import React, {PropTypes} from 'react'; +import {Button, Drawer} from 'coral-ui'; +import styles from './UserDetail.css'; +import Slot from 'coral-framework/components/Slot'; +import Comment from './Comment'; +import {actionsMap} from '../helpers/moderationQueueActionsMap'; + +export default class UserDetail extends React.Component { + static propTypes = { + id: PropTypes.string.isRequired, + hideUserDetail: PropTypes.func.isRequired, + root: PropTypes.object.isRequired, + bannedWords: PropTypes.array.isRequired, + suspectWords: PropTypes.array.isRequired, + showBanUserDialog: PropTypes.func.isRequired, + showSuspendUserDialog: PropTypes.func.isRequired, + acceptComment: PropTypes.func.isRequired, + rejectComment: PropTypes.func.isRequired, + } + + copyPermalink = () => { + this.profile.select(); + try { + document.execCommand('copy'); + } catch (e) { + + /* nothing */ + } + } + + render () { + const { + root: { + user, + totalComments, + rejectedComments, + comments + }, + bannedWords, + suspectWords, + showBanUserDialog, + showSuspendUserDialog, + acceptComment, + rejectComment, + hideUserDetail + } = this.props; + const localProfile = user.profiles.find((p) => p.provider === 'local'); + + let profile; + if (localProfile) { + profile = localProfile.id; + } + + let rejectedPercent = rejectedComments / totalComments; + if (rejectedPercent === Infinity || isNaN(rejectedPercent)) { + + // if totalComments is 0, you're dividing by zero, which is naughty + rejectedPercent = 0; + } + + return ( + +

{user.username}

+ + {profile && this.profile = ref} value={profile} />} + +

Member since {new Date(user.created_at).toLocaleString()}

+
+

+ Account summary +
Data represents the last six months of activity +

+
+
+

Total Comments

+

{totalComments}

+
+
+

Reject Rate

+

{`${(rejectedPercent).toFixed(1)}%`}

+
+
+
+ { + comments.map((comment, i) => { + const status = comment.action_summaries ? 'FLAGGED' : comment.status; + return {}} + actions={actionsMap[status]} + showBanUserDialog={showBanUserDialog} + showSuspendUserDialog={showSuspendUserDialog} + acceptComment={acceptComment} + rejectComment={rejectComment} + currentAsset={null} + currentUserId={this.props.id} + minimal={true} />; + }) + } +
+
+ ); + } +} diff --git a/client/coral-admin/src/routes/Moderation/containers/UserDetail.js b/client/coral-admin/src/routes/Moderation/containers/UserDetail.js index d6ab06af6..7a030fb86 100644 --- a/client/coral-admin/src/routes/Moderation/containers/UserDetail.js +++ b/client/coral-admin/src/routes/Moderation/containers/UserDetail.js @@ -45,8 +45,11 @@ export const withUserDetailQuery = withQuery(gql` }) { ...${getDefinitionName(Comment.fragments.comment)} } + ...${getDefinitionName(Comment.fragments.root)} ${pluginFragments.spreads('root')} } + ${Comment.fragments.root} + ${Comment.fragments.comment} ${pluginFragments.definitions('user')} ${pluginFragments.definitions('root')} `, { From 576cbed8e9fc692046200464d584f547e201768e Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Wed, 31 May 2017 13:44:38 -0600 Subject: [PATCH 03/10] no more errors --- .../coral-admin/src/routes/Moderation/containers/UserDetail.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/containers/UserDetail.js b/client/coral-admin/src/routes/Moderation/containers/UserDetail.js index 7a030fb86..450988ea5 100644 --- a/client/coral-admin/src/routes/Moderation/containers/UserDetail.js +++ b/client/coral-admin/src/routes/Moderation/containers/UserDetail.js @@ -45,10 +45,8 @@ export const withUserDetailQuery = withQuery(gql` }) { ...${getDefinitionName(Comment.fragments.comment)} } - ...${getDefinitionName(Comment.fragments.root)} ${pluginFragments.spreads('root')} } - ${Comment.fragments.root} ${Comment.fragments.comment} ${pluginFragments.definitions('user')} ${pluginFragments.definitions('root')} From 555d54425a81f63c18aae56016434f97d2429cae Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Thu, 1 Jun 2017 15:34:05 -0600 Subject: [PATCH 04/10] implement kiwi's pagination changes --- .../src/routes/Moderation/components/Comment.js | 10 +++++++--- .../routes/Moderation/components/UserDetail.js | 4 ++-- .../src/routes/Moderation/components/styles.css | 2 +- .../routes/Moderation/containers/UserDetail.js | 15 ++++++++++++++- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/Comment.js b/client/coral-admin/src/routes/Moderation/components/Comment.js index 46f6a40c8..f902848ec 100644 --- a/client/coral-admin/src/routes/Moderation/components/Comment.js +++ b/client/coral-admin/src/routes/Moderation/components/Comment.js @@ -56,9 +56,13 @@ const Comment = ({
- viewUserDetail(comment.user.id)}> - {comment.user.name} - + { + !minimal && ( + viewUserDetail(comment.user.id)}> + {comment.user.name} + + ) + } {timeago(comment.created_at || Date.now() - props.index * 60 * 1000)} diff --git a/client/coral-admin/src/routes/Moderation/components/UserDetail.js b/client/coral-admin/src/routes/Moderation/components/UserDetail.js index 2fe9730b9..d8587bd7b 100644 --- a/client/coral-admin/src/routes/Moderation/components/UserDetail.js +++ b/client/coral-admin/src/routes/Moderation/components/UserDetail.js @@ -34,7 +34,7 @@ export default class UserDetail extends React.Component { user, totalComments, rejectedComments, - comments + comments: {nodes} }, bannedWords, suspectWords, @@ -87,7 +87,7 @@ export default class UserDetail extends React.Component {
{ - comments.map((comment, i) => { + nodes.map((comment, i) => { const status = comment.action_summaries ? 'FLAGGED' : comment.status; return { return { From dcbd0fc167b44d1c80b6bd2aa8f2971f11eb6896 Mon Sep 17 00:00:00 2001 From: gaba Date: Thu, 1 Jun 2017 17:13:55 -0700 Subject: [PATCH 05/10] Change signed in for logged in. --- plugins/coral-plugin-auth/client/components/UserBox.js | 2 +- plugins/coral-plugin-auth/client/components/styles.css | 4 ++++ plugins/coral-plugin-auth/client/translations.yml | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/coral-plugin-auth/client/components/UserBox.js b/plugins/coral-plugin-auth/client/components/UserBox.js index 91959a35b..47608c0e3 100644 --- a/plugins/coral-plugin-auth/client/components/UserBox.js +++ b/plugins/coral-plugin-auth/client/components/UserBox.js @@ -10,7 +10,7 @@ const UserBox = ({loggedIn, user, logout, onShowProfile}) => ( { loggedIn ? (
- {t('sign_in.logged_in_as')} + {t('sign_in.logged_in_as')} {user.username}. {t('sign_in.not_you')} logout()}> {t('sign_in.logout')} diff --git a/plugins/coral-plugin-auth/client/components/styles.css b/plugins/coral-plugin-auth/client/components/styles.css index d3cd47b87..c8fbf9a30 100644 --- a/plugins/coral-plugin-auth/client/components/styles.css +++ b/plugins/coral-plugin-auth/client/components/styles.css @@ -70,6 +70,10 @@ input.error{ letter-spacing: 0.1px; } +.userBoxLoggedIn { + font-weight: bold; +} + .userBox a { color: black; font-weight: bold; diff --git a/plugins/coral-plugin-auth/client/translations.yml b/plugins/coral-plugin-auth/client/translations.yml index 488f505d6..bc7f06759 100644 --- a/plugins/coral-plugin-auth/client/translations.yml +++ b/plugins/coral-plugin-auth/client/translations.yml @@ -5,10 +5,10 @@ en: verify_email: "Thank you for creating an account! We sent an email to the address you provided to verify your account." verify_email2: "You must verify your account before engaging with the community." not_you: "Not you?" - logged_in_as: "Logged in as" + logged_in_as: "Signed in as" facebook_sign_in: "Sign in with Facebook" facebook_sign_up: "Sign up with Facebook" - logout: "Logout" + logout: "Sign out" sign_in: "Sign in" sign_in_to_join: "Sign in to join the conversation" or: "Or" From fd1cf8121e465f52cc47a6188041a6e69da66931 Mon Sep 17 00:00:00 2001 From: gaba Date: Thu, 1 Jun 2017 17:21:55 -0700 Subject: [PATCH 06/10] Move start to the left. --- .../src/components/Comment.js | 18 +++++++++--------- locales/en.yml | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/client/coral-embed-stream/src/components/Comment.js b/client/coral-embed-stream/src/components/Comment.js index e3f0137b4..48392cc51 100644 --- a/client/coral-embed-stream/src/components/Comment.js +++ b/client/coral-embed-stream/src/components/Comment.js @@ -308,15 +308,6 @@ class Comment extends React.Component { commentId={comment.id} inline /> - {!disableReply && - - setActiveReplyBox(comment.id)} - parentCommentId={parentId || comment.id} - currentUserId={currentUser && currentUser.id} - banned={false} - /> - } + {!disableReply && + + setActiveReplyBox(comment.id)} + parentCommentId={parentId || comment.id} + currentUserId={currentUser && currentUser.id} + banned={false} + /> + }
{ users.length - ?

Because you ignored these, you do not see their comments.

+ ?

{t('framework.because_you_ignored')}

: null }
@@ -29,7 +29,7 @@ export class IgnoredUsers extends Component {
stopIgnoring({id})} - className={styles.link}>Stop ignoring + className={styles.link}>{t('framwork.stop_ignoring')}
)) diff --git a/locales/en.yml b/locales/en.yml index add0275f4..e8e3ba2e9 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -179,6 +179,7 @@ en: flag_username: "Report username" framework: banned_account_msg: "Your account is currently suspended. This means that you cannot Like Report or write comments. Please contact us if you have any questions." + because_you_ignored: "Because you ignored the following commenters, their comments are hidden." comment: comment comment_is_ignored: "This comment is hidden because you ignored this user." comments: comments @@ -195,6 +196,7 @@ en: new_count: "View {0} new {1}" profile: Profile show_all_comments: "Show all comments" + stop_ignoring: "Stop ignoring" success_bio_update: "Your biography has been updated" success_name_update: "Your username has been updated" success_update_settings: "The changes you have made have been applied to the comment stream on this article" diff --git a/locales/es.yml b/locales/es.yml index d658bcfcf..9e49d8d25 100644 --- a/locales/es.yml +++ b/locales/es.yml @@ -217,6 +217,7 @@ es: framework: banned_account_msg: "Tu cuenta se encuentra suspendida. Esto significa que no\ \ puedes gustar, marcar o escribir comentarios." + because_you_ignored: "Porque has ignorado a los siguientes comentadores, sus comentarios estan escondidos." comment: comentario comment_is_ignored: "Este comentario está escondido porque has ignorado al usuario." comments: comentarios @@ -235,6 +236,7 @@ es: new_count: "Ver {0} {1} nuevo" profile: Perfil show_all_comments: "Mostrar todos los comentarios" + stop_ignoring: "No ignorar más" success_bio_update: "Tu biografia fue actualizada" success_name_update: "Tu nombre de usuario ha sido actualizado" success_update_settings: "La configuración de este articulo fue actualizada" From eadbb03c15afacdfcdfaf1b12ba9f28d38fd7ec3 Mon Sep 17 00:00:00 2001 From: gaba Date: Fri, 2 Jun 2017 06:54:01 -0700 Subject: [PATCH 08/10] Fix typo. --- client/coral-settings/components/IgnoredUsers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/coral-settings/components/IgnoredUsers.js b/client/coral-settings/components/IgnoredUsers.js index fd00d2860..32e485e4c 100644 --- a/client/coral-settings/components/IgnoredUsers.js +++ b/client/coral-settings/components/IgnoredUsers.js @@ -29,7 +29,7 @@ export class IgnoredUsers extends Component {
stopIgnoring({id})} - className={styles.link}>{t('framwork.stop_ignoring')} + className={styles.link}>{t('framework.stop_ignoring')}
)) From d8cb560755db1eb396194bd3d39acfbdfb2f9527 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Fri, 2 Jun 2017 13:02:22 -0600 Subject: [PATCH 09/10] add a tab for All/Rejected user detail comments --- client/coral-admin/src/actions/moderation.js | 9 ++++++++ .../src/components/ModerationList.css | 2 +- .../coral-admin/src/constants/moderation.js | 1 + client/coral-admin/src/reducers/moderation.js | 6 +++++ .../Moderation/components/UserDetail.css | 17 ++++++++++++++ .../Moderation/components/UserDetail.js | 13 +++++++++++ .../Moderation/containers/UserDetail.js | 22 ++++++++++++++----- 7 files changed, 64 insertions(+), 6 deletions(-) diff --git a/client/coral-admin/src/actions/moderation.js b/client/coral-admin/src/actions/moderation.js index 4b0b0538a..3f8d975df 100644 --- a/client/coral-admin/src/actions/moderation.js +++ b/client/coral-admin/src/actions/moderation.js @@ -33,3 +33,12 @@ export const setSortOrder = (order) => ({ order }); +export const changeUserDetailStatuses = (tab) => { + let statuses; + if (tab === 'all') { + statuses = ['NONE', 'ACCEPTED', 'REJECTED', 'PREMOD']; + } else if (tab === 'rejected') { + statuses = ['REJECTED']; + } + return {type: actions.CHANGE_USER_DETAIL_STATUSES, tab, statuses}; +}; diff --git a/client/coral-admin/src/components/ModerationList.css b/client/coral-admin/src/components/ModerationList.css index 99927e7ad..2b5989191 100644 --- a/client/coral-admin/src/components/ModerationList.css +++ b/client/coral-admin/src/components/ModerationList.css @@ -192,7 +192,7 @@ .minimal { width: 45px; min-width: 0; - float: right; + float: left; } .approve__active { diff --git a/client/coral-admin/src/constants/moderation.js b/client/coral-admin/src/constants/moderation.js index 3586b1a75..aa8a51a24 100644 --- a/client/coral-admin/src/constants/moderation.js +++ b/client/coral-admin/src/constants/moderation.js @@ -8,3 +8,4 @@ export const HIDE_SUSPEND_USER_DIALOG = 'HIDE_SUSPEND_USER_DIALOG'; export const VIEW_USER_DETAIL = 'VIEW_USER_DETAIL'; export const HIDE_USER_DETAIL = 'HIDE_USER_DETAIL'; export const SET_SORT_ORDER = 'MODERATION_SET_SORT_ORDER'; +export const CHANGE_USER_DETAIL_STATUSES = 'CHANGE_USER_DETAIL_STATUSES'; diff --git a/client/coral-admin/src/reducers/moderation.js b/client/coral-admin/src/reducers/moderation.js index 10cbe0eca..4201ffb06 100644 --- a/client/coral-admin/src/reducers/moderation.js +++ b/client/coral-admin/src/reducers/moderation.js @@ -8,6 +8,8 @@ const initialState = fromJS({ commentId: null, commentStatus: null, userDetailId: null, + userDetailActiveTab: 'all', + userDetailStatuses: ['NONE', 'ACCEPTED', 'REJECTED', 'PREMOD'], banDialog: false, shortcutsNoteVisible: window.localStorage.getItem('coral:shortcutsNote') || 'show', sortOrder: 'REVERSE_CHRONOLOGICAL', @@ -65,6 +67,10 @@ export default function moderation (state = initialState, action) { return state.set('userDetailId', action.userId); case actions.HIDE_USER_DETAIL: return state.set('userDetailId', null); + case actions.CHANGE_USER_DETAIL_STATUSES: + return state + .set('userDetailActiveTab', action.tab) + .set('userDetailStatuses', action.statuses); case actions.SET_SORT_ORDER: return state.set('sortOrder', action.order); default : diff --git a/client/coral-admin/src/routes/Moderation/components/UserDetail.css b/client/coral-admin/src/routes/Moderation/components/UserDetail.css index 7c84f62fa..1119be8c4 100644 --- a/client/coral-admin/src/routes/Moderation/components/UserDetail.css +++ b/client/coral-admin/src/routes/Moderation/components/UserDetail.css @@ -39,3 +39,20 @@ width: 90%; outline: none; } + +.commentStatuses { + padding: 0; + list-style: none; + + li { + display: inline-block; + margin: 0 10px; + cursor: pointer; + padding: 0 10px; + } +} + +.active { + font-weight: bold; + border-bottom: 3px solid #F36451; +} diff --git a/client/coral-admin/src/routes/Moderation/components/UserDetail.js b/client/coral-admin/src/routes/Moderation/components/UserDetail.js index d8587bd7b..c461220c8 100644 --- a/client/coral-admin/src/routes/Moderation/components/UserDetail.js +++ b/client/coral-admin/src/routes/Moderation/components/UserDetail.js @@ -28,6 +28,14 @@ export default class UserDetail extends React.Component { } } + changeStatus = (tab) => { + if (tab === 'all') { + this.props.changeStatus('all'); + } else if (tab === 'rejected') { + this.props.changeStatus('rejected'); + } + } + render () { const { root: { @@ -36,6 +44,7 @@ export default class UserDetail extends React.Component { rejectedComments, comments: {nodes} }, + moderation: {userDetailActiveTab: tab}, bannedWords, suspectWords, showBanUserDialog, @@ -85,6 +94,10 @@ export default class UserDetail extends React.Component {

{`${(rejectedPercent).toFixed(1)}%`}

+
    +
  • All
  • +
  • Rejected
  • +
{ nodes.map((comment, i) => { diff --git a/client/coral-admin/src/routes/Moderation/containers/UserDetail.js b/client/coral-admin/src/routes/Moderation/containers/UserDetail.js index d28d35481..9afd10efb 100644 --- a/client/coral-admin/src/routes/Moderation/containers/UserDetail.js +++ b/client/coral-admin/src/routes/Moderation/containers/UserDetail.js @@ -1,9 +1,12 @@ import React, {PropTypes} from 'react'; import {compose, gql} from 'react-apollo'; +import {connect} from 'react-redux'; +import {bindActionCreators} from 'redux'; import UserDetail from '../components/UserDetail'; import withQuery from 'coral-framework/hocs/withQuery'; import {getSlotsFragments} from 'coral-framework/helpers/plugins'; import {getDefinitionName} from 'coral-framework/utils'; +import {changeUserDetailStatuses} from 'coral-admin/src/actions/moderation'; import Comment from './Comment'; const commentConnectionFragment = gql` @@ -33,12 +36,12 @@ class UserDetailContainer extends React.Component { return null; } - return ; + return ; } } export const withUserDetailQuery = withQuery(gql` - query CoralAdmin_UserDetail($author_id: ID!) { + query CoralAdmin_UserDetail($author_id: ID!, $statuses: [COMMENT_STATUS!]) { user(id: $author_id) { id username @@ -53,7 +56,7 @@ export const withUserDetailQuery = withQuery(gql` rejectedComments: commentCount(query: {author_id: $author_id, statuses: [REJECTED]}) comments: comments(query: { author_id: $author_id, - statuses: [NONE, PREMOD, ACCEPTED, REJECTED] + statuses: $statuses }) { ...CoralAdmin_Moderation_CommentConnection } @@ -64,13 +67,22 @@ export const withUserDetailQuery = withQuery(gql` ${pluginFragments.definitions('root')} ${commentConnectionFragment} `, { - options: ({id}) => { + options: ({id, moderation: {userDetailStatuses: statuses}}) => { return { - variables: {author_id: id} + variables: {author_id: id, statuses} }; } }); +const mapStateToProps = (state) => ({ + moderation: state.moderation.toJS() +}); + +const mapDispatchToProps = (dispatch) => ({ + ...bindActionCreators({changeUserDetailStatuses}, dispatch) +}); + export default compose( + connect(mapStateToProps, mapDispatchToProps), withUserDetailQuery, )(UserDetailContainer); From 22c2843ae59a1f5ecddc771722b91cd092df9131 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Fri, 2 Jun 2017 13:12:59 -0600 Subject: [PATCH 10/10] remove moderate link per designs --- client/coral-admin/src/routes/Moderation/components/Comment.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/coral-admin/src/routes/Moderation/components/Comment.js b/client/coral-admin/src/routes/Moderation/components/Comment.js index f902848ec..d8275975a 100644 --- a/client/coral-admin/src/routes/Moderation/components/Comment.js +++ b/client/coral-admin/src/routes/Moderation/components/Comment.js @@ -96,7 +96,7 @@ const Comment = ({
Story: {comment.asset.title} - {!props.currentAsset && + {!props.currentAsset && !minimal && {t('modqueue.moderate')}}