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

Plt 7 client user loc
Этот коммит содержится в:
Corey Hulen
2016-01-22 10:14:26 -06:00
родитель 48f1e8934e d1c0d13692
Коммит ea6774b2d9
1399 изменённых файлов: 1536141 добавлений и 1 удалений

Просмотреть файл

@@ -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>
);

Просмотреть файл

@@ -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,

Просмотреть файл

@@ -1340,3 +1340,18 @@ export function clearFileInput(elm) {
// Do nothing
}
}
export function languages() {
return (
[
{
value: 'en',
name: 'English'
},
{
value: 'es',
name: 'Español'
}
]
);
}

697
web/static/js/intl-1.0.0/Intl.complete.js Исполняемый файл

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

3256
web/static/js/intl-1.0.0/Intl.js Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

1
web/static/js/intl-1.0.0/Intl.js.map Исполняемый файл

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

1
web/static/js/intl-1.0.0/Intl.min.js поставляемый Исполняемый файл

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

696
web/static/js/intl-1.0.0/locale-data/complete.js Исполняемый файл

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

2205
web/static/js/intl-1.0.0/locale-data/json/af-NA.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2204
web/static/js/intl-1.0.0/locale-data/json/af-ZA.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2204
web/static/js/intl-1.0.0/locale-data/json/af.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2199
web/static/js/intl-1.0.0/locale-data/json/agq-CM.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2199
web/static/js/intl-1.0.0/locale-data/json/agq.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/ak-GH.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/ak.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2204
web/static/js/intl-1.0.0/locale-data/json/am-ET.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2204
web/static/js/intl-1.0.0/locale-data/json/am.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-001.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-AE.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-BH.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2240
web/static/js/intl-1.0.0/locale-data/json/ar-DJ.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2238
web/static/js/intl-1.0.0/locale-data/json/ar-DZ.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-EG.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2238
web/static/js/intl-1.0.0/locale-data/json/ar-EH.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2240
web/static/js/intl-1.0.0/locale-data/json/ar-ER.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-IL.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-IQ.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-JO.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-KM.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-KW.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2238
web/static/js/intl-1.0.0/locale-data/json/ar-LB.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2238
web/static/js/intl-1.0.0/locale-data/json/ar-LY.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2238
web/static/js/intl-1.0.0/locale-data/json/ar-MA.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-MR.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-OM.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-PS.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-QA.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-SA.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-SD.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2240
web/static/js/intl-1.0.0/locale-data/json/ar-SO.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-SS.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-SY.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-TD.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2238
web/static/js/intl-1.0.0/locale-data/json/ar-TN.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar-YE.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2239
web/static/js/intl-1.0.0/locale-data/json/ar.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2208
web/static/js/intl-1.0.0/locale-data/json/as-IN.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2208
web/static/js/intl-1.0.0/locale-data/json/as.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/asa-TZ.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/asa.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2200
web/static/js/intl-1.0.0/locale-data/json/ast-ES.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2200
web/static/js/intl-1.0.0/locale-data/json/ast.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2200
web/static/js/intl-1.0.0/locale-data/json/az-Cyrl-AZ.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2200
web/static/js/intl-1.0.0/locale-data/json/az-Cyrl.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2200
web/static/js/intl-1.0.0/locale-data/json/az-Latn-AZ.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2200
web/static/js/intl-1.0.0/locale-data/json/az-Latn.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2200
web/static/js/intl-1.0.0/locale-data/json/az.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2199
web/static/js/intl-1.0.0/locale-data/json/bas-CM.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2199
web/static/js/intl-1.0.0/locale-data/json/bas.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2204
web/static/js/intl-1.0.0/locale-data/json/be-BY.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2204
web/static/js/intl-1.0.0/locale-data/json/be.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/bem-ZM.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/bem.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/bez-TZ.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/bez.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2196
web/static/js/intl-1.0.0/locale-data/json/bg-BG.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2196
web/static/js/intl-1.0.0/locale-data/json/bg.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2205
web/static/js/intl-1.0.0/locale-data/json/bm-Latn-ML.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2205
web/static/js/intl-1.0.0/locale-data/json/bm-Latn.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2199
web/static/js/intl-1.0.0/locale-data/json/bm-Nkoo.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2205
web/static/js/intl-1.0.0/locale-data/json/bm.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2215
web/static/js/intl-1.0.0/locale-data/json/bn-BD.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2215
web/static/js/intl-1.0.0/locale-data/json/bn-IN.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2215
web/static/js/intl-1.0.0/locale-data/json/bn.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2207
web/static/js/intl-1.0.0/locale-data/json/bo-CN.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2207
web/static/js/intl-1.0.0/locale-data/json/bo-IN.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2207
web/static/js/intl-1.0.0/locale-data/json/bo.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2199
web/static/js/intl-1.0.0/locale-data/json/br-FR.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2199
web/static/js/intl-1.0.0/locale-data/json/br.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2211
web/static/js/intl-1.0.0/locale-data/json/brx-IN.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2211
web/static/js/intl-1.0.0/locale-data/json/brx.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2204
web/static/js/intl-1.0.0/locale-data/json/bs-Cyrl-BA.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2204
web/static/js/intl-1.0.0/locale-data/json/bs-Cyrl.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2196
web/static/js/intl-1.0.0/locale-data/json/bs-Latn-BA.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2196
web/static/js/intl-1.0.0/locale-data/json/bs-Latn.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2196
web/static/js/intl-1.0.0/locale-data/json/bs.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/ca-AD.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/ca-ES.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2204
web/static/js/intl-1.0.0/locale-data/json/ca-FR.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/ca-IT.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/ca.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/cgg-UG.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2203
web/static/js/intl-1.0.0/locale-data/json/cgg.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2200
web/static/js/intl-1.0.0/locale-data/json/chr-US.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2200
web/static/js/intl-1.0.0/locale-data/json/chr.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2207
web/static/js/intl-1.0.0/locale-data/json/cs-CZ.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

2207
web/static/js/intl-1.0.0/locale-data/json/cs.json Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше