Remove code related to template themes
[MAILPOET-6335]
This commit is contained in:
committed by
Aschepikov
parent
1e1bec4ce0
commit
ebe7151269
@ -1,55 +0,0 @@
|
|||||||
import { useCallback } from '@wordpress/element';
|
|
||||||
import { useSelect, dispatch } from '@wordpress/data';
|
|
||||||
import { store as coreStore } from '@wordpress/core-data';
|
|
||||||
import { store as editorStore } from '@wordpress/editor';
|
|
||||||
import { EmailTheme, storeName } from '../store';
|
|
||||||
|
|
||||||
export function useEmailTheme() {
|
|
||||||
const { templateTheme, templateId } = useSelect( ( select ) => {
|
|
||||||
const currentPostType = select( editorStore ).getCurrentPostType();
|
|
||||||
let templateThemeData: EmailTheme = {};
|
|
||||||
let tId = null;
|
|
||||||
let tContent = '';
|
|
||||||
// Edit email post mode
|
|
||||||
if ( currentPostType === 'mailpoet_email' ) {
|
|
||||||
const template = select( storeName ).getEditedPostTemplate();
|
|
||||||
templateThemeData = template?.mailpoet_email_theme || {};
|
|
||||||
tId = template?.id;
|
|
||||||
tContent = template?.content;
|
|
||||||
} else {
|
|
||||||
// @ts-expect-error TS2322: Type 'string' has no properties in common with type 'EmailTheme'.
|
|
||||||
templateThemeData =
|
|
||||||
select( editorStore ).getCurrentPostAttribute(
|
|
||||||
// @ts-expect-error Expected 0 arguments, but got 1.
|
|
||||||
'mailpoet_email_theme'
|
|
||||||
) || {};
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
templateTheme: templateThemeData,
|
|
||||||
templateId: tId,
|
|
||||||
templateContent: tContent,
|
|
||||||
};
|
|
||||||
}, [] );
|
|
||||||
|
|
||||||
const updateTemplateTheme = useCallback(
|
|
||||||
( newTheme ) => {
|
|
||||||
if ( ! templateId ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
void dispatch( coreStore ).editEntityRecord(
|
|
||||||
'postType',
|
|
||||||
'wp_template',
|
|
||||||
templateId as string,
|
|
||||||
{
|
|
||||||
mailpoet_email_theme: newTheme,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
[ templateId ]
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
templateTheme,
|
|
||||||
updateTemplateTheme,
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* This file is part of the MailPoet plugin.
|
* This file is part of the MailPoet Email Editor package.
|
||||||
*
|
*
|
||||||
* @package MailPoet\EmailEditor
|
* @package MailPoet\EmailEditor
|
||||||
*/
|
*/
|
||||||
@ -11,7 +11,6 @@ namespace MailPoet\EmailEditor\Engine\Templates;
|
|||||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||||
use MailPoet\EmailEditor\Engine\Theme_Controller;
|
use MailPoet\EmailEditor\Engine\Theme_Controller;
|
||||||
use MailPoet\EmailEditor\Validator\Builder;
|
use MailPoet\EmailEditor\Validator\Builder;
|
||||||
use WP_Theme_JSON;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Template_Preview class.
|
* Template_Preview class.
|
||||||
@ -29,28 +28,19 @@ class Template_Preview {
|
|||||||
* @var Settings_Controller
|
* @var Settings_Controller
|
||||||
*/
|
*/
|
||||||
private Settings_Controller $settings_controller;
|
private Settings_Controller $settings_controller;
|
||||||
/**
|
|
||||||
* Provides the templates.
|
|
||||||
*
|
|
||||||
* @var Templates
|
|
||||||
*/
|
|
||||||
private Templates $templates;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Template_Preview constructor.
|
* Template_Preview constructor.
|
||||||
*
|
*
|
||||||
* @param Theme_Controller $theme_controller Theme controller.
|
* @param Theme_Controller $theme_controller Theme controller.
|
||||||
* @param Settings_Controller $settings_controller Theme controller.
|
* @param Settings_Controller $settings_controller Theme controller.
|
||||||
* @param Templates $templates Templates.
|
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
Theme_Controller $theme_controller,
|
Theme_Controller $theme_controller,
|
||||||
Settings_Controller $settings_controller,
|
Settings_Controller $settings_controller
|
||||||
Templates $templates
|
|
||||||
) {
|
) {
|
||||||
$this->theme_controller = $theme_controller;
|
$this->theme_controller = $theme_controller;
|
||||||
$this->settings_controller = $settings_controller;
|
$this->settings_controller = $settings_controller;
|
||||||
$this->templates = $templates;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -71,15 +61,9 @@ class Template_Preview {
|
|||||||
/**
|
/**
|
||||||
* Generates CSS for preview of email theme
|
* Generates CSS for preview of email theme
|
||||||
* They are applied in the preview BLockPreview in template selection
|
* They are applied in the preview BLockPreview in template selection
|
||||||
*
|
|
||||||
* @param array $template Template data.
|
|
||||||
*/
|
*/
|
||||||
public function get_email_theme_preview_css( $template ): string {
|
public function get_email_theme_preview_css(): string {
|
||||||
$editor_theme = clone $this->theme_controller->get_theme();
|
$editor_theme = clone $this->theme_controller->get_theme();
|
||||||
$template_theme = $this->templates->get_block_template_theme( $template['id'], $template['wp_id'] );
|
|
||||||
if ( is_array( $template_theme ) ) {
|
|
||||||
$editor_theme->merge( new WP_Theme_JSON( $template_theme, 'custom' ) );
|
|
||||||
}
|
|
||||||
$editor_settings = $this->settings_controller->get_settings();
|
$editor_settings = $this->settings_controller->get_settings();
|
||||||
$additional_css = '';
|
$additional_css = '';
|
||||||
foreach ( $editor_settings['styles'] as $style ) {
|
foreach ( $editor_settings['styles'] as $style ) {
|
||||||
|
@ -8,15 +8,13 @@
|
|||||||
declare(strict_types = 1);
|
declare(strict_types = 1);
|
||||||
namespace MailPoet\EmailEditor\Engine\Templates;
|
namespace MailPoet\EmailEditor\Engine\Templates;
|
||||||
|
|
||||||
use MailPoet\EmailEditor\Engine\Email_Styles_Schema;
|
|
||||||
use WP_Block_Template;
|
use WP_Block_Template;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Templates class.
|
* Templates class.
|
||||||
*/
|
*/
|
||||||
class Templates {
|
class Templates {
|
||||||
const MAILPOET_EMAIL_META_THEME_TYPE = 'mailpoet_email_theme';
|
const MAILPOET_TEMPLATE_EMPTY_THEME = array( 'version' => 3 ); // The version 3 is important to merge themes correctly.
|
||||||
const MAILPOET_TEMPLATE_EMPTY_THEME = array( 'version' => 3 ); // The version 3 is important to merge themes correctly.
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides the utils.
|
* Provides the utils.
|
||||||
@ -48,12 +46,6 @@ class Templates {
|
|||||||
* @var array $templates
|
* @var array $templates
|
||||||
*/
|
*/
|
||||||
private array $templates = array();
|
private array $templates = array();
|
||||||
/**
|
|
||||||
* The theme JSON.
|
|
||||||
*
|
|
||||||
* @var array $theme_json
|
|
||||||
*/
|
|
||||||
private array $theme_json = array();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Templates constructor.
|
* Templates constructor.
|
||||||
@ -76,7 +68,6 @@ class Templates {
|
|||||||
add_filter( 'get_block_template', array( $this, 'add_block_template_details' ), 10, 1 );
|
add_filter( 'get_block_template', array( $this, 'add_block_template_details' ), 10, 1 );
|
||||||
add_filter( 'rest_pre_insert_wp_template', array( $this, 'force_post_content' ), 9, 1 );
|
add_filter( 'rest_pre_insert_wp_template', array( $this, 'force_post_content' ), 9, 1 );
|
||||||
$this->initialize_templates();
|
$this->initialize_templates();
|
||||||
$this->initialize_api();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -90,39 +81,6 @@ class Templates {
|
|||||||
return $templates[ $template_id ] ?? null;
|
return $templates[ $template_id ] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a predefined or user defined theme for a block template.
|
|
||||||
*
|
|
||||||
* @param string $template_id The template ID.
|
|
||||||
* @param int|null $template_wp_id The template WP ID.
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function get_block_template_theme( $template_id, $template_wp_id = null ) {
|
|
||||||
// First check if there is a user updated theme saved.
|
|
||||||
$theme = $this->get_custom_template_theme( $template_wp_id );
|
|
||||||
|
|
||||||
if ( $theme ) {
|
|
||||||
return $theme;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If there is no user edited theme, look for default template themes in files.
|
|
||||||
['prefix' => $template_prefix, 'slug' => $template_slug] = $this->utils->get_template_id_parts( $template_id );
|
|
||||||
|
|
||||||
if ( $this->plugin_slug !== $template_prefix ) {
|
|
||||||
return self::MAILPOET_TEMPLATE_EMPTY_THEME;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! isset( $this->theme_json[ $template_slug ] ) ) {
|
|
||||||
$json_file = $this->template_directory . $template_slug . '.json';
|
|
||||||
|
|
||||||
if ( file_exists( $json_file ) ) {
|
|
||||||
$this->theme_json[ $template_slug ] = json_decode( (string) file_get_contents( $json_file ), true );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->theme_json[ $template_slug ] ?? self::MAILPOET_TEMPLATE_EMPTY_THEME;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get block template from file.
|
* Get block template from file.
|
||||||
*
|
*
|
||||||
@ -255,37 +213,6 @@ class Templates {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize the API.
|
|
||||||
*/
|
|
||||||
private function initialize_api(): void {
|
|
||||||
register_post_meta(
|
|
||||||
'wp_template',
|
|
||||||
self::MAILPOET_EMAIL_META_THEME_TYPE,
|
|
||||||
array(
|
|
||||||
'show_in_rest' => array(
|
|
||||||
'schema' => ( new Email_Styles_Schema() )->get_schema(),
|
|
||||||
),
|
|
||||||
'single' => true,
|
|
||||||
'type' => 'object',
|
|
||||||
'default' => self::MAILPOET_TEMPLATE_EMPTY_THEME,
|
|
||||||
)
|
|
||||||
);
|
|
||||||
register_rest_field(
|
|
||||||
'wp_template',
|
|
||||||
self::MAILPOET_EMAIL_META_THEME_TYPE,
|
|
||||||
array(
|
|
||||||
'get_callback' => function ( $item ) {
|
|
||||||
return $this->get_block_template_theme( $item['id'], $item['wp_id'] );
|
|
||||||
},
|
|
||||||
'update_callback' => function ( $value, $template ) {
|
|
||||||
return update_post_meta( $template->wp_id, self::MAILPOET_EMAIL_META_THEME_TYPE, $value );
|
|
||||||
},
|
|
||||||
'schema' => ( new Email_Styles_Schema() )->get_schema(),
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets block templates indexed by ID.
|
* Gets block templates indexed by ID.
|
||||||
*
|
*
|
||||||
@ -377,21 +304,4 @@ class Templates {
|
|||||||
$custom_templates
|
$custom_templates
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the custom theme for a template.
|
|
||||||
*
|
|
||||||
* @param int|null $template_wp_id The template ID.
|
|
||||||
* @return array|null
|
|
||||||
*/
|
|
||||||
private function get_custom_template_theme( ?int $template_wp_id ): ?array {
|
|
||||||
if ( ! $template_wp_id ) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
$theme = get_post_meta( $template_wp_id, self::MAILPOET_EMAIL_META_THEME_TYPE, true );
|
|
||||||
if ( is_array( $theme ) && isset( $theme['styles'] ) ) {
|
|
||||||
return $theme;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"styles": {
|
|
||||||
"spacing": {
|
|
||||||
"blockGap": "10px",
|
|
||||||
"padding": {
|
|
||||||
"top": "var:preset|spacing|20",
|
|
||||||
"right": "var:preset|spacing|10",
|
|
||||||
"bottom": "var:preset|spacing|20",
|
|
||||||
"left": "var:preset|spacing|10"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -33,13 +33,7 @@ class Template_Preview_Test extends \MailPoetTest {
|
|||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testItCanGetThemePreviewCss(): void {
|
public function testItCanGetThemePreviewCss(): void {
|
||||||
$template_id = 'mailpoet/mailpoet//simple-light';
|
$result = $this->template_preview->get_email_theme_preview_css();
|
||||||
$result = $this->template_preview->get_email_theme_preview_css(
|
|
||||||
array(
|
|
||||||
'id' => $template_id,
|
|
||||||
'wp_id' => null,
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
verify( $result )->stringContainsString( 'Styles for the email editor.' );
|
verify( $result )->stringContainsString( 'Styles for the email editor.' );
|
||||||
verify( $result )->stringContainsString( 'is-layout-email-flex' );
|
verify( $result )->stringContainsString( 'is-layout-email-flex' );
|
||||||
|
@ -45,21 +45,6 @@ class Templates_Test extends \MailPoetTest {
|
|||||||
verify( $template->description )->equals( 'A general template for emails.' );
|
verify( $template->description )->equals( 'A general template for emails.' );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Test is can fetch template theme
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function testItCanFetchTemplateTheme(): void {
|
|
||||||
$template_id = 'mailpoet/mailpoet//simple-light';
|
|
||||||
$theme = $this->templates->get_block_template_theme( $template_id );
|
|
||||||
|
|
||||||
verify( $theme )->arrayCount( 2 );
|
|
||||||
verify( $theme['styles'] )->isArray();
|
|
||||||
verify( $theme['styles']['spacing'] )->isArray();
|
|
||||||
verify( $theme['styles']['spacing']['blockGap'] )->equals( '10px' );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test it can add block templates
|
* Test it can add block templates
|
||||||
*
|
*
|
||||||
|
@ -209,7 +209,6 @@ abstract class MailPoetTest extends \Codeception\TestCase\Test { // phpcs:ignore
|
|||||||
return new Template_Preview(
|
return new Template_Preview(
|
||||||
$container->get( Theme_Controller::class ),
|
$container->get( Theme_Controller::class ),
|
||||||
$container->get( Settings_Controller::class ),
|
$container->get( Settings_Controller::class ),
|
||||||
$container->get( Templates::class ),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user