+
+ {
+ premodEnabled ? (
+
+ {t('modqueue.premod')}
+
+ ) : (
+
+ {t('modqueue.new')}
+
+ )
+ }
+
- {t('modqueue.all')}
+ {t('modqueue.reported')}
- {t('modqueue.premod')}
+ {t('modqueue.approved')}
- {t('modqueue.flagged')}
-
-
- {t('modqueue.approved')}
-
-
{t('modqueue.rejected')}
+
+ {t('modqueue.all')}
+
{
?
: assets.map((story, i) => {
const storyOpen = story.closedAt === null || new Date(story.closedAt) > new Date();
+
return Error ;
@@ -209,10 +224,12 @@ class ModerationContainer extends Component {
return
;
}
}
@@ -304,7 +321,14 @@ const withModQueueQuery = withQuery(gql`
}) {
...CoralAdmin_Moderation_CommentConnection
}
- accepted: comments(query: {
+ new: comments(query: {
+ statuses: [NONE, PREMOD],
+ asset_id: $asset_id,
+ sort: $sort
+ }) {
+ ...CoralAdmin_Moderation_CommentConnection
+ }
+ approved: comments(query: {
statuses: [ACCEPTED],
asset_id: $asset_id,
sort: $sort
@@ -318,7 +342,7 @@ const withModQueueQuery = withQuery(gql`
}) {
...CoralAdmin_Moderation_CommentConnection
}
- flagged: comments(query: {
+ reported: comments(query: {
action_type: FLAG,
asset_id: $asset_id,
statuses: [NONE, PREMOD],
@@ -337,11 +361,18 @@ const withModQueueQuery = withQuery(gql`
id
title
url
+ settings {
+ moderation
+ }
}
allCount: commentCount(query: {
asset_id: $asset_id
})
- acceptedCount: commentCount(query: {
+ newCount: commentCount(query: {
+ statuses: [NONE, PREMOD],
+ asset_id: $asset_id
+ })
+ approvedCount: commentCount(query: {
statuses: [ACCEPTED],
asset_id: $asset_id
})
@@ -353,13 +384,14 @@ const withModQueueQuery = withQuery(gql`
statuses: [REJECTED],
asset_id: $asset_id
})
- flaggedCount: commentCount(query: {
+ reportedCount: commentCount(query: {
action_type: FLAG,
asset_id: $asset_id,
statuses: [NONE, PREMOD]
})
settings {
organizationName
+ moderation
}
}
${commentConnectionFragment}
@@ -380,7 +412,11 @@ const withQueueCountPolling = withQuery(gql`
allCount: commentCount(query: {
asset_id: $asset_id
})
- acceptedCount: commentCount(query: {
+ newCount: commentCount(query: {
+ statuses: [NONE, PREMOD],
+ asset_id: $asset_id
+ })
+ approvedCount: commentCount(query: {
statuses: [ACCEPTED],
asset_id: $asset_id
})
@@ -392,7 +428,7 @@ const withQueueCountPolling = withQuery(gql`
statuses: [REJECTED],
asset_id: $asset_id
})
- flaggedCount: commentCount(query: {
+ reportedCount: commentCount(query: {
action_type: FLAG,
asset_id: $asset_id,
statuses: [NONE, PREMOD]
diff --git a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js
index d5a0ad243..4175479e6 100644
--- a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js
+++ b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js
@@ -59,13 +59,13 @@ class StorySearchContainer extends React.Component {
goToStory = (id) => {
const {router} = this.props;
- router.push(`/admin/moderate/all/${id}`);
+ router.push(`/admin/moderate/${id}`);
this.clearAndCloseSearch();
}
goToModerateAll = () => {
const {router} = this.props;
- router.push('/admin/moderate/all');
+ router.push('/admin/moderate');
this.clearAndCloseSearch();
}
diff --git a/client/coral-admin/src/utils/index.js b/client/coral-admin/src/utils/index.js
new file mode 100644
index 000000000..14084ff77
--- /dev/null
+++ b/client/coral-admin/src/utils/index.js
@@ -0,0 +1,4 @@
+export const isPremod = (mod) => mod === 'PRE';
+
+export const getModPath = (type = 'all', assetId) =>
+ assetId ? `/admin/moderate/${type}/${assetId}` : `/admin/moderate/${type}`;
diff --git a/client/coral-framework/components/Popup.js b/client/coral-framework/components/Popup.js
index b9393a36d..1fe3408ea 100644
--- a/client/coral-framework/components/Popup.js
+++ b/client/coral-framework/components/Popup.js
@@ -42,14 +42,14 @@ export default class Popup extends Component {
this.onUnload();
const interval = setInterval(() => {
- if (this.ref.onload === null) {
+ if (this.ref && this.ref.onload === null) {
this.setCallbacks();
clearInterval(interval);
}
}, 50);
this.detectCloseInterval = setInterval(() => {
- if (this.ref.closed) {
+ if (!this.ref || this.ref.closed) {
clearInterval(this.detectCloseInterval);
this.onClose();
}
diff --git a/client/talk-plugin-moderation/ModerationLink.js b/client/talk-plugin-moderation/ModerationLink.js
index 7239cc793..020b8c345 100644
--- a/client/talk-plugin-moderation/ModerationLink.js
+++ b/client/talk-plugin-moderation/ModerationLink.js
@@ -5,7 +5,7 @@ import t from 'coral-framework/services/i18n';
const ModerationLink = (props) => props.isAdmin ? (
diff --git a/locales/en.yml b/locales/en.yml
index af985b593..54d5315d5 100644
--- a/locales/en.yml
+++ b/locales/en.yml
@@ -262,6 +262,7 @@ en:
dont_like_username: "Don't like username"
empty_queue: "No more comments to moderate! You're all caught up. Go have some ☕️"
flagged: flagged
+ reported: reported
impersonating: Impersonating
less_detail: "Less detail"
likes: likes
@@ -269,6 +270,7 @@ en:
mod_faster: "Moderate faster with keyboard shortcuts"
moderate: "Moderate →"
more_detail: "More detail"
+ new: New
newest_first: "Newest First"
navigation: Navigation
next_comment: "Go to the next comment"
diff --git a/locales/es.yml b/locales/es.yml
index 963723e9e..8c3e7927b 100644
--- a/locales/es.yml
+++ b/locales/es.yml
@@ -261,6 +261,7 @@ es:
mod_faster: "Moderar más rápido con atajos de teclado"
moderate: "Moderar →"
more_detail: "Más detalles"
+ new: Nuevo
newest_first: "Primero el más nuevo"
navigation: Navegación
next_comment: "Ir al siguiente comentario"
diff --git a/plugins/talk-plugin-featured-comments/client/components/Tag.js b/plugins/talk-plugin-featured-comments/client/components/Tag.js
index ee2d13b19..c912c61b1 100644
--- a/plugins/talk-plugin-featured-comments/client/components/Tag.js
+++ b/plugins/talk-plugin-featured-comments/client/components/Tag.js
@@ -15,7 +15,7 @@ export default class Tag extends React.Component {
}
- showTooltip = e => {
+ showTooltip = (e) => {
e.preventDefault();
this.setState({
tooltip: true