From 8af9e14971df5c9ef70c6b396fcef378e1063155 Mon Sep 17 00:00:00 2001 From: gaba Date: Tue, 29 Nov 2016 12:42:25 -0800 Subject: [PATCH] Recovered community admin. --- client/coral-admin/src/actions/community.js | 10 +++++++++- client/coral-admin/src/actions/users.js | 14 +++++++------- client/coral-admin/src/constants/community.js | 1 + .../src/containers/Community/Community.css | 9 ++------- .../src/containers/Community/Community.js | 8 ++++++-- .../src/containers/Community/Table.js | 14 +++++++++++++- client/coral-admin/src/reducers/community.js | 11 ++++++++++- client/coral-admin/src/reducers/users.js | 2 +- client/coral-admin/src/translations.json | 18 ++++++++++++++++-- 9 files changed, 65 insertions(+), 22 deletions(-) diff --git a/client/coral-admin/src/actions/community.js b/client/coral-admin/src/actions/community.js index 5921573d1..58d642d10 100644 --- a/client/coral-admin/src/actions/community.js +++ b/client/coral-admin/src/actions/community.js @@ -6,7 +6,8 @@ import { FETCH_COMMENTERS_FAILURE, SORT_UPDATE, COMMENTERS_NEW_PAGE, - SET_ROLE + SET_ROLE, + SET_COMMENTER_STATUS } from '../constants/community'; import {base, getInit, handleResp} from '../../../coral-framework/helpers/response'; @@ -47,3 +48,10 @@ export const setRole = (id, role) => dispatch => { return dispatch({type: SET_ROLE, id, role}); }); }; + +export const setCommenterStatus = (id, status) => dispatch => { + return fetch(`${base}/user/${id}/status`, getInit('POST', {status})) + .then(() => { + return dispatch({type: SET_COMMENTER_STATUS, id, status}); + }); +}; diff --git a/client/coral-admin/src/actions/users.js b/client/coral-admin/src/actions/users.js index 811672266..8747293c4 100644 --- a/client/coral-admin/src/actions/users.js +++ b/client/coral-admin/src/actions/users.js @@ -1,7 +1,7 @@ -// /** -// * Action disptacher related to users -// */ -// -// export const updateUserStatus = (status, id) => (dispatch) => { -// dispatch({type: 'USER_STATUS_UPDATE', id, status}); -// }; +/** + * Action disptacher related to users + */ + +export const updateUserStatus = (status, id) => (dispatch) => { + dispatch({type: 'USER_STATUS_UPDATE', id, status}); +}; diff --git a/client/coral-admin/src/constants/community.js b/client/coral-admin/src/constants/community.js index 2ea77ea77..e3fd88a71 100644 --- a/client/coral-admin/src/constants/community.js +++ b/client/coral-admin/src/constants/community.js @@ -4,3 +4,4 @@ export const FETCH_COMMENTERS_FAILURE = 'FETCH_COMMENTERS_FAILURE'; export const SORT_UPDATE = 'SORT_UPDATE'; export const COMMENTERS_NEW_PAGE = 'COMMENTERS_NEW_PAGE'; export const SET_ROLE = 'SET_ROLE'; +export const SET_COMMENTER_STATUS = 'SET_COMMENTER_STATUS'; diff --git a/client/coral-admin/src/containers/Community/Community.css b/client/coral-admin/src/containers/Community/Community.css index 63148da7e..b19d0261d 100644 --- a/client/coral-admin/src/containers/Community/Community.css +++ b/client/coral-admin/src/containers/Community/Community.css @@ -1,7 +1,3 @@ -.dataTable { - width: 100%; -} - .roleButton { display: block; } @@ -9,14 +5,13 @@ .searchInput { display: block; padding-left: 40px; - /*border: none;*/ + width: auto; } .searchBox { - /*border: 1px solid rgba(0,0,0,.12);*/ background: white; } .email { display: block; -} \ No newline at end of file +} diff --git a/client/coral-admin/src/containers/Community/Community.js b/client/coral-admin/src/containers/Community/Community.js index f8c24fd3a..e798266f0 100644 --- a/client/coral-admin/src/containers/Community/Community.js +++ b/client/coral-admin/src/containers/Community/Community.js @@ -20,6 +20,10 @@ const tableHeaders = [ title: lang.t('community.account_creation_date'), field: 'created_at' }, + { + title: lang.t('community.status'), + field: 'status' + }, { title: lang.t('community.newsroom_role'), field: 'role' @@ -30,7 +34,7 @@ const Community = ({isFetching, commenters, ...props}) => { const hasResults = !isFetching && !!commenters.length; return ( - +
- + { isFetching && } { !hasResults && } { hasResults && diff --git a/client/coral-admin/src/containers/Community/Table.js b/client/coral-admin/src/containers/Community/Table.js index 89737e33e..1d81b1b2e 100644 --- a/client/coral-admin/src/containers/Community/Table.js +++ b/client/coral-admin/src/containers/Community/Table.js @@ -4,7 +4,7 @@ import {SelectField, Option} from 'react-mdl-selectfield'; import styles from './Community.css'; import I18n from 'coral-framework/modules/i18n/i18n'; import translations from '../../translations'; -import {setRole} from '../../actions/community'; +import {setRole, setCommenterStatus} from '../../actions/community'; const lang = new I18n(translations); @@ -19,6 +19,10 @@ class Table extends Component { this.props.dispatch(setRole(id, role)); } + onCommenterStatusChange (id, status) { + this.props.dispatch(setCommenterStatus(id, status)); + } + render () { const {headers, commenters, onHeaderClickHandler} = this.props; @@ -46,6 +50,14 @@ class Table extends Component { {row.created_at} + + this.onCommenterStatusChange(row.id, status)}> + + + + id)); } + case SET_COMMENTER_STATUS: { + const commenters = state.get('commenters'); + const idx = commenters.findIndex(el => el.id === action.id); + + commenters[idx].status = action.status; + return state.set('commenters', commenters.map(id => id)); + + } case SORT_UPDATE : return state .set('field', action.sort.field) diff --git a/client/coral-admin/src/reducers/users.js b/client/coral-admin/src/reducers/users.js index 451b874e1..ded230760 100644 --- a/client/coral-admin/src/reducers/users.js +++ b/client/coral-admin/src/reducers/users.js @@ -10,7 +10,7 @@ const initialState = Map({ // Handle the users actions export default (state = initialState, action) => { switch (action.type) { - case 'USER_STATUS_UPDATE': return updateUserStatus(state, action); + case 'SET_COMMENTER_STATUS': return updateUserStatus(state, action); default: return state; } }; diff --git a/client/coral-admin/src/translations.json b/client/coral-admin/src/translations.json index dd959172b..53207a05b 100644 --- a/client/coral-admin/src/translations.json +++ b/client/coral-admin/src/translations.json @@ -6,7 +6,14 @@ "newsroom_role": "Newsroom Role", "admin": "Administrator", "moderator": "Moderator", - "role": "Select role..." + "role": "Select role...", + "no-results": "No users found with that user name or email address.", + "status": "Status", + "select-status": "Select status...", + "active": "Active", + "banned": "Banned", + "banned-user": "Banned User", + "loading": "Loading results" }, "modqueue": { "pending": "pending", @@ -51,7 +58,14 @@ "newsroom_role": "Rol en la redacción", "admin": "Administrador", "moderator": "Moderador", - "role": "Select role..." + "role": "Select role...", + "no-results": "No se encontraron usuarios con ese nombre de usuario o correo electronico.", + "status": "Estado", + "select-status": "Seleccionar estado...", + "active": "Activa", + "banned": "Suspendido", + "banned-user": "Usuario Suspendido", + "loading": "Cargando resultados" }, "modqueue": { "pending": "pendiente",