diff --git a/.eslintignore b/.eslintignore
index 4805e34a4..da39d3ccf 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -22,5 +22,6 @@ plugins/*
!plugins/talk-plugin-author-menu
!plugins/talk-plugin-member-since
!plugins/talk-plugin-ignore-user
+!plugins/talk-plugin-moderation-actions
node_modules
diff --git a/.gitignore b/.gitignore
index 0a2ac00df..672409dbf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,5 +38,6 @@ plugins/*
!plugins/talk-plugin-author-menu
!plugins/talk-plugin-member-since
!plugins/talk-plugin-ignore-user
+!plugins/talk-plugin-moderation-actions
**/node_modules/*
diff --git a/plugins/talk-plugin-featured-comments/client/components/Tag.js b/plugins/talk-plugin-featured-comments/client/components/Tag.js
index a8ee80417..57a871ee9 100644
--- a/plugins/talk-plugin-featured-comments/client/components/Tag.js
+++ b/plugins/talk-plugin-featured-comments/client/components/Tag.js
@@ -31,15 +31,14 @@ export default class Tag extends React.Component {
render() {
const {tooltip} = this.state;
return(
-
-
+
{t('talk-plugin-featured-comments.featured')}
{tooltip && }
-
+
);
}
}
diff --git a/plugins/talk-plugin-moderation-actions/client/.babelrc b/plugins/talk-plugin-moderation-actions/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-moderation-actions/client/.eslintrc.json b/plugins/talk-plugin-moderation-actions/client/.eslintrc.json
new file mode 100644
index 000000000..9fe56bd14
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/.eslintrc.json
@@ -0,0 +1,23 @@
+{
+ "env": {
+ "browser": true,
+ "es6": true,
+ "mocha": true
+ },
+ "parserOptions": {
+ "sourceType": "module",
+ "ecmaFeatures": {
+ "experimentalObjectRestSpread": true,
+ "jsx": true
+ }
+ },
+ "parser": "babel-eslint",
+ "plugins": [
+ "react"
+ ],
+ "rules": {
+ "react/jsx-uses-react": "error",
+ "react/jsx-uses-vars": "error",
+ "no-console": ["warn", { "allow": ["warn", "error"] }]
+ }
+}
diff --git a/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.css b/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.css
new file mode 100644
index 000000000..fd841e1cd
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.css
@@ -0,0 +1,8 @@
+.moderationActions {
+ display: inline;
+ padding: 0 4px;
+}
+
+.moderationActions:hover {
+ cursor: pointer;
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.js b/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.js
new file mode 100644
index 000000000..1b7b35948
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.js
@@ -0,0 +1,54 @@
+import React from 'react';
+import cn from 'classnames';
+import styles from './ModerationActions.css';
+import Tooltip from './Tooltip';
+import {t} from 'plugin-api/beta/client/services';
+import {Icon} from 'plugin-api/beta/client/components/ui';
+import RejectCommentAction from '../containers/RejectCommentAction.js';
+import ClickOutside from 'coral-framework/components/ClickOutside';
+
+export default class Tag extends React.Component {
+ constructor() {
+ super();
+
+ this.state = {
+ tooltip: false
+ };
+
+ }
+
+ toggleTooltip = (e) => {
+ e.preventDefault();
+ const {tooltip} = this.state;
+
+ this.setState({
+ tooltip: !tooltip
+ });
+ }
+
+ hideTooltip = () => {
+ this.setState({
+ tooltip: false
+ });
+ }
+
+ render() {
+ const {tooltip} = this.state;
+ return(
+
+
+
+
+ {tooltip ? : }
+
+
+ {tooltip && (
+
+
+
+ )}
+
+
+ );
+ }
+}
diff --git a/plugins/talk-plugin-moderation-actions/client/components/RejectCommentAction.css b/plugins/talk-plugin-moderation-actions/client/components/RejectCommentAction.css
new file mode 100644
index 000000000..ac818278c
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/RejectCommentAction.css
@@ -0,0 +1,17 @@
+.root {
+ white-space: nowrap;
+}
+
+.button {
+ composes: buttonReset from "coral-framework/styles/reset.css";
+ border: 1px solid rgba(1, 1, 1, 0.8);
+ border-radius: 1px;
+ padding: 3px 6px;
+ font-size: 12px;
+ transition: color 100ms, background 100ms;
+
+ &:hover {
+ background-color: rgba(1, 1, 1, 0.8);
+ color: white;
+ }
+}
diff --git a/plugins/talk-plugin-moderation-actions/client/components/RejectCommentAction.js b/plugins/talk-plugin-moderation-actions/client/components/RejectCommentAction.js
new file mode 100644
index 000000000..d15127294
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/RejectCommentAction.js
@@ -0,0 +1,14 @@
+import React from 'react';
+import styles from './RejectCommentAction.css';
+import {t} from 'plugin-api/beta/client/services';
+import {Icon} from 'plugin-api/beta/client/components/ui';
+import cn from 'classnames';
+
+export default ({rejectComment}) => (
+
+);
diff --git a/plugins/talk-plugin-moderation-actions/client/components/Tooltip.css b/plugins/talk-plugin-moderation-actions/client/components/Tooltip.css
new file mode 100644
index 000000000..63e0a1e1b
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/Tooltip.css
@@ -0,0 +1,64 @@
+.tooltip {
+ background-color: white;
+ border: solid 1px #999;
+ border-radius: 3px;
+ padding: 10px;
+ position: absolute;
+ -webkit-box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 1px 5px 0 rgba(0,0,0,0.12), 0 3px 1px -2px rgba(0,0,0,0.2);
+ box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 1px 5px 0 rgba(0,0,0,0.12), 0 3px 1px -2px rgba(0,0,0,0.2);
+ z-index: 10;
+ top: 26px;
+ right: 0px;
+ width: 200px;
+ text-align: left;
+ color: #616161;
+}
+
+.tooltip::before{
+ content: '';
+ border: 10px solid transparent;
+ border-top-color: #999;
+ position: absolute;
+ right: 0px;
+ top: -20px;
+ transform: rotate(180deg);
+}
+
+.tooltip::after{
+ content: '';
+ border: 10px solid transparent;
+ border-top-color: white;
+ position: absolute;
+ right: 0px;
+ top: -19px;
+ transform: rotate(180deg);
+}
+
+.headline {
+ color: #484747;
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ font-size: 1.02em;
+ margin-left: 6px;
+ letter-spacing: 0.2px;
+ vertical-align: middle;
+ margin-bottom: 2px;
+ line-height: 22px;
+}
+
+.icon {
+ font-size: 1.4em;
+ vertical-align: middle;
+}
+
+.description {
+ width: 100%;
+ box-sizing: border-box;
+ white-space: pre-wrap;
+ padding: 0;
+ margin: 0;
+ padding-left: 25px;
+ font-weight: 400;
+ font-size: 1em;
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-moderation-actions/client/components/Tooltip.js b/plugins/talk-plugin-moderation-actions/client/components/Tooltip.js
new file mode 100644
index 000000000..6b7428ce6
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/Tooltip.js
@@ -0,0 +1,9 @@
+import React from 'react';
+import cn from 'classnames';
+import styles from './Tooltip.css';
+import {t} from 'plugin-api/beta/client/services';
+import {Icon} from 'plugin-api/beta/client/components/ui';
+
+export default ({className = '', children}) => (
+ {children}
+);
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/.babelrc b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/.eslintrc.json b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/.eslintrc.json
new file mode 100644
index 000000000..9fe56bd14
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/.eslintrc.json
@@ -0,0 +1,23 @@
+{
+ "env": {
+ "browser": true,
+ "es6": true,
+ "mocha": true
+ },
+ "parserOptions": {
+ "sourceType": "module",
+ "ecmaFeatures": {
+ "experimentalObjectRestSpread": true,
+ "jsx": true
+ }
+ },
+ "parser": "babel-eslint",
+ "plugins": [
+ "react"
+ ],
+ "rules": {
+ "react/jsx-uses-react": "error",
+ "react/jsx-uses-vars": "error",
+ "no-console": ["warn", { "allow": ["warn", "error"] }]
+ }
+}
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoreUserAction.css b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoreUserAction.css
new file mode 100644
index 000000000..ac818278c
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoreUserAction.css
@@ -0,0 +1,17 @@
+.root {
+ white-space: nowrap;
+}
+
+.button {
+ composes: buttonReset from "coral-framework/styles/reset.css";
+ border: 1px solid rgba(1, 1, 1, 0.8);
+ border-radius: 1px;
+ padding: 3px 6px;
+ font-size: 12px;
+ transition: color 100ms, background 100ms;
+
+ &:hover {
+ background-color: rgba(1, 1, 1, 0.8);
+ color: white;
+ }
+}
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoreUserAction.js b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoreUserAction.js
new file mode 100644
index 000000000..19319ec9c
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoreUserAction.js
@@ -0,0 +1,12 @@
+import React from 'react';
+import styles from './IgnoreUserAction.css';
+import {t} from 'plugin-api/beta/client/services';
+import cn from 'classnames';
+
+export default ({ignoreUser}) => (
+
+);
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoreUserConfirmation.css b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoreUserConfirmation.css
new file mode 100644
index 000000000..4f3d8e9da
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoreUserConfirmation.css
@@ -0,0 +1,45 @@
+.root {
+ width: 200px;
+}
+
+.actions {
+ display: flex;
+ justify-content: flex-end;
+ margin-top: 8px;
+}
+
+.message {
+ font-size: 13px;
+}
+
+.title {
+ padding: 0;
+ margin: 0 0 8px 0;
+ font-size: 15px;
+}
+
+.button {
+ composes: buttonReset from "coral-framework/styles/reset.css";
+ border: 1px solid rgba(1, 1, 1, 0.8);
+ border-radius: 1px;
+ padding: 3px 6px;
+ font-size: 12px;
+ transition: color 100ms, background 100ms;
+
+ &:hover {
+ background-color: rgba(1, 1, 1, 0.8);
+ color: white;
+ }
+}
+
+.cancel {
+ composes: buttonReset from "coral-framework/styles/reset.css";
+ padding: 3px 6px;
+ font-size: 12px;
+ transition: color 100ms;
+ margin-right: 4px;
+
+ &:hover {
+ color: rgba(1, 1, 1, 0.75);
+ }
+}
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoreUserConfirmation.js b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoreUserConfirmation.js
new file mode 100644
index 000000000..8da879f62
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoreUserConfirmation.js
@@ -0,0 +1,23 @@
+import React from 'react';
+import styles from './IgnoreUserConfirmation.css';
+import {t} from 'plugin-api/beta/client/services';
+import cn from 'classnames';
+
+export default ({ignoreUser, cancel, username}) => (
+
+);
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoredUserSection.css b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoredUserSection.css
new file mode 100644
index 000000000..b279101ea
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoredUserSection.css
@@ -0,0 +1,22 @@
+.list {
+ display: table;
+ list-style-type: none;
+ margin-left: 0;
+ padding-left: 0;
+}
+
+.listItem {
+ display: table-row;
+}
+
+.username {
+ display: table-cell;
+}
+
+.button {
+ composes: buttonReset from "coral-framework/styles/reset.css";
+
+ margin-left: 16px;
+ color: #D0011B;
+ text-decoration: underline;
+}
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoredUserSection.js b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoredUserSection.js
new file mode 100644
index 000000000..3946626cd
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/components/IgnoredUserSection.js
@@ -0,0 +1,23 @@
+import React from 'react';
+import styles from './IgnoredUserSection.css';
+import {t} from 'plugin-api/beta/client/services';
+
+export default ({ignoredUsers, stopIgnoringUser}) => (
+
+ {t('talk-plugin-ignore-user.section_title')}
+ {t('talk-plugin-ignore-user.section_info')}
+
+ {ignoredUsers.map(({username, id}) => (
+ -
+ {username}
+
+
+ ))}
+
+
+);
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/containers/IgnoreUserAction.js b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/containers/IgnoreUserAction.js
new file mode 100644
index 000000000..d7e9d38b5
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/containers/IgnoreUserAction.js
@@ -0,0 +1,53 @@
+import React from 'react';
+import IgnoreUserAction from '../components/IgnoreUserAction';
+import {compose, gql} from 'react-apollo';
+import {connect, withFragments, excludeIf} from 'plugin-api/beta/client/hocs';
+import {bindActionCreators} from 'redux';
+import {setContentSlot} from 'plugins/talk-plugin-author-menu/client/actions';
+import IgnoreUserConfirmation from './IgnoreUserConfirmation';
+import {getDefinitionName} from 'plugin-api/beta/client/utils';
+
+class IgnoreUserActionContainer extends React.Component {
+
+ ignoreUser = () => {
+ this.props.setContentSlot('ignoreUserConfirmation');
+ };
+
+ render() {
+ return ;
+ }
+}
+
+const mapDispatchToProps = (dispatch) =>
+ bindActionCreators({
+ setContentSlot,
+ }, dispatch);
+
+const withIgnoreUserActionFragments = withFragments({
+ root: gql`
+ fragment TalkIgnoreUser_IgnoreUserAction_root on RootQuery {
+ me {
+ id
+ }
+ }
+ `,
+ comment: gql`
+ fragment TalkIgnoreUser_IgnoreUserAction_comment on Comment {
+ user {
+ id
+ }
+ ...${getDefinitionName(IgnoreUserConfirmation.fragments.comment)}
+ }
+ ${IgnoreUserConfirmation.fragments.comment}
+ `,
+});
+
+const enhance = compose(
+ connect(null, mapDispatchToProps),
+ withIgnoreUserActionFragments,
+ excludeIf(({root: {me}, comment}) => !me || me.id === comment.user.id),
+);
+
+export default enhance(IgnoreUserActionContainer);
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/containers/IgnoreUserConfirmation.js b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/containers/IgnoreUserConfirmation.js
new file mode 100644
index 000000000..fdf6d1986
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/containers/IgnoreUserConfirmation.js
@@ -0,0 +1,60 @@
+import React from 'react';
+import IgnoreUserConfirmation from '../components/IgnoreUserConfirmation';
+import {compose, gql} from 'react-apollo';
+import {connect, withFragments, withIgnoreUser} from 'plugin-api/beta/client/hocs';
+import {bindActionCreators} from 'redux';
+import {closeMenu} from 'plugins/talk-plugin-author-menu/client/actions';
+import {notify} from 'plugin-api/beta/client/actions/notification';
+import {t} from 'plugin-api/beta/client/services';
+import {getErrorMessages} from 'plugin-api/beta/client/utils';
+
+class IgnoreUserConfirmationContainer extends React.Component {
+
+ ignoreUser = () => {
+ const {ignoreUser, notify, comment, closeMenu} = this.props;
+ ignoreUser(comment.user.id)
+ .then(() => {
+ notify('success', t('talk-plugin-ignore-user.notify_success', comment.user.username));
+ })
+ .catch((err) => {
+ notify('error', getErrorMessages(err));
+ });
+ closeMenu();
+ };
+
+ cancel = () => {
+ this.props.closeMenu();
+ }
+
+ render() {
+ return ;
+ }
+}
+
+const mapDispatchToProps = (dispatch) =>
+ bindActionCreators({
+ closeMenu,
+ notify,
+ }, dispatch);
+
+const withIgnoreUserConfirmationFragments = withFragments({
+ comment: gql`
+ fragment TalkIgnoreUser_IgnoreUserConfirmation_comment on Comment {
+ user {
+ id
+ username
+ }
+ }`,
+});
+
+const enhance = compose(
+ connect(null, mapDispatchToProps),
+ withIgnoreUserConfirmationFragments,
+ withIgnoreUser,
+);
+
+export default enhance(IgnoreUserConfirmationContainer);
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/containers/IgnoredUserSection.js b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/containers/IgnoredUserSection.js
new file mode 100644
index 000000000..e420f180b
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/containers/IgnoredUserSection.js
@@ -0,0 +1,36 @@
+import React from 'react';
+import IgnoredUserSection from '../components/IgnoredUserSection';
+import {compose, gql} from 'react-apollo';
+import {withFragments, excludeIf, withStopIgnoringUser} from 'plugin-api/beta/client/hocs';
+
+class IgnoredUserSectionContainer extends React.Component {
+
+ render() {
+ return ;
+ }
+}
+
+const withIgnoredUserSectionFragments = withFragments({
+ root: gql`
+ fragment TalkIgnoreUser_IgnoredUserSection_root on RootQuery {
+ me {
+ id
+ ignoredUsers {
+ id,
+ username,
+ }
+ }
+ }
+ `,
+});
+
+const enhance = compose(
+ withIgnoredUserSectionFragments,
+ withStopIgnoringUser,
+ excludeIf(({root: {me}}) => me.ignoredUsers.length === 0),
+);
+
+export default enhance(IgnoredUserSectionContainer);
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/index.js b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/index.js
new file mode 100644
index 000000000..6583f68e6
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/index.js
@@ -0,0 +1,43 @@
+import IgnoreUserAction from './containers/IgnoreUserAction';
+import IgnoreUserConfirmation from './containers/IgnoreUserConfirmation';
+import IgnoredUserSection from './containers/IgnoredUserSection';
+import translations from './translations.yml';
+import update from 'immutability-helper';
+
+export default {
+ slots: {
+ authorMenuActions: [IgnoreUserAction],
+ ignoreUserConfirmation: [IgnoreUserConfirmation],
+ profileSections: [IgnoredUserSection],
+ },
+ translations,
+ mutations: {
+ IgnoreUser: ({variables}) => ({
+ updateQueries: {
+ CoralEmbedStream_Embed: (previousData) => {
+ const ignoredUserId = variables.id;
+ const updated = update(previousData, {me: {ignoredUsers: {$push: [{
+ id: ignoredUserId,
+ __typename: 'User',
+ }]}}});
+ return updated;
+ }
+ }
+ }),
+ StopIgnoringUser: ({variables}) => ({
+ updateQueries: {
+ CoralEmbedStream_Profile: (previousData) => {
+ const noLongerIgnoredUserId = variables.id;
+
+ // remove noLongerIgnoredUserId from ignoredUsers
+ const updated = update(previousData, {me: {ignoredUsers: {
+ $apply: (ignoredUsers) => {
+ return ignoredUsers.filter((u) => u.id !== noLongerIgnoredUserId);
+ }
+ }}});
+ return updated;
+ }
+ }
+ }),
+ },
+};
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/translations.yml b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/translations.yml
new file mode 100644
index 000000000..a6c051ada
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/client/translations.yml
@@ -0,0 +1,25 @@
+en:
+ talk-plugin-ignore-user:
+ section_title: Ignored users
+ section_info: Because you ignored the following commenters, their comments are hidden.
+ stop_ignoring: Stop ignoring
+ ignore_user: Ignore User
+ cancel: Cancel
+ confirmation: |
+ When you ignore a user, all comments they wrote on the site will be hidden from you. You can
+ undo this later from My Profile.
+ notify_success: |
+ You are now ignoring {0}. You can undo this action from My Profile.
+ confirmation_title: Ignore {0}?
+es:
+ talk-plugin-ignore-user:
+ section_title: "Usuarios ignorados"
+ stop_ignoring: "No ignorar más"
+fr:
+ talk-plugin-ignore-user:
+ section_title: "Utilisateurs ignorés"
+pt_Br:
+ talk-plugin-ignore-user:
+ section_title: "Usuários ignorados"
+ section_info: "Porque você ignorou os seguintes comentadores, seus comentários estão ocultos."
+ stop_ignoring: "Pare de ignorar"
diff --git a/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/index.js b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/index.js
new file mode 100644
index 000000000..f053ebf79
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/components/talk-plugin-ignore-user/index.js
@@ -0,0 +1 @@
+module.exports = {};
diff --git a/plugins/talk-plugin-moderation-actions/client/containers/RejectCommentAction.js b/plugins/talk-plugin-moderation-actions/client/containers/RejectCommentAction.js
new file mode 100644
index 000000000..9d24a2003
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/containers/RejectCommentAction.js
@@ -0,0 +1,12 @@
+import React from 'react';
+import {compose} from 'react-apollo';
+import {withSetCommentStatus} from 'coral-framework/graphql/mutations';
+import RejectCommentAction from '../components/RejectCommentAction';
+
+// change this
+
+const enhance = compose(
+ withSetCommentStatus
+);
+
+export default enhance(RejectCommentAction);
diff --git a/plugins/talk-plugin-moderation-actions/client/index.js b/plugins/talk-plugin-moderation-actions/client/index.js
new file mode 100644
index 000000000..9e7a0716c
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/index.js
@@ -0,0 +1,11 @@
+// import RejectCommentAction from './containers/RejectCommentAction';
+import ModerationActions from './components/ModerationActions';
+import translations from './translations.yml';
+import update from 'immutability-helper';
+
+export default {
+ slots: {
+ commentInfoBar: [ModerationActions],
+ },
+ translations
+};
diff --git a/plugins/talk-plugin-moderation-actions/client/translations.yml b/plugins/talk-plugin-moderation-actions/client/translations.yml
new file mode 100644
index 000000000..fea7352ce
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/translations.yml
@@ -0,0 +1,6 @@
+en:
+ talk-plugin-reject-comment:
+ reject_comment: "Reject comment"
+es:
+ talk-plugin-reject-user:
+ reject_comment: "Rechazar commentario"
\ No newline at end of file
diff --git a/plugins/talk-plugin-moderation-actions/index.js b/plugins/talk-plugin-moderation-actions/index.js
new file mode 100644
index 000000000..f053ebf79
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/index.js
@@ -0,0 +1 @@
+module.exports = {};