From fd53e3b7868234af328cd73150318fc8e7a26b89 Mon Sep 17 00:00:00 2001
From: Harrison Healey <harrisonmhealey@gmail.com>
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 (
+            <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>
+        );
+    }
+}
-- 
cgit v1.2.3-1-g7c22

