Messages for SocketStore and small fixes
Этот коммит содержится в:
@@ -15,7 +15,9 @@
|
||||
"SessionLengthWebInDays": 30,
|
||||
"SessionLengthMobileInDays": 30,
|
||||
"SessionLengthSSOInDays": 30,
|
||||
"SessionCacheInMinutes": 10
|
||||
"SessionCacheInMinutes": 10,
|
||||
"WebsocketSecurePort": 443,
|
||||
"WebsocketPort": 80
|
||||
},
|
||||
"TeamSettings": {
|
||||
"SiteName": "Mattermost",
|
||||
@@ -109,5 +111,28 @@
|
||||
"AuthEndpoint": "",
|
||||
"TokenEndpoint": "",
|
||||
"UserApiEndpoint": ""
|
||||
},
|
||||
"GoogleSettings": {
|
||||
"Enable": false,
|
||||
"Secret": "",
|
||||
"Id": "",
|
||||
"Scope": "",
|
||||
"AuthEndpoint": "",
|
||||
"TokenEndpoint": "",
|
||||
"UserApiEndpoint": ""
|
||||
},
|
||||
"LdapSettings": {
|
||||
"Enable": false,
|
||||
"LdapServer": null,
|
||||
"LdapPort": 389,
|
||||
"BaseDN": null,
|
||||
"BindUsername": null,
|
||||
"BindPassword": null,
|
||||
"FirstNameAttribute": null,
|
||||
"LastNameAttribute": null,
|
||||
"EmailAttribute": null,
|
||||
"UsernameAttribute": null,
|
||||
"IdAttribute": null,
|
||||
"QueryTimeout": 60
|
||||
}
|
||||
}
|
||||
@@ -339,7 +339,10 @@ class EmailSettings extends React.Component {
|
||||
defaultChecked={this.props.config.EmailSettings.EnableSignInWithEmail}
|
||||
onChange={this.handleChange.bind(this, 'allowSignInWithEmail_true')}
|
||||
/>
|
||||
{'true'}
|
||||
<FormattedMessage
|
||||
id='admin.email.true'
|
||||
defaultMessage='true'
|
||||
/>
|
||||
</label>
|
||||
<label className='radio-inline'>
|
||||
<input
|
||||
@@ -349,7 +352,10 @@ class EmailSettings extends React.Component {
|
||||
defaultChecked={!this.props.config.EmailSettings.EnableSignInWithEmail}
|
||||
onChange={this.handleChange.bind(this, 'allowSignInWithEmail_false')}
|
||||
/>
|
||||
{'false'}
|
||||
<FormattedMessage
|
||||
id='admin.email.false'
|
||||
defaultMessage='false'
|
||||
/>
|
||||
</label>
|
||||
<p className='help-text'>
|
||||
<FormattedMessage
|
||||
@@ -380,7 +386,10 @@ class EmailSettings extends React.Component {
|
||||
defaultChecked={this.props.config.EmailSettings.EnableSignInWithUsername}
|
||||
onChange={this.handleChange.bind(this, 'allowSignInWithUsername_true')}
|
||||
/>
|
||||
{'true'}
|
||||
<FormattedMessage
|
||||
id='admin.email.true'
|
||||
defaultMessage='true'
|
||||
/>
|
||||
</label>
|
||||
<label className='radio-inline'>
|
||||
<input
|
||||
@@ -390,7 +399,10 @@ class EmailSettings extends React.Component {
|
||||
defaultChecked={!this.props.config.EmailSettings.EnableSignInWithUsername}
|
||||
onChange={this.handleChange.bind(this, 'allowSignInWithUsername_false')}
|
||||
/>
|
||||
{'false'}
|
||||
<FormattedMessage
|
||||
id='admin.email.false'
|
||||
defaultMessage='false'
|
||||
/>
|
||||
</label>
|
||||
<p className='help-text'>
|
||||
<FormattedMessage
|
||||
|
||||
@@ -15,7 +15,40 @@ import PreferenceStore from '../stores/preference_store.jsx';
|
||||
import * as Utils from '../utils/utils.jsx';
|
||||
import Constants from '../utils/constants.jsx';
|
||||
|
||||
export default class ChannelLoader extends React.Component {
|
||||
import {intlShape, injectIntl, defineMessages} from 'mm-intl';
|
||||
|
||||
const holders = defineMessages({
|
||||
socketError: {
|
||||
id: 'channel_loader.socketError',
|
||||
defaultMessage: 'Please check connection, Mattermost unreachable. If issue persists, ask administrator to check WebSocket port.'
|
||||
},
|
||||
someone: {
|
||||
id: 'channel_loader.someone',
|
||||
defaultMessage: 'Someone'
|
||||
},
|
||||
posted: {
|
||||
id: 'channel_loader.posted',
|
||||
defaultMessage: 'Posted'
|
||||
},
|
||||
uploadedImage: {
|
||||
id: 'channel_loader.uploadedImage',
|
||||
defaultMessage: ' uploaded an image'
|
||||
},
|
||||
uploadedFile: {
|
||||
id: 'channel_loader.uploadedFile',
|
||||
defaultMessage: ' uploaded a file'
|
||||
},
|
||||
something: {
|
||||
id: 'channel_loader.something',
|
||||
defaultMessage: ' did something new'
|
||||
},
|
||||
wrote: {
|
||||
id: 'channel_loader.wrote',
|
||||
defaultMessage: ' wrote: '
|
||||
}
|
||||
});
|
||||
|
||||
class ChannelLoader extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
@@ -23,6 +56,17 @@ export default class ChannelLoader extends React.Component {
|
||||
|
||||
this.onSocketChange = this.onSocketChange.bind(this);
|
||||
|
||||
const {formatMessage} = this.props.intl;
|
||||
SocketStore.setTranslations({
|
||||
socketError: formatMessage(holders.socketError),
|
||||
someone: formatMessage(holders.someone),
|
||||
posted: formatMessage(holders.posted),
|
||||
uploadedImage: formatMessage(holders.uploadedImage),
|
||||
uploadedFile: formatMessage(holders.uploadedFile),
|
||||
something: formatMessage(holders.something),
|
||||
wrote: formatMessage(holders.wrote)
|
||||
});
|
||||
|
||||
this.state = {};
|
||||
}
|
||||
componentDidMount() {
|
||||
@@ -126,3 +170,9 @@ export default class ChannelLoader extends React.Component {
|
||||
return <div/>;
|
||||
}
|
||||
}
|
||||
|
||||
ChannelLoader.propTypes = {
|
||||
intl: intlShape.isRequired
|
||||
};
|
||||
|
||||
export default injectIntl(ChannelLoader);
|
||||
@@ -89,9 +89,9 @@ export default class LoginUsername extends React.Component {
|
||||
}
|
||||
},
|
||||
(err) => {
|
||||
if (err.message === 'api.user.login.not_verified.app_error') {
|
||||
if (err.id === 'api.user.login.not_verified.app_error') {
|
||||
state.serverError = formatMessage(holders.verifyEmailError);
|
||||
} else if (err.message === 'store.sql_user.get_by_username.app_error') {
|
||||
} else if (err.id === 'store.sql_user.get_by_username.app_error') {
|
||||
state.serverError = formatMessage(holders.userNotFoundError);
|
||||
} else {
|
||||
state.serverError = err.message;
|
||||
|
||||
@@ -86,7 +86,7 @@ class SocketStoreClass extends EventEmitter {
|
||||
|
||||
this.failCount = this.failCount + 1;
|
||||
|
||||
ErrorStore.storeLastError({connErrorCount: this.failCount, message: 'Please check connection, Mattermost unreachable. If issue persists, ask administrator to check WebSocket port.'});
|
||||
ErrorStore.storeLastError({connErrorCount: this.failCount, message: this.translations.socketError});
|
||||
ErrorStore.emitChange();
|
||||
};
|
||||
|
||||
@@ -109,7 +109,7 @@ class SocketStoreClass extends EventEmitter {
|
||||
handleMessage(msg) {
|
||||
switch (msg.action) {
|
||||
case SocketEvents.POSTED:
|
||||
handleNewPostEvent(msg);
|
||||
handleNewPostEvent(msg, this.translations);
|
||||
break;
|
||||
|
||||
case SocketEvents.POST_EDITED:
|
||||
@@ -151,9 +151,12 @@ class SocketStoreClass extends EventEmitter {
|
||||
this.initialize();
|
||||
}
|
||||
}
|
||||
setTranslations(messages) {
|
||||
this.translations = messages;
|
||||
}
|
||||
}
|
||||
|
||||
function handleNewPostEvent(msg) {
|
||||
function handleNewPostEvent(msg, translations) {
|
||||
// Store post
|
||||
const post = JSON.parse(msg.props.post);
|
||||
EventHelpers.emitPostRecievedEvent(post);
|
||||
@@ -192,14 +195,14 @@ function handleNewPostEvent(msg) {
|
||||
return;
|
||||
}
|
||||
|
||||
let username = 'Someone';
|
||||
let username = translations.someone;
|
||||
if (post.props.override_username && global.window.mm_config.EnablePostUsernameOverride === 'true') {
|
||||
username = post.props.override_username;
|
||||
} else if (UserStore.hasProfile(msg.user_id)) {
|
||||
username = UserStore.getProfile(msg.user_id).username;
|
||||
}
|
||||
|
||||
let title = 'Posted';
|
||||
let title = translations.posted;
|
||||
if (channel) {
|
||||
title = channel.display_name;
|
||||
}
|
||||
@@ -211,14 +214,14 @@ function handleNewPostEvent(msg) {
|
||||
|
||||
if (notifyText.length === 0) {
|
||||
if (msgProps.image) {
|
||||
Utils.notifyMe(title, username + ' uploaded an image', channel);
|
||||
Utils.notifyMe(title, username + translations.uploadedImage, channel);
|
||||
} else if (msgProps.otherFile) {
|
||||
Utils.notifyMe(title, username + ' uploaded a file', channel);
|
||||
Utils.notifyMe(title, username + translations.uploadedFile, channel);
|
||||
} else {
|
||||
Utils.notifyMe(title, username + ' did something new', channel);
|
||||
Utils.notifyMe(title, username + translations.something, channel);
|
||||
}
|
||||
} else {
|
||||
Utils.notifyMe(title, username + ' wrote: ' + notifyText, channel);
|
||||
Utils.notifyMe(title, username + translations.wrote + notifyText, channel);
|
||||
}
|
||||
if (!user.notify_props || user.notify_props.desktop_sound === 'true') {
|
||||
Utils.ding();
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
// GENERATED FILE
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports["default"] = [{ "locale": "en", "pluralRuleFunction": function pluralRuleFunction(n, ord) {
|
||||
var s = String(n).split("."),
|
||||
v0 = !s[1],
|
||||
t0 = Number(s[0]) == n,
|
||||
n10 = t0 && s[0].slice(-1),
|
||||
n100 = t0 && s[0].slice(-2);if (ord) return n10 == 1 && n100 != 11 ? "one" : n10 == 2 && n100 != 12 ? "two" : n10 == 3 && n100 != 13 ? "few" : "other";return n == 1 && v0 ? "one" : "other";
|
||||
}, "fields": { "year": { "displayName": "Year", "relative": { "0": "this year", "1": "next year", "-1": "last year" }, "relativeTime": { "future": { "one": "in {0} year", "other": "in {0} years" }, "past": { "one": "{0} year ago", "other": "{0} years ago" } } }, "month": { "displayName": "Month", "relative": { "0": "this month", "1": "next month", "-1": "last month" }, "relativeTime": { "future": { "one": "in {0} month", "other": "in {0} months" }, "past": { "one": "{0} month ago", "other": "{0} months ago" } } }, "day": { "displayName": "Day", "relative": { "0": "today", "1": "tomorrow", "-1": "yesterday" }, "relativeTime": { "future": { "one": "in {0} day", "other": "in {0} days" }, "past": { "one": "{0} day ago", "other": "{0} days ago" } } }, "hour": { "displayName": "Hour", "relativeTime": { "future": { "one": "in {0} hour", "other": "in {0} hours" }, "past": { "one": "{0} hour ago", "other": "{0} hours ago" } } }, "minute": { "displayName": "Minute", "relativeTime": { "future": { "one": "in {0} minute", "other": "in {0} minutes" }, "past": { "one": "{0} minute ago", "other": "{0} minutes ago" } } }, "second": { "displayName": "Second", "relative": { "0": "now" }, "relativeTime": { "future": { "one": "in {0} second", "other": "in {0} seconds" }, "past": { "one": "{0} second ago", "other": "{0} seconds ago" } } } } }, { "locale": "en-001", "parentLocale": "en" }, { "locale": "en-150", "parentLocale": "en-GB" }, { "locale": "en-GB", "parentLocale": "en-001" }, { "locale": "en-AG", "parentLocale": "en-001" }, { "locale": "en-AI", "parentLocale": "en-001" }, { "locale": "en-AS", "parentLocale": "en" }, { "locale": "en-AU", "parentLocale": "en-GB", "fields": { "year": { "displayName": "Year", "relative": { "0": "This year", "1": "Next year", "-1": "Last year" }, "relativeTime": { "future": { "one": "in {0} year", "other": "in {0} years" }, "past": { "one": "{0} year ago", "other": "{0} years ago" } } }, "month": { "displayName": "Month", "relative": { "0": "This month", "1": "Next month", "-1": "Last month" }, "relativeTime": { "future": { "one": "in {0} month", "other": "in {0} months" }, "past": { "one": "{0} month ago", "other": "{0} months ago" } } }, "day": { "displayName": "Day", "relative": { "0": "today", "1": "tomorrow", "-1": "yesterday" }, "relativeTime": { "future": { "one": "in {0} day", "other": "in {0} days" }, "past": { "one": "{0} day ago", "other": "{0} days ago" } } }, "hour": { "displayName": "Hour", "relativeTime": { "future": { "one": "in {0} hour", "other": "in {0} hours" }, "past": { "one": "{0} hour ago", "other": "{0} hours ago" } } }, "minute": { "displayName": "Minute", "relativeTime": { "future": { "one": "in {0} minute", "other": "in {0} minutes" }, "past": { "one": "{0} minute ago", "other": "{0} minutes ago" } } }, "second": { "displayName": "Second", "relative": { "0": "now" }, "relativeTime": { "future": { "one": "in {0} second", "other": "in {0} seconds" }, "past": { "one": "{0} second ago", "other": "{0} seconds ago" } } } } }, { "locale": "en-BB", "parentLocale": "en-001" }, { "locale": "en-BE", "parentLocale": "en-GB" }, { "locale": "en-BM", "parentLocale": "en-001" }, { "locale": "en-BS", "parentLocale": "en-001" }, { "locale": "en-BW", "parentLocale": "en-001" }, { "locale": "en-BZ", "parentLocale": "en-001" }, { "locale": "en-CA", "parentLocale": "en" }, { "locale": "en-CC", "parentLocale": "en-001" }, { "locale": "en-CK", "parentLocale": "en-001" }, { "locale": "en-CM", "parentLocale": "en-001" }, { "locale": "en-CX", "parentLocale": "en-001" }, { "locale": "en-DG", "parentLocale": "en-GB" }, { "locale": "en-DM", "parentLocale": "en-001" }, { "locale": "en-Dsrt", "pluralRuleFunction": function pluralRuleFunction(n, ord) {
|
||||
if (ord) return "other";return "other";
|
||||
}, "fields": { "year": { "displayName": "Year", "relative": { "0": "this year", "1": "next year", "-1": "last year" }, "relativeTime": { "future": { "other": "+{0} y" }, "past": { "other": "-{0} y" } } }, "month": { "displayName": "Month", "relative": { "0": "this month", "1": "next month", "-1": "last month" }, "relativeTime": { "future": { "other": "+{0} m" }, "past": { "other": "-{0} m" } } }, "day": { "displayName": "Day", "relative": { "0": "today", "1": "tomorrow", "-1": "yesterday" }, "relativeTime": { "future": { "other": "+{0} d" }, "past": { "other": "-{0} d" } } }, "hour": { "displayName": "Hour", "relativeTime": { "future": { "other": "+{0} h" }, "past": { "other": "-{0} h" } } }, "minute": { "displayName": "Minute", "relativeTime": { "future": { "other": "+{0} min" }, "past": { "other": "-{0} min" } } }, "second": { "displayName": "Second", "relative": { "0": "now" }, "relativeTime": { "future": { "other": "+{0} s" }, "past": { "other": "-{0} s" } } } } }, { "locale": "en-ER", "parentLocale": "en-001" }, { "locale": "en-FJ", "parentLocale": "en-001" }, { "locale": "en-FK", "parentLocale": "en-GB" }, { "locale": "en-FM", "parentLocale": "en-001" }, { "locale": "en-GD", "parentLocale": "en-001" }, { "locale": "en-GG", "parentLocale": "en-GB" }, { "locale": "en-GH", "parentLocale": "en-001" }, { "locale": "en-GI", "parentLocale": "en-GB" }, { "locale": "en-GM", "parentLocale": "en-001" }, { "locale": "en-GU", "parentLocale": "en" }, { "locale": "en-GY", "parentLocale": "en-001" }, { "locale": "en-HK", "parentLocale": "en-GB" }, { "locale": "en-IE", "parentLocale": "en-GB" }, { "locale": "en-IM", "parentLocale": "en-GB" }, { "locale": "en-IN", "parentLocale": "en-GB" }, { "locale": "en-IO", "parentLocale": "en-GB" }, { "locale": "en-JE", "parentLocale": "en-GB" }, { "locale": "en-JM", "parentLocale": "en-001" }, { "locale": "en-KE", "parentLocale": "en-001" }, { "locale": "en-KI", "parentLocale": "en-001" }, { "locale": "en-KN", "parentLocale": "en-001" }, { "locale": "en-KY", "parentLocale": "en-001" }, { "locale": "en-LC", "parentLocale": "en-001" }, { "locale": "en-LR", "parentLocale": "en-001" }, { "locale": "en-LS", "parentLocale": "en-001" }, { "locale": "en-MG", "parentLocale": "en-001" }, { "locale": "en-MH", "parentLocale": "en" }, { "locale": "en-MO", "parentLocale": "en-GB" }, { "locale": "en-MP", "parentLocale": "en" }, { "locale": "en-MS", "parentLocale": "en-001" }, { "locale": "en-MT", "parentLocale": "en-GB" }, { "locale": "en-MU", "parentLocale": "en-001" }, { "locale": "en-MW", "parentLocale": "en-001" }, { "locale": "en-MY", "parentLocale": "en-001" }, { "locale": "en-NA", "parentLocale": "en-001" }, { "locale": "en-NF", "parentLocale": "en-001" }, { "locale": "en-NG", "parentLocale": "en-001" }, { "locale": "en-NR", "parentLocale": "en-001" }, { "locale": "en-NU", "parentLocale": "en-001" }, { "locale": "en-NZ", "parentLocale": "en-GB" }, { "locale": "en-PG", "parentLocale": "en-001" }, { "locale": "en-PH", "parentLocale": "en-001" }, { "locale": "en-PK", "parentLocale": "en-GB" }, { "locale": "en-PN", "parentLocale": "en-001" }, { "locale": "en-PR", "parentLocale": "en" }, { "locale": "en-PW", "parentLocale": "en-001" }, { "locale": "en-RW", "parentLocale": "en-001" }, { "locale": "en-SB", "parentLocale": "en-001" }, { "locale": "en-SC", "parentLocale": "en-001" }, { "locale": "en-SD", "parentLocale": "en-001" }, { "locale": "en-SG", "parentLocale": "en-GB" }, { "locale": "en-SH", "parentLocale": "en-GB" }, { "locale": "en-SL", "parentLocale": "en-001" }, { "locale": "en-SS", "parentLocale": "en-001" }, { "locale": "en-SX", "parentLocale": "en-001" }, { "locale": "en-SZ", "parentLocale": "en-001" }, { "locale": "en-TC", "parentLocale": "en-001" }, { "locale": "en-TK", "parentLocale": "en-001" }, { "locale": "en-TO", "parentLocale": "en-001" }, { "locale": "en-TT", "parentLocale": "en-001" }, { "locale": "en-TV", "parentLocale": "en-001" }, { "locale": "en-TZ", "parentLocale": "en-001" }, { "locale": "en-UG", "parentLocale": "en-001" }, { "locale": "en-UM", "parentLocale": "en" }, { "locale": "en-US", "parentLocale": "en" }, { "locale": "en-US-POSIX", "parentLocale": "en-US" }, { "locale": "en-VC", "parentLocale": "en-001" }, { "locale": "en-VG", "parentLocale": "en-GB" }, { "locale": "en-VI", "parentLocale": "en" }, { "locale": "en-VU", "parentLocale": "en-001" }, { "locale": "en-WS", "parentLocale": "en-001" }, { "locale": "en-ZA", "parentLocale": "en-001" }, { "locale": "en-ZM", "parentLocale": "en-001" }, { "locale": "en-ZW", "parentLocale": "en-001" }];
|
||||
module.exports = exports["default"];
|
||||
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
@@ -517,6 +517,13 @@
|
||||
"channel_info.close": "Close",
|
||||
"channel_invite.addNewMembers": "Add New Members to ",
|
||||
"channel_invite.close": "Close",
|
||||
"channel_loader.socketError": "Please check connection, Mattermost unreachable. If issue persists, ask administrator to check WebSocket port.",
|
||||
"channel_loader.someone": "Someone",
|
||||
"channel_loader.posted": "Posted",
|
||||
"channel_loader.uploadedImage": " uploaded an image",
|
||||
"channel_loader.uploadedFile": " uploaded a file",
|
||||
"channel_loader.something": " did something new",
|
||||
"channel_loader.wrote": " wrote: ",
|
||||
"channel_memebers_modal.members": " Members",
|
||||
"channel_members_modal.addNew": " Add New Members",
|
||||
"channel_members_modal.close": "Close",
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
"admin.email.allowEmailSignInDescription": "Cuando es verdadero, Mattermost permite a los usuarios iniciar sesión utilizando el correo electrónico y contraseña.",
|
||||
"admin.email.allowEmailSignInTitle": "Permitir inicio de sesión con Correo electrónico: ",
|
||||
"admin.email.allowSignupDescription": "Cuando está en verdadero, Mattermost permite la creación de equipos y cuentas utilizando el correo electrónico y contraseña. Este valor debe estar en falso sólo cuando quieres limitar el inicio de sesión a través de servicios tipo OAuth o LDAP.",
|
||||
"admin.email.allowSignupTitle": "Permitir inicio de sesión con correo:",
|
||||
"admin.email.allowSignupTitle": "Permitir registro con correo electrónico:",
|
||||
"admin.email.allowUsernameSignInDescription": "Cuando es verdadero, Mattermost permite a los usuarios iniciar sesión con el nombre de usuario y contraseña. Esta opción normalmente se utiliza cuando la verificación de correo electrónico está deshabilitada.",
|
||||
"admin.email.allowUsernameSignInTitle": "Permitir inicio de sesión con Nombre de usuario: ",
|
||||
"admin.email.connectionSecurityNone": "Ninguno",
|
||||
@@ -514,6 +514,13 @@
|
||||
"channel_info.url": "URL del Canal:",
|
||||
"channel_invite.addNewMembers": "Agregar nuevos Miembros a ",
|
||||
"channel_invite.close": "Cerrar",
|
||||
"channel_loader.posted": "Publicó",
|
||||
"channel_loader.socketError": "Mattermost está al alcance. Por favor revise su conexión. Si el problema persiste, solicite a un administrador que revise el puerto del WebSocket.",
|
||||
"channel_loader.someone": "Alguien",
|
||||
"channel_loader.something": " hizo algo nuevo",
|
||||
"channel_loader.uploadedFile": " subió un archivo",
|
||||
"channel_loader.uploadedImage": " subió una imagen",
|
||||
"channel_loader.wrote": " escribió: ",
|
||||
"channel_members_modal.addNew": " Agregar nuevos Miembros",
|
||||
"channel_members_modal.close": "Cerrar",
|
||||
"channel_memebers_modal.members": " Miembros",
|
||||
|
||||
Ссылка в новой задаче
Block a user