diff --git a/client/coral-admin/src/actions/settings.js b/client/coral-admin/src/actions/settings.js
index 85ad5149e..32f56e111 100644
--- a/client/coral-admin/src/actions/settings.js
+++ b/client/coral-admin/src/actions/settings.js
@@ -11,6 +11,7 @@ export const SAVE_SETTINGS_SUCCESS = 'SAVE_SETTINGS_SUCCESS';
export const SAVE_SETTINGS_FAILED = 'SAVE_SETTINGS_FAILED';
export const WORDLIST_UPDATED = 'WORDLIST_UPDATED';
+export const DOMAINLIST_UPDATED = 'DOMAINLIST_UPDATED';
export const fetchSettings = () => dispatch => {
dispatch({type: SETTINGS_LOADING});
@@ -33,6 +34,10 @@ export const updateWordlist = (listName, list) => {
return {type: WORDLIST_UPDATED, listName, list};
};
+export const updateDomainlist = (listName, list) => {
+ return {type: DOMAINLIST_UPDATED, listName, list};
+};
+
export const saveSettingsToServer = () => (dispatch, getState) => {
let settings = getState().settings.toJS().settings;
if (settings.charCount) {
diff --git a/client/coral-admin/src/containers/Configure/Configure.js b/client/coral-admin/src/containers/Configure/Configure.js
index 8ad6cacfd..c9c88eeee 100644
--- a/client/coral-admin/src/containers/Configure/Configure.js
+++ b/client/coral-admin/src/containers/Configure/Configure.js
@@ -5,6 +5,7 @@ import {
updateSettings,
saveSettingsToServer,
updateWordlist,
+ updateDomainlist
} from '../../actions/settings';
import {Button, List, Item} from 'coral-ui';
@@ -14,6 +15,7 @@ import translations from '../../translations.json';
import EmbedLink from './EmbedLink';
import CommentSettings from './CommentSettings';
import Wordlist from './Wordlist';
+import Domainlist from './Domainlist';
import has from 'lodash/has';
class Configure extends Component {
@@ -47,6 +49,11 @@ class Configure extends Component {
this.props.dispatch(updateWordlist(listName, list));
}
+ onChangeDomainlist = (listName, list) => {
+ this.setState({changed: true});
+ this.props.dispatch(updateDomainlist(listName, list));
+ }
+
onSettingUpdate = (setting) => {
this.setState({changed: true});
this.props.dispatch(updateSettings(setting));
@@ -73,7 +80,14 @@ class Configure extends Component {
errors={this.state.errors}
settingsError={this.onSettingError}/>;
case 'embed':
- return ;
+ return has(this, 'props.settings.domains.whitelist')
+ ?
+
+
+
+ : ;
case 'wordlist':
return has(this, 'props.settings.wordlist')
? (
+
+
{lang.t('configure.domain-list-title')}
+
+ {lang.t('configure.domain-list-text')}
+ data.split(',').map(d => d.trim())}
+ onChange={tags => onChangeDomainlist('whitelist', tags)}
+ />
+
+
+);
+
+export default Domainlist;
+
+const lang = new I18n(translations);
diff --git a/client/coral-admin/src/reducers/settings.js b/client/coral-admin/src/reducers/settings.js
index 12b16d9ad..4f743bc0a 100644
--- a/client/coral-admin/src/reducers/settings.js
+++ b/client/coral-admin/src/reducers/settings.js
@@ -6,6 +6,9 @@ const initialState = Map({
wordlist: Map({
banned: List(),
suspect: List()
+ }),
+ domains: Map({
+ whitelist: List()
})
}),
saveSettingsError: null,
@@ -24,6 +27,7 @@ export default (state = initialState, action) => {
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);
+ case types.DOMAINLIST_UPDATED: return updateDomainlist(state, action);
default: return state;
}
};
@@ -40,6 +44,10 @@ const updateWordlist = (state, action) => {
return state.setIn(['settings', 'wordlist', action.listName], action.list);
};
+const updateDomainlist = (state, action) => {
+ return state.setIn(['settings', 'domains', action.listName], action.list);
+};
+
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 a4256848e..8ecf55449 100644
--- a/client/coral-admin/src/translations.json
+++ b/client/coral-admin/src/translations.json
@@ -79,7 +79,9 @@
"comment-count-header": "Limit Comment Length",
"comment-count-text-pre": "Comments will be limited to ",
"comment-count-text-post": " characters.",
- "comment-count-error": "Please enter a valid number."
+ "comment-count-error": "Please enter a valid number.",
+ "domain-list-title": "Domain Whitelist",
+ "domain-list-text": "Some instructions on how to type the urls."
},
"bandialog": {
"ban_user": "Ban User?",
@@ -187,7 +189,12 @@
"comment-count-header": "Limitar el largo del comentario",
"comment-count-text-pre": "El largo de comentarios será ",
"comment-count-text-post": " caracteres",
- "comment-count-error": "Por favor escribe un número válido."
+ "comment-count-error": "Por favor escribe un número válido.",
+ "domain-list-title": "Lista de Dominios Permitidos",
+ "domain-list-text": "Instrucciones de como ingresar las URLs."
+ },
+ "embedlink": {
+ "copy": "Copiar"
},
"bandialog": {
"ban_user": "Quieres suspender el Usuario?",
diff --git a/models/setting.js b/models/setting.js
index f6eff613a..adbf60d83 100644
--- a/models/setting.js
+++ b/models/setting.js
@@ -67,10 +67,6 @@ const SettingSchema = new Schema({
whitelist: {
type: Array,
default: ['localhost']
- },
- enable: {
- type: Boolean,
- default: true
}
}
}, {