diff --git a/client/coral-admin/src/actions/comments.js b/client/coral-admin/src/actions/comments.js index df68b72c4..3c1437de7 100644 --- a/client/coral-admin/src/actions/comments.js +++ b/client/coral-admin/src/actions/comments.js @@ -14,30 +14,30 @@ export const fetchModerationQueueComments = () => { dispatch({type: commentTypes.COMMENTS_MODERATION_QUEUE_FETCH_REQUEST}); return Promise.all([ - coralApi('/queue/comments/pending'), + coralApi('/queue/comments/premod'), coralApi('/queue/users/pending'), coralApi('/queue/comments/rejected'), coralApi('/queue/comments/flagged') ]) - .then(([pendingComments, pendingUsers, rejected, flagged]) => { + .then(([premodComments, pendingUsers, rejected, flagged]) => { /* Combine seperate calls into a single object */ flagged.comments.forEach(comment => comment.flagged = true); return { - comments: [...pendingComments.comments, ...rejected.comments, ...flagged.comments], - users: [...pendingComments.users, ...pendingUsers.users, ...rejected.users, ...flagged.users], - actions: [...pendingComments.actions, ...pendingUsers.actions, ...rejected.actions, ...flagged.actions] + comments: [...premodComments.comments, ...rejected.comments, ...flagged.comments], + users: [...premodComments.users, ...pendingUsers.users, ...rejected.users, ...flagged.users], + actions: [...premodComments.actions, ...pendingUsers.actions, ...rejected.actions, ...flagged.actions] }; }) .then(addUsersCommentsActions.bind(this, dispatch)); }; }; -export const fetchPendingQueue = () => { +export const fetchPremodQueue = () => { return dispatch => { dispatch({type: commentTypes.COMMENTS_MODERATION_QUEUE_FETCH_REQUEST}); - return coralApi('/queue/comments/pending') + return coralApi('/queue/comments/premod') .then(addUsersCommentsActions.bind(this, dispatch)); }; }; diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js index eef855df6..d1d1afd53 100644 --- a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js +++ b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js @@ -6,7 +6,7 @@ import { updateStatus, showBanUserDialog, hideBanUserDialog, - fetchPendingQueue, + fetchPremodQueue, fetchRejectedQueue, fetchFlaggedQueue, fetchModerationQueueComments, @@ -58,8 +58,8 @@ class ModerationContainer extends React.Component { onTabClick(activeTab) { this.setState({activeTab}); - if (activeTab === 'pending') { - this.props.fetchPendingQueue(); + if (activeTab === 'premod') { + this.props.fetchPremodQueue(); } else if (activeTab === 'rejected') { this.props.fetchRejectedQueue(); } else if (activeTab === 'flagged') { @@ -74,7 +74,7 @@ class ModerationContainer extends React.Component { } render () { - const {comments, actions} = this.props; + const {comments, actions, settings} = this.props; const premodIds = comments.ids.filter(id => comments.byId[id].status === 'PREMOD'); const rejectedIds = comments.ids.filter(id => comments.byId[id].status === 'REJECTED'); const flaggedIds = comments.ids.filter(id => @@ -84,8 +84,12 @@ class ModerationContainer extends React.Component { ); const userActionIds = actions.ids.filter(id => actions.byId[id].item_type === 'USERS'); + // show the Pre-Mod tab if premod is enabled globally OR there are pre-mod comments in the db. + let enablePremodTab = (settings.settings && settings.settings.moderation === 'PRE') || premodIds.length; + return ( { return { fetchSettings: () => dispatch(fetchSettings()), fetchModerationQueueComments: () => dispatch(fetchModerationQueueComments()), - fetchPendingQueue: () => dispatch(fetchPendingQueue()), + fetchPremodQueue: () => dispatch(fetchPremodQueue()), fetchRejectedQueue: () => dispatch(fetchRejectedQueue()), fetchFlaggedQueue: () => dispatch(fetchFlaggedQueue()), showBanUserDialog: (userId, userName, commentId) => dispatch(showBanUserDialog(userId, userName, commentId)), diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js b/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js index 90cd0560c..09b02daed 100644 --- a/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js +++ b/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, {PropTypes} from 'react'; import styles from './ModerationQueue.css'; import ModerationKeysModal from 'components/ModerationKeysModal'; @@ -10,7 +10,7 @@ import translations from '../../translations.json'; const lang = new I18n(translations); -export default (props) => ( +const ModerationQueue = (props) => (
@@ -23,15 +23,18 @@ export default (props) => ( > {lang.t('modqueue.all')} - { - e.preventDefault(); - props.onTabClick('pending'); - }} - className={`mdl-tabs__tab ${styles.tab} ${props.activeTab === 'pending' ? styles.active : ''}`} - > - {lang.t('modqueue.pending')} - + { + props.enablePremodTab + ? { + e.preventDefault(); + props.onTabClick('premod'); + }} + className={`mdl-tabs__tab ${styles.tab} ${props.activeTab === 'premod' ? styles.active : ''}`}> + {lang.t('modqueue.premod')} + + : null + } { e.preventDefault(); @@ -87,33 +90,38 @@ export default (props) => (
}
-
- { - props.activeTab === 'pending' && -
- - -
- } -
+ { + props.enablePremodTab + ?
+ { + props.activeTab === 'premod' && +
+ + +
+ } +
+ : null + } +
{ props.activeTab === 'account' && @@ -196,3 +204,9 @@ export default (props) => (
); + +ModerationQueue.propTypes = { + enablePremodTab: PropTypes.bool.isRequired +}; + +export default ModerationQueue; diff --git a/client/coral-admin/src/translations.json b/client/coral-admin/src/translations.json index 65411066a..a4256848e 100644 --- a/client/coral-admin/src/translations.json +++ b/client/coral-admin/src/translations.json @@ -17,7 +17,7 @@ }, "modqueue": { "all": "all", - "pending": "pending", + "premod": "pre-mod", "rejected": "rejected", "flagged": "flagged", "account": "account flags", @@ -136,7 +136,7 @@ "loading": "Cargando resultados" }, "modqueue": { - "pending": "pendiente", + "premod": "pre-mod", "rejected": "rechazado", "flagged": "marcado", "shortcuts": "Atajos de teclado", diff --git a/routes/api/queue/index.js b/routes/api/queue/index.js index a0756b4c3..2373b808f 100644 --- a/routes/api/queue/index.js +++ b/routes/api/queue/index.js @@ -27,7 +27,7 @@ function gatherActionsAndUsers (comments) { // depending on the settings. The :moderation overwrites this settings. // Pre-moderation: New comments are shown in the moderator queues immediately. // Post-moderation: New comments do not appear in moderation queues unless they are flagged by other users. -router.get('/comments/pending', authorization.needed('ADMIN'), (req, res, next) => { +router.get('/comments/premod', authorization.needed('ADMIN'), (req, res, next) => { const {asset_id} = req.query; diff --git a/test/routes/api/queue/index.js b/test/routes/api/queue/index.js index 6b760dee4..ab60a9f20 100644 --- a/test/routes/api/queue/index.js +++ b/test/routes/api/queue/index.js @@ -97,7 +97,7 @@ describe('/api/v1/queue', () => { it('should return all the pending comments, users and actions', () => { return chai.request(app) - .get('/api/v1/queue/comments/pending') + .get('/api/v1/queue/comments/premod') .set(passport.inject({roles: ['ADMIN']})) .then((res) => { expect(res).to.have.status(200);