System Console: Email notification content setting (#7122)

* PLT-7195: Added new config option, new license feature, and config UI to system console. Still need to implement behaviour change in email batching code

* PLT-7195: Modified batch emails to respect email notification content type setting

* PLT-7195: Tweaking the colours a bit

* PLT-7195: Added support for email notification content type setting in immediate (non-batched) notification messages. Attempted to clean up the code somewhat. Unit tests coming in a future commit

* PLT-7195: Added unit tests for non-batched emails

* Checked license when applying email content settings

* Changed return type of getFormattedPostTime
Этот коммит содержится в:
Jonathan
2017-08-05 19:52:35 -04:00
коммит произвёл Saturnino Abril
родитель 9f3713aa98
Коммит 178ccd16cb
19 изменённых файлов: 802 добавлений и 139 удалений

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

@@ -11,11 +11,15 @@ import * as Utils from 'utils/utils.jsx';
import AdminSettings from './admin_settings.jsx';
import BooleanSetting from './boolean_setting.jsx';
import {ConnectionSecurityDropdownSettingEmail} from './connection_security_dropdown_setting.jsx';
import DropdownSetting from './dropdown_setting.jsx';
import EmailConnectionTest from './email_connection_test.jsx';
import {FormattedHTMLMessage, FormattedMessage} from 'react-intl';
import SettingsGroup from './settings_group.jsx';
import TextSetting from './text_setting.jsx';
const EMAIL_NOTIFICATION_CONTENTS_FULL = 'full';
const EMAIL_NOTIFICATION_CONTENTS_GENERIC = 'generic';
export default class EmailSettings extends AdminSettings {
constructor(props) {
super(props);
@@ -39,6 +43,7 @@ export default class EmailSettings extends AdminSettings {
config.EmailSettings.EnableEmailBatching = this.state.enableEmailBatching;
config.ServiceSettings.EnableSecurityFixAlert = this.state.enableSecurityFixAlert;
config.EmailSettings.SkipServerCertificateVerification = this.state.skipServerCertificateVerification;
config.EmailSettings.EmailNotificationContentsType = this.state.emailNotificationContentsType;
return config;
}
@@ -63,7 +68,8 @@ export default class EmailSettings extends AdminSettings {
connectionSecurity: config.EmailSettings.ConnectionSecurity,
enableEmailBatching: config.EmailSettings.EnableEmailBatching,
skipServerCertificateVerification: config.EmailSettings.SkipServerCertificateVerification,
enableSecurityFixAlert: config.ServiceSettings.EnableSecurityFixAlert
enableSecurityFixAlert: config.ServiceSettings.EnableSecurityFixAlert,
emailNotificationContentsType: config.EmailSettings.EmailNotificationContentsType
};
}
@@ -105,6 +111,48 @@ export default class EmailSettings extends AdminSettings {
);
}
let emailNotificationContentsTypeDropdown = null;
let emailNotificationContentsHelpText = null;
if (window.mm_license.EmailNotificationContents === 'true') {
const emailNotificationContentsTypes = [];
emailNotificationContentsTypes.push({value: EMAIL_NOTIFICATION_CONTENTS_FULL, text: Utils.localizeMessage('admin.email.notification.contents.full', 'Send full message contents')});
emailNotificationContentsTypes.push({value: EMAIL_NOTIFICATION_CONTENTS_GENERIC, text: Utils.localizeMessage('admin.email.notification.contents.generic', 'Send generic description with only sender name')});
if (this.state.emailNotificationContentsType === EMAIL_NOTIFICATION_CONTENTS_FULL) {
emailNotificationContentsHelpText = (
<FormattedHTMLMessage
key='admin.email.notification.contents.full.description'
id='admin.email.notification.contents.full.description'
defaultMessage='Sender name and channel are included in email notifications.</br>Typically used for compliance reasons if Mattermost contains confidential information and policy dictates it cannot be stored in email.'
/>
);
} else if (this.state.emailNotificationContentsType === EMAIL_NOTIFICATION_CONTENTS_GENERIC) {
emailNotificationContentsHelpText = (
<FormattedHTMLMessage
key='admin.email.notification.contents.generic.description'
id='admin.email.notification.contents.generic.description'
defaultMessage='Only the name of the person who sent the message, with no information about channel name or message contents are included in email notifications.</br>Typically used for compliance reasons if Mattermost contains confidential information and policy dictates it cannot be stored in email.'
/>
);
}
emailNotificationContentsTypeDropdown = (
<DropdownSetting
id='emailNotificationContentsType'
values={emailNotificationContentsTypes}
label={
<FormattedMessage
id='admin.email.notification.contents.title'
defaultMessage='Email Notification Contents: '
/>
}
value={this.state.emailNotificationContentsType}
onChange={this.handleChange}
helpText={emailNotificationContentsHelpText}
/>
);
}
return (
<SettingsGroup>
<BooleanSetting
@@ -144,6 +192,7 @@ export default class EmailSettings extends AdminSettings {
onChange={this.handleChange}
disabled={!this.state.sendEmailNotifications || this.props.config.ClusterSettings.Enable || !this.props.config.ServiceSettings.SiteURL}
/>
{emailNotificationContentsTypeDropdown}
<TextSetting
id='feedbackName'
label={