From 485a50794ec962107ac675f8e1fbf3bb4dcf714c Mon Sep 17 00:00:00 2001 From: Kevin Ansfield Date: Mon, 7 Jun 2021 10:00:10 +0100 Subject: [PATCH] Added extra newsletter settings refs https://github.com/TryGhost/Team/issues/755 Additional customisation settings for newsletter emails are being introduced. Defaults match the existing email design. - adds new settings - `newsletter_header_image` - stores URL from image upload - `newsletter_show_header_icon` - boolean toggle, default `true` - `newsletter_show_header_title` - boolean toggle, default `true` - `newsletter_show_feature_image` - boolean toggle, default `true` - `newsletter_title_alignment` - "left" or "center" selection, default "center" - `newsletter_title_font_category` - "serif" or "sans_serif" selection, default "sans_serif" (matches body font category selection) --- core/server/data/schema/default-settings.json | 74 +++++++++++++++++++ .../api/canary/admin/settings_spec.js | 30 ++++++++ test/regression/api/v2/admin/settings_spec.js | 8 +- test/regression/api/v3/admin/settings_spec.js | 6 ++ test/unit/data/exporter/index_spec.js | 2 +- test/unit/data/schema/integrity_spec.js | 2 +- 6 files changed, 119 insertions(+), 3 deletions(-) diff --git a/core/server/data/schema/default-settings.json b/core/server/data/schema/default-settings.json index df9cf8254f..16a49c5357 100644 --- a/core/server/data/schema/default-settings.json +++ b/core/server/data/schema/default-settings.json @@ -472,6 +472,80 @@ }, "type": "boolean" }, + "newsletter_header_image": { + "defaultValue": null, + "validations": { + "isLength": { + "max": 2000 + } + }, + "type": "string" + }, + "newsletter_show_header_icon": { + "defaultValue": "true", + "validations": { + "isEmpty": false, + "isIn": [ + [ + "true", + "false" + ] + ] + }, + "type": "boolean" + }, + "newsletter_show_header_title": { + "defaultValue": "true", + "validations": { + "isEmpty": false, + "isIn": [ + [ + "true", + "false" + ] + ] + }, + "type": "boolean" + }, + "newsletter_title_alignment": { + "defaultValue": "center", + "validations": { + "isEmpty": false, + "isIn": [ + [ + "center", + "left" + ] + ] + }, + "type": "string" + }, + "newsletter_title_font_category": { + "defaultValue": "sans_serif", + "validations": { + "isEmpty": false, + "isIn": [ + [ + "serif", + "sans_serif" + ] + ] + }, + "type": "string" + }, + "newsletter_show_feature_image": { + "defaultValue": "true", + "validations": { + "isEmpty": false, + "isIn": [ + [ + "true", + "false" + ] + ] + }, + "type": "boolean" + }, "newsletter_body_font_category": { "defaultValue": "sans_serif", "validations": { diff --git a/test/regression/api/canary/admin/settings_spec.js b/test/regression/api/canary/admin/settings_spec.js index 09a97fe9f4..cfe60dbf78 100644 --- a/test/regression/api/canary/admin/settings_spec.js +++ b/test/regression/api/canary/admin/settings_spec.js @@ -350,6 +350,36 @@ const defaultSettingsKeyTypes = [ type: 'newsletter', group: 'newsletter' }, + { + key: 'newsletter_header_image', + type: 'newsletter', + group: 'newsletter' + }, + { + key: 'newsletter_show_header_icon', + type: 'newsletter', + group: 'newsletter' + }, + { + key: 'newsletter_show_header_title', + type: 'newsletter', + group: 'newsletter' + }, + { + key: 'newsletter_title_alignment', + type: 'newsletter', + group: 'newsletter' + }, + { + key: 'newsletter_title_font_category', + type: 'newsletter', + group: 'newsletter' + }, + { + key: 'newsletter_show_feature_image', + type: 'newsletter', + group: 'newsletter' + }, { key: 'newsletter_body_font_category', type: 'newsletter', diff --git a/test/regression/api/v2/admin/settings_spec.js b/test/regression/api/v2/admin/settings_spec.js index 9c9319cf50..318e0e8e8f 100644 --- a/test/regression/api/v2/admin/settings_spec.js +++ b/test/regression/api/v2/admin/settings_spec.js @@ -72,8 +72,14 @@ const defaultSettingsKeyTypes = [ {key: 'default_locale', type: 'blog'}, {key: 'newsletter_show_badge', type: 'newsletter'}, {key: 'newsletter_show_header', type: 'newsletter'}, - {key: 'newsletter_footer_content', type: 'newsletter'}, + {key: 'newsletter_header_image', type: 'newsletter'}, + {key: 'newsletter_show_header_icon', type: 'newsletter'}, + {key: 'newsletter_show_header_title', type: 'newsletter'}, + {key: 'newsletter_title_alignment', type: 'newsletter'}, + {key: 'newsletter_title_font_category', type: 'newsletter'}, + {key: 'newsletter_show_feature_image', type: 'newsletter'}, {key: 'newsletter_body_font_category', type: 'newsletter'}, + {key: 'newsletter_footer_content', type: 'newsletter'}, {key: 'firstpromoter', type: 'firstpromoter'}, {key: 'firstpromoter_id', type: 'firstpromoter'}, {key: 'oauth_client_id', type: 'oauth'}, diff --git a/test/regression/api/v3/admin/settings_spec.js b/test/regression/api/v3/admin/settings_spec.js index 632a238a79..63d3ef9de7 100644 --- a/test/regression/api/v3/admin/settings_spec.js +++ b/test/regression/api/v3/admin/settings_spec.js @@ -76,6 +76,12 @@ const defaultSettingsKeyTypes = [ {key: 'accent_color', type: 'blog'}, {key: 'newsletter_show_badge', type: 'newsletter'}, {key: 'newsletter_show_header', type: 'newsletter'}, + {key: 'newsletter_header_image', type: 'newsletter'}, + {key: 'newsletter_show_header_icon', type: 'newsletter'}, + {key: 'newsletter_show_header_title', type: 'newsletter'}, + {key: 'newsletter_title_alignment', type: 'newsletter'}, + {key: 'newsletter_title_font_category', type: 'newsletter'}, + {key: 'newsletter_show_feature_image', type: 'newsletter'}, {key: 'newsletter_body_font_category', type: 'newsletter'}, {key: 'newsletter_footer_content', type: 'newsletter'}, {key: 'firstpromoter', type: 'firstpromoter'}, diff --git a/test/unit/data/exporter/index_spec.js b/test/unit/data/exporter/index_spec.js index 97bf69eca0..897915c8ef 100644 --- a/test/unit/data/exporter/index_spec.js +++ b/test/unit/data/exporter/index_spec.js @@ -191,7 +191,7 @@ describe('Exporter', function () { // NOTE: if default settings changed either modify the settings keys blocklist or increase allowedKeysLength // This is a reminder to think about the importer/exporter scenarios ;) - const allowedKeysLength = 77; + const allowedKeysLength = 83; totalKeysLength.should.eql(SETTING_KEYS_BLOCKLIST.length + allowedKeysLength); }); }); diff --git a/test/unit/data/schema/integrity_spec.js b/test/unit/data/schema/integrity_spec.js index 4311d8eab5..dde8e433f6 100644 --- a/test/unit/data/schema/integrity_spec.js +++ b/test/unit/data/schema/integrity_spec.js @@ -34,7 +34,7 @@ describe('DB version integrity', function () { // Only these variables should need updating const currentSchemaHash = '2099a4ba6b9462c5a0aa36a434139e8b'; const currentFixturesHash = '8671672598d2a62e53418c4b91aa79a3'; - const currentSettingsHash = '4f7fa90d4d545b9ec7eb0b86aa8f15ab'; + const currentSettingsHash = 'fec0d2f71557a9bd2ff5ff8b423e11be'; const currentRoutesHash = '3d180d52c663d173a6be791ef411ed01'; // If this test is failing, then it is likely a change has been made that requires a DB version bump,