123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Config\Block\System\Config\Form;
- /**
- * 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
- {
- /**
- * 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);
- }
- $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"' : '';
- $html = '<td class="use-default">';
- $html .= '<input id="' .
- $htmlId .
- '_inherit" name="' .
- $namePrefix .
- '[inherit]" type="checkbox" value="1"' .
- ' class="checkbox config-inherit" ' .
- $checkedHtml . $disabled .
- ' onclick="toggleValueElements(this, Element.previous(this.parentNode))" /> ';
- $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 style="display: none;">' . $element->getHint() . '</div></div>';
- }
- $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>';
- }
- }
|