diff --git a/mailpoet/lib/EmailEditor/Engine/Renderer/Layout/FlexLayoutRenderer.php b/mailpoet/lib/EmailEditor/Engine/Renderer/Layout/FlexLayoutRenderer.php index 681e3fa698..3b77117011 100644 --- a/mailpoet/lib/EmailEditor/Engine/Renderer/Layout/FlexLayoutRenderer.php +++ b/mailpoet/lib/EmailEditor/Engine/Renderer/Layout/FlexLayoutRenderer.php @@ -30,6 +30,8 @@ class FlexLayoutRenderer { $wpGeneratedStyles = wp_style_engine_get_styles($parsedBlock['attrs']['style'] ?? []); $styles = $wpGeneratedStyles['css'] ?? ''; + $marginTop = $parsedBlock['email_attrs']['margin-top'] ?? '0px'; + $styles .= 'margin-top: ' . $marginTop . ';'; $justify = esc_attr($parsedBlock['attrs']['layout']['justifyContent'] ?? 'left'); $styles .= 'text-align: ' . $justify; $outputHtml = str_replace('{style}', $styles, $outputHtml); diff --git a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Columns.php b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Columns.php index b834dca8c3..5f3f8bc59a 100644 --- a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Columns.php +++ b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Columns.php @@ -29,6 +29,7 @@ class Columns implements BlockRenderer { $paddingLeft = $parsedBlock['attrs']['style']['spacing']['padding']['left'] ?? '0px'; $paddingRight = $parsedBlock['attrs']['style']['spacing']['padding']['right'] ?? '0px'; $paddingTop = $parsedBlock['attrs']['style']['spacing']['padding']['top'] ?? '0px'; + $marginTop = $parsedBlock['email_attrs']['margin-top'] ?? '0px'; $align = $parsedBlock['attrs']['align'] ?? null; if ($align !== 'full') { @@ -41,8 +42,15 @@ class Columns implements BlockRenderer { return ' -
- +
+
diff --git a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Heading.php b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Heading.php index 57d5d19de0..e9133560bf 100644 --- a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Heading.php +++ b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Heading.php @@ -19,44 +19,45 @@ class Heading implements BlockRenderer { private function getBlockWrapper(array $parsedBlock, SettingsController $settingsController): string { $availableStylesheets = $settingsController->getAvailableStylesheets(); + $marginTop = $parsedBlock['email_attrs']['margin-top'] ?? '0px'; // Styles for padding need to be set on the wrapping table cell due to support in Outlook - $paddingBottom = $parsedBlock['attrs']['style']['spacing']['padding']['bottom'] ?? '0px'; - $paddingLeft = $parsedBlock['attrs']['style']['spacing']['padding']['left'] ?? '0px'; - $paddingRight = $parsedBlock['attrs']['style']['spacing']['padding']['right'] ?? '0px'; - $paddingTop = $parsedBlock['attrs']['style']['spacing']['padding']['top'] ?? '0px'; - $styles = [ 'background-color' => $parsedBlock['attrs']['style']['color']['background'] ?? 'transparent', 'min-width' => '100%', // prevent Gmail App from shrinking the table on mobile devices - 'padding-bottom' => $paddingBottom, - 'padding-left' => $paddingLeft, - 'padding-right' => $paddingRight, - 'padding-top' => $paddingTop, + 'padding-bottom' => $parsedBlock['attrs']['style']['spacing']['padding']['bottom'] ?? '0px', + 'padding-left' => $parsedBlock['attrs']['style']['spacing']['padding']['left'] ?? '0px', + 'padding-right' => $parsedBlock['attrs']['style']['spacing']['padding']['right'] ?? '0px', + 'padding-top' => $parsedBlock['attrs']['style']['spacing']['padding']['top'] ?? '0px', ]; foreach ($parsedBlock['email_attrs'] ?? [] as $property => $value) { if ($property === 'width') continue; // width is handled by the wrapping blocks (columns, column) + if ($property === 'margin-top') continue; // margin-top is set on the wrapping div co we need to avoid duplication $styles[$property] = $value; } $styles = array_merge($styles, $this->fetchStylesFromBlockAttrs($availableStylesheets, $parsedBlock['attrs'])); return ' - - - - -
- {heading_content} -
+ +
+ + + + +
+ {heading_content} +
+
+ '; } diff --git a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Image.php b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Image.php index 9178dc903b..ec6ac82893 100644 --- a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Image.php +++ b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Image.php @@ -112,6 +112,7 @@ class Image implements BlockRenderer { $styles['width'] = '100%'; $align = $parsedBlock['attrs']['align'] ?? 'left'; + $marginTop = $parsedBlock['email_attrs']['margin-top'] ?? '0px'; return ' - + diff --git a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/ListBlock.php b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/ListBlock.php index 1ae6d79662..72ffe8cfcf 100644 --- a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/ListBlock.php +++ b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/ListBlock.php @@ -28,7 +28,21 @@ class ListBlock implements BlockRenderer { $blockContent = $html->get_updated_html(); } + $wrapperStyle = $settingsController->convertStylesToString([ + 'margin-top' => $parsedBlock['email_attrs']['margin-top'] ?? '0px', + ]); + // \WP_HTML_Tag_Processor escapes the content, so we have to replace it back - return str_replace(''', "'", $blockContent); + $blockContent = str_replace(''', "'", $blockContent); + $blockContent = str_replace('{listContent}', $blockContent, $this->getMarkup()); + $blockContent = str_replace('{wrapperStyle}', $wrapperStyle, $blockContent); + return $blockContent; + } + + private function getMarkup(): string { + return ' +
+ {listContent} +
'; } } diff --git a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Paragraph.php b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Paragraph.php index 86a7f85793..e1a67fd5be 100644 --- a/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Paragraph.php +++ b/mailpoet/lib/EmailEditor/Integrations/Core/Renderer/Blocks/Paragraph.php @@ -20,22 +20,20 @@ class Paragraph implements BlockRenderer { $availableStylesheets = $settingsController->getAvailableStylesheets(); $align = $parsedBlock['attrs']['align'] ?? 'left'; - $paddingBottom = $parsedBlock['attrs']['style']['spacing']['padding']['bottom'] ?? '0px'; - $paddingLeft = $parsedBlock['attrs']['style']['spacing']['padding']['left'] ?? '0px'; - $paddingRight = $parsedBlock['attrs']['style']['spacing']['padding']['right'] ?? '0px'; - $paddingTop = $parsedBlock['attrs']['style']['spacing']['padding']['top'] ?? '0px'; + $marginTop = $parsedBlock['email_attrs']['margin-top'] ?? '0px'; $styles = [ 'background-color' => $parsedBlock['attrs']['style']['color']['background'] ?? 'transparent', 'text-align' => $align, - 'padding-bottom' => $paddingBottom, - 'padding-left' => $paddingLeft, - 'padding-right' => $paddingRight, - 'padding-top' => $paddingTop, + 'padding-bottom' => $parsedBlock['attrs']['style']['spacing']['padding']['bottom'] ?? '0px', + 'padding-left' => $parsedBlock['attrs']['style']['spacing']['padding']['left'] ?? '0px', + 'padding-right' => $parsedBlock['attrs']['style']['spacing']['padding']['right'] ?? '0px', + 'padding-top' => $parsedBlock['attrs']['style']['spacing']['padding']['top'] ?? '0px', ]; foreach ($parsedBlock['email_attrs'] ?? [] as $property => $value) { if ($property === 'width') continue; // width is handled by the wrapping blocks (columns, column) + if ($property === 'margin-top') continue; // margin-top is set on the wrapping div co we need to avoid duplication $styles[$property] = $value; } @@ -46,20 +44,17 @@ class Paragraph implements BlockRenderer { $styles = array_merge($styles, $this->fetchStylesFromBlockAttrs($availableStylesheets, $parsedBlock['attrs'] ?? [])); return ' -
{image_content}{image_content}
{caption_content}
- - - -
- {paragraph_content} -
+ +
+ + + + +
+ {paragraph_content} +
+
+ '; }