* PLT-3647 Added config settings for email batching

* PLT-3647 Refactored generation of email notification

* PLT-3647 Added serverside code for email batching

* PLT-3647 Updated settings UI to enable email batching

* PLT-3647 Removed debug code

* PLT-3647 Fixed 0-padding of minutes in batched notification

* PLT-3647 Updated clientside UI for when email batching is disabled

* Go fmt

* PLT-3647 Changed email batching to be disabled by default

* Updated batched email message

* Added email batching toggle to system console

* Changed Email Notifications > Immediate setting to a 30 second batch interval

* Go fmt

* Fixed link to Mattermost icon in batched email notification

* Updated users to use 30 second email batching by default

* Fully disabled email batching when clustering is enabled

* Fixed email batching setting in the system console

* Fixed casing of 'Send Email notifications' -> 'Send email notifications'

* Updating UI Improvements for email batching (#3736)

* Updated text for notification settings and SiteURL.

* Prevented enabling email batching when SiteURL isn't set in the system console

* Re-added a couple debug messages

* Added warning text when clustering is enabled
Этот коммит содержится в:
Harrison Healey
2016-08-16 14:41:47 -04:00
коммит произвёл Christopher Speller
родитель dde158c57f
Коммит 8203fd16ce
25 изменённых файлов: 1123 добавлений и 212 удалений

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

@@ -69,7 +69,7 @@ export default class ConfigurationSettings extends AdminSettings {
helpText={
<FormattedMessage
id='admin.service.siteURLDescription'
defaultMessage='The URL, including port number and protocol, from which users will access Mattermost. Leave blank to automatically configure based on incoming traffic.'
defaultMessage='The URL, including post number and protocol, that users will use to access Mattermost. Leave blank to automatically configure based on incoming traffic.'
/>
}
value={this.state.siteURL}

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

@@ -14,13 +14,13 @@ const CONNECTION_SECURITY_HELP_TEXT = (
>
<tbody>
<tr>
<td className='help-text'>
<td>
<FormattedMessage
id='admin.connectionSecurityNone'
defaultMessage='None'
/>
</td>
<td className='help-text'>
<td>
<FormattedMessage
id='admin.connectionSecurityNoneDescription'
defaultMessage='Mattermost will connect over an unsecure connection.'
@@ -28,13 +28,13 @@ const CONNECTION_SECURITY_HELP_TEXT = (
</td>
</tr>
<tr>
<td className='help-text'>
<td>
<FormattedMessage
id='admin.connectionSecurityTls'
defaultMessage='TLS'
/>
</td>
<td className='help-text'>
<td>
<FormattedMessage
id='admin.connectionSecurityTlsDescription'
defaultMessage='Encrypts the communication between Mattermost and your server.'
@@ -42,13 +42,13 @@ const CONNECTION_SECURITY_HELP_TEXT = (
</td>
</tr>
<tr>
<td className='help-text'>
<td>
<FormattedMessage
id='admin.connectionSecurityStart'
defaultMessage='STARTTLS'
/>
</td>
<td className='help-text'>
<td>
<FormattedMessage
id='admin.connectionSecurityStartDescription'
defaultMessage='Takes an existing insecure connection and attempts to upgrade it to a secure connection using TLS.'

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

@@ -32,6 +32,7 @@ export default class EmailSettings extends AdminSettings {
config.EmailSettings.SMTPServer = this.state.smtpServer;
config.EmailSettings.SMTPPort = this.state.smtpPort;
config.EmailSettings.ConnectionSecurity = this.state.connectionSecurity;
config.EmailSettings.EnableEmailBatching = this.state.enableEmailBatching;
config.ServiceSettings.EnableSecurityFixAlert = this.state.enableSecurityFixAlert;
return config;
@@ -48,6 +49,7 @@ export default class EmailSettings extends AdminSettings {
smtpServer: config.EmailSettings.SMTPServer,
smtpPort: config.EmailSettings.SMTPPort,
connectionSecurity: config.EmailSettings.ConnectionSecurity,
enableEmailBatching: config.EmailSettings.EnableEmailBatching,
enableSecurityFixAlert: config.ServiceSettings.EnableSecurityFixAlert
};
}
@@ -64,6 +66,34 @@ export default class EmailSettings extends AdminSettings {
}
renderSettings() {
let enableEmailBatchingDisabledText = null;
if (this.props.config.ClusterSettings.Enable) {
enableEmailBatchingDisabledText = (
<span
key='admin.email.enableEmailBatching.clusterEnabled'
className='help-text'
>
<FormattedHTMLMessage
id='admin.email.enableEmailBatching.clusterEnabled'
defaultMessage='Email batching cannot be enabled unless the SiteURL is configured in <b>Configuration > SiteURL</b>.'
/>
</span>
);
} else if (!this.props.config.ServiceSettings.SiteURL) {
enableEmailBatchingDisabledText = (
<span
key='admin.email.enableEmailBatching.siteURL'
className='help-text'
>
<FormattedHTMLMessage
id='admin.email.enableEmailBatching.siteURL'
defaultMessage='Email batching cannot be enabled unless the SiteURL is configured in <b>Configuration > SiteURL</b>.'
/>
</span>
);
}
return (
<SettingsGroup>
<BooleanSetting
@@ -83,6 +113,26 @@ export default class EmailSettings extends AdminSettings {
value={this.state.sendEmailNotifications}
onChange={this.handleChange}
/>
<BooleanSetting
id='enableEmailBatching'
label={
<FormattedMessage
id='admin.email.enableEmailBatchingTitle'
defaultMessage='Enable Email Batching: '
/>
}
helpText={[
<FormattedHTMLMessage
key='admin.email.enableEmailBatchingDesc'
id='admin.email.enableEmailBatchingDesc'
defaultMessage='When true, users can have email notifications for multiple direct messages and mentions combined into a single email, configurable in <b>Account Settings > Notifications</b>.'
/>,
enableEmailBatchingDisabledText
]}
value={this.state.enableEmailBatching && !this.props.config.ClusterSettings.Enable && this.props.config.ServiceSettings.SiteURL}
onChange={this.handleChange}
disabled={!this.state.sendEmailNotifications || this.props.config.ClusterSettings.Enable || !this.props.config.ServiceSettings.SiteURL}
/>
<TextSetting
id='feedbackName'
label={

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

@@ -204,7 +204,8 @@ export default class LogSettings extends AdminSettings {
>
<tbody>
<tr>
<td className='help-text'>{'%T'}</td><td className='help-text'>
<td>{'%T'}</td>
<td>
<FormattedMessage
id='admin.log.formatTime'
defaultMessage='Time (15:04:05 MST)'
@@ -212,7 +213,8 @@ export default class LogSettings extends AdminSettings {
</td>
</tr>
<tr>
<td className='help-text'>{'%D'}</td><td className='help-text'>
<td>{'%D'}</td>
<td>
<FormattedMessage
id='admin.log.formatDateLong'
defaultMessage='Date (2006/01/02)'
@@ -220,7 +222,8 @@ export default class LogSettings extends AdminSettings {
</td>
</tr>
<tr>
<td className='help-text'>{'%d'}</td><td className='help-text'>
<td>{'%d'}</td>
<td>
<FormattedMessage
id='admin.log.formatDateShort'
defaultMessage='Date (01/02/06)'
@@ -228,7 +231,8 @@ export default class LogSettings extends AdminSettings {
</td>
</tr>
<tr>
<td className='help-text'>{'%L'}</td><td className='help-text'>
<td>{'%L'}</td>
<td>
<FormattedMessage
id='admin.log.formatLevel'
defaultMessage='Level (DEBG, INFO, EROR)'
@@ -236,7 +240,8 @@ export default class LogSettings extends AdminSettings {
</td>
</tr>
<tr>
<td className='help-text'>{'%S'}</td><td className='help-text'>
<td>{'%S'}</td>
<td>
<FormattedMessage
id='admin.log.formatSource'
defaultMessage='Source'
@@ -244,7 +249,8 @@ export default class LogSettings extends AdminSettings {
</td>
</tr>
<tr>
<td className='help-text'>{'%M'}</td><td className='help-text'>
<td>{'%M'}</td>
<td>
<FormattedMessage
id='admin.log.formatMessage'
defaultMessage='Message'

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

@@ -15,13 +15,13 @@ const WEBSERVER_MODE_HELP_TEXT = (
>
<tbody>
<tr>
<td className='help-text'>
<td>
<FormattedMessage
id='admin.webserverModeGzip'
defaultMessage='gzip'
/>
</td>
<td className='help-text'>
<td>
<FormattedMessage
id='admin.webserverModeGzipDescription'
defaultMessage='The Mattermost server will serve static files compressed with gzip.'
@@ -29,13 +29,13 @@ const WEBSERVER_MODE_HELP_TEXT = (
</td>
</tr>
<tr>
<td className='help-text'>
<td>
<FormattedMessage
id='admin.webserverModeUncompressed'
defaultMessage='Uncompressed'
/>
</td>
<td className='help-text'>
<td>
<FormattedMessage
id='admin.webserverModeUncompressedDescription'
defaultMessage='The Mattermost server will serve static files uncompressed.'
@@ -43,13 +43,13 @@ const WEBSERVER_MODE_HELP_TEXT = (
</td>
</tr>
<tr>
<td className='help-text'>
<td>
<FormattedMessage
id='admin.webserverModeDisabled'
defaultMessage='Disabled'
/>
</td>
<td className='help-text'>
<td>
<FormattedMessage
id='admin.webserverModeDisabledDescription'
defaultMessage='The Mattermost server will not serve static files.'