Merge pull request #1955 from mattermost/PLT-7-client-user-loc

Plt 7 client user loc
This commit is contained in:
Corey Hulen
2016-01-22 10:14:26 -06:00
1399 changed files with 1536141 additions and 1 deletions
+3 -1
View File
@@ -118,7 +118,8 @@ package:
mkdir -p $(DIST_PATH)/web/static/js
cp -L web/static/js/*.min.js $(DIST_PATH)/web/static/js/
cp -L web/static/js/*.min.js.map $(DIST_PATH)/web/static/js/
cp -RL web/static/js/react-intl-2.0.0-beta-2 $(DIST_PATH)/web/static/js/
cp -RL web/static/js/intl-1.0.0 $(DIST_PATH)/web/static/js/
cp -RL web/static/js/react-intl-2.0.0-beta-2 $(DIST_PATH)/web/static/js/
cp -RL web/static/i18n $(DIST_PATH)/web/static
cp -RL web/static/config $(DIST_PATH)/web/static
cp -RL web/static/css $(DIST_PATH)/web/static
@@ -141,6 +142,7 @@ package:
sed -i'.bak' 's|react-0.14.3.js|react-0.14.3.min.js|g' $(DIST_PATH)/web/templates/head.html
sed -i'.bak' 's|react-dom-0.14.3.js|react-dom-0.14.3.min.js|g' $(DIST_PATH)/web/templates/head.html
sed -i'.bak' 's|Intl.js|Intl.min.js|g' $(DIST_PATH)/web/templates/head.html
sed -i'.bak' 's|react-intl.js|react-intl.min.js|g' $(DIST_PATH)/web/templates/head.html
sed -i'.bak' 's|jquery-2.1.4.js|jquery-2.1.4.min.js|g' $(DIST_PATH)/web/templates/head.html
sed -i'.bak' 's|bootstrap-3.3.5.js|bootstrap-3.3.5.min.js|g' $(DIST_PATH)/web/templates/head.html
@@ -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
};
@@ -5,7 +5,9 @@ import {savePreferences} from '../../utils/client.jsx';
import SettingItemMin from '../setting_item_min.jsx';
import SettingItemMax from '../setting_item_max.jsx';
import Constants from '../../utils/constants.jsx';
const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES;
import PreferenceStore from '../../stores/preference_store.jsx';
import ManageLanguages from './manage_languages.jsx';
import * as Utils from '../../utils/utils.jsx';
function getDisplayStateFromStores() {
@@ -78,6 +80,7 @@ export default class UserSettingsDisplay extends React.Component {
let clockSection;
let nameFormatSection;
let fontSection;
let languagesSection;
if (this.props.activeSection === 'clock') {
const clockFormat = [false, false];
@@ -292,6 +295,48 @@ export default class UserSettingsDisplay extends React.Component {
);
}
if (Utils.isFeatureEnabled(PreReleaseFeatures.LOC_PREVIEW)) {
if (this.props.activeSection === 'languages') {
var inputs = [];
inputs.push(
<ManageLanguages
user={this.props.user}
key='languages-ui'
/>
);
languagesSection = (
<SettingItemMax
title={'Language'}
width='medium'
inputs={inputs}
updateSection={(e) => {
this.updateSection('');
e.preventDefault();
}}
/>
);
} else {
var locale = 'English';
Utils.languages().forEach((l) => {
if (l.value === this.props.user.locale) {
locale = l.name;
}
});
languagesSection = (
<SettingItemMin
title={'Language'}
width='medium'
describe={locale}
updateSection={() => {
this.updateSection('languages');
}}
/>
);
}
}
return (
<div>
<div className='modal-header'>
@@ -324,6 +369,7 @@ export default class UserSettingsDisplay extends React.Component {
<div className='divider-dark'/>
{nameFormatSection}
<div className='divider-dark'/>
{languagesSection}
</div>
</div>
);
+4
View File
@@ -451,6 +451,10 @@ export default {
EMBED_PREVIEW: {
label: 'embed_preview',
description: 'Show preview snippet of links below message'
},
LOC_PREVIEW: {
label: 'loc_preview',
description: 'Show user language in display settings'
}
},
OVERLAY_TIME_DELAY: 400,
+15
View File
@@ -1340,3 +1340,18 @@ export function clearFileInput(elm) {
// Do nothing
}
}
export function languages() {
return (
[
{
value: 'en',
name: 'English'
},
{
value: 'es',
name: 'Español'
}
]
);
}
File diff suppressed because one or more lines are too long
+3256
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
+1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More