![]() 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/cartforge.co/vendor/magento/module-weee/Ui/DataProvider/Product/Form/Modifier/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Weee\Ui\DataProvider\Product\Form\Modifier; use Magento\Catalog\Model\Locator\LocatorInterface; use Magento\Catalog\Model\Product; use Magento\Catalog\Model\ResourceModel\Eav\Attribute as EavAttribute; use Magento\Catalog\Model\ResourceModel\Eav\AttributeFactory as EavAttributeFactory; use Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\AbstractModifier; use Magento\Directory\Helper\Data as DirectoryHelper; use Magento\Directory\Model\Config\Source\Country as SourceCountry; use Magento\Ui\Component\Container; use Magento\Ui\Component\Form\Element\DataType\Price; use Magento\Ui\Component\Form\Element\DataType\Text; use Magento\Ui\Component\Form\Element\Input; use Magento\Ui\Component\Form\Element\Select; use Magento\Ui\Component\Form\Field; use Magento\Weee\Ui\DataProvider\Product\Form\Modifier\Manager\Website as WebsiteManager; /** * Class Weee * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class Weee extends AbstractModifier { const FORM_ELEMENT_WEEE = 'weee'; /** * @var LocatorInterface */ protected $locator; /** * @var SourceCountry */ protected $sourceCountry; /** * @var DirectoryHelper */ protected $directoryHelper; /** * @var EavAttributeFactory */ protected $eavAttributeFactory; /** * @var WebsiteManager */ protected $websiteManager; /** * @var array */ private $countries; /** * @var array */ private $regions; /** * @param LocatorInterface $locator * @param SourceCountry $sourceCountry * @param DirectoryHelper $directoryHelper * @param EavAttributeFactory $eavAttributeFactory * @param WebsiteManager $websiteManager */ public function __construct( LocatorInterface $locator, SourceCountry $sourceCountry, DirectoryHelper $directoryHelper, EavAttributeFactory $eavAttributeFactory, WebsiteManager $websiteManager ) { $this->locator = $locator; $this->sourceCountry = $sourceCountry; $this->directoryHelper = $directoryHelper; $this->eavAttributeFactory = $eavAttributeFactory; $this->websiteManager = $websiteManager; } /** * @inheritdoc */ public function modifyData(array $data) { return $data; } /** * @inheritdoc */ public function modifyMeta(array $meta) { foreach ($meta as $groupCode => $groupConfig) { $meta[$groupCode] = $this->modifyMetaConfig($groupConfig); } return $meta; } /** * Modification of group config * * @param array $metaConfig * @return array */ protected function modifyMetaConfig(array $metaConfig) { if (isset($metaConfig['children'])) { foreach ($metaConfig['children'] as $attributeCode => $attributeConfig) { if ($this->startsWith($attributeCode, self::CONTAINER_PREFIX)) { $metaConfig['children'][$attributeCode] = $this->modifyMetaConfig($attributeConfig); } elseif (!empty($attributeConfig['arguments']['data']['config']['formElement']) && $attributeConfig['arguments']['data']['config']['formElement'] === static::FORM_ELEMENT_WEEE ) { $metaConfig['children'][$attributeCode] = $this->modifyAttributeConfig($attributeCode, $attributeConfig); } } } return $metaConfig; } /** * Modification of attribute config * * @param string $attributeCode * @param array $attributeConfig * @return array * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ protected function modifyAttributeConfig($attributeCode, array $attributeConfig) { /** @var Product $product */ $product = $this->locator->getProduct(); /** @var EavAttribute $eavAttribute */ $eavAttribute = $this->eavAttributeFactory->create()->loadByCode(Product::ENTITY, $attributeCode); return array_replace_recursive($attributeConfig, [ 'arguments' => [ 'data' => [ 'config' => [ 'componentType' => 'dynamicRows', 'formElement' => 'component', 'renderDefaultRecord' => false, 'itemTemplate' => 'record', 'dataScope' => '', 'dndConfig' => [ 'enabled' => false, ], 'required' => (bool)$attributeConfig['arguments']['data']['config']['required'], ], ], ], 'children' => [ 'record' => [ 'arguments' => [ 'data' => [ 'config' => [ 'componentType' => Container::NAME, 'isTemplate' => true, 'is_collection' => true, 'component' => 'Magento_Ui/js/dynamic-rows/record', 'dataScope' => '', ], ], ], 'children' => [ 'countryState' => [ 'arguments' => [ 'data' => [ 'config' => [ 'componentType' => Container::NAME, 'component' => 'Magento_Weee/js/fpt-group', 'visible' => true, 'label' => __('Country/State'), 'showLabel' => false, ], ], ], 'children' => [ 'country' => [ 'arguments' => [ 'data' => [ 'config' => [ 'dataType' => Text::NAME, 'formElement' => Select::NAME, 'componentType' => Field::NAME, 'dataScope' => 'country', 'visible' => true, 'options' => $this->getCountries(), 'validation' => [ 'required-entry' => true, ], 'showLabel' => false, ], ], ], ], 'state' => [ 'arguments' => [ 'data' => [ 'config' => [ 'componentType' => Field::NAME, 'dataType' => Text::NAME, 'formElement' => Select::NAME, 'component' => 'Magento_Weee/js/regions-tax-select', 'dataScope' => 'state', 'options' => $this->getRegions(), 'filterBy' => [ 'field' => 'country' ], 'caption' => '*', 'visible' => true, 'showLabel' => false, ], ], ], ], 'val' => [ 'arguments' => [ 'data' => [ 'config' => [ 'componentType' => Field::NAME, 'formElement' => Input::NAME, 'dataType' => Text::NAME, 'enableLabel' => false, 'visible' => true, 'additionalClasses' => 'weee_hidden', 'validation' => [ 'validate-fpt-group' => true ], 'showLabel' => false, ], ], ], ], ], ], 'value' => [ 'arguments' => [ 'data' => [ 'config' => [ 'componentType' => Field::NAME, 'formElement' => Input::NAME, 'dataType' => Price::NAME, 'label' => __('Tax'), 'enableLabel' => true, 'dataScope' => 'value', 'validation' => [ 'required-entry' => true ], 'showLabel' => false, ], ], ], ], 'website_id' => [ 'arguments' => [ 'data' => [ 'config' => [ 'dataType' => Text::NAME, 'formElement' => Select::NAME, 'componentType' => Field::NAME, 'dataScope' => 'website_id', 'label' => __('Website'), 'visible' => $this->websiteManager->isMultiWebsites(), 'options' => $this->websiteManager->getWebsites($product, $eavAttribute), 'showLabel' => false, ], ], ], ], 'actionDelete' => [ 'arguments' => [ 'data' => [ 'config' => [ 'componentType' => 'actionDelete', 'dataType' => Text::NAME, 'label' => __('Action'), ], ], ], ], ], ], ], ]); } /** * Retrieve countries * * @return array|null */ protected function getCountries() { if (null === $this->countries) { $this->countries = $this->sourceCountry->toOptionArray(); } return $this->countries; } /** * Retrieve regions * * @return array */ protected function getRegions() { if (null === $this->regions) { $regions = $this->directoryHelper->getRegionData(); $this->regions = []; unset($regions['config']); foreach ($regions as $countryCode => $countryRegions) { foreach ($countryRegions as $regionId => $regionData) { $this->regions[] = [ 'label' => $regionData['name'], 'value' => $regionId, 'country' => $countryCode, ]; } } } return $this->regions; } }