![]() 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-config/Block/System/Config/Form/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Config\Block\System\Config\Form; use Magento\Framework\App\ObjectManager; use Magento\Backend\Block\Template\Context; use Magento\Framework\View\Helper\SecureHtmlRenderer; /** * Render field html element in Stores Configuration * * @api * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.NumberOfChildren) * @since 100.0.2 */ class Field extends \Magento\Backend\Block\Template implements \Magento\Framework\Data\Form\Element\Renderer\RendererInterface { /** * @var SecureHtmlRenderer */ private $secureRenderer; /** * @param Context $context * @param array $data * @param SecureHtmlRenderer|null $secureRenderer */ public function __construct( Context $context, array $data = [], ?SecureHtmlRenderer $secureRenderer = null ) { parent::__construct($context, $data); $this->secureRenderer = $secureRenderer ?? ObjectManager::getInstance()->get(SecureHtmlRenderer::class); } /** * Retrieve element HTML markup * * @param \Magento\Framework\Data\Form\Element\AbstractElement $element * @return string */ protected function _getElementHtml(\Magento\Framework\Data\Form\Element\AbstractElement $element) { return $element->getElementHtml(); } /** * Retrieve HTML markup for given form element * * @param \Magento\Framework\Data\Form\Element\AbstractElement $element * @return string */ public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element) { $isCheckboxRequired = $this->_isInheritCheckboxRequired($element); // Disable element if value is inherited from other scope. Flag has to be set before the value is rendered. if ($element->getInherit() == 1 && $isCheckboxRequired) { $element->setDisabled(true); } if ($element->getIsDisableInheritance()) { $element->setReadonly(true); } $html = '<td class="label"><label for="' . $element->getHtmlId() . '"><span' . $this->_renderScopeLabel($element) . '>' . $element->getLabel() . '</span></label></td>'; $html .= $this->_renderValue($element); if ($isCheckboxRequired) { $html .= $this->_renderInheritCheckbox($element); } $html .= $this->_renderHint($element); return $this->_decorateRowHtml($element, $html); } /** * Render element value * * @param \Magento\Framework\Data\Form\Element\AbstractElement $element * @return string */ protected function _renderValue(\Magento\Framework\Data\Form\Element\AbstractElement $element) { if ($element->getTooltip()) { $html = '<td class="value with-tooltip">'; $html .= $this->_getElementHtml($element); $html .= '<div class="tooltip"><span class="help"><span></span></span>'; $html .= '<div class="tooltip-content">' . $element->getTooltip() . '</div></div>'; } else { $html = '<td class="value">'; $html .= $this->_getElementHtml($element); } if ($element->getComment()) { $html .= '<p class="note"><span>' . $element->getComment() . '</span></p>'; } $html .= '</td>'; return $html; } /** * Render inheritance checkbox (Use Default or Use Website) * * @param \Magento\Framework\Data\Form\Element\AbstractElement $element * @return string */ protected function _renderInheritCheckbox(\Magento\Framework\Data\Form\Element\AbstractElement $element) { $htmlId = $element->getHtmlId(); $namePrefix = preg_replace('#\[value\](\[\])?$#', '', $element->getName()); $checkedHtml = $element->getInherit() == 1 ? 'checked="checked"' : ''; $disabled = $element->getIsDisableInheritance() == true ? ' disabled="disabled" readonly="1"' : ''; $html = '<td class="use-default">'; $html .= '<input id="' . $htmlId . '_inherit" name="' . $namePrefix . '[inherit]" type="checkbox" value="1"' . ' class="checkbox config-inherit" ' . $checkedHtml . $disabled . ' />'; $html .= /* @noEscape */ $this->secureRenderer->renderEventListenerAsTag( 'onclick', "toggleValueElements(this, Element.previous(this.parentNode))", 'input#' . $htmlId . '_inherit' ); $html .= '<label for="' . $htmlId . '_inherit" class="inherit">' . $this->_getInheritCheckboxLabel( $element ) . '</label>'; $html .= '</td>'; return $html; } /** * Check if inheritance checkbox has to be rendered * * @param \Magento\Framework\Data\Form\Element\AbstractElement $element * @return bool */ protected function _isInheritCheckboxRequired(\Magento\Framework\Data\Form\Element\AbstractElement $element) { return $element->getCanUseWebsiteValue() || $element->getCanUseDefaultValue() || $element->getCanRestoreToDefault(); } /** * Retrieve label for the inheritance checkbox * * @param \Magento\Framework\Data\Form\Element\AbstractElement $element * @return string */ protected function _getInheritCheckboxLabel(\Magento\Framework\Data\Form\Element\AbstractElement $element) { $checkboxLabel = __('Use system value'); if ($element->getCanUseDefaultValue()) { $checkboxLabel = __('Use Default'); } if ($element->getCanUseWebsiteValue()) { $checkboxLabel = __('Use Website'); } return $checkboxLabel; } /** * Render scope label * * @param \Magento\Framework\Data\Form\Element\AbstractElement $element * @return string */ protected function _renderScopeLabel(\Magento\Framework\Data\Form\Element\AbstractElement $element) { $scopeString = ''; if ($element->getScope() && false == $this->_storeManager->isSingleStoreMode()) { $scopeString .= ' data-config-scope="' . $element->getScopeLabel() . '"'; } return $scopeString; } /** * Render field hint * * @param \Magento\Framework\Data\Form\Element\AbstractElement $element * @return string */ protected function _renderHint(\Magento\Framework\Data\Form\Element\AbstractElement $element) { $html = '<td class="">'; if ($element->getHint()) { $html .= '<div class="hint"><div id="hint_' . $element->getHtmlId() . '">' . $element->getHint() . '</div></div>'; $html .= /* @noEscape */ $this->secureRenderer->renderStyleAsTag( "display: none;", 'div#hint_' . $element->getHtmlId() ); } $html .= '</td>'; return $html; } /** * Decorate field row html * * @param \Magento\Framework\Data\Form\Element\AbstractElement $element * @param string $html * @return string */ protected function _decorateRowHtml(\Magento\Framework\Data\Form\Element\AbstractElement $element, $html) { return '<tr id="row_' . $element->getHtmlId() . '">' . $html . '</tr>'; } }