From 75f5ab637d2dc3f83d4996877974c0f0535d42ef Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Thu, 20 Aug 2020 17:14:43 +0200 Subject: [PATCH] Added minor member newsletter customisations via config no issue - adds a `members:emailTemplate` config object - `showSiteHeader` - defaults to `true`, shows the site title and icon in member emails - `showPoweredBy` - defaults to `false`, adds a "Publish with Ghost" button to member email footer - updates member newsletter email template with hideable site header and "powered by" badge --- .../services/mega/post-email-serializer.js | 4 ++- core/server/services/mega/template.js | 30 ++++++++++++++++++- core/shared/config/defaults.json | 6 +++- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/core/server/services/mega/post-email-serializer.js b/core/server/services/mega/post-email-serializer.js index c0a2414814..a47e85cb7b 100644 --- a/core/server/services/mega/post-email-serializer.js +++ b/core/server/services/mega/post-email-serializer.js @@ -1,5 +1,6 @@ const juice = require('juice'); const template = require('./template'); +const config = require('../../../shared/config'); const settingsCache = require('../../services/settings/cache'); const urlUtils = require('../../../shared/url-utils'); const moment = require('moment-timezone'); @@ -126,7 +127,8 @@ const serialize = async (postModel, options = {isBrowserPreview: false}) => { uppercaseHeadings: false }); - let htmlTemplate = template({post, site: getSite()}); + const templateConfig = config.get('members:emailTemplate'); + let htmlTemplate = template({post, site: getSite(), templateConfig}); if (options.isBrowserPreview) { const previewUnsubscribeUrl = createUnsubscribeUrl(); htmlTemplate = htmlTemplate.replace('%recipient.unsubscribe_url%', previewUnsubscribeUrl); diff --git a/core/server/services/mega/template.js b/core/server/services/mega/template.js index a99a515dcc..141ab3426c 100644 --- a/core/server/services/mega/template.js +++ b/core/server/services/mega/template.js @@ -1,5 +1,5 @@ /* eslint indent: warn, no-irregular-whitespace: warn */ -module.exports = ({post, site}) => { +module.exports = ({post, site, templateConfig}) => { const date = new Date(); return ` @@ -819,6 +819,22 @@ figure blockquote p { border-color: #34495e !important; } } + + +${ templateConfig.showPoweredBy ? ` +.footer-powered { + text-align: center; + padding-bottom: 40px; +} + +.gh-powered { + width: 142px; + height: 30px; +} +` : ''} + +/* ----- ENDIF THE BROWSER ----- */ + @@ -846,6 +862,9 @@ figure blockquote p { + + + ${ templateConfig.showSiteHeader ? ` + ` : ''} + + @@ -901,6 +923,12 @@ figure blockquote p { + + ${ templateConfig.showPoweredBy ? ` + + + + ` : '' }
@@ -860,6 +879,9 @@ figure blockquote p {
${post.title}
diff --git a/core/shared/config/defaults.json b/core/shared/config/defaults.json index 133c571bc0..96a8ca26ff 100644 --- a/core/shared/config/defaults.json +++ b/core/shared/config/defaults.json @@ -30,7 +30,11 @@ }, "members": { "contentApiAccess": [], - "paymentProcessors": [] + "paymentProcessors": [], + "emailTemplate": { + "showSiteHeader": true, + "showPoweredBy": false + } }, "logging": { "level": "info",