Your IP : 127.0.0.1


Current Path : /home/dev2.destoffenstraat.com/app/code/Amasty/ExportPro/Export/Form/
Upload File :
Current File : /home/dev2.destoffenstraat.com/app/code/Amasty/ExportPro/Export/Form/Fields.php

<?php

declare(strict_types=1);

/**
 * @author Amasty Team
 * @copyright Copyright (c) Amasty (https://www.amasty.com)
 * @package Export Pro for Magento 2 (System)
 */

namespace Amasty\ExportPro\Export\Form;

use Amasty\ExportCore\Api\Config\EntityConfigInterface;
use Amasty\ExportCore\Api\Config\ProfileConfigInterface;
use Amasty\ExportCore\Api\FormInterface;
use Magento\Framework\App\RequestInterface;

class Fields extends \Amasty\ExportCore\Export\Form\FieldsAdvanced
{
    /**
     * @var string
     */
    private $customPrefixTagNameImage;

    public function getData(ProfileConfigInterface $profileConfig): array
    {
        $data = parent::getData($profileConfig);
        $data['fields'][$profileConfig->getEntityCode()]['use_custom_prefix'] =
            $profileConfig->getExtensionAttributes()->getUseCustomPrefix();

        return $data;
    }

    public function prepareConfig(ProfileConfigInterface $profileConfig, RequestInterface $request): FormInterface
    {
        parent::prepareConfig($profileConfig, $request);
        $profileConfig->getExtensionAttributes()->setUseCustomPrefix(
            $request->getParam('fields')['customer_entity']['use_custom_prefix'] ?? '0'
        );

        return $this;
    }

    public function prepareFieldsContainers(
        EntityConfigInterface $entityConfig,
        ?array $relationsConfig,
        int $level,
        string $fieldName = '',
        string $parentKey = ''
    ): array {
        $result = parent::prepareFieldsContainers($entityConfig, $relationsConfig, $level, $fieldName, $parentKey);
        $index = $this->getEntityIndex($parentKey, $entityConfig->getEntityCode());
        if ($level === 0) {
            $result[$index]['children']['use_custom_prefix'] = [
                'arguments' => [
                    'data' => [
                        'config' => [
                            'label' => __('Use Custom Entity Key'),
                            'dataType' => 'boolean',
                            'prefer' => 'toggle',
                            'valueMap' => ['true' => '1', 'false' => '0'],
                            'default' => '',
                            'sortOrder' => '0',
                            'formElement' => 'checkbox',
                            'visible' => true,
                            'componentType' => 'field',
                            'tooltipTpl' => 'Amasty_ExportCore/form/element/tooltip',
                            'tooltip' => [
                                'description' => '<img src="' . $this->getCustomPrefixTagNameImage(). '"/>'
                            ]
                        ]
                    ]
                ]
            ];
            $result[$index]['children']['field_code_output']['arguments']['data']['config']['component'] =
                'Amasty_ExportPro/js/form/element/custom-prefix';
        } elseif (isset($result[$index]['children'][$index . '_container']['children']['field_code'])) {
            $result[$index]['children'][$index . '_container']['children']['field_code']['arguments']['data']
            ['config']['formElement'] = 'hidden';
            $fieldCodeOutput = &$result[$index]['children'][$index . '_container']['children']['field_code_output']
            ['arguments']['data']['config'];
            $fieldCodeOutput['placeholder'] = $fieldName;
            $fieldCodeOutput['label'] = __('Custom Entity Key');
            $fieldCodeOutput['component'] = 'Amasty_ExportPro/js/form/element/custom-prefix';
            unset($fieldCodeOutput['tooltip']);
        }

        return $result;
    }

    protected function getCustomPrefixTagNameImage(): string
    {
        if (null === $this->customPrefixTagNameImage) {
            if (!empty($this->arguments['customPrefixTagNameImage'])) {
                $this->customPrefixTagNameImage = $this->assetRepo->getUrl(
                    $this->arguments['customPrefixTagNameImage']
                );
            } else {
                $this->customPrefixTagNameImage = $this->assetRepo->getUrl(
                    'Amasty_ExportCore::images/custom_prefix_tag_name.gif'
                );
            }
        }

        return $this->customPrefixTagNameImage;
    }
}