diff options
author | =Corey Hulen <corey@hulen.com> | 2016-01-22 16:31:58 -0600 |
---|---|---|
committer | =Corey Hulen <corey@hulen.com> | 2016-01-22 16:31:58 -0600 |
commit | c2d98c2c1f4860c11aedf43aff5e360256a89835 (patch) | |
tree | 4304f7584025477d74e5e70677c4f5a70c26bb58 /web/react/components/user_settings/manage_languages.jsx | |
parent | 6e2c1b7fd5248c6a4a91edcd59fa124c8d3c744a (diff) | |
parent | d352c5b64dddfb8e46b18edbd7352c41495078a1 (diff) | |
download | chat-c2d98c2c1f4860c11aedf43aff5e360256a89835.tar.gz chat-c2d98c2c1f4860c11aedf43aff5e360256a89835.tar.bz2 chat-c2d98c2c1f4860c11aedf43aff5e360256a89835.zip |
merging
Diffstat (limited to 'web/react/components/user_settings/manage_languages.jsx')
-rw-r--r-- | web/react/components/user_settings/manage_languages.jsx | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/web/react/components/user_settings/manage_languages.jsx b/web/react/components/user_settings/manage_languages.jsx new file mode 100644 index 000000000..123165b76 --- /dev/null +++ b/web/react/components/user_settings/manage_languages.jsx @@ -0,0 +1,101 @@ +// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// See License.txt for license information. + +import * as Client from '../../utils/client.jsx'; +import * as Utils from '../../utils/utils.jsx'; + +export default class ManageLanguage extends React.Component { + constructor(props) { + super(props); + + this.setupInitialState = this.setupInitialState.bind(this); + this.setLanguage = this.setLanguage.bind(this); + this.changeLanguage = this.changeLanguage.bind(this); + this.submitUser = this.submitUser.bind(this); + this.state = this.setupInitialState(props); + } + setupInitialState(props) { + var user = props.user; + return { + languages: Utils.languages(), + locale: user.locale + }; + } + setLanguage(e) { + this.setState({locale: e.target.value}); + } + changeLanguage(e) { + e.preventDefault(); + + var user = this.props.user; + var locale = this.state.locale; + + user.locale = locale; + + this.submitUser(user); + } + submitUser(user) { + Client.updateUser(user, + () => { + window.location.reload(true); + }, + (err) => { + let serverError; + if (err.message) { + serverError = err.message; + } else { + serverError = err; + } + this.setState({serverError}); + } + ); + } + render() { + let serverError; + if (this.state.serverError) { + serverError = <label className='has-error'>{this.state.serverError}</label>; + } + + const options = []; + this.state.languages.forEach((lang) => { + options.push( + <option + key={lang.value} + value={lang.value} + > + {lang.name} + </option>); + }); + + return ( + <div key='changeLanguage'> + <br/> + <label className='control-label'>{'Change interface language'}</label> + <div className='padding-top'> + <select + ref='language' + className='form-control' + value={this.state.locale} + onChange={this.setLanguage} + > + {options} + </select> + {serverError} + <div className='padding-top'> + <a + className={'btn btn-sm btn-primary'} + href='#' + onClick={this.changeLanguage} + > + {'Set language'} + </a> + </div> + </div> + </div> + ); + } +} + +ManageLanguage.propTypes = { + user: React.PropTypes.object +};
\ No newline at end of file |