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/compliance_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/compliance_settings.jsx')
-rw-r--r-- | webapp/components/admin_console/compliance_settings.jsx | 318 |
1 files changed, 90 insertions, 228 deletions
diff --git a/webapp/components/admin_console/compliance_settings.jsx b/webapp/components/admin_console/compliance_settings.jsx index 53f060e11..d31759150 100644 --- a/webapp/components/admin_console/compliance_settings.jsx +++ b/webapp/components/admin_console/compliance_settings.jsx @@ -1,83 +1,51 @@ // Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. -import $ from 'jquery'; -import Client from 'utils/web_client.jsx'; -import * as AsyncClient from '../../utils/async_client.jsx'; -import * as Utils from '../../utils/utils.jsx'; +import React from 'react'; -import {FormattedMessage, FormattedHTMLMessage} from 'react-intl'; +import * as Utils from 'utils/utils.jsx'; -import React from 'react'; -import ReactDOM from 'react-dom'; +import AdminSettings from './admin_settings.jsx'; +import BooleanSetting from './boolean_setting.jsx'; +import {FormattedHTMLMessage, FormattedMessage} from 'react-intl'; +import SettingsGroup from './settings_group.jsx'; +import TextSetting from './text_setting.jsx'; -export default class ComplianceSettings extends React.Component { +export default class ComplianceSettings extends AdminSettings { constructor(props) { super(props); - this.handleSubmit = this.handleSubmit.bind(this); - this.handleChange = this.handleChange.bind(this); - this.handleEnable = this.handleEnable.bind(this); - this.handleDisable = this.handleDisable.bind(this); + this.getConfigFromState = this.getConfigFromState.bind(this); - this.state = { - saveNeeded: false, - serverError: null, - enable: this.props.config.ComplianceSettings.Enable - }; - } - handleChange() { - this.setState({saveNeeded: true}); - } - handleEnable() { - this.setState({saveNeeded: true, enable: true}); - } - handleDisable() { - this.setState({saveNeeded: true, enable: false}); + this.renderSettings = this.renderSettings.bind(this); + + this.state = Object.assign(this.state, { + enable: props.config.ComplianceSettings.Enable, + directory: props.config.ComplianceSettings.Directory, + enableDaily: props.config.ComplianceSettings.EnableDaily + }); } - handleSubmit(e) { - e.preventDefault(); - $('#save-button').button('loading'); - const config = this.props.config; - const oldEnable = config.ComplianceSettings.Enable; - config.ComplianceSettings.Enable = this.refs.Enable.checked; - config.ComplianceSettings.Directory = ReactDOM.findDOMNode(this.refs.Directory).value; - config.ComplianceSettings.EnableDaily = this.refs.EnableDaily.checked; + getConfigFromState(config) { + config.ComplianceSettings.Enable = this.state.enable; + config.ComplianceSettings.Directory = this.state.directory; + config.ComplianceSettings.EnableDaily = this.state.enableDaily; - Client.saveConfig( - config, - () => { - $('#save-button').button('reset'); - AsyncClient.getConfig(); - this.setState({ - serverError: null, - saveNeeded: false - }); - if (oldEnable !== config.ComplianceSettings.Enable) { - window.location.reload(); - } - }, - (err) => { - this.setState({ - serverError: err.message, - saveNeeded: true - }); - $('#save-button').button('reset'); - } - ); + return config; } - render() { - let serverError = ''; - if (this.state.serverError) { - serverError = <div className='form-group has-error'><label className='control-label'>{this.state.serverError}</label></div>; - } - let saveClass = 'btn'; - if (this.state.saveNeeded) { - saveClass = 'btn btn-primary'; - } + renderTitle() { + return ( + <h3> + <FormattedMessage + id='admin.compliance.title' + defaultMessage='Compliance Settings' + /> + </h3> + ); + } + renderSettings() { const licenseEnabled = global.window.mm_license.IsLicensed === 'true' && global.window.mm_license.Compliance === 'true'; let bannerContent; @@ -95,170 +63,64 @@ export default class ComplianceSettings extends React.Component { } return ( - <div className='wrapper--fixed'> + <SettingsGroup> {bannerContent} - <h3> - <FormattedMessage - id='admin.compliance.title' - defaultMessage='Compliance Settings' - /> - </h3> - <form - className='form-horizontal' - role='form' - > - - <div className='form-group'> - <label - className='control-label col-sm-4' - htmlFor='Enable' - > - <FormattedMessage - id='admin.compliance.enableTitle' - defaultMessage='Enable Compliance:' - /> - </label> - <div className='col-sm-8'> - <label className='radio-inline'> - <input - type='radio' - name='Enable' - value='true' - ref='Enable' - defaultChecked={this.props.config.ComplianceSettings.Enable} - onChange={this.handleEnable} - disabled={!licenseEnabled} - /> - <FormattedMessage - id='admin.compliance.true' - defaultMessage='true' - /> - </label> - <label className='radio-inline'> - <input - type='radio' - name='Enable' - value='false' - defaultChecked={!this.props.config.ComplianceSettings.Enable} - onChange={this.handleDisable} - /> - <FormattedMessage - id='admin.compliance.false' - defaultMessage='false' - /> - </label> - <p className='help-text'> - <FormattedMessage - id='admin.compliance.enableDesc' - defaultMessage='When true, Mattermost allows compliance reporting' - /> - </p> - </div> - </div> - - <div className='form-group'> - <label - className='control-label col-sm-4' - htmlFor='Directory' - > - <FormattedMessage - id='admin.compliance.directoryTitle' - defaultMessage='Compliance Directory Location:' - /> - </label> - <div className='col-sm-8'> - <input - type='text' - className='form-control' - id='Directory' - ref='Directory' - placeholder={Utils.localizeMessage('admin.compliance.directoryExample', 'Ex "./data/"')} - defaultValue={this.props.config.ComplianceSettings.Directory} - onChange={this.handleChange} - disabled={!this.state.enable} - /> - <p className='help-text'> - <FormattedMessage - id='admin.compliance.directoryDescription' - defaultMessage='Directory to which compliance reports are written. If blank, will be set to ./data/.' - /> - </p> - </div> - </div> - - <div className='form-group'> - <label - className='control-label col-sm-4' - htmlFor='EnableDaily' - > - <FormattedMessage - id='admin.compliance.enableDailyTitle' - defaultMessage='Enable Daily Report:' - /> - </label> - <div className='col-sm-8'> - <label className='radio-inline'> - <input - type='radio' - name='EnableDaily' - value='true' - ref='EnableDaily' - defaultChecked={this.props.config.ComplianceSettings.EnableDaily} - onChange={this.handleChange} - disabled={!this.state.enable} - /> - <FormattedMessage - id='admin.compliance.true' - defaultMessage='true' - /> - </label> - <label className='radio-inline'> - <input - type='radio' - name='EnableDaily' - value='false' - defaultChecked={!this.props.config.ComplianceSettings.EnableDaily} - disabled={!this.state.enable} - /> - <FormattedMessage - id='admin.compliance.false' - defaultMessage='false' - /> - </label> - <p className='help-text'> - <FormattedMessage - id='admin.compliance.enableDailyDesc' - defaultMessage='When true, Mattermost will generate a daily compliance report.' - /> - </p> - </div> - </div> - - <div className='form-group'> - <div className='col-sm-12'> - {serverError} - <button - disabled={!this.state.saveNeeded} - type='submit' - className={saveClass} - onClick={this.handleSubmit} - id='save-button' - data-loading-text={'<span class=\'glyphicon glyphicon-refresh glyphicon-refresh-animate\'></span> ' + Utils.localizeMessage('admin.compliance.saving', 'Saving Config...')} - > - <FormattedMessage - id='admin.compliance.save' - defaultMessage='Save' - /> - </button> - </div> - </div> - </form> - </div> + <BooleanSetting + id='enable' + label={ + <FormattedMessage + id='admin.compliance.enableTitle' + defaultMessage='Enable Compliance:' + /> + } + helpText={ + <FormattedMessage + id='admin.compliance.enableDesc' + defaultMessage='When true, Mattermost allows compliance reporting' + /> + } + value={this.state.enable} + onChange={this.handleChange} + disabled={!licenseEnabled} + /> + <TextSetting + id='directory' + label={ + <FormattedMessage + id='admin.compliance.directoryTitle' + defaultMessage='Compliance Directory Location:' + /> + } + placeholder={Utils.localizeMessage('admin.sql.maxOpenExample', 'Ex "10"')} + helpText={ + <FormattedMessage + id='admin.compliance.directoryDescription' + defaultMessage='Directory to which compliance reports are written. If blank, will be set to ./data/.' + /> + } + value={this.state.directory} + onChange={this.handleChange} + disabled={!licenseEnabled || !this.state.enable} + /> + <BooleanSetting + id='enableDaily' + label={ + <FormattedMessage + id='admin.compliance.enableDailyTitle' + defaultMessage='Enable Daily Report:' + /> + } + helpText={ + <FormattedMessage + id='admin.compliance.enableDailyDesc' + defaultMessage='When true, Mattermost will generate a daily compliance report.' + /> + } + value={this.state.enableDaily} + onChange={this.handleChange} + disabled={!licenseEnabled || !this.state.enable} + /> + </SettingsGroup> ); } -} - -ComplianceSettings.propTypes = { - config: React.PropTypes.object -}; - +}
\ No newline at end of file |