Rename files in email editor package by WP Coding Standard
[MAILPOET-6240]
This commit is contained in:
@ -42,7 +42,8 @@
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"lib-3rd-party",
|
||||
"vendor-prefixed"
|
||||
"vendor-prefixed",
|
||||
"vendor/mailpoet/email-editor/src"
|
||||
],
|
||||
"files": [
|
||||
"lib/exceptions.php",
|
||||
|
@ -6,8 +6,8 @@ use MailPoet\API\JSON\API;
|
||||
use MailPoet\Config\Env;
|
||||
use MailPoet\Config\Installer;
|
||||
use MailPoet\Config\ServicesChecker;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\ThemeController;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
use MailPoet\EmailEditor\Engine\Theme_Controller;
|
||||
use MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor as EditorInitController;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Settings\SettingsController as MailPoetSettings;
|
||||
@ -18,9 +18,9 @@ use MailPoet\WP\Functions as WPFunctions;
|
||||
class EmailEditor {
|
||||
private WPFunctions $wp;
|
||||
|
||||
private SettingsController $settingsController;
|
||||
private Settings_Controller $settingsController;
|
||||
|
||||
private ThemeController $themeController;
|
||||
private Theme_Controller $themeController;
|
||||
|
||||
private CdnAssetUrl $cdnAssetUrl;
|
||||
|
||||
@ -34,11 +34,11 @@ class EmailEditor {
|
||||
|
||||
public function __construct(
|
||||
WPFunctions $wp,
|
||||
SettingsController $settingsController,
|
||||
Settings_Controller $settingsController,
|
||||
CdnAssetUrl $cdnAssetUrl,
|
||||
ServicesChecker $servicesChecker,
|
||||
SubscribersFeature $subscribersFeature,
|
||||
ThemeController $themeController,
|
||||
Theme_Controller $themeController,
|
||||
MailPoetSettings $mailpoetSettings,
|
||||
NewslettersRepository $newslettersRepository
|
||||
) {
|
||||
|
@ -11,7 +11,7 @@ use MailPoet\Automation\Integrations\MailPoet\MailPoetIntegration;
|
||||
use MailPoet\Automation\Integrations\WooCommerce\WooCommerceIntegration;
|
||||
use MailPoet\Cron\CronTrigger;
|
||||
use MailPoet\Cron\DaemonActionSchedulerRunner;
|
||||
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\Email_Editor;
|
||||
use MailPoet\EmailEditor\Integrations\Core\Initializer as CoreEmailEditorIntegration;
|
||||
use MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypesController;
|
||||
use MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor as MailpoetEmailEditorIntegration;
|
||||
@ -120,7 +120,7 @@ class Initializer {
|
||||
/** @var DaemonActionSchedulerRunner */
|
||||
private $actionSchedulerRunner;
|
||||
|
||||
/** @var EmailEditor */
|
||||
/** @var Email_Editor */
|
||||
private $emailEditor;
|
||||
|
||||
/** @var MailpoetEmailEditorIntegration */
|
||||
@ -171,7 +171,7 @@ class Initializer {
|
||||
WooCommerceIntegration $woocommerceIntegration,
|
||||
PersonalDataExporters $personalDataExporters,
|
||||
DaemonActionSchedulerRunner $actionSchedulerRunner,
|
||||
EmailEditor $emailEditor,
|
||||
Email_Editor $emailEditor,
|
||||
BlockTypesController $blockTypesController,
|
||||
MailpoetEmailEditorIntegration $mailpoetEmailEditorIntegration,
|
||||
CoreEmailEditorIntegration $coreEmailEditorIntegration,
|
||||
|
@ -337,27 +337,27 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
$container->autowire(\MailPoet\CustomFields\ApiDataSanitizer::class);
|
||||
$container->autowire(\MailPoet\CustomFields\CustomFieldsRepository::class)->setPublic(true);
|
||||
// Email Editor
|
||||
$container->autowire(\MailPoet\EmailEditor\Utils\CdnAssetUrl::class)
|
||||
$container->autowire(\MailPoet\EmailEditor\Utils\Cdn_Asset_Url::class)
|
||||
->setPublic(true)
|
||||
->setFactory([__CLASS__, 'getEmailEditorCdnAssetsUrl']);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\EmailEditor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\EmailApiController::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\SettingsController::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\ThemeController::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\HighlightingPostprocessor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\VariablesPostprocessor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\BlocksWidthPreprocessor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\CleanupPreprocessor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\SpacingPreprocessor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\TypographyPreprocessor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Email_Editor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Email_Api_Controller::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Settings_Controller::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Theme_Controller::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Highlighting_Postprocessor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Variables_Postprocessor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Blocks_Width_Preprocessor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Cleanup_Preprocessor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Spacing_Preprocessor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Typography_Preprocessor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\Renderer::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Templates\Templates::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Templates\Utils::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Templates\TemplatePreview::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Templates\Template_Preview::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Patterns\Patterns::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\ContentRenderer::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\BlocksRegistry::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\ProcessManager::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Content_Renderer::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Blocks_Registry::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Process_Manager::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Integrations\Core\Initializer::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\Cli::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor::class)->setPublic(true);
|
||||
@ -689,7 +689,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
return new \MailPoet\Util\CdnAssetUrl((string)Env::$baseUrl);
|
||||
}
|
||||
|
||||
public static function getEmailEditorCdnAssetsUrl(): \MailPoet\EmailEditor\Utils\CdnAssetUrl {
|
||||
return new \MailPoet\EmailEditor\Utils\CdnAssetUrl((string)Env::$baseUrl);
|
||||
public static function getEmailEditorCdnAssetsUrl(): \MailPoet\EmailEditor\Utils\Cdn_Asset_Url {
|
||||
return new \MailPoet\EmailEditor\Utils\Cdn_Asset_Url((string)Env::$baseUrl);
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ class EmailEditorTest extends \MailPoetTest {
|
||||
|
||||
public function testItRegistersMailPoetEmailPostType() {
|
||||
$this->emailEditor->initialize();
|
||||
$this->diContainer->get(\MailPoet\EmailEditor\Engine\EmailEditor::class)->initialize();
|
||||
$this->diContainer->get(\MailPoet\EmailEditor\Engine\Email_Editor::class)->initialize();
|
||||
$postTypes = get_post_types();
|
||||
$this->assertArrayHasKey('mailpoet_email', $postTypes);
|
||||
}
|
||||
|
@ -3,14 +3,14 @@
|
||||
"description": "Email editor based on WordPress Gutenberg package.",
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"MailPoet\\EmailEditor\\": "src/"
|
||||
}
|
||||
"classmap": [
|
||||
"src/"
|
||||
]
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"MailPoet\\EmailEditor\\": "tests/unit/"
|
||||
}
|
||||
"classmap": [
|
||||
"tests/unit/"
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.4"
|
||||
@ -28,6 +28,7 @@
|
||||
},
|
||||
"scripts": {
|
||||
"unit-test": "vendor/bin/codecept run unit",
|
||||
"integration-test": "cd ../../../tests_env/docker && COMPOSE_HTTP_TIMEOUT=200 docker compose run -e SKIP_DEPS=1 -e SKIP_PLUGINS=1 -e PACKAGE_NAME=email-editor codeception_integration"
|
||||
"integration-test": "cd ../../../tests_env/docker && COMPOSE_HTTP_TIMEOUT=200 docker compose run -e SKIP_DEPS=1 -e SKIP_PLUGINS=1 -e PACKAGE_NAME=email-editor codeception_integration",
|
||||
"code-style": "../../../mailpoet/tasks/code_sniffer/vendor/bin/phpcs -ps --standard=WordPress src/"
|
||||
}
|
||||
}
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Patterns\Library;
|
||||
|
||||
use MailPoet\EmailEditor\Utils\CdnAssetUrl;
|
||||
use MailPoet\EmailEditor\Utils\Cdn_Asset_Url;
|
||||
|
||||
abstract class AbstractPattern {
|
||||
abstract class Abstract_Pattern {
|
||||
protected $cdnAssetUrl;
|
||||
protected $blockTypes = [];
|
||||
protected $templateTypes = [];
|
||||
@ -14,7 +14,7 @@ abstract class AbstractPattern {
|
||||
protected $viewportWidth = 620;
|
||||
|
||||
public function __construct(
|
||||
CdnAssetUrl $cdnAssetUrl
|
||||
Cdn_Asset_Url $cdnAssetUrl
|
||||
) {
|
||||
$this->cdnAssetUrl = $cdnAssetUrl;
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Patterns\Library;
|
||||
|
||||
class DefaultContentFull extends AbstractPattern {
|
||||
class Default_Content_Full extends Abstract_Pattern {
|
||||
protected $blockTypes = [
|
||||
'core/post-content',
|
||||
];
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Patterns\Library;
|
||||
|
||||
class DefaultContent extends AbstractPattern {
|
||||
class Default_Content extends Abstract_Pattern {
|
||||
protected $blockTypes = [
|
||||
'core/post-content',
|
||||
];
|
||||
@ -11,7 +11,7 @@ class DefaultContent extends AbstractPattern {
|
||||
'email-template',
|
||||
];
|
||||
|
||||
protected function getContent(): string {
|
||||
protected function getContent(): string
|
||||
return '
|
||||
<!-- wp:columns {"backgroundColor":"white","style":{"spacing":{"padding":{"top":"var:preset|spacing|20","bottom":"var:preset|spacing|20","left":"var:preset|spacing|20","right":"var:preset|spacing|20"}}}} -->
|
||||
<div class="wp-block-columns has-white-background-color has-background" style="padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)"><!-- wp:column -->
|
@ -2,14 +2,14 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Patterns;
|
||||
|
||||
use MailPoet\EmailEditor\Utils\CdnAssetUrl;
|
||||
use MailPoet\EmailEditor\Utils\Cdn_Asset_Url;
|
||||
|
||||
class Patterns {
|
||||
private $namespace = 'mailpoet';
|
||||
protected $cdnAssetUrl;
|
||||
|
||||
public function __construct(
|
||||
CdnAssetUrl $cdnAssetUrl
|
||||
Cdn_Asset_Url $cdnAssetUrl
|
||||
) {
|
||||
$this->cdnAssetUrl = $cdnAssetUrl;
|
||||
}
|
||||
@ -30,8 +30,8 @@ class Patterns {
|
||||
}
|
||||
|
||||
private function registerPatterns() {
|
||||
$this->registerPattern('default', new Library\DefaultContent($this->cdnAssetUrl));
|
||||
$this->registerPattern('default-full', new Library\DefaultContentFull($this->cdnAssetUrl));
|
||||
$this->registerPattern('default', new Library\Default_Content($this->cdnAssetUrl));
|
||||
$this->registerPattern('default-full', new Library\Default_Content_Full($this->cdnAssetUrl));
|
||||
}
|
||||
|
||||
private function registerPattern($name, $pattern) {
|
@ -2,13 +2,13 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
/**
|
||||
* This class provides functionality to render inner blocks of a block that supports reduced flex layout.
|
||||
*/
|
||||
class FlexLayoutRenderer {
|
||||
public function renderInnerBlocksInLayout(array $parsedBlock, SettingsController $settingsController): string {
|
||||
class Flex_Layout_Renderer {
|
||||
public function renderInnerBlocksInLayout(array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
$themeStyles = $settingsController->getEmailStyles();
|
||||
$flexGap = $themeStyles['spacing']['blockGap'] ?? '0px';
|
||||
$flexGapNumber = $settingsController->parseNumberFromStringWithPixels($flexGap);
|
||||
@ -45,7 +45,7 @@ class FlexLayoutRenderer {
|
||||
return $outputHtml;
|
||||
}
|
||||
|
||||
private function computeWidthsForFlexLayout(array $parsedBlock, SettingsController $settingsController, float $flexGap): array {
|
||||
private function computeWidthsForFlexLayout(array $parsedBlock, Settings_Controller $settingsController, float $flexGap): array {
|
||||
// When there is no parent width we can't compute widths so auto width will be used
|
||||
if (!isset($parsedBlock['email_attrs']['width'])) {
|
||||
return $parsedBlock['innerBlocks'] ?? [];
|
@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors;
|
||||
/**
|
||||
* This postprocessor replaces <mark> tags with <span> tags because mark tags are not supported across all email clients
|
||||
*/
|
||||
class HighlightingPostprocessor implements Postprocessor {
|
||||
class Highlighting_Postprocessor implements Postprocessor {
|
||||
public function postprocess(string $html): string {
|
||||
return str_replace(
|
||||
['<mark', '</mark>'],
|
@ -2,18 +2,18 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\ThemeController;
|
||||
use MailPoet\EmailEditor\Engine\Theme_Controller;
|
||||
|
||||
/**
|
||||
* In some case the blocks HTML contains CSS variables.
|
||||
* For example when spacing is set from a preset the inline styles contain var(--wp--preset--spacing--10), var(--wp--preset--spacing--20) etc.
|
||||
* This postprocessor uses variables from theme.json and replaces the CSS variables with their values in final email HTML.
|
||||
*/
|
||||
class VariablesPostprocessor implements Postprocessor {
|
||||
private ThemeController $themeController;
|
||||
class Variables_Postprocessor implements Postprocessor {
|
||||
private Theme_Controller $themeController;
|
||||
|
||||
public function __construct(
|
||||
ThemeController $themeController
|
||||
Theme_Controller $themeController
|
||||
) {
|
||||
$this->themeController = $themeController;
|
||||
}
|
@ -6,7 +6,7 @@ namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors;
|
||||
* This class sets the width of the blocks based on the layout width or column count.
|
||||
* The final width in pixels is stored in the email_attrs array because we would like to avoid changing the original attributes.
|
||||
*/
|
||||
class BlocksWidthPreprocessor implements Preprocessor {
|
||||
class Blocks_Width_Preprocessor implements Preprocessor {
|
||||
public function preprocess(array $parsedBlocks, array $layout, array $styles): array {
|
||||
foreach ($parsedBlocks as $key => $block) {
|
||||
// Layout width is recalculated for each block because full-width blocks don't exclude padding
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors;
|
||||
|
||||
class CleanupPreprocessor implements Preprocessor {
|
||||
class Cleanup_Preprocessor implements Preprocessor {
|
||||
public function preprocess(array $parsedBlocks, array $layout, array $styles): array {
|
||||
foreach ($parsedBlocks as $key => $block) {
|
||||
// https://core.trac.wordpress.org/ticket/45312
|
@ -6,7 +6,7 @@ namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors;
|
||||
* This preprocessor is responsible for setting default spacing values for blocks.
|
||||
* In the early development phase, we are setting only margin-top for blocks that are not first or last in the columns block.
|
||||
*/
|
||||
class SpacingPreprocessor implements Preprocessor {
|
||||
class Spacing_Preprocessor implements Preprocessor {
|
||||
public function preprocess(array $parsedBlocks, array $layout, array $styles): array {
|
||||
$parsedBlocks = $this->addBlockGaps($parsedBlocks, $styles['spacing']['blockGap'] ?? '', null);
|
||||
return $parsedBlocks;
|
@ -2,9 +2,9 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class TypographyPreprocessor implements Preprocessor {
|
||||
class Typography_Preprocessor implements Preprocessor {
|
||||
/**
|
||||
* List of styles that should be copied from parent to children.
|
||||
* @var string[]
|
||||
@ -15,11 +15,11 @@ class TypographyPreprocessor implements Preprocessor {
|
||||
'text-decoration',
|
||||
];
|
||||
|
||||
/** @var SettingsController */
|
||||
/** @var Settings_Controller */
|
||||
private $settingsController;
|
||||
|
||||
public function __construct(
|
||||
SettingsController $settingsController
|
||||
Settings_Controller $settingsController
|
||||
) {
|
||||
$this->settingsController = $settingsController;
|
||||
}
|
@ -2,8 +2,8 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
interface BlockRenderer {
|
||||
public function render(string $blockContent, array $parsedBlock, SettingsController $settingsController): string;
|
||||
interface Block_Renderer {
|
||||
public function render(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string;
|
||||
}
|
@ -4,7 +4,7 @@ namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
|
||||
|
||||
use WP_Block_Parser;
|
||||
|
||||
class BlocksParser extends WP_Block_Parser {
|
||||
class Blocks_Parser extends WP_Block_Parser {
|
||||
/**
|
||||
* List of parsed blocks
|
||||
*
|
@ -2,14 +2,14 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
|
||||
|
||||
class BlocksRegistry {
|
||||
class Blocks_Registry {
|
||||
|
||||
/** @var BlockRenderer[] */
|
||||
/** @var Block_Renderer[] */
|
||||
private $blockRenderersMap = [];
|
||||
/** @var BlockRenderer */
|
||||
private $fallbackRenderer = null;
|
||||
|
||||
public function addBlockRenderer(string $blockName, BlockRenderer $renderer): void {
|
||||
public function addBlockRenderer(string $blockName, Block_Renderer $renderer): void {
|
||||
$this->blockRenderersMap[$blockName] = $renderer;
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@ class BlocksRegistry {
|
||||
return isset($this->blockRenderersMap[$blockName]);
|
||||
}
|
||||
|
||||
public function getBlockRenderer(string $blockName): ?BlockRenderer {
|
||||
public function getBlockRenderer(string $blockName): ?Block_Renderer {
|
||||
return $this->blockRenderersMap[$blockName] ?? null;
|
||||
}
|
||||
|
@ -2,27 +2,27 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\ThemeController;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
use MailPoet\EmailEditor\Engine\Theme_Controller;
|
||||
use MailPoetVendor\Pelago\Emogrifier\CssInliner;
|
||||
use WP_Block_Template;
|
||||
use WP_Post;
|
||||
|
||||
class ContentRenderer {
|
||||
private BlocksRegistry $blocksRegistry;
|
||||
private ProcessManager $processManager;
|
||||
private SettingsController $settingsController;
|
||||
private ThemeController $themeController;
|
||||
class Content_Renderer {
|
||||
private Blocks_Registry $blocksRegistry;
|
||||
private Process_Manager $processManager;
|
||||
private Settings_Controller $settingsController;
|
||||
private Theme_Controller $themeController;
|
||||
private $post = null;
|
||||
private $template = null;
|
||||
|
||||
const CONTENT_STYLES_FILE = 'content.css';
|
||||
|
||||
public function __construct(
|
||||
ProcessManager $preprocessManager,
|
||||
BlocksRegistry $blocksRegistry,
|
||||
SettingsController $settingsController,
|
||||
ThemeController $themeController
|
||||
Process_Manager $preprocessManager,
|
||||
Blocks_Registry $blocksRegistry,
|
||||
Settings_Controller $settingsController,
|
||||
Theme_Controller $themeController
|
||||
) {
|
||||
$this->processManager = $preprocessManager;
|
||||
$this->blocksRegistry = $blocksRegistry;
|
||||
@ -50,7 +50,7 @@ class ContentRenderer {
|
||||
}
|
||||
|
||||
public function blockParser() {
|
||||
return 'MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\BlocksParser';
|
||||
return 'MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Blocks_Parser';
|
||||
}
|
||||
|
||||
public function preprocessParsedBlocks(array $parsedBlocks): array {
|
@ -2,16 +2,16 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\HighlightingPostprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Highlighting_Postprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Postprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\VariablesPostprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\BlocksWidthPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\CleanupPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Variables_Postprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Blocks_Width_Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Cleanup_Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\SpacingPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\TypographyPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Spacing_Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Typography_Preprocessor;
|
||||
|
||||
class ProcessManager {
|
||||
class Process_Manager {
|
||||
/** @var Preprocessor[] */
|
||||
private $preprocessors = [];
|
||||
|
||||
@ -19,12 +19,12 @@ class ProcessManager {
|
||||
private $postprocessors = [];
|
||||
|
||||
public function __construct(
|
||||
CleanupPreprocessor $cleanupPreprocessor,
|
||||
BlocksWidthPreprocessor $blocksWidthPreprocessor,
|
||||
TypographyPreprocessor $typographyPreprocessor,
|
||||
SpacingPreprocessor $spacingPreprocessor,
|
||||
HighlightingPostprocessor $highlightingPostprocessor,
|
||||
VariablesPostprocessor $variablesPostprocessor
|
||||
Cleanup_Preprocessor $cleanupPreprocessor,
|
||||
Blocks_Width_Preprocessor $blocksWidthPreprocessor,
|
||||
Typography_Preprocessor $typographyPreprocessor,
|
||||
Spacing_Preprocessor $spacingPreprocessor,
|
||||
Highlighting_Postprocessor $highlightingPostprocessor,
|
||||
Variables_Postprocessor $variablesPostprocessor
|
||||
) {
|
||||
$this->registerPreprocessor($cleanupPreprocessor);
|
||||
$this->registerPreprocessor($blocksWidthPreprocessor);
|
@ -2,17 +2,17 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\ContentRenderer;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Content_Renderer;
|
||||
use MailPoet\EmailEditor\Engine\Templates\Templates;
|
||||
use MailPoet\EmailEditor\Engine\ThemeController;
|
||||
use MailPoet\EmailEditor\Engine\Theme_Controller;
|
||||
use MailPoetVendor\Html2Text\Html2Text;
|
||||
use MailPoetVendor\Pelago\Emogrifier\CssInliner;
|
||||
use WP_Style_Engine;
|
||||
use WP_Theme_JSON;
|
||||
|
||||
class Renderer {
|
||||
private ThemeController $themeController;
|
||||
private ContentRenderer $contentRenderer;
|
||||
private Theme_Controller $themeController;
|
||||
private Content_Renderer $contentRenderer;
|
||||
private Templates $templates;
|
||||
/** @var WP_Theme_JSON|null */
|
||||
private static $theme = null;
|
||||
@ -21,9 +21,9 @@ class Renderer {
|
||||
const TEMPLATE_STYLES_FILE = 'template-canvas.css';
|
||||
|
||||
public function __construct(
|
||||
ContentRenderer $contentRenderer,
|
||||
Templates $templates,
|
||||
ThemeController $themeController
|
||||
Content_Renderer $contentRenderer,
|
||||
Templates $templates,
|
||||
Theme_Controller $themeController
|
||||
) {
|
||||
$this->contentRenderer = $contentRenderer;
|
||||
$this->templates = $templates;
|
@ -13,10 +13,10 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class Heading extends AbstractBlockRenderer {
|
||||
protected function renderContent($blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
protected function renderContent($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
return $blockContent;
|
||||
}
|
||||
}
|
||||
@ -28,11 +28,11 @@ class Heading extends AbstractBlockRenderer {
|
||||
```php
|
||||
<?php
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\BlocksRegistry;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Blocks_Registry;
|
||||
|
||||
add_action('mailpoet_blocks_renderer_initialized', 'register_my_block_email_renderer');
|
||||
|
||||
function register_my_block_email_renderer(BlocksRegistry $blocksRegistry): void {
|
||||
function register_my_block_email_renderer(Blocks_Registry $blocksRegistry): void {
|
||||
$blocksRegistry->addBlockRenderer('core/heading', new Renderer\Blocks\Heading());
|
||||
}
|
||||
```
|
||||
|
@ -2,19 +2,19 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Templates;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\ThemeController;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
use MailPoet\EmailEditor\Engine\Theme_Controller;
|
||||
use MailPoet\EmailEditor\Validator\Builder;
|
||||
use WP_Theme_JSON;
|
||||
|
||||
class TemplatePreview {
|
||||
private ThemeController $themeController;
|
||||
private SettingsController $settingsController;
|
||||
class Template_Preview {
|
||||
private Theme_Controller $themeController;
|
||||
private Settings_Controller $settingsController;
|
||||
private Templates $templates;
|
||||
|
||||
public function __construct(
|
||||
ThemeController $themeController,
|
||||
SettingsController $settingsController,
|
||||
Theme_Controller $themeController,
|
||||
Settings_Controller $settingsController,
|
||||
Templates $templates
|
||||
) {
|
||||
$this->themeController = $themeController;
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Templates;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\EmailStylesSchema;
|
||||
use MailPoet\EmailEditor\Engine\Email_Styles_Schema;
|
||||
use WP_Block_Template;
|
||||
|
||||
// phpcs:disable Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
|
||||
@ -187,7 +187,7 @@ class Templates {
|
||||
self::MAILPOET_EMAIL_META_THEME_TYPE,
|
||||
[
|
||||
'show_in_rest' => [
|
||||
'schema' => (new EmailStylesSchema())->getSchema(),
|
||||
'schema' => (new Email_Styles_Schema())->getSchema(),
|
||||
],
|
||||
'single' => true,
|
||||
'type' => 'object',
|
||||
@ -204,7 +204,7 @@ class Templates {
|
||||
'update_callback' => function($value, $template) {
|
||||
return update_post_meta($template->wp_id, self::MAILPOET_EMAIL_META_THEME_TYPE, $value);
|
||||
},
|
||||
'schema' => (new EmailStylesSchema())->getSchema(),
|
||||
'schema' => (new Email_Styles_Schema())->getSchema(),
|
||||
]
|
||||
);
|
||||
}
|
@ -4,7 +4,7 @@ namespace MailPoet\EmailEditor\Engine;
|
||||
|
||||
use MailPoet\EmailEditor\Validator\Builder;
|
||||
|
||||
class EmailApiController {
|
||||
class Email_Api_Controller {
|
||||
/**
|
||||
* @return array - Email specific data such styles.
|
||||
*/
|
@ -3,7 +3,7 @@
|
||||
namespace MailPoet\EmailEditor\Engine;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Patterns\Patterns;
|
||||
use MailPoet\EmailEditor\Engine\Templates\TemplatePreview;
|
||||
use MailPoet\EmailEditor\Engine\Templates\Template_Preview;
|
||||
use MailPoet\EmailEditor\Engine\Templates\Templates;
|
||||
use WP_Post;
|
||||
use WP_Theme_JSON;
|
||||
@ -12,21 +12,21 @@ use WP_Theme_JSON;
|
||||
* @phpstan-type EmailPostType array{name: string, args: array, meta: array{key: string, args: array}[]}
|
||||
* See register_post_type for details about EmailPostType args.
|
||||
*/
|
||||
class EmailEditor {
|
||||
class Email_Editor {
|
||||
public const MAILPOET_EMAIL_META_THEME_TYPE = 'mailpoet_email_theme';
|
||||
|
||||
private EmailApiController $emailApiController;
|
||||
private Email_Api_Controller $emailApiController;
|
||||
private Templates $templates;
|
||||
private TemplatePreview $templatePreview;
|
||||
private Template_Preview $templatePreview;
|
||||
private Patterns $patterns;
|
||||
private SettingsController $settingsController;
|
||||
private Settings_Controller $settingsController;
|
||||
|
||||
public function __construct(
|
||||
EmailApiController $emailApiController,
|
||||
Templates $templates,
|
||||
TemplatePreview $templatePreview,
|
||||
Patterns $patterns,
|
||||
SettingsController $settingsController
|
||||
Email_Api_Controller $emailApiController,
|
||||
Templates $templates,
|
||||
Template_Preview $templatePreview,
|
||||
Patterns $patterns,
|
||||
Settings_Controller $settingsController
|
||||
) {
|
||||
$this->emailApiController = $emailApiController;
|
||||
$this->templates = $templates;
|
||||
@ -115,11 +115,11 @@ class EmailEditor {
|
||||
}
|
||||
|
||||
public function getEmailThemeDataSchema(): array {
|
||||
return (new EmailStylesSchema())->getSchema();
|
||||
return (new Email_Styles_Schema())->getSchema();
|
||||
}
|
||||
|
||||
public function extendEmailThemeStyles(WP_Theme_JSON $theme, WP_Post $post): WP_Theme_JSON {
|
||||
$emailTheme = get_post_meta($post->ID, EmailEditor::MAILPOET_EMAIL_META_THEME_TYPE, true);
|
||||
$emailTheme = get_post_meta($post->ID, Email_Editor::MAILPOET_EMAIL_META_THEME_TYPE, true);
|
||||
if ($emailTheme && is_array($emailTheme)) {
|
||||
$theme->merge(new WP_Theme_JSON($emailTheme));
|
||||
}
|
@ -4,7 +4,7 @@ namespace MailPoet\EmailEditor\Engine;
|
||||
|
||||
use MailPoet\EmailEditor\Validator\Builder;
|
||||
|
||||
class EmailStylesSchema {
|
||||
class Email_Styles_Schema {
|
||||
public function getSchema(): array {
|
||||
$typographyProps = Builder::object([
|
||||
'fontFamily' => Builder::string()->nullable(),
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine;
|
||||
|
||||
class SettingsController {
|
||||
class Settings_Controller {
|
||||
|
||||
const ALLOWED_BLOCK_TYPES = [
|
||||
'core/button',
|
||||
@ -22,15 +22,15 @@ class SettingsController {
|
||||
'enableCustomUnits' => ['px', '%'],
|
||||
];
|
||||
|
||||
private ThemeController $themeController;
|
||||
private Theme_Controller $themeController;
|
||||
|
||||
private array $iframeAssets = [];
|
||||
|
||||
/**
|
||||
* @param ThemeController $themeController
|
||||
* @param Theme_Controller $themeController
|
||||
*/
|
||||
public function __construct(
|
||||
ThemeController $themeController
|
||||
Theme_Controller $themeController
|
||||
) {
|
||||
$this->themeController = $themeController;
|
||||
}
|
@ -10,7 +10,7 @@ use WP_Theme_JSON_Resolver;
|
||||
* E-mail editor works with own theme.json which defines settings for the editor and styles for the e-mail.
|
||||
* This class is responsible for accessing data defined by the theme.json.
|
||||
*/
|
||||
class ThemeController {
|
||||
class Theme_Controller {
|
||||
private WP_Theme_JSON $coreTheme;
|
||||
private WP_Theme_JSON $baseTheme;
|
||||
|
@ -2,14 +2,14 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\BlockRenderer;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Block_Renderer;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
use WP_Style_Engine;
|
||||
|
||||
/**
|
||||
* Shared functionality for block renderers.
|
||||
*/
|
||||
abstract class AbstractBlockRenderer implements BlockRenderer {
|
||||
abstract class Abstract_Block_Renderer implements Block_Renderer {
|
||||
/**
|
||||
* Wrapper for wp_style_engine_get_styles which ensures all values are returned.
|
||||
*
|
||||
@ -54,12 +54,12 @@ abstract class AbstractBlockRenderer implements BlockRenderer {
|
||||
);
|
||||
}
|
||||
|
||||
public function render(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
public function render(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
return $this->addSpacer(
|
||||
$this->renderContent($blockContent, $parsedBlock, $settingsController),
|
||||
$parsedBlock['email_attrs'] ?? []
|
||||
);
|
||||
}
|
||||
|
||||
abstract protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string;
|
||||
abstract protected function renderContent(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string;
|
||||
}
|
@ -2,15 +2,15 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Integrations\Utils\DomDocumentHelper;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
use MailPoet\EmailEditor\Integrations\Utils\Dom_Document_Helper;
|
||||
|
||||
/**
|
||||
* Renders a button block.
|
||||
* @see https://www.activecampaign.com/blog/email-buttons
|
||||
* @see https://documentation.mjml.io/#mj-button
|
||||
*/
|
||||
class Button extends AbstractBlockRenderer {
|
||||
class Button extends Abstract_Block_Renderer {
|
||||
private function getWrapperStyles(array $blockStyles) {
|
||||
$properties = ['border', 'color', 'typography', 'spacing'];
|
||||
$styles = $this->getStylesFromBlock(array_intersect_key($blockStyles, array_flip($properties)));
|
||||
@ -33,16 +33,16 @@ class Button extends AbstractBlockRenderer {
|
||||
];
|
||||
}
|
||||
|
||||
public function render(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
public function render(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
return $this->renderContent($blockContent, $parsedBlock, $settingsController);
|
||||
}
|
||||
|
||||
protected function renderContent($blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
protected function renderContent($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
if (empty($parsedBlock['innerHTML'])) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$domHelper = new DomDocumentHelper($parsedBlock['innerHTML']);
|
||||
$domHelper = new Dom_Document_Helper($parsedBlock['innerHTML']);
|
||||
$blockClassname = $domHelper->getAttributeValueByTagName('div', 'class') ?? '';
|
||||
$buttonLink = $domHelper->findElement('a');
|
||||
|
@ -2,20 +2,20 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout\FlexLayoutRenderer;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout\Flex_Layout_Renderer;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class Buttons extends AbstractBlockRenderer {
|
||||
/** @var FlexLayoutRenderer */
|
||||
class Buttons extends Abstract_Block_Renderer {
|
||||
/** @var Flex_Layout_Renderer */
|
||||
private $flexLayoutRenderer;
|
||||
|
||||
public function __construct(
|
||||
FlexLayoutRenderer $flexLayoutRenderer
|
||||
Flex_Layout_Renderer $flexLayoutRenderer
|
||||
) {
|
||||
$this->flexLayoutRenderer = $flexLayoutRenderer;
|
||||
}
|
||||
|
||||
protected function renderContent($blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
protected function renderContent($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
// Ignore font size set on the buttons block
|
||||
// We rely on TypographyPreprocessor to set the font size on the buttons
|
||||
// Rendering font size on the wrapper causes unwanted whitespace below the buttons
|
@ -2,12 +2,11 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\AbstractBlockRenderer;
|
||||
use MailPoet\EmailEditor\Integrations\Utils\DomDocumentHelper;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
use MailPoet\EmailEditor\Integrations\Utils\Dom_Document_Helper;
|
||||
use WP_Style_Engine;
|
||||
|
||||
class Column extends AbstractBlockRenderer {
|
||||
class Column extends Abstract_Block_Renderer {
|
||||
/**
|
||||
* Override this method to disable spacing (block gap) for columns.
|
||||
* Spacing is applied on wrapping columns block. Columns are rendered side by side so no spacer is needed.
|
||||
@ -16,7 +15,7 @@ class Column extends AbstractBlockRenderer {
|
||||
return $content;
|
||||
}
|
||||
|
||||
protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
protected function renderContent(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
$content = '';
|
||||
foreach ($parsedBlock['innerBlocks'] ?? [] as $block) {
|
||||
$content .= render_block($block);
|
||||
@ -32,8 +31,8 @@ class Column extends AbstractBlockRenderer {
|
||||
/**
|
||||
* Based on MJML <mj-column>
|
||||
*/
|
||||
private function getBlockWrapper(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
$originalWrapperClassname = (new DomDocumentHelper($blockContent))->getAttributeValueByTagName('div', 'class') ?? '';
|
||||
private function getBlockWrapper(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
$originalWrapperClassname = (new Dom_Document_Helper($blockContent))->getAttributeValueByTagName('div', 'class') ?? '';
|
||||
$block_attributes = wp_parse_args($parsedBlock['attrs'] ?? [], [
|
||||
'verticalAlignment' => 'stretch',
|
||||
'width' => $settingsController->getLayoutWidthWithoutPadding(),
|
@ -2,13 +2,13 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\AbstractBlockRenderer;
|
||||
use MailPoet\EmailEditor\Integrations\Utils\DomDocumentHelper;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\Abstract_Block_Renderer;
|
||||
use MailPoet\EmailEditor\Integrations\Utils\Dom_Document_Helper;
|
||||
use WP_Style_Engine;
|
||||
|
||||
class Columns extends AbstractBlockRenderer {
|
||||
protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
class Columns extends Abstract_Block_Renderer {
|
||||
protected function renderContent(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
$content = '';
|
||||
foreach ($parsedBlock['innerBlocks'] ?? [] as $block) {
|
||||
$content .= render_block($block);
|
||||
@ -24,8 +24,8 @@ class Columns extends AbstractBlockRenderer {
|
||||
/**
|
||||
* Based on MJML <mj-section>
|
||||
*/
|
||||
private function getBlockWrapper(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
$originalWrapperClassname = (new DomDocumentHelper($blockContent))->getAttributeValueByTagName('div', 'class') ?? '';
|
||||
private function getBlockWrapper(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
$originalWrapperClassname = (new Dom_Document_Helper($blockContent))->getAttributeValueByTagName('div', 'class') ?? '';
|
||||
$block_attributes = wp_parse_args($parsedBlock['attrs'] ?? [], [
|
||||
'align' => null,
|
||||
'width' => $settingsController->getLayoutWidthWithoutPadding(),
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
/**
|
||||
* Fallback block renderer.
|
||||
@ -13,8 +13,8 @@ use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
*
|
||||
* We need to find a better abstraction/architecture for this.
|
||||
*/
|
||||
class Fallback extends AbstractBlockRenderer {
|
||||
protected function renderContent($blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
class Fallback extends Abstract_Block_Renderer {
|
||||
protected function renderContent($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
return $blockContent;
|
||||
}
|
||||
}
|
@ -2,13 +2,13 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\AbstractBlockRenderer;
|
||||
use MailPoet\EmailEditor\Integrations\Utils\DomDocumentHelper;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\Abstract_Block_Renderer;
|
||||
use MailPoet\EmailEditor\Integrations\Utils\Dom_Document_Helper;
|
||||
use WP_Style_Engine;
|
||||
|
||||
class Group extends AbstractBlockRenderer {
|
||||
protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
class Group extends Abstract_Block_Renderer {
|
||||
protected function renderContent(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
$content = '';
|
||||
$innerBlocks = $parsedBlock['innerBlocks'] ?? [];
|
||||
|
||||
@ -23,8 +23,8 @@ class Group extends AbstractBlockRenderer {
|
||||
);
|
||||
}
|
||||
|
||||
private function getBlockWrapper(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
$originalClassname = (new DomDocumentHelper($blockContent))->getAttributeValueByTagName('div', 'class') ?? '';
|
||||
private function getBlockWrapper(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
$originalClassname = (new Dom_Document_Helper($blockContent))->getAttributeValueByTagName('div', 'class') ?? '';
|
||||
$blockAttributes = wp_parse_args($parsedBlock['attrs'] ?? [], [
|
||||
'style' => [],
|
||||
'backgroundColor' => '',
|
@ -2,11 +2,11 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Integrations\Utils\DomDocumentHelper;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
use MailPoet\EmailEditor\Integrations\Utils\Dom_Document_Helper;
|
||||
|
||||
class Image extends AbstractBlockRenderer {
|
||||
protected function renderContent($blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
class Image extends Abstract_Block_Renderer {
|
||||
protected function renderContent($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
$parsedHtml = $this->parseBlockContent($blockContent);
|
||||
|
||||
if (!$parsedHtml) {
|
||||
@ -47,7 +47,7 @@ class Image extends AbstractBlockRenderer {
|
||||
/**
|
||||
* When the width is not set, it's important to get it for the image to be displayed correctly
|
||||
*/
|
||||
private function addImageSizeWhenMissing(array $parsedBlock, string $imageUrl, SettingsController $settingsController): array {
|
||||
private function addImageSizeWhenMissing(array $parsedBlock, string $imageUrl, Settings_Controller $settingsController): array {
|
||||
if (isset($parsedBlock['attrs']['width'])) {
|
||||
return $parsedBlock;
|
||||
}
|
||||
@ -65,7 +65,6 @@ class Image extends AbstractBlockRenderer {
|
||||
}
|
||||
|
||||
private function applyImageBorderStyle(string $blockContent, array $parsedBlock, string $class): string {
|
||||
|
||||
// Getting individual border properties
|
||||
$borderStyles = wp_style_engine_get_styles(['border' => $parsedBlock['attrs']['style']['border'] ?? []]);
|
||||
$borderStyles = $borderStyles['declarations'] ?? [];
|
||||
@ -91,7 +90,7 @@ class Image extends AbstractBlockRenderer {
|
||||
/**
|
||||
* Settings width and height attributes for images is important for MS Outlook.
|
||||
*/
|
||||
private function addImageDimensions($blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
private function addImageDimensions($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
$html = new \WP_HTML_Tag_Processor($blockContent);
|
||||
if ($html->next_tag(['tag_name' => 'img'])) {
|
||||
// Getting height from styles and if it's set, we set the height attribute
|
||||
@ -117,7 +116,7 @@ class Image extends AbstractBlockRenderer {
|
||||
* 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 {
|
||||
private function getCaptionStyles(Settings_Controller $settingsController, array $parsedBlock): string {
|
||||
$themeData = $settingsController->getTheme()->get_data();
|
||||
|
||||
$styles = [
|
||||
@ -131,7 +130,7 @@ class Image extends AbstractBlockRenderer {
|
||||
/**
|
||||
* Based on MJML <mj-image> but because MJML doesn't support captions, our solution is a bit different
|
||||
*/
|
||||
private function getBlockWrapper(array $parsedBlock, SettingsController $settingsController, ?string $caption): string {
|
||||
private function getBlockWrapper(array $parsedBlock, Settings_Controller $settingsController, ?string $caption): string {
|
||||
$styles = [
|
||||
'border-collapse' => 'collapse',
|
||||
'border-spacing' => '0px',
|
||||
@ -244,7 +243,7 @@ class Image extends AbstractBlockRenderer {
|
||||
return null;
|
||||
}
|
||||
|
||||
$domHelper = new DomDocumentHelper($blockContent);
|
||||
$domHelper = new Dom_Document_Helper($blockContent);
|
||||
|
||||
$figureTag = $domHelper->findElement('figure');
|
||||
if (!$figureTag) {
|
@ -2,11 +2,11 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
// We have to avoid using keyword `List`
|
||||
class ListBlock extends AbstractBlockRenderer {
|
||||
protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
class List_Block extends Abstract_Block_Renderer {
|
||||
protected function renderContent(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
$html = new \WP_HTML_Tag_Processor($blockContent);
|
||||
$tagName = ($parsedBlock['attrs']['ordered'] ?? false) ? 'ol' : 'ul';
|
||||
if ($html->next_tag(['tag_name' => $tagName])) {
|
@ -2,9 +2,9 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class ListItem extends AbstractBlockRenderer {
|
||||
class List_Item extends Abstract_Block_Renderer {
|
||||
/**
|
||||
* Override this method to disable spacing (block gap) for list items.
|
||||
*/
|
||||
@ -12,7 +12,7 @@ class ListItem extends AbstractBlockRenderer {
|
||||
return $content;
|
||||
}
|
||||
|
||||
protected function renderContent($blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
protected function renderContent($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
return $blockContent;
|
||||
}
|
||||
}
|
@ -2,13 +2,13 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
/**
|
||||
* This renderer covers both core/paragraph and core/heading blocks
|
||||
*/
|
||||
class Text extends AbstractBlockRenderer {
|
||||
protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
class Text extends Abstract_Block_Renderer {
|
||||
protected function renderContent(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
// Do not render empty blocks.
|
||||
if (empty(trim(strip_tags($blockContent)))) {
|
||||
return '';
|
@ -2,8 +2,8 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\BlocksRegistry;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout\FlexLayoutRenderer;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Blocks_Registry;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout\Flex_Layout_Renderer;
|
||||
|
||||
class Initializer {
|
||||
public function initialize(): void {
|
||||
@ -15,15 +15,15 @@ class Initializer {
|
||||
/**
|
||||
* Register core blocks email renderers when the blocks renderer is initialized.
|
||||
*/
|
||||
public function registerCoreBlocksRenderers(BlocksRegistry $blocksRegistry): void {
|
||||
public function registerCoreBlocksRenderers(Blocks_Registry $blocksRegistry): void {
|
||||
$blocksRegistry->addBlockRenderer('core/paragraph', new Renderer\Blocks\Text());
|
||||
$blocksRegistry->addBlockRenderer('core/heading', new Renderer\Blocks\Text());
|
||||
$blocksRegistry->addBlockRenderer('core/column', new Renderer\Blocks\Column());
|
||||
$blocksRegistry->addBlockRenderer('core/columns', new Renderer\Blocks\Columns());
|
||||
$blocksRegistry->addBlockRenderer('core/list', new Renderer\Blocks\ListBlock());
|
||||
$blocksRegistry->addBlockRenderer('core/list-item', new Renderer\Blocks\ListItem());
|
||||
$blocksRegistry->addBlockRenderer('core/list', new Renderer\Blocks\List_Block());
|
||||
$blocksRegistry->addBlockRenderer('core/list-item', new Renderer\Blocks\List_Item());
|
||||
$blocksRegistry->addBlockRenderer('core/image', new Renderer\Blocks\Image());
|
||||
$blocksRegistry->addBlockRenderer('core/buttons', new Renderer\Blocks\Buttons(new FlexLayoutRenderer()));
|
||||
$blocksRegistry->addBlockRenderer('core/buttons', new Renderer\Blocks\Buttons(new Flex_Layout_Renderer()));
|
||||
$blocksRegistry->addBlockRenderer('core/button', new Renderer\Blocks\Button());
|
||||
$blocksRegistry->addBlockRenderer('core/group', new Renderer\Blocks\Group());
|
||||
// Render used for all other blocks
|
@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Integrations\Utils;
|
||||
/**
|
||||
* This class should guarantee that our work with the DOMDocument is unified and safe.
|
||||
*/
|
||||
class DomDocumentHelper {
|
||||
class Dom_Document_Helper {
|
||||
private \DOMDocument $dom;
|
||||
|
||||
public function __construct(
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Utils;
|
||||
|
||||
class CdnAssetUrl {
|
||||
class Cdn_Asset_Url {
|
||||
const CDN_URL = 'https://ps.w.org/mailpoet/';
|
||||
/** @var string */
|
||||
private $baseUrl;
|
@ -1,57 +0,0 @@
|
||||
<?php declare(strict_types = 1);
|
||||
|
||||
namespace MailPoet\EmailEditor\Validator;
|
||||
|
||||
use MailPoet\EmailEditor\Validator\Schema\AnyOfSchema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\ArraySchema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\BooleanSchema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\IntegerSchema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\NullSchema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\NumberSchema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\ObjectSchema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\OneOfSchema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\StringSchema;
|
||||
|
||||
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/
|
||||
class Builder {
|
||||
public static function string(): StringSchema {
|
||||
return new StringSchema();
|
||||
}
|
||||
|
||||
public static function number(): NumberSchema {
|
||||
return new NumberSchema();
|
||||
}
|
||||
|
||||
public static function integer(): IntegerSchema {
|
||||
return new IntegerSchema();
|
||||
}
|
||||
|
||||
public static function boolean(): BooleanSchema {
|
||||
return new BooleanSchema();
|
||||
}
|
||||
|
||||
public static function null(): NullSchema {
|
||||
return new NullSchema();
|
||||
}
|
||||
|
||||
public static function array(Schema $items = null): ArraySchema {
|
||||
$array = new ArraySchema();
|
||||
return $items ? $array->items($items) : $array;
|
||||
}
|
||||
|
||||
/** @param array<string, Schema>|null $properties */
|
||||
public static function object(array $properties = null): ObjectSchema {
|
||||
$object = new ObjectSchema();
|
||||
return $properties === null ? $object : $object->properties($properties);
|
||||
}
|
||||
|
||||
/** @param Schema[] $schemas */
|
||||
public static function oneOf(array $schemas): OneOfSchema {
|
||||
return new OneOfSchema($schemas);
|
||||
}
|
||||
|
||||
/** @param Schema[] $schemas */
|
||||
public static function anyOf(array $schemas): AnyOfSchema {
|
||||
return new AnyOfSchema($schemas);
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema;
|
||||
|
||||
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#oneof-and-anyof
|
||||
class AnyOfSchema extends Schema {
|
||||
class Any_Of_Schema extends Schema {
|
||||
protected $schema = [
|
||||
'anyOf' => [],
|
||||
];
|
@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema;
|
||||
|
||||
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#arrays
|
||||
class ArraySchema extends Schema {
|
||||
class Array_Schema extends Schema {
|
||||
protected $schema = [
|
||||
'type' => 'array',
|
||||
];
|
@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema;
|
||||
|
||||
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#primitive-types
|
||||
class BooleanSchema extends Schema {
|
||||
class Boolean_Schema extends Schema {
|
||||
protected $schema = [
|
||||
'type' => 'boolean',
|
||||
];
|
@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema;
|
||||
|
||||
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#numbers
|
||||
class IntegerSchema extends Schema {
|
||||
class Integer_Schema extends Schema {
|
||||
protected $schema = [
|
||||
'type' => 'integer',
|
||||
];
|
@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema;
|
||||
|
||||
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#primitive-types
|
||||
class NullSchema extends Schema {
|
||||
class Null_Schema extends Schema {
|
||||
protected $schema = [
|
||||
'type' => 'null',
|
||||
];
|
@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema;
|
||||
|
||||
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#numbers
|
||||
class NumberSchema extends Schema {
|
||||
class Number_Schema extends Schema {
|
||||
protected $schema = [
|
||||
'type' => 'number',
|
||||
];
|
@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema;
|
||||
|
||||
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#objects
|
||||
class ObjectSchema extends Schema {
|
||||
class Object_Schema extends Schema {
|
||||
protected $schema = [
|
||||
'type' => 'object',
|
||||
];
|
@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema;
|
||||
|
||||
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#oneof-and-anyof
|
||||
class OneOfSchema extends Schema {
|
||||
class One_Of_Schema extends Schema {
|
||||
protected $schema = [
|
||||
'oneOf' => [],
|
||||
];
|
@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema;
|
||||
|
||||
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#strings
|
||||
class StringSchema extends Schema {
|
||||
class String_Schema extends Schema {
|
||||
protected $schema = [
|
||||
'type' => 'string',
|
||||
];
|
57
packages/php/email-editor/src/Validator/class-builder.php
Normal file
57
packages/php/email-editor/src/Validator/class-builder.php
Normal file
@ -0,0 +1,57 @@
|
||||
<?php declare(strict_types = 1);
|
||||
|
||||
namespace MailPoet\EmailEditor\Validator;
|
||||
|
||||
use MailPoet\EmailEditor\Validator\Schema\Any_Of_Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\Array_Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\Boolean_Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\Integer_Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\Null_Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\Number_Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\Object_Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\One_Of_Schema;
|
||||
use MailPoet\EmailEditor\Validator\Schema\String_Schema;
|
||||
|
||||
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/
|
||||
class Builder {
|
||||
public static function string(): String_Schema {
|
||||
return new String_Schema();
|
||||
}
|
||||
|
||||
public static function number(): Number_Schema {
|
||||
return new Number_Schema();
|
||||
}
|
||||
|
||||
public static function integer(): Integer_Schema {
|
||||
return new Integer_Schema();
|
||||
}
|
||||
|
||||
public static function boolean(): Boolean_Schema {
|
||||
return new Boolean_Schema();
|
||||
}
|
||||
|
||||
public static function null(): Null_Schema {
|
||||
return new Null_Schema();
|
||||
}
|
||||
|
||||
public static function array(Schema $items = null): Array_Schema {
|
||||
$array = new Array_Schema();
|
||||
return $items ? $array->items($items) : $array;
|
||||
}
|
||||
|
||||
/** @param array<string, Schema>|null $properties */
|
||||
public static function object(array $properties = null): Object_Schema {
|
||||
$object = new Object_Schema();
|
||||
return $properties === null ? $object : $object->properties($properties);
|
||||
}
|
||||
|
||||
/** @param Schema[] $schemas */
|
||||
public static function oneOf(array $schemas): One_Of_Schema {
|
||||
return new One_Of_Schema($schemas);
|
||||
}
|
||||
|
||||
/** @param Schema[] $schemas */
|
||||
public static function anyOf(array $schemas): Any_Of_Schema {
|
||||
return new Any_Of_Schema($schemas);
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator;
|
||||
use MailPoet\UnexpectedValueException;
|
||||
use WP_Error;
|
||||
|
||||
class ValidationException extends UnexpectedValueException {
|
||||
class Validation_Exception extends UnexpectedValueException {
|
||||
/** @var WP_Error */
|
||||
protected $wpError;
|
||||
|
@ -39,7 +39,7 @@ class Validator {
|
||||
public function validateSchemaArray(array $schema, $value, string $paramName = 'value') {
|
||||
$result = $this->validateAndSanitizeValueFromSchema($value, $schema, $paramName);
|
||||
if ($result instanceof WP_Error) {
|
||||
throw ValidationException::createFromWpError($result);
|
||||
throw Validation_Exception::createFromWpError($result);
|
||||
}
|
||||
return $result;
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
use _generated\UnitTesterActions;
|
||||
|
||||
/**
|
||||
* Inherited Methods
|
||||
@ -18,7 +19,7 @@
|
||||
*/
|
||||
class UnitTester extends \Codeception\Actor
|
||||
{
|
||||
use _generated\UnitTesterActions;
|
||||
use UnitTesterActions;
|
||||
|
||||
/**
|
||||
* Define custom actions here
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine;
|
||||
|
||||
class EmailEditorTest extends \MailPoetTest {
|
||||
/** @var EmailEditor */
|
||||
class Email_Editor_Test extends \MailPoetTest {
|
||||
/** @var Email_Editor */
|
||||
private $emailEditor;
|
||||
|
||||
/** @var callable */
|
||||
@ -11,7 +11,7 @@ class EmailEditorTest extends \MailPoetTest {
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->emailEditor = $this->diContainer->get(EmailEditor::class);
|
||||
$this->emailEditor = $this->diContainer->get(Email_Editor::class);
|
||||
$this->postRegisterCallback = function ($postTypes) {
|
||||
$postTypes[] = [
|
||||
'name' => 'custom_email_type',
|
@ -4,16 +4,16 @@ namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
|
||||
|
||||
use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\Text;
|
||||
|
||||
require_once __DIR__ . '/DummyBlockRenderer.php';
|
||||
require_once __DIR__ . '/Dummy_Block_Renderer.php';
|
||||
|
||||
class BlocksRegistryTest extends \MailPoetTest {
|
||||
class Blocks_Registry_Test extends \MailPoetTest {
|
||||
|
||||
/** @var BlocksRegistry */
|
||||
/** @var Blocks_Registry */
|
||||
private $registry;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->registry = $this->diContainer->get(BlocksRegistry::class);
|
||||
$this->registry = $this->diContainer->get(Blocks_Registry::class);
|
||||
}
|
||||
|
||||
public function testItReturnsNullForUnknownRenderer() {
|
@ -2,21 +2,21 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\Email_Editor;
|
||||
use MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypesController;
|
||||
|
||||
require_once __DIR__ . '/DummyBlockRenderer.php';
|
||||
require_once __DIR__ . '/Dummy_Block_Renderer.php';
|
||||
|
||||
class ContentRendererTest extends \MailPoetTest {
|
||||
private ContentRenderer $renderer;
|
||||
class Content_Renderer_Test extends \MailPoetTest {
|
||||
private Content_Renderer $renderer;
|
||||
|
||||
private \WP_Post $emailPost;
|
||||
|
||||
public function _before(): void {
|
||||
parent::_before();
|
||||
$this->diContainer->get(EmailEditor::class)->initialize();
|
||||
$this->diContainer->get(Email_Editor::class)->initialize();
|
||||
$this->diContainer->get(BlockTypesController::class)->initialize();
|
||||
$this->renderer = $this->diContainer->get(ContentRenderer::class);
|
||||
$this->renderer = $this->diContainer->get(Content_Renderer::class);
|
||||
$this->emailPost = $this->tester->createPost([
|
||||
'post_content' => '<!-- wp:paragraph --><p>Hello!</p><!-- /wp:paragraph -->',
|
||||
]);
|
@ -2,10 +2,10 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class DummyBlockRenderer implements BlockRenderer {
|
||||
public function render(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
class Dummy_Block_Renderer implements Block_Renderer {
|
||||
public function render(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
|
||||
return $parsedBlock['innerHtml'];
|
||||
}
|
||||
}
|
@ -2,23 +2,23 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\DummyBlockRenderer;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Dummy_Block_Renderer;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
require_once __DIR__ . '/../DummyBlockRenderer.php';
|
||||
require_once __DIR__ . '/../Dummy_Block_Renderer.php';
|
||||
|
||||
class FlexLayoutRendererTest extends \MailPoetTest {
|
||||
class Flex_Layout_Renderer_Test extends \MailPoetTest {
|
||||
|
||||
/** @var FlexLayoutRenderer */
|
||||
/** @var Flex_Layout_Renderer */
|
||||
private $renderer;
|
||||
|
||||
/** @var SettingsController */
|
||||
/** @var Settings_Controller */
|
||||
private $settingsController;
|
||||
|
||||
public function _before(): void {
|
||||
parent::_before();
|
||||
$this->settingsController = $this->diContainer->get(SettingsController::class);
|
||||
$this->renderer = new FlexLayoutRenderer();
|
||||
$this->settingsController = $this->diContainer->get(Settings_Controller::class);
|
||||
$this->renderer = new Flex_Layout_Renderer();
|
||||
register_block_type('dummy/block', []);
|
||||
add_filter('render_block', [$this, 'renderDummyBlock'], 10, 2);
|
||||
}
|
||||
@ -223,7 +223,7 @@ class FlexLayoutRendererTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function renderDummyBlock($blockContent, $parsedBlock): string {
|
||||
$dummyRenderer = new DummyBlockRenderer();
|
||||
$dummyRenderer = new Dummy_Block_Renderer();
|
||||
return $dummyRenderer->render($blockContent, $parsedBlock, $this->settingsController);
|
||||
}
|
||||
|
@ -2,18 +2,18 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\ThemeController;
|
||||
use MailPoet\EmailEditor\Engine\Email_Editor;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
use MailPoet\EmailEditor\Engine\Theme_Controller;
|
||||
|
||||
class RendererTest extends \MailPoetTest {
|
||||
class Renderer_Test extends \MailPoetTest {
|
||||
private Renderer $renderer;
|
||||
|
||||
private \WP_Post $emailPost;
|
||||
|
||||
public function _before(): void {
|
||||
parent::_before();
|
||||
$this->diContainer->get(EmailEditor::class)->initialize();
|
||||
$this->diContainer->get(Email_Editor::class)->initialize();
|
||||
$this->renderer = $this->diContainer->get(Renderer::class);
|
||||
$styles = [
|
||||
'spacing' => [
|
||||
@ -35,9 +35,9 @@ class RendererTest extends \MailPoetTest {
|
||||
$themeJsonMock->method('get_data')->willReturn([
|
||||
'styles' => $styles,
|
||||
]);
|
||||
$settingsControllerMock = $this->createMock(SettingsController::class);
|
||||
$settingsControllerMock = $this->createMock(Settings_Controller::class);
|
||||
$settingsControllerMock->method('getEmailStyles')->willReturn($styles);
|
||||
$themeControllerMock = $this->createMock(ThemeController::class);
|
||||
$themeControllerMock = $this->createMock(Theme_Controller::class);
|
||||
$themeControllerMock->method('getTheme')->willReturn($themeJsonMock);
|
||||
$themeControllerMock->method('getStyles')->willReturn($styles);
|
||||
$themeControllerMock->method('getLayoutSettings')->willReturn(['contentSize' => '660px']);
|
@ -2,12 +2,12 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine;
|
||||
|
||||
class ThemeControllerTest extends \MailPoetTest {
|
||||
private ThemeController $themeController;
|
||||
class Theme_Controller_Test extends \MailPoetTest {
|
||||
private Theme_Controller $themeController;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->themeController = $this->diContainer->get(ThemeController::class);
|
||||
$this->themeController = $this->diContainer->get(Theme_Controller::class);
|
||||
}
|
||||
|
||||
public function testItGeneratesCssStylesForRenderer() {
|
@ -2,10 +2,10 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Email_Editor;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class ButtonTest extends \MailPoetTest {
|
||||
class Button_Test extends \MailPoetTest {
|
||||
/** @var Button */
|
||||
private $buttonRenderer;
|
||||
|
||||
@ -38,13 +38,13 @@ class ButtonTest extends \MailPoetTest {
|
||||
],
|
||||
];
|
||||
|
||||
/** @var SettingsController */
|
||||
/** @var Settings_Controller */
|
||||
private $settingsController;
|
||||
|
||||
public function _before(): void {
|
||||
$this->diContainer->get(EmailEditor::class)->initialize();
|
||||
$this->diContainer->get(Email_Editor::class)->initialize();
|
||||
$this->buttonRenderer = new Button();
|
||||
$this->settingsController = $this->diContainer->get(SettingsController::class);
|
||||
$this->settingsController = $this->diContainer->get(Settings_Controller::class);
|
||||
}
|
||||
|
||||
public function testItRendersLink(): void {
|
@ -2,10 +2,10 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Email_Editor;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class ColumnTest extends \MailPoetTest {
|
||||
class Column_Test extends \MailPoetTest {
|
||||
/** @var Column */
|
||||
private $columnRenderer;
|
||||
|
||||
@ -35,13 +35,13 @@ class ColumnTest extends \MailPoetTest {
|
||||
],
|
||||
];
|
||||
|
||||
/** @var SettingsController */
|
||||
/** @var Settings_Controller */
|
||||
private $settingsController;
|
||||
|
||||
public function _before() {
|
||||
$this->diContainer->get(EmailEditor::class)->initialize();
|
||||
$this->diContainer->get(Email_Editor::class)->initialize();
|
||||
$this->columnRenderer = new Column();
|
||||
$this->settingsController = $this->diContainer->get(SettingsController::class);
|
||||
$this->settingsController = $this->diContainer->get(Settings_Controller::class);
|
||||
}
|
||||
|
||||
public function testItRendersColumnContent() {
|
@ -2,10 +2,10 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Email_Editor;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class ColumnsTest extends \MailPoetTest {
|
||||
class Columns_Test extends \MailPoetTest {
|
||||
/** @var Columns */
|
||||
private $columnsRenderer;
|
||||
|
||||
@ -42,13 +42,13 @@ class ColumnsTest extends \MailPoetTest {
|
||||
],
|
||||
];
|
||||
|
||||
/** @var SettingsController */
|
||||
/** @var Settings_Controller */
|
||||
private $settingsController;
|
||||
|
||||
public function _before() {
|
||||
$this->diContainer->get(EmailEditor::class)->initialize();
|
||||
$this->diContainer->get(Email_Editor::class)->initialize();
|
||||
$this->columnsRenderer = new Columns();
|
||||
$this->settingsController = $this->diContainer->get(SettingsController::class);
|
||||
$this->settingsController = $this->diContainer->get(Settings_Controller::class);
|
||||
}
|
||||
|
||||
public function testItRendersInnerColumn() {
|
@ -2,10 +2,10 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Email_Editor;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class HeadingTest extends \MailPoetTest {
|
||||
class Heading_Test extends \MailPoetTest {
|
||||
/** @var Text */
|
||||
private $headingRenderer;
|
||||
|
||||
@ -34,13 +34,13 @@ class HeadingTest extends \MailPoetTest {
|
||||
],
|
||||
];
|
||||
|
||||
/** @var SettingsController */
|
||||
/** @var Settings_Controller */
|
||||
private $settingsController;
|
||||
|
||||
public function _before() {
|
||||
$this->diContainer->get(EmailEditor::class)->initialize();
|
||||
$this->diContainer->get(Email_Editor::class)->initialize();
|
||||
$this->headingRenderer = new Text();
|
||||
$this->settingsController = $this->diContainer->get(SettingsController::class);
|
||||
$this->settingsController = $this->diContainer->get(Settings_Controller::class);
|
||||
}
|
||||
|
||||
public function testItRendersContent(): void {
|
@ -2,10 +2,10 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Email_Editor;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class ImageTest extends \MailPoetTest {
|
||||
class Image_Test extends \MailPoetTest {
|
||||
/** @var Image */
|
||||
private $imageRenderer;
|
||||
|
||||
@ -32,13 +32,13 @@ class ImageTest extends \MailPoetTest {
|
||||
'innerContent' => [],
|
||||
];
|
||||
|
||||
/** @var SettingsController */
|
||||
/** @var Settings_Controller */
|
||||
private $settingsController;
|
||||
|
||||
public function _before() {
|
||||
$this->diContainer->get(EmailEditor::class)->initialize();
|
||||
$this->diContainer->get(Email_Editor::class)->initialize();
|
||||
$this->imageRenderer = new Image();
|
||||
$this->settingsController = $this->diContainer->get(SettingsController::class);
|
||||
$this->settingsController = $this->diContainer->get(Settings_Controller::class);
|
||||
}
|
||||
|
||||
public function testItRendersMandatoryImageStyles(): void {
|
@ -2,11 +2,11 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Email_Editor;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class ListBlockTest extends \MailPoetTest {
|
||||
/** @var ListBlock */
|
||||
class List_Block_Test extends \MailPoetTest {
|
||||
/** @var List_Block */
|
||||
private $listRenderer;
|
||||
|
||||
/** @var array */
|
||||
@ -41,13 +41,13 @@ class ListBlockTest extends \MailPoetTest {
|
||||
],
|
||||
];
|
||||
|
||||
/** @var SettingsController */
|
||||
/** @var Settings_Controller */
|
||||
private $settingsController;
|
||||
|
||||
public function _before() {
|
||||
$this->diContainer->get(EmailEditor::class)->initialize();
|
||||
$this->listRenderer = new ListBlock();
|
||||
$this->settingsController = $this->diContainer->get(SettingsController::class);
|
||||
$this->diContainer->get(Email_Editor::class)->initialize();
|
||||
$this->listRenderer = new List_Block();
|
||||
$this->settingsController = $this->diContainer->get(Settings_Controller::class);
|
||||
}
|
||||
|
||||
public function testItRendersListContent(): void {
|
@ -2,10 +2,10 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Email_Editor;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class ParagraphTest extends \MailPoetTest {
|
||||
class Paragraph_Test extends \MailPoetTest {
|
||||
/** @var Text */
|
||||
private $paragraphRenderer;
|
||||
|
||||
@ -26,13 +26,13 @@ class ParagraphTest extends \MailPoetTest {
|
||||
],
|
||||
];
|
||||
|
||||
/** @var SettingsController */
|
||||
/** @var Settings_Controller */
|
||||
private $settingsController;
|
||||
|
||||
public function _before() {
|
||||
$this->diContainer->get(EmailEditor::class)->initialize();
|
||||
$this->diContainer->get(Email_Editor::class)->initialize();
|
||||
$this->paragraphRenderer = new Text();
|
||||
$this->settingsController = $this->diContainer->get(SettingsController::class);
|
||||
$this->settingsController = $this->diContainer->get(Settings_Controller::class);
|
||||
}
|
||||
|
||||
public function testItRendersContent(): void {
|
@ -2,18 +2,18 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\Email_Editor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\Renderer;
|
||||
use MailPoet\EmailEditor\Integrations\Core\Initializer;
|
||||
|
||||
class RendererTest extends \MailPoetTest {
|
||||
class Renderer_Test extends \MailPoetTest {
|
||||
/** @var Renderer */
|
||||
private $renderer;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->renderer = $this->diContainer->get(Renderer::class);
|
||||
$this->diContainer->get(EmailEditor::class)->initialize();
|
||||
$this->diContainer->get(Email_Editor::class)->initialize();
|
||||
$this->diContainer->get(Initializer::class)->initialize();
|
||||
}
|
||||
|
@ -2,27 +2,27 @@
|
||||
|
||||
use Codeception\Stub;
|
||||
use MailPoet\EmailEditor\Container;
|
||||
use MailPoet\EmailEditor\Engine\EmailApiController;
|
||||
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\Email_Api_Controller;
|
||||
use MailPoet\EmailEditor\Engine\Email_Editor;
|
||||
use MailPoet\EmailEditor\Engine\Patterns\Patterns;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\BlocksRegistry;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\ContentRenderer;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\HighlightingPostprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\VariablesPostprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\BlocksWidthPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\CleanupPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\SpacingPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\TypographyPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\ProcessManager;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Blocks_Registry;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Content_Renderer;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Highlighting_Postprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Variables_Postprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Blocks_Width_Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Cleanup_Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Spacing_Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Typography_Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Process_Manager;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\Renderer;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Templates\TemplatePreview;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
use MailPoet\EmailEditor\Engine\Templates\Template_Preview;
|
||||
use MailPoet\EmailEditor\Engine\Templates\Templates;
|
||||
use MailPoet\EmailEditor\Engine\Templates\Utils;
|
||||
use MailPoet\EmailEditor\Engine\ThemeController;
|
||||
use MailPoet\EmailEditor\Engine\Theme_Controller;
|
||||
use MailPoet\EmailEditor\Integrations\Core\Initializer;
|
||||
use MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypesController;
|
||||
use MailPoet\EmailEditor\Utils\CdnAssetUrl;
|
||||
use MailPoet\EmailEditor\Utils\Cdn_Asset_Url;
|
||||
|
||||
if ((boolean)getenv('MULTISITE') === true) {
|
||||
// REQUEST_URI needs to be set for WP to load the proper subsite where MailPoet is activated
|
||||
@ -81,11 +81,11 @@ abstract class MailPoetTest extends \Codeception\TestCase\Test { // phpcs:ignore
|
||||
$container->set(Initializer::class, function() {
|
||||
return new Initializer();
|
||||
});
|
||||
$container->set(CdnAssetUrl::class, function() {
|
||||
return new CdnAssetUrl('http://localhost');
|
||||
$container->set(Cdn_Asset_Url::class, function() {
|
||||
return new Cdn_Asset_Url('http://localhost');
|
||||
});
|
||||
$container->set(EmailApiController::class, function() {
|
||||
return new EmailApiController();
|
||||
$container->set(Email_Api_Controller::class, function() {
|
||||
return new Email_Api_Controller();
|
||||
});
|
||||
$container->set(BlockTypesController::class, function() {
|
||||
return $this->createMock(BlockTypesController::class);
|
||||
@ -94,83 +94,83 @@ abstract class MailPoetTest extends \Codeception\TestCase\Test { // phpcs:ignore
|
||||
$container->set(Utils::class, function() {
|
||||
return new Utils();
|
||||
});
|
||||
$container->set(ThemeController::class, function() {
|
||||
return new ThemeController();
|
||||
$container->set(Theme_Controller::class, function() {
|
||||
return new Theme_Controller();
|
||||
});
|
||||
$container->set(SettingsController::class, function ($container) {
|
||||
return new SettingsController($container->get(ThemeController::class));
|
||||
$container->set(Settings_Controller::class, function ($container) {
|
||||
return new Settings_Controller($container->get(Theme_Controller::class));
|
||||
});
|
||||
$container->set(SettingsController::class, function ($container) {
|
||||
return new SettingsController($container->get(ThemeController::class));
|
||||
$container->set(Settings_Controller::class, function ($container) {
|
||||
return new Settings_Controller($container->get(Theme_Controller::class));
|
||||
});
|
||||
$container->set(Templates::class, function ($container) {
|
||||
return new Templates($container->get(Utils::class));
|
||||
});
|
||||
$container->set(TemplatePreview::class, function ($container) {
|
||||
return new TemplatePreview(
|
||||
$container->get(ThemeController::class),
|
||||
$container->get(SettingsController::class),
|
||||
$container->set(Template_Preview::class, function ($container) {
|
||||
return new Template_Preview(
|
||||
$container->get(Theme_Controller::class),
|
||||
$container->get(Settings_Controller::class),
|
||||
$container->get(Templates::class),
|
||||
);
|
||||
});
|
||||
$container->set(Patterns::class, function ($container) {
|
||||
return new Patterns(
|
||||
$container->get(CdnAssetUrl::class),
|
||||
$container->get(Cdn_Asset_Url::class),
|
||||
);
|
||||
});
|
||||
$container->set(CleanupPreprocessor::class, function () {
|
||||
return new CleanupPreprocessor();
|
||||
$container->set(Cleanup_Preprocessor::class, function () {
|
||||
return new Cleanup_Preprocessor();
|
||||
});
|
||||
$container->set(BlocksWidthPreprocessor::class, function () {
|
||||
return new BlocksWidthPreprocessor();
|
||||
$container->set(Blocks_Width_Preprocessor::class, function () {
|
||||
return new Blocks_Width_Preprocessor();
|
||||
});
|
||||
$container->set(TypographyPreprocessor::class, function ($container) {
|
||||
return new TypographyPreprocessor($container->get(SettingsController::class));
|
||||
$container->set(Typography_Preprocessor::class, function ($container) {
|
||||
return new Typography_Preprocessor($container->get(Settings_Controller::class));
|
||||
});
|
||||
$container->set(SpacingPreprocessor::class, function () {
|
||||
return new SpacingPreprocessor();
|
||||
$container->set(Spacing_Preprocessor::class, function () {
|
||||
return new Spacing_Preprocessor();
|
||||
});
|
||||
$container->set(HighlightingPostprocessor::class, function () {
|
||||
return new HighlightingPostprocessor();
|
||||
$container->set(Highlighting_Postprocessor::class, function () {
|
||||
return new Highlighting_Postprocessor();
|
||||
});
|
||||
$container->set(VariablesPostprocessor::class, function ($container) {
|
||||
return new VariablesPostprocessor($container->get(ThemeController::class));
|
||||
$container->set(Variables_Postprocessor::class, function ($container) {
|
||||
return new Variables_Postprocessor($container->get(Theme_Controller::class));
|
||||
});
|
||||
$container->set(ProcessManager::class, function ($container) {
|
||||
return new ProcessManager(
|
||||
$container->get(CleanupPreprocessor::class),
|
||||
$container->get(BlocksWidthPreprocessor::class),
|
||||
$container->get(TypographyPreprocessor::class),
|
||||
$container->get(SpacingPreprocessor::class),
|
||||
$container->get(HighlightingPostprocessor::class),
|
||||
$container->get(VariablesPostprocessor::class),
|
||||
$container->set(Process_Manager::class, function ($container) {
|
||||
return new Process_Manager(
|
||||
$container->get(Cleanup_Preprocessor::class),
|
||||
$container->get(Blocks_Width_Preprocessor::class),
|
||||
$container->get(Typography_Preprocessor::class),
|
||||
$container->get(Spacing_Preprocessor::class),
|
||||
$container->get(Highlighting_Postprocessor::class),
|
||||
$container->get(Variables_Postprocessor::class),
|
||||
);
|
||||
});
|
||||
$container->set(BlocksRegistry::class, function() {
|
||||
return new BlocksRegistry();
|
||||
$container->set(Blocks_Registry::class, function() {
|
||||
return new Blocks_Registry();
|
||||
});
|
||||
$container->set(ContentRenderer::class, function ($container) {
|
||||
return new ContentRenderer(
|
||||
$container->get(ProcessManager::class),
|
||||
$container->get(BlocksRegistry::class),
|
||||
$container->get(SettingsController::class),
|
||||
$container->get(ThemeController::class),
|
||||
$container->set(Content_Renderer::class, function ($container) {
|
||||
return new Content_Renderer(
|
||||
$container->get(Process_Manager::class),
|
||||
$container->get(Blocks_Registry::class),
|
||||
$container->get(Settings_Controller::class),
|
||||
$container->get(Theme_Controller::class),
|
||||
);
|
||||
});
|
||||
$container->set(Renderer::class, function ($container) {
|
||||
return new Renderer(
|
||||
$container->get(ContentRenderer::class),
|
||||
$container->get(Content_Renderer::class),
|
||||
$container->get(Templates::class),
|
||||
$container->get(ThemeController::class),
|
||||
$container->get(Theme_Controller::class),
|
||||
);
|
||||
});
|
||||
$container->set(EmailEditor::class, function ($container) {
|
||||
return new EmailEditor(
|
||||
$container->get(EmailApiController::class),
|
||||
$container->set(Email_Editor::class, function ($container) {
|
||||
return new Email_Editor(
|
||||
$container->get(Email_Api_Controller::class),
|
||||
$container->get(Templates::class),
|
||||
$container->get(TemplatePreview::class),
|
||||
$container->get(Template_Preview::class),
|
||||
$container->get(Patterns::class),
|
||||
$container->get(SettingsController::class),
|
||||
$container->get(Settings_Controller::class),
|
||||
);
|
||||
});
|
||||
|
||||
|
@ -6,7 +6,7 @@ use Exception;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use stdClass;
|
||||
|
||||
class ContainerTest extends TestCase {
|
||||
class Container_Test extends TestCase {
|
||||
public function testSetAndGetService(): void {
|
||||
$container = new Container();
|
||||
|
@ -2,15 +2,15 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\Postprocessors;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\HighlightingPostprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Highlighting_Postprocessor;
|
||||
|
||||
class HighlightingPostprocessorTest extends \MailPoetUnitTest {
|
||||
/** @var HighlightingPostprocessor */
|
||||
class Highlighting_Postprocessor_Test extends \MailPoetUnitTest {
|
||||
/** @var Highlighting_Postprocessor */
|
||||
private $postprocessor;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->postprocessor = new HighlightingPostprocessor();
|
||||
$this->postprocessor = new Highlighting_Postprocessor();
|
||||
}
|
||||
|
||||
public function testItReplacesHtmlElements(): void {
|
@ -2,20 +2,20 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\Postprocessors;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\VariablesPostprocessor;
|
||||
use MailPoet\EmailEditor\Engine\ThemeController;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Variables_Postprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Theme_Controller;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
|
||||
class VariablesPostprocessorTest extends \MailPoetUnitTest {
|
||||
private VariablesPostprocessor $postprocessor;
|
||||
class Variables_Postprocessor_Test extends \MailPoetUnitTest {
|
||||
private Variables_Postprocessor $postprocessor;
|
||||
|
||||
/** @var ThemeController & MockObject */
|
||||
/** @var Theme_Controller & MockObject */
|
||||
private $themeControllerMock;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->themeControllerMock = $this->createMock(ThemeController::class);
|
||||
$this->postprocessor = new VariablesPostprocessor($this->themeControllerMock);
|
||||
$this->themeControllerMock = $this->createMock(Theme_Controller::class);
|
||||
$this->postprocessor = new Variables_Postprocessor($this->themeControllerMock);
|
||||
}
|
||||
|
||||
public function testItReplacesVariablesInStyleAttributes(): void {
|
@ -2,11 +2,11 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\Preprocessors;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\BlocksWidthPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Blocks_Width_Preprocessor;
|
||||
|
||||
class BlocksWidthPreprocessorTest extends \MailPoetUnitTest {
|
||||
class Blocks_Width_Preprocessor_Test extends \MailPoetUnitTest {
|
||||
|
||||
/** @var BlocksWidthPreprocessor */
|
||||
/** @var Blocks_Width_Preprocessor */
|
||||
private $preprocessor;
|
||||
|
||||
/** @var array{contentSize: string} */
|
||||
@ -17,7 +17,7 @@ class BlocksWidthPreprocessorTest extends \MailPoetUnitTest {
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->preprocessor = new BlocksWidthPreprocessor();
|
||||
$this->preprocessor = new Blocks_Width_Preprocessor();
|
||||
$this->layout = ['contentSize' => '660px'];
|
||||
$this->styles = ['spacing' => ['padding' => ['left' => '10px', 'right' => '10px', 'top' => '10px', 'bottom' => '10px'], 'blockGap' => '10px']];
|
||||
}
|
@ -2,9 +2,9 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\Preprocessors;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\CleanupPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Cleanup_Preprocessor;
|
||||
|
||||
class CleanupPreprocessorTest extends \MailPoetUnitTest {
|
||||
class Cleanup_Preprocessor_Test extends \MailPoetUnitTest {
|
||||
|
||||
private const PARAGRAPH_BLOCK = [
|
||||
'blockName' => 'core/paragraph',
|
||||
@ -22,7 +22,7 @@ class CleanupPreprocessorTest extends \MailPoetUnitTest {
|
||||
]],
|
||||
];
|
||||
|
||||
/** @var CleanupPreprocessor */
|
||||
/** @var Cleanup_Preprocessor */
|
||||
private $preprocessor;
|
||||
|
||||
/** @var array{contentSize: string} */
|
||||
@ -33,7 +33,7 @@ class CleanupPreprocessorTest extends \MailPoetUnitTest {
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->preprocessor = new CleanupPreprocessor();
|
||||
$this->preprocessor = new Cleanup_Preprocessor();
|
||||
$this->layout = ['contentSize' => '660px'];
|
||||
$this->styles = ['spacing' => ['padding' => ['left' => '10px', 'right' => '10px', 'top' => '10px', 'bottom' => '10px'], 'blockGap' => '10px']];
|
||||
}
|
@ -2,11 +2,11 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\Preprocessors;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\SpacingPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Spacing_Preprocessor;
|
||||
|
||||
class SpacingPreprocessorTest extends \MailPoetUnitTest {
|
||||
class Spacing_Preprocessor_Test extends \MailPoetUnitTest {
|
||||
|
||||
/** @var SpacingPreprocessor */
|
||||
/** @var Spacing_Preprocessor */
|
||||
private $preprocessor;
|
||||
|
||||
/** @var array{contentSize: string} */
|
||||
@ -17,7 +17,7 @@ class SpacingPreprocessorTest extends \MailPoetUnitTest {
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->preprocessor = new SpacingPreprocessor();
|
||||
$this->preprocessor = new Spacing_Preprocessor();
|
||||
$this->layout = ['contentSize' => '660px'];
|
||||
$this->styles = ['spacing' => ['padding' => ['left' => '10px', 'right' => '10px', 'top' => '10px', 'bottom' => '10px'], 'blockGap' => '10px']];
|
||||
}
|
@ -2,12 +2,12 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer\Preprocessors;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\TypographyPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Typography_Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Settings_Controller;
|
||||
|
||||
class TypographyPreprocessorTest extends \MailPoetUnitTest {
|
||||
class Typography_Preprocessor_Test extends \MailPoetUnitTest {
|
||||
|
||||
/** @var TypographyPreprocessor */
|
||||
/** @var Typography_Preprocessor */
|
||||
private $preprocessor;
|
||||
|
||||
/** @var array{contentSize: string} */
|
||||
@ -18,7 +18,7 @@ class TypographyPreprocessorTest extends \MailPoetUnitTest {
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$settingsMock = $this->createMock(SettingsController::class);
|
||||
$settingsMock = $this->createMock(Settings_Controller::class);
|
||||
$themeMock = $this->createMock(\WP_Theme_JSON::class);
|
||||
$themeMock->method('get_data')->willReturn([
|
||||
'styles' => [
|
||||
@ -52,7 +52,7 @@ class TypographyPreprocessorTest extends \MailPoetUnitTest {
|
||||
$settingsMock->method('translateSlugToFontSize')->willReturnCallback(function($slug) {
|
||||
return str_replace('slug-', '', $slug);
|
||||
});
|
||||
$this->preprocessor = new TypographyPreprocessor($settingsMock);
|
||||
$this->preprocessor = new Typography_Preprocessor($settingsMock);
|
||||
$this->layout = ['contentSize' => '660px'];
|
||||
$this->styles = ['spacing' => ['padding' => ['left' => '10px', 'right' => '10px', 'top' => '10px', 'bottom' => '10px'], 'blockGap' => '10px']];
|
||||
}
|
@ -2,15 +2,15 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine\Renderer;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\HighlightingPostprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\VariablesPostprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\BlocksWidthPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\CleanupPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\SpacingPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\TypographyPreprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\ProcessManager;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Highlighting_Postprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Variables_Postprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Blocks_Width_Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Cleanup_Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Spacing_Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Typography_Preprocessor;
|
||||
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Process_Manager;
|
||||
|
||||
class ProcessManagerTest extends \MailPoetUnitTest {
|
||||
class Process_Manager_Test extends \MailPoetUnitTest {
|
||||
public function testItCallsPreprocessorsProperly(): void {
|
||||
$layout = [
|
||||
'contentSize' => '600px',
|
||||
@ -27,25 +27,25 @@ class ProcessManagerTest extends \MailPoetUnitTest {
|
||||
],
|
||||
];
|
||||
|
||||
$cleanup = $this->createMock(CleanupPreprocessor::class);
|
||||
$cleanup = $this->createMock(Cleanup_Preprocessor::class);
|
||||
$cleanup->expects($this->once())->method('preprocess')->willReturn([]);
|
||||
|
||||
$blocksWidth = $this->createMock(BlocksWidthPreprocessor::class);
|
||||
$blocksWidth = $this->createMock(Blocks_Width_Preprocessor::class);
|
||||
$blocksWidth->expects($this->once())->method('preprocess')->willReturn([]);
|
||||
|
||||
$typography = $this->createMock(TypographyPreprocessor::class);
|
||||
$typography = $this->createMock(Typography_Preprocessor::class);
|
||||
$typography->expects($this->once())->method('preprocess')->willReturn([]);
|
||||
|
||||
$spacing = $this->createMock(SpacingPreprocessor::class);
|
||||
$spacing = $this->createMock(Spacing_Preprocessor::class);
|
||||
$spacing->expects($this->once())->method('preprocess')->willReturn([]);
|
||||
|
||||
$highlighting = $this->createMock(HighlightingPostprocessor::class);
|
||||
$highlighting = $this->createMock(Highlighting_Postprocessor::class);
|
||||
$highlighting->expects($this->once())->method('postprocess')->willReturn('');
|
||||
|
||||
$variables = $this->createMock(VariablesPostprocessor::class);
|
||||
$variables = $this->createMock(Variables_Postprocessor::class);
|
||||
$variables->expects($this->once())->method('postprocess')->willReturn('');
|
||||
|
||||
$processManager = new ProcessManager($cleanup, $blocksWidth, $typography, $spacing, $highlighting, $variables);
|
||||
$processManager = new Process_Manager($cleanup, $blocksWidth, $typography, $spacing, $highlighting, $variables);
|
||||
$this->assertEquals([], $processManager->preprocess([], $layout, $styles));
|
||||
$this->assertEmpty($processManager->postprocess(''));
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Engine;
|
||||
|
||||
class SettingsControllerTest extends \MailPoetUnitTest {
|
||||
class Settings_Controller_Test extends \MailPoetUnitTest {
|
||||
public function testItGetsCorrectLayoutWidthWithoutPadding(): void {
|
||||
$themeJsonMock = $this->createMock(\WP_Theme_JSON::class);
|
||||
$themeJsonMock->method('get_data')->willReturn([
|
||||
@ -15,13 +15,13 @@ class SettingsControllerTest extends \MailPoetUnitTest {
|
||||
],
|
||||
],
|
||||
]);
|
||||
$themeController = $this->createMock(ThemeController::class);
|
||||
$themeController = $this->createMock(Theme_Controller::class);
|
||||
$themeController->method('getTheme')->willReturn($themeJsonMock);
|
||||
$themeController->method('getLayoutSettings')->willReturn([
|
||||
"contentSize" => "660px",
|
||||
"wideSize" => null,
|
||||
]);
|
||||
$settingsController = new SettingsController($themeController);
|
||||
$settingsController = new Settings_Controller($themeController);
|
||||
$layoutWidth = $settingsController->getLayoutWidthWithoutPadding();
|
||||
// default width is 660px and if we subtract padding from left and right we must get the correct value
|
||||
$expectedWidth = 660 - 10 * 2;
|
@ -2,10 +2,10 @@
|
||||
|
||||
namespace MailPoet\EmailEditor\Integrations\Utils;
|
||||
|
||||
class DomDocumentHelperTest extends \MailPoetUnitTest {
|
||||
class Dom_Document_Helper_Test extends \MailPoetUnitTest {
|
||||
public function testItFindsElement(): void {
|
||||
$html = '<div><p>Some text</p></div>';
|
||||
$domDocumentHelper = new DomDocumentHelper($html);
|
||||
$domDocumentHelper = new Dom_Document_Helper($html);
|
||||
$element = $domDocumentHelper->findElement('p');
|
||||
$empty = $domDocumentHelper->findElement('span');
|
||||
$this->assertInstanceOf(\DOMElement::class, $element);
|
||||
@ -15,7 +15,7 @@ class DomDocumentHelperTest extends \MailPoetUnitTest {
|
||||
|
||||
public function testItGetsAttributeValue(): void {
|
||||
$html = '<div><p class="some-class">Some text</p></div>';
|
||||
$domDocumentHelper = new DomDocumentHelper($html);
|
||||
$domDocumentHelper = new Dom_Document_Helper($html);
|
||||
$element = $domDocumentHelper->findElement('p');
|
||||
$this->assertInstanceOf(\DOMElement::class, $element);
|
||||
$this->assertEquals('some-class', $domDocumentHelper->getAttributeValue($element, 'class'));
|
||||
@ -23,14 +23,14 @@ class DomDocumentHelperTest extends \MailPoetUnitTest {
|
||||
|
||||
public function testItGetsOuterHtml(): void {
|
||||
$html = '<div><span>Some <strong>text</strong></span></div>';
|
||||
$domDocumentHelper = new DomDocumentHelper($html);
|
||||
$domDocumentHelper = new Dom_Document_Helper($html);
|
||||
$element = $domDocumentHelper->findElement('span');
|
||||
$this->assertInstanceOf(\DOMElement::class, $element);
|
||||
$this->assertEquals('<span>Some <strong>text</strong></span>', $domDocumentHelper->getOuterHtml($element));
|
||||
|
||||
// testings encoding of special characters
|
||||
$html = '<div><img src="https://test.com/DALL·E-A®∑oecasƒ-803x1024.jpg"></div>';
|
||||
$domDocumentHelper = new DomDocumentHelper($html);
|
||||
$domDocumentHelper = new Dom_Document_Helper($html);
|
||||
$element = $domDocumentHelper->findElement('img');
|
||||
$this->assertInstanceOf(\DOMElement::class, $element);
|
||||
$this->assertEquals('<img src="https://test.com/DALL%C2%B7E-A%C2%AE%E2%88%91oecas%C6%92-803x1024.jpg">', $domDocumentHelper->getOuterHtml($element));
|
||||
@ -38,7 +38,7 @@ class DomDocumentHelperTest extends \MailPoetUnitTest {
|
||||
|
||||
public function testItGetsAttributeValueByTagName(): void {
|
||||
$html = '<div><p class="some-class">Some text</p><p class="second-paragraph"></p></div>';
|
||||
$domDocumentHelper = new DomDocumentHelper($html);
|
||||
$domDocumentHelper = new Dom_Document_Helper($html);
|
||||
$this->assertEquals('some-class', $domDocumentHelper->getAttributeValueByTagName('p', 'class'));
|
||||
$this->assertNull($domDocumentHelper->getAttributeValueByTagName('span', 'class'));
|
||||
}
|
Reference in New Issue
Block a user