![]() 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-widget/Block/Adminhtml/Widget/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /** * WYSIWYG widget options form * * @author Magento Core Team <[email protected]> */ namespace Magento\Widget\Block\Adminhtml\Widget; use Magento\Framework\App\ObjectManager; use Magento\Framework\View\Helper\SecureHtmlRenderer; /** * Chooser widget block. */ class Chooser extends \Magento\Backend\Block\Template { /** * @var \Magento\Framework\Data\Form\Element\Factory */ protected $_elementFactory; /** * @var \Magento\Framework\Json\EncoderInterface */ protected $_jsonEncoder; /** * @var SecureHtmlRenderer */ private $secureRenderer; /** * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\Framework\Json\EncoderInterface $jsonEncoder * @param \Magento\Framework\Data\Form\Element\Factory $elementFactory * @param array $data * @param SecureHtmlRenderer|null $secureRenderer */ public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Framework\Json\EncoderInterface $jsonEncoder, \Magento\Framework\Data\Form\Element\Factory $elementFactory, array $data = [], ?SecureHtmlRenderer $secureRenderer = null ) { $this->_jsonEncoder = $jsonEncoder; $this->_elementFactory = $elementFactory; $this->secureRenderer = $secureRenderer ?? ObjectManager::getInstance()->get(SecureHtmlRenderer::class); parent::__construct($context, $data); } /** * Chooser source URL getter * * @return string */ public function getSourceUrl() { return $this->_getData('source_url'); } /** * Chooser form element getter * * @return \Magento\Framework\Data\Form\Element\AbstractElement */ public function getElement() { return $this->_getData('element'); } /** * Convert Array config to Object * * @return \Magento\Framework\DataObject */ public function getConfig() { if ($this->_getData('config') instanceof \Magento\Framework\DataObject) { return $this->_getData('config'); } $configArray = $this->_getData('config'); $config = new \Magento\Framework\DataObject(); $this->setConfig($config); if (!is_array($configArray)) { return $this->_getData('config'); } // define chooser label if (isset($configArray['label'])) { $config->setData('label', __($configArray['label'])); } // chooser control buttons $buttons = ['open' => __('Choose...'), 'close' => __('Close')]; if (isset($configArray['button']) && is_array($configArray['button'])) { foreach ($configArray['button'] as $id => $label) { $buttons[$id] = __($label); } } $config->setButtons($buttons); return $this->_getData('config'); } /** * Unique identifier for block that uses Chooser * * @return string */ public function getUniqId() { return $this->_getData('uniq_id'); } /** * Form element fieldset id getter for working with form in chooser * * @return string */ public function getFieldsetId() { return $this->_getData('fieldset_id'); } /** * Flag to indicate include hidden field before chooser or not * * @return bool * @SuppressWarnings(PHPMD.BooleanGetMethodName) */ public function getHiddenEnabled() { return $this->hasData('hidden_enabled') ? (bool)$this->_getData('hidden_enabled') : true; } /** * Return chooser HTML and init scripts * * @return string */ protected function _toHtml() { $element = $this->getElement(); /* @var $fieldset \Magento\Framework\Data\Form\Element\Fieldset */ $fieldset = $element->getForm()->getElement($this->getFieldsetId()); $chooserId = $this->getUniqId(); $config = $this->getConfig(); // add chooser element to fieldset $chooser = $fieldset->addField( 'chooser' . $element->getId(), 'note', ['label' => $config->getLabel() ? $config->getLabel() : '', 'value_class' => 'value2'] ); $hiddenHtml = ''; if ($this->getHiddenEnabled()) { $hidden = $this->_elementFactory->create('hidden', ['data' => $element->getData()]); $hidden->setId("{$chooserId}value")->setForm($element->getForm()); if ($element->getRequired()) { $hidden->addClass('required-entry'); } $hiddenHtml = $hidden->getElementHtml(); $element->setValue(''); } $buttons = $config->getButtons(); $chooseButton = $this->getLayout()->createBlock( \Magento\Backend\Block\Widget\Button::class )->setType( 'button' )->setId( $chooserId . 'control' )->setClass( 'btn-chooser' )->setLabel( $buttons['open'] )->setOnclick( $chooserId . '.choose()' )->setDisabled( $element->getReadonly() ); $chooser->setData('after_element_html', $hiddenHtml . $chooseButton->toHtml()); // render label and chooser scripts $configJson = $this->_jsonEncoder->encode($config->getData()); return ' <label class="widget-option-label" id="' . $chooserId . 'label">' . ($this->getLabel() ? $this->escapeHtml($this->getLabel()) : __( 'Not Selected' )) . '</label> <div id="' . $chooserId . 'advice-container" class="hidden"></div>' . $this->secureRenderer->renderTag( 'script', [], 'require(["prototype", "mage/adminhtml/wysiwyg/widget"], function(){ //<![CDATA[ (function() { var instantiateChooser = function() { window.' . $chooserId . ' = new WysiwygWidget.chooser( "' . $chooserId . '", "' . $this->getSourceUrl() . '", ' . $configJson . ' ); if ($("' . $chooserId . 'value")) { $("' . $chooserId . 'value").advaiceContainer = "' . $chooserId . 'advice-container"; } } jQuery(instantiateChooser); })(); //]]> }); ', false ); } }