![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-page-builder/Component/Form/Element/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\PageBuilder\Component\Form\Element; use Magento\Catalog\Setup\CategorySetup; use Magento\Framework\App\ObjectManager; use Magento\Framework\Data\FormFactory; use Magento\Framework\View\Asset\Repository; use Magento\Framework\View\Element\UiComponent\ContextInterface; use Magento\Ui\Component\Wysiwyg\ConfigInterface; use Magento\Catalog\Api\CategoryAttributeRepositoryInterface; use Magento\Framework\Exception\NoSuchEntityException; use Magento\PageBuilder\Model\Config as PageBuilderConfig; use Magento\PageBuilder\Model\State as PageBuilderState; use Magento\PageBuilder\Model\Stage\Config as Config; /** * Updates wysiwyg element with Page Builder specific config * * @api */ class Wysiwyg extends \Magento\Ui\Component\Form\Element\Wysiwyg { /** * @var Repository */ private $assetRepo; /** * WYSIWYG Constructor * * @param ContextInterface $context * @param FormFactory $formFactory * @param ConfigInterface $wysiwygConfig * @param CategoryAttributeRepositoryInterface $attrRepository * @param PageBuilderState $pageBuilderState * @param Config $stageConfig * @param array $components * @param array $data * @param array $config * @param PageBuilderConfig|null $pageBuilderConfig * @param bool $overrideSnapshot * @param Repository|null $assetRepo * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.ExcessiveParameterList) * @SuppressWarnings(PHPMD.NPathComplexity) */ public function __construct( ContextInterface $context, FormFactory $formFactory, ConfigInterface $wysiwygConfig, CategoryAttributeRepositoryInterface $attrRepository, PageBuilderState $pageBuilderState, Config $stageConfig, array $components = [], array $data = [], array $config = [], PageBuilderConfig $pageBuilderConfig = null, bool $overrideSnapshot = false, Repository $assetRepo = null ) { $this->assetRepo = $assetRepo ?: ObjectManager::getInstance()->get(Repository::class); $wysiwygConfigData = $config['wysiwygConfigData'] ?? []; // If a dataType is present we're dealing with an attribute if (isset($config['dataType'])) { try { $attribute = $attrRepository->get($data['name']); if ($attribute && $attribute->getEntityTypeId() === CategorySetup::CATEGORY_ENTITY_TYPE_ID) { $config['wysiwyg'] = (bool)$attribute->getIsWysiwygEnabled(); } } catch (NoSuchEntityException $e) { $config['wysiwyg'] = true; } } $isEnablePageBuilder = isset($wysiwygConfigData['is_pagebuilder_enabled']) && !$wysiwygConfigData['is_pagebuilder_enabled'] || false; if (!$pageBuilderState->isPageBuilderInUse($isEnablePageBuilder)) { // This is not done using definition.xml due to https://github.com/magento/magento2/issues/5647 $data['config']['component'] = 'Magento_PageBuilder/js/form/element/wysiwyg'; // Override the templates to include our KnockoutJS code $data['config']['template'] = 'ui/form/field'; $data['config']['elementTmpl'] = 'Magento_PageBuilder/form/element/wysiwyg'; $wysiwygConfigData = $stageConfig->getConfig(); $wysiwygConfigData['pagebuilder_button'] = true; $wysiwygConfigData['pagebuilder_content_snapshot'] = true; $wysiwygConfigData = $this->processBreakpointsIcons($wysiwygConfigData); if ($overrideSnapshot) { $pageBuilderConfig = $pageBuilderConfig ?: ObjectManager::getInstance()->get(PageBuilderConfig::class); $wysiwygConfigData['pagebuilder_content_snapshot'] = $pageBuilderConfig->isContentPreviewEnabled(); } // Add Classes for Page Builder Stage if (isset($wysiwygConfigData['pagebuilder_content_snapshot']) && $wysiwygConfigData['pagebuilder_content_snapshot']) { $data['config']['additionalClasses'] = [ 'admin__field-wide admin__field-page-builder' => true ]; } $data['config']['wysiwygConfigData'] = isset($config['wysiwygConfigData']) ? array_replace_recursive($config['wysiwygConfigData'], $wysiwygConfigData) : $wysiwygConfigData; $wysiwygConfigData['activeEditorPath'] = 'Magento_PageBuilder/pageBuilderAdapter'; $config['wysiwygConfigData'] = $wysiwygConfigData; } parent::__construct($context, $formFactory, $wysiwygConfig, $components, $data, $config); } /** * Process viewport icon paths * * @param array $wysiwygConfigData * @return array */ private function processBreakpointsIcons(array $wysiwygConfigData): array { if ($wysiwygConfigData && isset($wysiwygConfigData['viewports'])) { foreach ($wysiwygConfigData['viewports'] as $breakpoint => $attributes) { if (isset($attributes['icon'])) { $wysiwygConfigData['viewports'][$breakpoint]['icon'] = $this->assetRepo->getUrl( $attributes['icon'] ); } } } return $wysiwygConfigData; } }