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
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
5f5f813387
Коммит
fd53e3b786
115
webapp/components/admin_console/admin_settings.jsx
Обычный файл
115
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>
|
||||
);
|
||||
}
|
||||
}
|
||||
Ссылка в новой задаче
Block a user