From 903aa23f193b3d74b95c4205966bccead4111bed Mon Sep 17 00:00:00 2001 From: David Erwin Date: Thu, 23 Mar 2017 11:18:55 -0400 Subject: [PATCH] Revert "Story 138187767 - Moderate Flag User Names" --- .gitignore | 2 - client/coral-admin/src/AppRouter.js | 15 - client/coral-admin/src/actions/community.js | 29 +- client/coral-admin/src/components/Modal.js | 1 + .../SuspendUserModal.css} | 0 .../src/components/SuspendUserModal.js | 106 ++++++ client/coral-admin/src/components/User.js | 50 +++ client/coral-admin/src/constants/comments.js | 1 + client/coral-admin/src/constants/community.js | 10 - client/coral-admin/src/constants/users.js | 1 + .../src/containers/Community/Community.css | 230 ------------ .../Community/{People.js => Community.js} | 6 +- .../Community/CommunityContainer.js | 117 ++---- .../containers/Community/CommunityLayout.js | 9 - .../containers/Community/FlaggedAccounts.js | 45 --- .../src/containers/Community/Table.js | 2 +- .../Community/components/ActionButton.js | 24 -- .../Community/components/BanUserDialog.css | 164 --------- .../Community/components/BanUserDialog.js | 54 --- .../Community/components/CommunityMenu.js | 31 -- .../Community/components/SuspendUserDialog.js | 115 ------ .../containers/Community/components/User.js | 90 ----- .../Community/components/styles.css | 339 ------------------ .../ModerationQueue/components/Comment.js | 20 +- .../src/graphql/mutations/index.js | 32 +- .../src/graphql/mutations/suspendUser.graphql | 7 - .../coral-admin/src/graphql/queries/index.js | 3 - .../queries/modUserFlaggedQuery.graphql | 26 -- client/coral-admin/src/reducers/community.js | 72 ++-- client/coral-admin/src/translations.json | 51 +-- client/coral-plugin-flags/FlagComment.js | 4 +- graph/loaders/users.js | 41 --- graph/mutators/user.js | 30 +- graph/resolvers/flag_action.js | 12 +- graph/resolvers/root_mutation.js | 3 - graph/resolvers/root_query.js | 22 -- graph/typeDefs.graphql | 31 -- models/user.js | 5 +- services/email/suspension.ejs | 1 - services/email/suspension.txt.ejs | 1 - services/users.js | 46 --- test/graph/mutations/addCommentTag.js | 2 +- 42 files changed, 246 insertions(+), 1604 deletions(-) rename client/coral-admin/src/{containers/Community/components/SuspendUserDialog.css => components/SuspendUserModal.css} (100%) create mode 100644 client/coral-admin/src/components/SuspendUserModal.js create mode 100644 client/coral-admin/src/components/User.js rename client/coral-admin/src/containers/Community/{People.js => Community.js} (94%) delete mode 100644 client/coral-admin/src/containers/Community/CommunityLayout.js delete mode 100644 client/coral-admin/src/containers/Community/FlaggedAccounts.js delete mode 100644 client/coral-admin/src/containers/Community/components/ActionButton.js delete mode 100644 client/coral-admin/src/containers/Community/components/BanUserDialog.css delete mode 100644 client/coral-admin/src/containers/Community/components/BanUserDialog.js delete mode 100644 client/coral-admin/src/containers/Community/components/CommunityMenu.js delete mode 100644 client/coral-admin/src/containers/Community/components/SuspendUserDialog.js delete mode 100644 client/coral-admin/src/containers/Community/components/User.js delete mode 100644 client/coral-admin/src/containers/Community/components/styles.css delete mode 100644 client/coral-admin/src/graphql/mutations/suspendUser.graphql delete mode 100644 client/coral-admin/src/graphql/queries/modUserFlaggedQuery.graphql delete mode 100644 services/email/suspension.ejs delete mode 100644 services/email/suspension.txt.ejs diff --git a/.gitignore b/.gitignore index d91635c94..8775ac487 100644 --- a/.gitignore +++ b/.gitignore @@ -12,8 +12,6 @@ dump.rdb *.cfg .idea/ coverage/ -.tags -.tags1 # remove plugin folders plugins diff --git a/client/coral-admin/src/AppRouter.js b/client/coral-admin/src/AppRouter.js index 2bd59b79d..a2990677f 100644 --- a/client/coral-admin/src/AppRouter.js +++ b/client/coral-admin/src/AppRouter.js @@ -5,13 +5,10 @@ import Stories from 'containers/Stories/Stories'; import Configure from 'containers/Configure/Configure'; import LayoutContainer from 'containers/LayoutContainer'; import InstallContainer from 'containers/Install/InstallContainer'; - -import CommunityLayout from 'containers/Community/CommunityLayout'; import CommunityContainer from 'containers/Community/CommunityContainer'; import ModerationLayout from 'containers/ModerationQueue/ModerationLayout'; import ModerationContainer from 'containers/ModerationQueue/ModerationContainer'; - import Dashboard from 'containers/Dashboard/Dashboard'; const routes = ( @@ -24,18 +21,6 @@ const routes = ( - {/* Community Routes */} - - - - - - - - - - - {/* Moderation Routes */} diff --git a/client/coral-admin/src/actions/community.js b/client/coral-admin/src/actions/community.js index 0f53ea3da..c2d738460 100644 --- a/client/coral-admin/src/actions/community.js +++ b/client/coral-admin/src/actions/community.js @@ -7,33 +7,28 @@ import { SORT_UPDATE, COMMENTERS_NEW_PAGE, SET_ROLE, - SET_COMMENTER_STATUS, - SHOW_BANUSER_DIALOG, - HIDE_BANUSER_DIALOG, - SHOW_SUSPENDUSER_DIALOG, - HIDE_SUSPENDUSER_DIALOG + SET_COMMENTER_STATUS } from '../constants/community'; import coralApi from '../../../coral-framework/helpers/response'; -export const fetchAccounts = (query = {}) => dispatch => { - - dispatch(requestFetchAccounts()); +export const fetchCommenters = (query = {}) => dispatch => { + dispatch(requestFetchCommenters()); coralApi(`/users?${qs.stringify(query)}`) - .then(({result, page, count, limit, totalPages}) =>{ + .then(({result, page, count, limit, totalPages}) => dispatch({ type: FETCH_COMMENTERS_SUCCESS, - accounts: result, + commenters: result, page, count, limit, totalPages - }); - }) + }) + ) .catch(error => dispatch({type: FETCH_COMMENTERS_FAILURE, error})); }; -const requestFetchAccounts = () => ({ +const requestFetchCommenters = () => ({ type: FETCH_COMMENTERS_REQUEST }); @@ -60,11 +55,3 @@ export const setCommenterStatus = (id, status) => (dispatch) => { return dispatch({type: SET_COMMENTER_STATUS, id, status}); }); }; - -// Ban User Dialog -export const showBanUserDialog = (user) => ({type: SHOW_BANUSER_DIALOG, user}); -export const hideBanUserDialog = () => ({type: HIDE_BANUSER_DIALOG}); - -// Suspend User Dialog -export const showSuspendUserDialog = (user) => ({type: SHOW_SUSPENDUSER_DIALOG, user}); -export const hideSuspendUserDialog = () => ({type: HIDE_SUSPENDUSER_DIALOG}); diff --git a/client/coral-admin/src/components/Modal.js b/client/coral-admin/src/components/Modal.js index b667258c2..99c27c3a1 100644 --- a/client/coral-admin/src/components/Modal.js +++ b/client/coral-admin/src/components/Modal.js @@ -1,3 +1,4 @@ + import React from 'react'; import {Button, Icon} from 'react-mdl'; import styles from './Modal.css'; diff --git a/client/coral-admin/src/containers/Community/components/SuspendUserDialog.css b/client/coral-admin/src/components/SuspendUserModal.css similarity index 100% rename from client/coral-admin/src/containers/Community/components/SuspendUserDialog.css rename to client/coral-admin/src/components/SuspendUserModal.css diff --git a/client/coral-admin/src/components/SuspendUserModal.js b/client/coral-admin/src/components/SuspendUserModal.js new file mode 100644 index 000000000..5afb8ffee --- /dev/null +++ b/client/coral-admin/src/components/SuspendUserModal.js @@ -0,0 +1,106 @@ +import I18n from 'coral-framework/modules/i18n/i18n'; +import translations from '../translations.json'; +import React, {Component, PropTypes} from 'react'; +import Modal from 'components/Modal'; +import styles from './SuspendUserModal.css'; +import {Button} from 'coral-ui'; + +const stages = [ + { + title: 'suspenduser.title_0', + description: 'suspenduser.description_0', + options: { + 'j': 'suspenduser.no_cancel', + 'k': 'suspenduser.yes_suspend' + } + }, + { + title: 'suspenduser.title_1', + description: 'suspenduser.description_1', + options: { + 'j': 'bandialog.cancel', + 'k': 'suspenduser.send' + } + } +]; + +class SuspendUserModal extends Component { + + state = {email: '', stage: 0} + + static propTypes = { + stage: PropTypes.number, + actionType: PropTypes.string, + onClose: PropTypes.func.isRequired, + suspendUser: PropTypes.func.isRequired + } + + componentDidMount() { + const about = lang.t('suspenduser.username'); + this.setState({email: lang.t('suspenduser.email', about)}); + } + + /* + * When an admin clicks to suspend a user a dialog is shown, this function + * handles the possible actions for that dialog. + */ + onActionClick = (stage, menuOption) => () => { + const {suspendUser, action} = this.props; + const {stage, email} = this.state; + const cancel = this.props.onClose; + const next = () => this.setState({stage: stage + 1}); + const suspend = () => suspendUser(action.item_id, lang.t('suspenduser.email_subject'), email) + .then(this.props.onClose); + const suspendModalActions = [ + [ cancel, next ], + [ cancel, suspend ] + ]; + return suspendModalActions[stage][menuOption](); + } + + onEmailChange = (e) => this.setState({email: e.target.value}) + + render () { + const {action, onClose} = this.props; + + if (!action) { + return null; + } + + const {stage} = this.state; + const actionType = action.actionType; + const about = actionType === 'flag_bio' ? lang.t('suspenduser.bio') : lang.t('suspenduser.username'); + return +
{lang.t(stages[stage].title, about)}
+
+
+ {lang.t(stages[stage].description, about)} +
+ { + stage === 1 && +
+
{lang.t('suspenduser.write_message')}
+
+