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/generated_setting.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/generated_setting.jsx')
-rw-r--r-- | webapp/components/admin_console/generated_setting.jsx | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/webapp/components/admin_console/generated_setting.jsx b/webapp/components/admin_console/generated_setting.jsx new file mode 100644 index 000000000..a83407cb6 --- /dev/null +++ b/webapp/components/admin_console/generated_setting.jsx @@ -0,0 +1,97 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import React from 'react'; + +import crypto from 'crypto'; + +import {FormattedMessage} from 'react-intl'; + +export default class GeneratedSetting extends React.Component { + static get propTypes() { + return { + id: React.PropTypes.string.isRequired, + label: React.PropTypes.node.isRequired, + placeholder: React.PropTypes.string, + value: React.PropTypes.string.isRequired, + onChange: React.PropTypes.func.isRequired, + disabled: React.PropTypes.bool.isRequired, + disabledText: React.PropTypes.node, + helpText: React.PropTypes.node.isRequired, + regenerateText: React.PropTypes.node + }; + } + + static get defaultProps() { + return { + disabled: false, + regenerateText: ( + <FormattedMessage + id='admin.email.regenerate' + defaultMessage='Re-Generate' + /> + ) + }; + } + + constructor(props) { + super(props); + + this.handleChange = this.handleChange.bind(this); + this.regenerate = this.regenerate.bind(this); + } + + handleChange(e) { + this.props.onChange(this.props.id, e.target.value === 'true'); + } + + regenerate(e) { + e.preventDefault(); + + this.props.onChange(this.props.id, crypto.randomBytes(256).toString('base64').substring(0, 32)); + } + + render() { + let disabledText = null; + if (this.props.disabled && this.props.disabledText) { + disabledText = ( + <div className='admin-console__disabled-text'> + {this.props.disabledText} + </div> + ); + } + + return ( + <div className='form-group'> + <label + className='control-label col-sm-4' + htmlFor={this.props.id} + > + {this.props.label} + </label> + <div className='col-sm-8'> + <input + type='text' + className='form-control' + id={this.props.id} + placeholder={this.props.placeholder} + value={this.props.value} + onChange={this.handleChange} + disabled={this.props.disabled} + /> + {disabledText} + <div className='help-text'> + {this.props.helpText} + </div> + <button + className='btn btn-default' + onClick={this.regenerate} + disabled={this.props.disabled} + > + {this.props.regenerateText} + </button> + </div> + </div> + ); + } +} |