PLT-3647 Email Batching (#3718)
* 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
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
dde158c57f
Коммит
8203fd16ce
@@ -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.'
|
||||
|
||||
Ссылка в новой задаче
Block a user