diff --git a/client/coral-admin/src/actions/settings.js b/client/coral-admin/src/actions/settings.js
index 1dfda51b9..3c9b46f59 100644
--- a/client/coral-admin/src/actions/settings.js
+++ b/client/coral-admin/src/actions/settings.js
@@ -10,6 +10,8 @@ export const SAVE_SETTINGS_LOADING = 'SAVE_SETTINGS_LOADING';
export const SAVE_SETTINGS_SUCCESS = 'SAVE_SETTINGS_SUCCESS';
export const SAVE_SETTINGS_FAILED = 'SAVE_SETTINGS_FAILED';
+export const WORDLIST_UPDATED = 'WORDLIST_UPDATED';
+
export const fetchSettings = () => dispatch => {
dispatch({type: SETTINGS_LOADING});
coralApi('/settings')
@@ -21,12 +23,19 @@ export const fetchSettings = () => dispatch => {
});
};
+// for updating top-level settings
export const updateSettings = settings => {
return {type: SETTINGS_UPDATED, settings};
};
+// this is a nested property, so it needs a special action.
+export const updateWordlist = (listName, list) => {
+ return {type: WORDLIST_UPDATED, listName, list};
+};
+
export const saveSettingsToServer = () => (dispatch, getState) => {
let settings = getState().settings.toJS().settings;
+ console.log('about to save settings to server', settings);
if (settings.charCount) {
settings.charCount = parseInt(settings.charCount);
}
diff --git a/client/coral-admin/src/containers/Configure/Configure.js b/client/coral-admin/src/containers/Configure/Configure.js
index 6af02cf05..1f31807ff 100644
--- a/client/coral-admin/src/containers/Configure/Configure.js
+++ b/client/coral-admin/src/containers/Configure/Configure.js
@@ -1,6 +1,11 @@
import React from 'react';
import {connect} from 'react-redux';
-import {fetchSettings, updateSettings, saveSettingsToServer} from '../../actions/settings';
+import {
+ fetchSettings,
+ updateSettings,
+ saveSettingsToServer,
+ updateWordlist,
+} from '../../actions/settings';
import {
List,
ListItem,
@@ -21,7 +26,8 @@ class Configure extends React.Component {
this.state = {
activeSection: 'comments',
- wordlist: [],
+ banned: [],
+ suspect: [],
changed: false,
errors: {}
};
@@ -36,8 +42,10 @@ class Configure extends React.Component {
|| !this.props.settings.wordlist)
&& newProps.settings.wordlist
&& newProps.settings.wordlist.length !== 0 ) {
- console.log('wordlist?', newProps.settings.wordlist);
- this.setState({wordlist: newProps.settings.wordlist.banned.join(', ')});
+ this.setState({
+ banned: newProps.settings.wordlist.banned.join(', '),
+ suspect: newProps.settings.wordlist.suspect.join(', ')
+ });
}
}
@@ -50,15 +58,11 @@ class Configure extends React.Component {
this.setState({activeSection});
}
- onChangeWordlist = (event) => {
+ onChangeWordlist = (event, list) => {
event.preventDefault();
- const newlist = event.target.value;
- this.setState({wordlist: newlist.toLowerCase(), changed: true});
- this.props.dispatch(updateSettings({
- wordlist: newlist.toLowerCase()
- .split(',')
- .map((word) => word.trim())
- }));
+ const newlist = event.target.value.toLowerCase();
+ this.setState({[list]: newlist, changed: true});
+ this.props.dispatch(updateWordlist(list, newlist.split(',').map(word => word.trim()) ));
}
onSettingUpdate = (setting) => {
@@ -90,7 +94,8 @@ class Configure extends React.Component {
return ;
case 'wordlist':
return ;
}
}
diff --git a/client/coral-admin/src/containers/Configure/Wordlist.js b/client/coral-admin/src/containers/Configure/Wordlist.js
index fd48c44d2..ad7db36a5 100644
--- a/client/coral-admin/src/containers/Configure/Wordlist.js
+++ b/client/coral-admin/src/containers/Configure/Wordlist.js
@@ -16,7 +16,7 @@ const Wordlist = ({suspectWords, bannedWords, onChangeWordlist}) => (
rows={5}
type='text'
className={styles.wordlistInput}
- onChange={onChangeWordlist}
+ onChange={e => onChangeWordlist(e, 'banned')}
value={bannedWords} />
{lang.t('configure.suspect-words-title')}
@@ -27,7 +27,7 @@ const Wordlist = ({suspectWords, bannedWords, onChangeWordlist}) => (
rows={5}
type='text'
className={styles.wordlistInput}
- onChange={() => {}}
+ onChange={e => onChangeWordlist(e, 'suspect')}
value={suspectWords} />
diff --git a/client/coral-admin/src/reducers/settings.js b/client/coral-admin/src/reducers/settings.js
index 20cd024f5..640fdfc8d 100644
--- a/client/coral-admin/src/reducers/settings.js
+++ b/client/coral-admin/src/reducers/settings.js
@@ -18,16 +18,27 @@ export default (state = initialState, action) => {
case types.SAVE_SETTINGS_LOADING: return state.set('fetchingSettings', true).set('saveSettingsError', null);
case types.SAVE_SETTINGS_SUCCESS: return saveComplete(state, action);
case types.SAVE_SETTINGS_FAILED: return settingsSaveFailed(state, action);
+ case types.WORDLIST_UPDATED: return updateWordlist(state, action);
default: return state;
}
};
const updateSettings = (state, action) => {
+ console.log('updateSettings', state, action);
const s = state.set('fetchingSettings', false).set('fetchSettingsError', null);
const settings = s.get('settings').merge(action.settings);
return s.set('settings', settings);
};
+const updateWordlist = (state, action) => {
+ const wordlist = state
+ .get('settings')
+ .get('wordlist')
+ .merge({[action.listName]: action.list});
+ const settings = state.get('settings').merge({wordlist});
+ return state.set('settings', settings);
+};
+
const saveComplete = (state, action) => {
const s = state.set('fetchingSettings', false).set('saveSettingsError', null);
const settings = s.get('settings').merge(action.settings);
diff --git a/client/coral-admin/src/translations.json b/client/coral-admin/src/translations.json
index 5a7e413bf..028392497 100644
--- a/client/coral-admin/src/translations.json
+++ b/client/coral-admin/src/translations.json
@@ -117,7 +117,7 @@
"include-text": "Incluir tu texto aqui.",
"comment-settings": "Configuración de Comentarios",
"embed-comment-stream": "Colocar Hilo de Comentarios",
- "wordlist": "Lista de palabras no permitidas",
+ "wordlist": "Palabras Suspendidas y Suspechosas",
"banned-word-header": "Escribir las palabras no permitidas",
"banned-word-text": "Comentarios que contengan estas palabras o frases, no separadas por comas y en mayusculas o minusuculas, serán automaticamente separadas de los comentarios publicados.",
"suspect-word-header": "",