PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.36.0
MailPoet – Newsletters, Email Marketing, and Automation v5.36.0
5.36.0 5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / vendor / woocommerce / email-editor / src / Engine / class-settings-controller.php
mailpoet / vendor / woocommerce / email-editor / src / Engine Last commit date
Logger 11 months ago Patterns 11 months ago PersonalizationTags 2 days ago Renderer 2 days ago Templates 4 months ago class-assets-manager.php 5 months ago class-dependency-check.php 11 months ago class-email-api-controller.php 6 months ago class-email-editor.php 2 days ago class-email-styles-schema.php 11 months ago class-personalizer.php 2 days ago class-send-preview-email.php 5 months ago class-settings-controller.php 3 months ago class-site-style-sync-controller.php 4 months ago class-theme-controller.php 3 months ago class-user-theme.php 11 months ago content-editor.css 2 weeks ago content-shared.css 11 months ago index.php 11 months ago theme.json 3 months ago
class-settings-controller.php
126 lines
1 <?php
2 declare(strict_types = 1);
3 namespace Automattic\WooCommerce\EmailEditor\Engine;
4 if (!defined('ABSPATH')) exit;
5 class Settings_Controller {
6 const DEFAULT_SETTINGS = array(
7 'enableCustomUnits' => array( 'px', '%' ),
8 );
9 private Theme_Controller $theme_controller;
10 private array $allowed_iframe_style_handles = array();
11 private array $iframe_assets = array();
12 public function __construct(
13 Theme_Controller $theme_controller
14 ) {
15 $this->theme_controller = $theme_controller;
16 }
17 public function get_settings(): array {
18 $this->init_iframe_assets();
19 $core_default_settings = \get_default_block_editor_settings();
20 $theme_settings = $this->theme_controller->get_settings();
21 $settings = array_merge( $core_default_settings, self::DEFAULT_SETTINGS );
22 // Assets for iframe editor (component styles, scripts, etc.).
23 $settings['__unstableResolvedAssets'] = $this->iframe_assets;
24 $settings['allowedIframeStyleHandles'] = $this->allowed_iframe_style_handles;
25 $editor_content_styles = file_get_contents( __DIR__ . '/content-editor.css' );
26 $shares_content_styles = file_get_contents( __DIR__ . '/content-shared.css' );
27 $settings['styles'] = array(
28 array( 'css' => $editor_content_styles ),
29 array( 'css' => $shares_content_styles ),
30 );
31 $settings['autosaveInterval'] = 60;
32 // Disable code editing in the email editor. We manipulate HTML in renderer so it doesn't make sense to have it enabled.
33 $settings['codeEditingEnabled'] = false;
34 $settings['__experimentalFeatures'] = $theme_settings;
35 // Controls which alignment options are available for blocks.
36 $settings['supportsLayout'] = true; // Allow using default layouts.
37 $settings['alignWide'] = true; // Enable wide and full alignment options.
38 $settings['__unstableIsBlockBasedTheme'] = false; // Setting to true disables wide and full alignments in flow layouts.
39 return $settings;
40 }
41 public function get_layout(): array {
42 $layout_settings = $this->theme_controller->get_layout_settings();
43 $layout = array(
44 'contentSize' => $layout_settings['contentSize'],
45 );
46 if ( isset( $layout_settings['wideSize'] ) ) {
47 $layout['wideSize'] = $layout_settings['wideSize'];
48 }
49 return $layout;
50 }
51 public function get_email_styles(): array {
52 $theme = $this->get_theme();
53 return $theme->get_data()['styles'];
54 }
55 public function get_layout_width_without_padding(): string {
56 $styles = $this->get_email_styles();
57 $layout = $this->get_layout();
58 $width = $this->parse_number_from_string_with_pixels( $layout['contentSize'] );
59 $width -= $this->parse_number_from_string_with_pixels( $styles['spacing']['padding']['left'] );
60 $width -= $this->parse_number_from_string_with_pixels( $styles['spacing']['padding']['right'] );
61 return "{$width}px";
62 }
63 public function parse_styles_to_array( string $styles ): array {
64 $styles = explode( ';', $styles );
65 $parsed_styles = array();
66 foreach ( $styles as $style ) {
67 $style = explode( ':', $style );
68 if ( count( $style ) === 2 ) {
69 $parsed_styles[ trim( $style[0] ) ] = trim( $style[1] );
70 }
71 }
72 return $parsed_styles;
73 }
74 public function parse_number_from_string_with_pixels( string $value ): float {
75 return (float) str_replace( 'px', '', $value );
76 }
77 public function get_theme(): \WP_Theme_JSON {
78 return $this->theme_controller->get_theme();
79 }
80 public function translate_slug_to_font_size( string $font_size ): string {
81 return $this->theme_controller->translate_slug_to_font_size( $font_size );
82 }
83 public function translate_slug_to_color( string $color_slug ): string {
84 return $this->theme_controller->translate_slug_to_color( $color_slug );
85 }
86 private function get_allowed_iframe_style_handles() {
87 // Core style handles.
88 $allowed_iframe_style_handles = array(
89 'wp-components-css',
90 'wp-reset-editor-styles-css',
91 'wp-block-library-css',
92 'wp-block-editor-content-css',
93 'wp-edit-blocks-css',
94 );
95 foreach ( \WP_Block_Type_Registry::get_instance()->get_all_registered() as $block ) {
96 if ( ! isset( $block->supports['email'] ) || ! $block->supports['email'] ) {
97 continue;
98 }
99 foreach ( $block->style_handles as $handle ) {
100 $allowed_iframe_style_handles[] = $handle . '-css';
101 }
102 foreach ( $block->editor_style_handles as $handle ) {
103 $allowed_iframe_style_handles[] = $handle . '-css';
104 }
105 }
106 return apply_filters( 'woocommerce_email_editor_allowed_iframe_style_handles', $allowed_iframe_style_handles );
107 }
108 private function init_iframe_assets(): void {
109 if ( ! empty( $this->iframe_assets ) ) {
110 return;
111 }
112 $this->iframe_assets = _wp_get_iframed_editor_assets();
113 $this->allowed_iframe_style_handles = $this->get_allowed_iframe_style_handles();
114 $cleaned_styles = array();
115 foreach ( explode( "\n", (string) $this->iframe_assets['styles'] ) as $asset ) {
116 foreach ( $this->allowed_iframe_style_handles as $handle ) {
117 if ( strpos( $asset, $handle ) !== false ) {
118 $cleaned_styles[] = $asset;
119 break;
120 }
121 }
122 }
123 $this->iframe_assets['styles'] = implode( "\n", $cleaned_styles );
124 }
125 }
126