summaryrefslogtreecommitdiffstats
path: root/webapp/components/admin_console/admin_settings.jsx
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2016-05-17 07:21:39 -0400
committerChristopher Speller <crspeller@gmail.com>2016-05-17 07:21:39 -0400
commitfd53e3b7868234af328cd73150318fc8e7a26b89 (patch)
tree48c49af0d6b25bf978430efc61aa5b3b63b3414a /webapp/components/admin_console/admin_settings.jsx
parent5f5f813387a914d6e34945490c438755adfa8505 (diff)
downloadchat-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.jsx115
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>
+ );
+ }
+}