diff --git a/.gitignore b/.gitignore index 29f5961b2..fbc3c54d3 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,5 @@ dump.rdb *.cfg .idea/ coverage/ +.tags +.tags1 diff --git a/client/coral-admin/src/AppRouter.js b/client/coral-admin/src/AppRouter.js index 38d06dcb1..af748ab7b 100644 --- a/client/coral-admin/src/AppRouter.js +++ b/client/coral-admin/src/AppRouter.js @@ -5,10 +5,13 @@ import Streams from 'containers/Streams/Streams'; 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 = ( @@ -21,6 +24,18 @@ 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 c2d738460..0f53ea3da 100644 --- a/client/coral-admin/src/actions/community.js +++ b/client/coral-admin/src/actions/community.js @@ -7,28 +7,33 @@ import { SORT_UPDATE, COMMENTERS_NEW_PAGE, SET_ROLE, - SET_COMMENTER_STATUS + SET_COMMENTER_STATUS, + SHOW_BANUSER_DIALOG, + HIDE_BANUSER_DIALOG, + SHOW_SUSPENDUSER_DIALOG, + HIDE_SUSPENDUSER_DIALOG } from '../constants/community'; import coralApi from '../../../coral-framework/helpers/response'; -export const fetchCommenters = (query = {}) => dispatch => { - dispatch(requestFetchCommenters()); +export const fetchAccounts = (query = {}) => dispatch => { + + dispatch(requestFetchAccounts()); coralApi(`/users?${qs.stringify(query)}`) - .then(({result, page, count, limit, totalPages}) => + .then(({result, page, count, limit, totalPages}) =>{ dispatch({ type: FETCH_COMMENTERS_SUCCESS, - commenters: result, + accounts: result, page, count, limit, totalPages - }) - ) + }); + }) .catch(error => dispatch({type: FETCH_COMMENTERS_FAILURE, error})); }; -const requestFetchCommenters = () => ({ +const requestFetchAccounts = () => ({ type: FETCH_COMMENTERS_REQUEST }); @@ -55,3 +60,11 @@ 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 99c27c3a1..b667258c2 100644 --- a/client/coral-admin/src/components/Modal.js +++ b/client/coral-admin/src/components/Modal.js @@ -1,4 +1,3 @@ - import React from 'react'; import {Button, Icon} from 'react-mdl'; import styles from './Modal.css'; diff --git a/client/coral-admin/src/components/SuspendUserModal.js b/client/coral-admin/src/components/SuspendUserModal.js deleted file mode 100644 index 5afb8ffee..000000000 --- a/client/coral-admin/src/components/SuspendUserModal.js +++ /dev/null @@ -1,106 +0,0 @@ -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')}
-
-