summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2016-07-06 17:17:37 -0400
committerCorey Hulen <corey@hulen.com>2016-07-06 13:17:37 -0800
commit31a0f65973cf34cb17f3a4a730455e5d8f8a1b72 (patch)
treef694ada3469214f01fdc11b124f9ed85ccb4d8e8
parent7b6e8d788b3edc444e84579558092974b163eb1e (diff)
downloadchat-31a0f65973cf34cb17f3a4a730455e5d8f8a1b72.tar.gz
chat-31a0f65973cf34cb17f3a4a730455e5d8f8a1b72.tar.bz2
chat-31a0f65973cf34cb17f3a4a730455e5d8f8a1b72.zip
Adding sync now button to system console (#3510)
-rw-r--r--webapp/components/admin_console/ldap_settings.jsx5
-rw-r--r--webapp/components/admin_console/sync_now_button.jsx112
-rw-r--r--webapp/i18n/en.json3
3 files changed, 120 insertions, 0 deletions
diff --git a/webapp/components/admin_console/ldap_settings.jsx b/webapp/components/admin_console/ldap_settings.jsx
index 393e80f29..ccb33a493 100644
--- a/webapp/components/admin_console/ldap_settings.jsx
+++ b/webapp/components/admin_console/ldap_settings.jsx
@@ -7,6 +7,8 @@ import ConnectionSecurityDropdownSetting from './connection_security_dropdown_se
import SettingsGroup from './settings_group.jsx';
import TextSetting from './text_setting.jsx';
+import SyncNowButton from './sync_now_button.jsx';
+
import * as Utils from 'utils/utils.jsx';
import React from 'react';
@@ -428,6 +430,9 @@ export default class LdapSettings extends AdminSettings {
onChange={this.handleChange}
disabled={!this.state.enable}
/>
+ <SyncNowButton
+ disabled={!this.state.enable}
+ />
</SettingsGroup>
);
}
diff --git a/webapp/components/admin_console/sync_now_button.jsx b/webapp/components/admin_console/sync_now_button.jsx
new file mode 100644
index 000000000..7197b7b35
--- /dev/null
+++ b/webapp/components/admin_console/sync_now_button.jsx
@@ -0,0 +1,112 @@
+// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import React from 'react';
+
+import Client from 'utils/web_client.jsx';
+import * as Utils from 'utils/utils.jsx';
+
+import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
+
+export default class SyncNowButton extends React.Component {
+ static get propTypes() {
+ return {
+ disabled: React.PropTypes.bool
+ };
+ }
+ constructor(props) {
+ super(props);
+
+ this.handleSyncNow = this.handleSyncNow.bind(this);
+
+ this.state = {
+ buisy: false,
+ fail: null
+ };
+ }
+
+ handleSyncNow(e) {
+ e.preventDefault();
+
+ this.setState({
+ buisy: true,
+ fail: null
+ });
+
+ Client.ldapSyncNow(
+ () => {
+ this.setState({
+ buisy: false
+ });
+ },
+ (err) => {
+ this.setState({
+ buisy: false,
+ fail: err.message + ' - ' + err.detailed_error
+ });
+ }
+ );
+ }
+
+ render() {
+ let failMessage = null;
+ if (this.state.fail) {
+ failMessage = (
+ <div className='alert alert-warning'>
+ <i className='fa fa-warning'></i>
+ <FormattedMessage
+ id='admin.ldap.syncFailure'
+ defaultMessage='Sync Failure: {error}'
+ values={{
+ error: this.state.fail
+ }}
+ />
+ </div>
+ );
+ }
+
+ let helpText = (
+ <FormattedHTMLMessage
+ id='admin.ldap.syncNowHelpText'
+ defaultMessage='Initiates an LDAP synchronization immediately.'
+ />
+ );
+
+ let contents = null;
+ if (this.state.loading) {
+ contents = (
+ <span>
+ <span className='fa fa-refresh icon--rotate'/>
+ {Utils.localizeMessage('admin.reload.loading', ' Loading...')}
+ </span>
+ );
+ } else {
+ contents = (
+ <FormattedMessage
+ id='admin.ldap.sync_button'
+ defaultMessage='LDAP Synchronize Now'
+ />
+ );
+ }
+
+ return (
+ <div className='form-group reload-config'>
+ <div className='col-sm-offset-4 col-sm-8'>
+ <div>
+ <button
+ className='btn btn-default'
+ onClick={this.handleSyncNow}
+ disabled={this.props.disabled}
+ >
+ {contents}
+ </button>
+ {failMessage}
+ </div>
+ <div className='help-text'>
+ {helpText}
+ </div>
+ </div>
+ </div>
+ );
+ }
+}
diff --git a/webapp/i18n/en.json b/webapp/i18n/en.json
index e47f68eb9..945c9c4a9 100644
--- a/webapp/i18n/en.json
+++ b/webapp/i18n/en.json
@@ -360,6 +360,9 @@
"admin.ldap.userFilterTitle": "User Filter:",
"admin.ldap.usernameAttrEx": "Ex \"sAMAccountName\"",
"admin.ldap.usernameAttrTitle": "Username Attribute:",
+ "admin.ldap.sync_button": "LDAP Synchronize Now",
+ "admin.ldap.syncNowHelpText": "Initiates an LDAP synchronization immediately.",
+ "admin.ldap.syncFailure": "Sync Failure: {error}",
"admin.license.choose": "Choose File",
"admin.license.chooseFile": "Choose File",
"admin.license.edition": "Edition: ",