From fd53e3b7868234af328cd73150318fc8e7a26b89 Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Tue, 17 May 2016 07:21:39 -0400 Subject: PLT-2257 Reorganized System Console (#3003) * Reorganized system console * Fixed the names of some components * Fixed timestamp for BrandImageSetting * Fixed merge issues * Updated push notification settings to match master branch * Removed top level setting pages and moved enable Gitlab/LDAP settings onto their respective pages * Re-added restrictDirectMessage setting to system console * Re-added email connection test and fixed some margins * Fixed ESLint errors * Renamed Authentication > Onboarding to Authentication > Email in the system console * Renamed Customization > Whitelabeling to Customization > Custom Branding in System Console * Re-added EnableOpenServer to system console --- webapp/components/admin_console/admin_settings.jsx | 115 +++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 webapp/components/admin_console/admin_settings.jsx (limited to 'webapp/components/admin_console/admin_settings.jsx') diff --git a/webapp/components/admin_console/admin_settings.jsx b/webapp/components/admin_console/admin_settings.jsx new file mode 100644 index 000000000..d76e1331a --- /dev/null +++ b/webapp/components/admin_console/admin_settings.jsx @@ -0,0 +1,115 @@ +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import React from 'react'; + +import * as AsyncClient from 'utils/async_client.jsx'; +import Client from 'utils/web_client.jsx'; + +import FormError from 'components/form_error.jsx'; +import SaveButton from 'components/admin_console/save_button.jsx'; + +export default class AdminSettings extends React.Component { + static get propTypes() { + return { + config: React.PropTypes.object + }; + } + + constructor(props) { + super(props); + + this.handleChange = this.handleChange.bind(this); + this.handleSubmit = this.handleSubmit.bind(this); + + this.state = { + saveNeeded: false, + saving: false, + serverError: null + }; + } + + handleChange(id, value) { + this.setState({ + saveNeeded: true, + [id]: value + }); + } + + handleSubmit(e) { + e.preventDefault(); + + this.setState({ + saving: true, + serverError: null + }); + + const config = this.getConfigFromState(this.props.config); + + Client.saveConfig( + config, + () => { + AsyncClient.getConfig(); + this.setState({ + saveNeeded: false, + saving: false + }); + }, + (err) => { + this.setState({ + saving: false, + serverError: err.message + }); + } + ); + } + + parseInt(str) { + const n = parseInt(str, 10); + + if (isNaN(n)) { + return 0; + } + + return n; + } + + parseIntNonZero(str) { + const n = parseInt(str, 10); + + if (isNaN(n) || n < 1) { + return 1; + } + + return n; + } + + render() { + let saveClass = 'btn'; + if (this.state.saveNeeded) { + saveClass += 'btn-primary'; + } + + return ( +
+ {this.renderTitle()} +
+ {this.renderSettings()} +
+
+ + +
+
+
+
+ ); + } +} -- cgit v1.2.3-1-g7c22