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": "",