From 96d3ae22f2eea732256dcf70f0e92716479ec7d8 Mon Sep 17 00:00:00 2001 From: David Sevilla Martin Date: Sun, 27 Oct 2019 12:40:15 -0400 Subject: [PATCH] Add required fields, incomplete configuration warning, and null transport --- .../core/js/src/admin/components/MailPage.js | 18 ++++++++--- .../Api/Serializer/MailDriverSerializer.php | 1 + framework/core/src/Mail/DriverInterface.php | 5 +++ framework/core/src/Mail/LogDriver.php | 5 +++ .../core/src/Mail/MailServiceProvider.php | 10 +++++- framework/core/src/Mail/MailgunDriver.php | 5 +++ framework/core/src/Mail/MandrillDriver.php | 5 +++ framework/core/src/Mail/NullDriver.php | 32 +++++++++++++++++++ framework/core/src/Mail/SendmailDriver.php | 5 +++ framework/core/src/Mail/SesDriver.php | 5 +++ framework/core/src/Mail/SmtpDriver.php | 13 ++++++-- 11 files changed, 97 insertions(+), 7 deletions(-) create mode 100644 framework/core/src/Mail/NullDriver.php diff --git a/framework/core/js/src/admin/components/MailPage.js b/framework/core/js/src/admin/components/MailPage.js index 6a7b41e62..dcbbb8f13 100644 --- a/framework/core/js/src/admin/components/MailPage.js +++ b/framework/core/js/src/admin/components/MailPage.js @@ -15,6 +15,7 @@ export default class MailPage extends Page { this.driverFields = {}; this.fields = ['mail_driver', 'mail_from']; + this.fieldsRequired = []; this.values = {}; const settings = app.data.settings; @@ -36,6 +37,8 @@ export default class MailPage extends Page { } } + this.fieldsRequired = response['data'].map(driver => driver['attributes']['fieldsRequired']).flat(); + this.loading = false; m.redraw(); }); @@ -52,6 +55,8 @@ export default class MailPage extends Page { ); } + const fields = this.driverFields[this.values.mail_driver()]; + return (
@@ -83,13 +88,18 @@ export default class MailPage extends Page { ] })} - {Object.keys(this.driverFields[this.values.mail_driver()]).length > 0 && FieldSet.component({ + {Object.keys(fields).length > 0 && FieldSet.component({ label: app.translator.trans(`core.admin.email.${this.values.mail_driver()}_heading`), className: 'MailPage-MailSettings', children: [ + fields.filter(field => this.fieldsRequired.includes(field) && !this.values[field]()).length > 0 && Alert.component({ + children: app.translator.trans('core.admin.email.incomplete_configuration_text'), + dismissible: false, + }), +
- {Object.keys(this.driverFields[this.values.mail_driver()]).map(field => [ - , + {Object.keys(fields).map(field => [ + , this.renderField(field), ])}
@@ -115,7 +125,7 @@ export default class MailPage extends Page { const prop = this.values[name]; if (typeof field === 'string') { - return ; + return ; } else { return