diff --git a/mailpoet/lib/EmailEditor/Engine/Renderer/Preprocessors/TypographyPreprocessor.php b/mailpoet/lib/EmailEditor/Engine/Renderer/Preprocessors/TypographyPreprocessor.php index ddbc221599..05cadfe88d 100644 --- a/mailpoet/lib/EmailEditor/Engine/Renderer/Preprocessors/TypographyPreprocessor.php +++ b/mailpoet/lib/EmailEditor/Engine/Renderer/Preprocessors/TypographyPreprocessor.php @@ -69,12 +69,11 @@ class TypographyPreprocessor implements Preprocessor { private function setDefaultsFromTheme(array $block): array { $themeData = $this->settingsController->getTheme()->get_data(); - $contentStyles = $this->settingsController->getEmailContentStyles(); if (!($block['email_attrs']['color'] ?? '')) { $block['email_attrs']['color'] = $themeData['styles']['color']['text'] ?? null; } if (!($block['email_attrs']['font-size'] ?? '')) { - $block['email_attrs']['font-size'] = $contentStyles['typography']['fontSize']; + $block['email_attrs']['font-size'] = $themeData['styles']['typography']['fontSize']; } return $block; } diff --git a/mailpoet/lib/EmailEditor/Engine/SettingsController.php b/mailpoet/lib/EmailEditor/Engine/SettingsController.php index 6fa125d3df..7432130dc5 100644 --- a/mailpoet/lib/EmailEditor/Engine/SettingsController.php +++ b/mailpoet/lib/EmailEditor/Engine/SettingsController.php @@ -63,10 +63,6 @@ class SettingsController { * @var array */ const DEFAULT_EMAIL_CONTENT_STYLES = [ - 'typography' => [ - 'fontFamily' => "Arial, 'Helvetica Neue', Helvetica, sans-serif", - 'fontSize' => '16px', - ], 'h1' => [ 'typography' => [ 'fontSize' => '32px', diff --git a/mailpoet/lib/EmailEditor/Engine/theme.json b/mailpoet/lib/EmailEditor/Engine/theme.json index ca6dc02cc2..c00de3375b 100644 --- a/mailpoet/lib/EmailEditor/Engine/theme.json +++ b/mailpoet/lib/EmailEditor/Engine/theme.json @@ -138,6 +138,10 @@ "color": { "background": "#ffffff", "text": "#000000" + }, + "typography": { + "fontFamily": "Arial, 'Helvetica Neue', Helvetica, sans-serif", + "fontSize": "16px" } } } diff --git a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Heading.php b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Heading.php index b9c704a614..6f4b146545 100644 --- a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Heading.php +++ b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Heading.php @@ -17,7 +17,7 @@ class Heading implements BlockRenderer { * Based on MJML */ private function getBlockWrapper(array $parsedBlock, SettingsController $settingsController): string { - $contentStyles = $settingsController->getEmailContentStyles(); + $themeData = $settingsController->getTheme()->get_data(); $availableStylesheets = $settingsController->getAvailableStylesheets(); // Styles for padding need to be set on the wrapping table cell due to support in Outlook @@ -40,7 +40,7 @@ class Heading implements BlockRenderer { } if (!isset($styles['font-size'])) { - $styles['font-size'] = $contentStyles['typography']['fontSize']; + $styles['font-size'] = $themeData['styles']['typography']['fontSize']; } $styles = array_merge($styles, $this->fetchStylesFromBlockAttrs($availableStylesheets, $parsedBlock['attrs'])); diff --git a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Image.php b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Image.php index 0511706508..9178dc903b 100644 --- a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Image.php +++ b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Image.php @@ -77,19 +77,17 @@ class Image implements BlockRenderer { /** * This method configure the font size of the caption because it's set to 0 for the parent element to avoid unexpected white spaces + * We try to use font-size passed down from the parent element $parsedBlock['email_attrs']['font-size'], but if it's not set, we use the default font-size from the email theme. */ private function getCaptionStyles(SettingsController $settingsController, array $parsedBlock): string { - $contentStyles = $settingsController->getEmailContentStyles(); + $themeData = $settingsController->getTheme()->get_data(); // If the alignment is set, we need to center the caption $styles = [ 'text-align' => isset($parsedBlock['attrs']['align']) ? 'center' : 'left', ]; - if (isset($contentStyles['typography']['fontSize'])) { - $styles['font-size'] = $contentStyles['typography']['fontSize']; - } - + $styles['font-size'] = $parsedBlock['email_attrs']['font-size'] ?? $themeData['styles']['typography']['fontSize']; return $settingsController->convertStylesToString($styles); } diff --git a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/ListBlock.php b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/ListBlock.php index a8959a40e4..1ae6d79662 100644 --- a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/ListBlock.php +++ b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/ListBlock.php @@ -18,10 +18,10 @@ class ListBlock implements BlockRenderer { // List block does not need width specification and it can cause issues for nested lists unset($styles['width'] ); - // Use font-size and font-family from Settings when those properties are not set - $contentStyles = $settingsController->getEmailContentStyles(); + // Use font-size from email theme when those properties are not set + $themeData = $settingsController->getTheme()->get_data(); if (!isset($styles['font-size'])) { - $styles['font-size'] = $contentStyles['typography']['fontSize']; + $styles['font-size'] = $themeData['styles']['typography']['fontSize']; } $html->set_attribute('style', $settingsController->convertStylesToString($styles)); diff --git a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Paragraph.php b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Paragraph.php index 54a5ed8ea3..a252666b14 100644 --- a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Paragraph.php +++ b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Paragraph.php @@ -16,7 +16,7 @@ class Paragraph implements BlockRenderer { * Based on MJML */ private function getBlockWrapper(array $parsedBlock, SettingsController $settingsController): string { - $contentStyles = $settingsController->getEmailContentStyles(); + $themeData = $settingsController->getTheme()->get_data(); $availableStylesheets = $settingsController->getAvailableStylesheets(); $align = $parsedBlock['attrs']['align'] ?? 'left'; @@ -39,7 +39,7 @@ class Paragraph implements BlockRenderer { } if (!isset($styles['font-size'])) { - $styles['font-size'] = $contentStyles['typography']['fontSize']; + $styles['font-size'] = $themeData['styles']['typography']['fontSize']; } $styles = array_merge($styles, $this->fetchStylesFromBlockAttrs($availableStylesheets, $parsedBlock['attrs'] ?? [])); diff --git a/mailpoet/tests/unit/EmailEditor/Engine/Renderer/Preprocessors/TypographyPreprocessorTest.php b/mailpoet/tests/unit/EmailEditor/Engine/Renderer/Preprocessors/TypographyPreprocessorTest.php index 3bdfd01e2c..5d0ea82b4a 100644 --- a/mailpoet/tests/unit/EmailEditor/Engine/Renderer/Preprocessors/TypographyPreprocessorTest.php +++ b/mailpoet/tests/unit/EmailEditor/Engine/Renderer/Preprocessors/TypographyPreprocessorTest.php @@ -19,6 +19,10 @@ class TypographyPreprocessorTest extends \MailPoetUnitTest { 'color' => [ 'text' => '#000000', ], + 'typography' => [ + 'fontSize' => '13px', + 'fontFamily' => 'Arial', + ], ], 'settings' => [ 'typography' => [ @@ -38,12 +42,6 @@ class TypographyPreprocessorTest extends \MailPoetUnitTest { ], ]); $settingsMock->method('getTheme')->willReturn($themeMock); - $settingsMock->method('getEmailContentStyles')->willReturn([ - 'typography' => [ - 'fontSize' => '13px', - 'fontFamily' => 'Arial', - ], - ]); $this->preprocessor = new TypographyPreprocessor($settingsMock); }