diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2016-05-17 07:21:39 -0400 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2016-05-17 07:21:39 -0400 |
commit | fd53e3b7868234af328cd73150318fc8e7a26b89 (patch) | |
tree | 48c49af0d6b25bf978430efc61aa5b3b63b3414a /webapp/components/admin_console/admin_settings.jsx | |
parent | 5f5f813387a914d6e34945490c438755adfa8505 (diff) | |
download | chat-fd53e3b7868234af328cd73150318fc8e7a26b89.tar.gz chat-fd53e3b7868234af328cd73150318fc8e7a26b89.tar.bz2 chat-fd53e3b7868234af328cd73150318fc8e7a26b89.zip |
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
Diffstat (limited to 'webapp/components/admin_console/admin_settings.jsx')
-rw-r--r-- | webapp/components/admin_console/admin_settings.jsx | 115 |
1 files changed, 115 insertions, 0 deletions
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 ( + <div className='wrapper--fixed'> + {this.renderTitle()} + <form + className='form-horizontal' + role='form' + > + {this.renderSettings()} + <div className='form-group'> + <div className='col-sm-12'> + <FormError error={this.state.serverError}/> + <SaveButton + saving={this.state.saving} + disabled={!this.state.saveNeeded || (this.canSave && !this.canSave())} + onClick={this.handleSubmit} + /> + </div> + </div> + </form> + </div> + ); + } +} |