;
+ }
+}
+
+const mapStateToProps = (state) => ({
+ commenters: state.community.get('accounts'),
+});
+
+const mapDispatchToProps = (dispatch) =>
+ bindActionCreators({
+ setCommenterStatus,
+ setRole,
+ }, dispatch);
+
+export default compose(
+ connect(mapStateToProps, mapDispatchToProps),
+)(TableContainer);
+
diff --git a/client/coral-admin/src/routes/Community/index.js b/client/coral-admin/src/routes/Community/index.js
new file mode 100644
index 000000000..528fe63cd
--- /dev/null
+++ b/client/coral-admin/src/routes/Community/index.js
@@ -0,0 +1,2 @@
+export {default as Community} from './containers/Community';
+export {default as CommunityLayout} from './components/CommunityLayout';
diff --git a/client/coral-admin/src/containers/Configure/Configure.css b/client/coral-admin/src/routes/Configure/components/Configure.css
similarity index 100%
rename from client/coral-admin/src/containers/Configure/Configure.css
rename to client/coral-admin/src/routes/Configure/components/Configure.css
diff --git a/client/coral-admin/src/containers/Configure/Configure.js b/client/coral-admin/src/routes/Configure/components/Configure.js
similarity index 82%
rename from client/coral-admin/src/containers/Configure/Configure.js
rename to client/coral-admin/src/routes/Configure/components/Configure.js
index 4eb046df4..84e47dfb7 100644
--- a/client/coral-admin/src/containers/Configure/Configure.js
+++ b/client/coral-admin/src/routes/Configure/components/Configure.js
@@ -1,12 +1,4 @@
import React, {Component} from 'react';
-import {connect} from 'react-redux';
-import {
- fetchSettings,
- updateSettings,
- saveSettingsToServer,
- updateWordlist,
- updateDomainlist
-} from '../../actions/settings';
import {Button, List, Item, Card, Spinner} from 'coral-ui';
import styles from './Configure.css';
@@ -16,45 +8,36 @@ import TechSettings from './TechSettings';
import t from 'coral-framework/services/i18n';
import {can} from 'coral-framework/services/perms';
-class Configure extends Component {
- constructor (props) {
- super(props);
+export default class Configure extends Component {
- this.state = {
- activeSection: 'stream',
- changed: false,
- errors: {}
- };
-
- this.changeSection = this.changeSection.bind(this);
- }
-
- componentWillMount = () => {
- this.props.dispatch(fetchSettings());
- }
+ state = {
+ activeSection: 'stream',
+ changed: false,
+ errors: {}
+ };
saveSettings = () => {
- this.props.dispatch(saveSettingsToServer());
+ this.props.saveSettingsToServer();
this.setState({changed: false});
}
- changeSection(activeSection) {
+ changeSection = (activeSection) => {
this.setState({activeSection});
}
onChangeWordlist = (listName, list) => {
this.setState({changed: true});
- this.props.dispatch(updateWordlist(listName, list));
+ this.props.updateWordlist(listName, list);
}
onChangeDomainlist = (listName, list) => {
this.setState({changed: true});
- this.props.dispatch(updateDomainlist(listName, list));
+ this.props.updateDomainlist(listName, list);
}
onSettingUpdate = (setting) => {
this.setState({changed: true});
- this.props.dispatch(updateSettings(setting));
+ this.props.updateSettings(setting);
}
// Sets an arbitrary error string and a boolean state.
@@ -175,9 +158,3 @@ class Configure extends Component {
);
}
}
-
-const mapStateToProps = (state) => ({
- auth: state.auth.toJS(),
- settings: state.settings.toJS()
-});
-export default connect(mapStateToProps)(Configure);
diff --git a/client/coral-admin/src/containers/Configure/Domainlist.js b/client/coral-admin/src/routes/Configure/components/Domainlist.js
similarity index 100%
rename from client/coral-admin/src/containers/Configure/Domainlist.js
rename to client/coral-admin/src/routes/Configure/components/Domainlist.js
diff --git a/client/coral-admin/src/containers/Configure/EmbedLink.js b/client/coral-admin/src/routes/Configure/components/EmbedLink.js
similarity index 99%
rename from client/coral-admin/src/containers/Configure/EmbedLink.js
rename to client/coral-admin/src/routes/Configure/components/EmbedLink.js
index 7ff348b50..1cd48cdc5 100644
--- a/client/coral-admin/src/containers/Configure/EmbedLink.js
+++ b/client/coral-admin/src/routes/Configure/components/EmbedLink.js
@@ -1,5 +1,4 @@
import React, {Component} from 'react';
-
import t from 'coral-framework/services/i18n';
import styles from './Configure.css';
import {Button, Card} from 'coral-ui';
diff --git a/client/coral-admin/src/containers/Configure/ModerationSettings.js b/client/coral-admin/src/routes/Configure/components/ModerationSettings.js
similarity index 100%
rename from client/coral-admin/src/containers/Configure/ModerationSettings.js
rename to client/coral-admin/src/routes/Configure/components/ModerationSettings.js
diff --git a/client/coral-admin/src/containers/Configure/StreamSettings.js b/client/coral-admin/src/routes/Configure/components/StreamSettings.js
similarity index 100%
rename from client/coral-admin/src/containers/Configure/StreamSettings.js
rename to client/coral-admin/src/routes/Configure/components/StreamSettings.js
diff --git a/client/coral-admin/src/containers/Configure/TechSettings.js b/client/coral-admin/src/routes/Configure/components/TechSettings.js
similarity index 100%
rename from client/coral-admin/src/containers/Configure/TechSettings.js
rename to client/coral-admin/src/routes/Configure/components/TechSettings.js
diff --git a/client/coral-admin/src/containers/Configure/Wordlist.js b/client/coral-admin/src/routes/Configure/components/Wordlist.js
similarity index 100%
rename from client/coral-admin/src/containers/Configure/Wordlist.js
rename to client/coral-admin/src/routes/Configure/components/Wordlist.js
diff --git a/client/coral-admin/src/routes/Configure/containers/Configure.js b/client/coral-admin/src/routes/Configure/containers/Configure.js
new file mode 100644
index 000000000..c68b39e0c
--- /dev/null
+++ b/client/coral-admin/src/routes/Configure/containers/Configure.js
@@ -0,0 +1,42 @@
+import React, {Component} from 'react';
+import {connect} from 'react-redux';
+import {bindActionCreators} from 'redux';
+import {compose} from 'react-apollo';
+import {
+ fetchSettings,
+ updateSettings,
+ saveSettingsToServer,
+ updateWordlist,
+ updateDomainlist
+} from '../../../actions/settings';
+
+import Configure from '../components/Configure';
+
+class ConfigureContainer extends Component {
+ componentWillMount = () => {
+ this.props.fetchSettings();
+ }
+
+ render () {
+ return ;
+ }
+}
+
+const mapStateToProps = (state) => ({
+ auth: state.auth.toJS(),
+ settings: state.settings.toJS()
+});
+
+const mapDispatchToProps = (dispatch) =>
+ bindActionCreators({
+ fetchSettings,
+ updateSettings,
+ saveSettingsToServer,
+ updateWordlist,
+ updateDomainlist
+ }, dispatch);
+
+export default compose(
+ connect(mapStateToProps, mapDispatchToProps),
+)(ConfigureContainer);
+
diff --git a/client/coral-admin/src/routes/Configure/index.js b/client/coral-admin/src/routes/Configure/index.js
new file mode 100644
index 000000000..d548be931
--- /dev/null
+++ b/client/coral-admin/src/routes/Configure/index.js
@@ -0,0 +1 @@
+export {default} from './containers/Configure';
diff --git a/client/coral-admin/src/containers/Dashboard/ActivityWidget.js b/client/coral-admin/src/routes/Dashboard/components/ActivityWidget.js
similarity index 100%
rename from client/coral-admin/src/containers/Dashboard/ActivityWidget.js
rename to client/coral-admin/src/routes/Dashboard/components/ActivityWidget.js
diff --git a/client/coral-admin/src/components/CountdownTimer.js b/client/coral-admin/src/routes/Dashboard/components/CountdownTimer.js
similarity index 96%
rename from client/coral-admin/src/components/CountdownTimer.js
rename to client/coral-admin/src/routes/Dashboard/components/CountdownTimer.js
index a1bf32769..9e1995b7f 100644
--- a/client/coral-admin/src/components/CountdownTimer.js
+++ b/client/coral-admin/src/routes/Dashboard/components/CountdownTimer.js
@@ -1,5 +1,5 @@
import React, {PropTypes} from 'react';
-import styles from 'coral-admin/src/containers/Dashboard/Dashboard.css';
+import styles from './Dashboard.css';
import {Icon} from 'coral-ui';
import t from 'coral-framework/services/i18n';
diff --git a/client/coral-admin/src/containers/Dashboard/Dashboard.css b/client/coral-admin/src/routes/Dashboard/components/Dashboard.css
similarity index 100%
rename from client/coral-admin/src/containers/Dashboard/Dashboard.css
rename to client/coral-admin/src/routes/Dashboard/components/Dashboard.css
diff --git a/client/coral-admin/src/routes/Dashboard/components/Dashboard.js b/client/coral-admin/src/routes/Dashboard/components/Dashboard.js
new file mode 100644
index 000000000..ba224a3b9
--- /dev/null
+++ b/client/coral-admin/src/routes/Dashboard/components/Dashboard.js
@@ -0,0 +1,15 @@
+import React from 'react';
+import FlagWidget from './FlagWidget';
+import ActivityWidget from './ActivityWidget';
+import CountdownTimer from './CountdownTimer';
+import styles from './Dashboard.css';
+
+export default ({root: {assetsByActivity, assetsByFlag}, reloadData}) => (
+
+
+
+
+
+
+
+);
diff --git a/client/coral-admin/src/containers/Dashboard/FlagWidget.js b/client/coral-admin/src/routes/Dashboard/components/FlagWidget.js
similarity index 100%
rename from client/coral-admin/src/containers/Dashboard/FlagWidget.js
rename to client/coral-admin/src/routes/Dashboard/components/FlagWidget.js
diff --git a/client/coral-admin/src/containers/Dashboard/LikeWidget.js b/client/coral-admin/src/routes/Dashboard/components/LikeWidget.js
similarity index 100%
rename from client/coral-admin/src/containers/Dashboard/LikeWidget.js
rename to client/coral-admin/src/routes/Dashboard/components/LikeWidget.js
diff --git a/client/coral-admin/src/containers/Dashboard/MostLikedCommentsWidget.js b/client/coral-admin/src/routes/Dashboard/components/MostLikedCommentsWidget.js
similarity index 100%
rename from client/coral-admin/src/containers/Dashboard/MostLikedCommentsWidget.js
rename to client/coral-admin/src/routes/Dashboard/components/MostLikedCommentsWidget.js
diff --git a/client/coral-admin/src/containers/Dashboard/Widget.css b/client/coral-admin/src/routes/Dashboard/components/Widget.css
similarity index 100%
rename from client/coral-admin/src/containers/Dashboard/Widget.css
rename to client/coral-admin/src/routes/Dashboard/components/Widget.css
diff --git a/client/coral-admin/src/routes/Dashboard/containers/Dashboard.js b/client/coral-admin/src/routes/Dashboard/containers/Dashboard.js
new file mode 100644
index 000000000..ea1fb2b6c
--- /dev/null
+++ b/client/coral-admin/src/routes/Dashboard/containers/Dashboard.js
@@ -0,0 +1,65 @@
+import React from 'react';
+import {connect} from 'react-redux';
+import Dashboard from '../components/Dashboard';
+import {compose, gql} from 'react-apollo';
+import withQuery from 'coral-framework/hocs/withQuery';
+
+import {Spinner} from 'coral-ui';
+
+class DashboardContainer extends React.Component {
+
+ reloadData = () => {
+ this.props.data.refetch();
+ }
+
+ render () {
+ if (this.props.data.loading) {
+ return ;
+ }
+ return ;
+ }
+}
+
+export const witDashboardQuery = withQuery(gql`
+ query CoralAdmin_Dashboard($from: Date!, $to: Date!) {
+ assetsByFlag: assetMetrics(from: $from, to: $to, sort: FLAG) {
+ ...CoralAdmin_Metrics
+ }
+ assetsByActivity: assetMetrics(from: $from, to: $to, sort: ACTIVITY) {
+ ...CoralAdmin_Metrics
+ }
+ }
+ fragment CoralAdmin_Metrics on Asset {
+ id
+ title
+ url
+ author
+ created_at
+ commentCount
+ action_summaries {
+ actionCount
+ actionableItemCount
+ }
+ }
+`, {
+ options: ({settings: {dashboardWindowStart, dashboardWindowEnd}}) => {
+ return {
+ variables: {
+ from: dashboardWindowStart,
+ to: dashboardWindowEnd
+ }
+ };
+ }
+});
+
+const mapStateToProps = (state) => {
+ return {
+ settings: state.settings.toJS(),
+ moderation: state.moderation.toJS()
+ };
+};
+
+export default compose(
+ connect(mapStateToProps),
+ witDashboardQuery,
+)(DashboardContainer);
diff --git a/client/coral-admin/src/routes/Dashboard/index.js b/client/coral-admin/src/routes/Dashboard/index.js
new file mode 100644
index 000000000..5bbb476e2
--- /dev/null
+++ b/client/coral-admin/src/routes/Dashboard/index.js
@@ -0,0 +1 @@
+export {default} from './containers/Dashboard.js';
diff --git a/client/coral-admin/src/routes/Install/components/Install.js b/client/coral-admin/src/routes/Install/components/Install.js
new file mode 100644
index 000000000..f7069d67c
--- /dev/null
+++ b/client/coral-admin/src/routes/Install/components/Install.js
@@ -0,0 +1,79 @@
+import React, {Component} from 'react';
+import styles from './style.css';
+import {Wizard, WizardNav} from 'coral-ui';
+import Layout from 'coral-admin/src/components/ui/Layout';
+
+import InitialStep from './Steps/InitialStep';
+import AddOrganizationName from './Steps/AddOrganizationName';
+import CreateYourAccount from './Steps/CreateYourAccount';
+import PermittedDomainsStep from './Steps/PermittedDomainsStep';
+import FinalStep from './Steps/FinalStep';
+
+export default class Install extends Component {
+ handleDomainsChange = (value) => {
+ this.props.updatePermittedDomains(value);
+ };
+
+ handleSettingsChange = ({currentTarget: {name, value}}) => {
+ this.props.updateSettingsFormData(name, value);
+ };
+
+ handleUserChange = ({currentTarget: {name, value}}) => {
+ this.props.updateUserFormData(name, value);
+ };
+
+ handleSettingsSubmit = (e) => {
+ e.preventDefault();
+ this.props.submitSettings();
+ };
+
+ handleUserSubmit = (e) => {
+ e.preventDefault();
+ this.props.submitUser();
+ }
+
+ render() {
+ const {install} = this.props;
+
+ return (
+
+
+ {
+ !install.alreadyInstalled ? (
+
+
Welcome to the Coral Project
+ { install.step !== 0 ? : null }
+
+
+
+
+
+
+
+
+ ) : (
+
Talk is already installed
+ )
+ }
+
+
+ );
+ }
+}
diff --git a/client/coral-admin/src/containers/Install/components/Steps/AddOrganizationName.js b/client/coral-admin/src/routes/Install/components/Steps/AddOrganizationName.js
similarity index 100%
rename from client/coral-admin/src/containers/Install/components/Steps/AddOrganizationName.js
rename to client/coral-admin/src/routes/Install/components/Steps/AddOrganizationName.js
diff --git a/client/coral-admin/src/containers/Install/components/Steps/CreateYourAccount.js b/client/coral-admin/src/routes/Install/components/Steps/CreateYourAccount.js
similarity index 100%
rename from client/coral-admin/src/containers/Install/components/Steps/CreateYourAccount.js
rename to client/coral-admin/src/routes/Install/components/Steps/CreateYourAccount.js
diff --git a/client/coral-admin/src/containers/Install/components/Steps/FinalStep.js b/client/coral-admin/src/routes/Install/components/Steps/FinalStep.js
similarity index 100%
rename from client/coral-admin/src/containers/Install/components/Steps/FinalStep.js
rename to client/coral-admin/src/routes/Install/components/Steps/FinalStep.js
diff --git a/client/coral-admin/src/containers/Install/components/Steps/InitialStep.js b/client/coral-admin/src/routes/Install/components/Steps/InitialStep.js
similarity index 100%
rename from client/coral-admin/src/containers/Install/components/Steps/InitialStep.js
rename to client/coral-admin/src/routes/Install/components/Steps/InitialStep.js
diff --git a/client/coral-admin/src/containers/Install/components/Steps/InviteTeamMembers.js b/client/coral-admin/src/routes/Install/components/Steps/InviteTeamMembers.js
similarity index 100%
rename from client/coral-admin/src/containers/Install/components/Steps/InviteTeamMembers.js
rename to client/coral-admin/src/routes/Install/components/Steps/InviteTeamMembers.js
diff --git a/client/coral-admin/src/containers/Install/components/Steps/PermittedDomainsStep.js b/client/coral-admin/src/routes/Install/components/Steps/PermittedDomainsStep.js
similarity index 100%
rename from client/coral-admin/src/containers/Install/components/Steps/PermittedDomainsStep.js
rename to client/coral-admin/src/routes/Install/components/Steps/PermittedDomainsStep.js
diff --git a/client/coral-admin/src/containers/Install/components/Steps/style.css b/client/coral-admin/src/routes/Install/components/Steps/style.css
similarity index 100%
rename from client/coral-admin/src/containers/Install/components/Steps/style.css
rename to client/coral-admin/src/routes/Install/components/Steps/style.css
diff --git a/client/coral-admin/src/containers/Install/style.css b/client/coral-admin/src/routes/Install/components/style.css
similarity index 100%
rename from client/coral-admin/src/containers/Install/style.css
rename to client/coral-admin/src/routes/Install/components/style.css
diff --git a/client/coral-admin/src/routes/Install/containers/Install.js b/client/coral-admin/src/routes/Install/containers/Install.js
new file mode 100644
index 000000000..5dcb35705
--- /dev/null
+++ b/client/coral-admin/src/routes/Install/containers/Install.js
@@ -0,0 +1,57 @@
+import React, {Component} from 'react';
+import {connect} from 'react-redux';
+import {bindActionCreators} from 'redux';
+import {compose} from 'react-apollo';
+import Install from '../components/Install';
+
+import {
+ goToStep,
+ nextStep,
+ submitUser,
+ checkInstall,
+ previousStep,
+ finishInstall,
+ submitSettings,
+ updateUserFormData,
+ updateSettingsFormData,
+ updatePermittedDomains
+} from '../../../actions/install';
+
+class InstallContainer extends Component {
+ componentDidMount() {
+ const {checkInstall} = this.props;
+ checkInstall(() => {
+ this.context.router.push('/admin');
+ });
+ }
+
+ render() {
+ return ;
+ }
+}
+
+InstallContainer.contextTypes = {
+ router: React.PropTypes.object
+};
+
+const mapStateToProps = (state) => ({
+ install: state.install.toJS()
+});
+
+const mapDispatchToProps = (dispatch) =>
+ bindActionCreators({
+ goToStep,
+ nextStep,
+ submitUser,
+ checkInstall,
+ previousStep,
+ finishInstall,
+ submitSettings,
+ updateUserFormData,
+ updateSettingsFormData,
+ updatePermittedDomains
+ }, dispatch);
+
+export default compose(
+ connect(mapStateToProps, mapDispatchToProps),
+)(InstallContainer);
diff --git a/client/coral-admin/src/routes/Install/index.js b/client/coral-admin/src/routes/Install/index.js
new file mode 100644
index 000000000..94c7bf93f
--- /dev/null
+++ b/client/coral-admin/src/routes/Install/index.js
@@ -0,0 +1 @@
+export {default} from './containers/Install.js';
diff --git a/client/coral-admin/src/containers/ModerationQueue/components/BanUserDialog.css b/client/coral-admin/src/routes/Moderation/components/BanUserDialog.css
similarity index 100%
rename from client/coral-admin/src/containers/ModerationQueue/components/BanUserDialog.css
rename to client/coral-admin/src/routes/Moderation/components/BanUserDialog.css
diff --git a/client/coral-admin/src/containers/ModerationQueue/components/BanUserDialog.js b/client/coral-admin/src/routes/Moderation/components/BanUserDialog.js
similarity index 100%
rename from client/coral-admin/src/containers/ModerationQueue/components/BanUserDialog.js
rename to client/coral-admin/src/routes/Moderation/components/BanUserDialog.js
diff --git a/client/coral-admin/src/containers/ModerationQueue/components/Comment.css b/client/coral-admin/src/routes/Moderation/components/Comment.css
similarity index 100%
rename from client/coral-admin/src/containers/ModerationQueue/components/Comment.css
rename to client/coral-admin/src/routes/Moderation/components/Comment.css
diff --git a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js b/client/coral-admin/src/routes/Moderation/components/Comment.js
similarity index 89%
rename from client/coral-admin/src/containers/ModerationQueue/components/Comment.js
rename to client/coral-admin/src/routes/Moderation/components/Comment.js
index fe41f4d34..46f6a40c8 100644
--- a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js
+++ b/client/coral-admin/src/routes/Moderation/components/Comment.js
@@ -40,8 +40,8 @@ const Comment = ({
}
// since words are checked against word boundaries on the backend,
- // this should be the behavior on the front end as well.
- // currently the highlighter plugin does not support this out of the box.
+ // should be the behavior on the front end as well.
+ // currently the highlighter plugin does not support out of the box.
const searchWords = [...suspectWords, ...bannedWords]
.filter((w) => {
return new RegExp(`(^|\\s)${w}(\\s|$)`).test(comment.body);
@@ -83,7 +83,12 @@ const Comment = ({
{t('comment.banned_user')}
: null}
-
+