Spamworldpro Mini Shell
Spamworldpro


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/mageworx/module-seobase/Block/Adminhtml/Form/Field/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/mageworx/module-seobase/Block/Adminhtml/Form/Field/HreflangSettings.php
<?php
/**
 * Copyright © MageWorx. All rights reserved.
 * See LICENSE.txt for license details.
 */

declare(strict_types=1);

namespace MageWorx\SeoBase\Block\Adminhtml\Form\Field;

use Magento\Config\Block\System\Config\Form\Field\FieldArray\AbstractFieldArray;
use Magento\Framework\DataObject;
use Magento\Framework\Exception\LocalizedException;
use MageWorx\SeoBase\Model\HreflangsConfigReader;

class HreflangSettings extends AbstractFieldArray
{
    /**
     * @var StoreView
     */
    protected $storeViewRenderer;

    /**
     * @var LanguageCode
     */
    protected $languageCodeRenderer;

    /**
     * @var CountryCode
     */
    private $countryCodeRenderer;

    /**
     * @var Pages
     */
    protected $pagesRenderer;

    /**
     * @var XDefault
     */
    protected $xDefaultRenderer;

    /**
     * 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)
    {
        $html = '<td colspan="3"><div class="hreflang-settings">';
        $html .= '<div class="label"><label for="' . $element->getHtmlId() . '"><span'
            . $this->_renderScopeLabel($element) . '>' . $element->getLabel() . '</span></label></div>';
        $html .= '<div class="value">' . $this->_getElementHtml($element) . '</div>';
        $html .= '</div></td>';

        if ($element->getComment()) {
            $html .= '<p class="note"><span>' . $element->getComment() . '</span></p>';
        }

        return $this->_decorateRowHtml($element, $html);
    }

    /**
     * Prepare rendering the new field by adding all the needed columns
     *
     * @throws LocalizedException
     */
    protected function _prepareToRender()
    {
        $this->addColumn(
            HreflangsConfigReader::STORE,
            [
                'label'    => __('Store View'),
                'renderer' => $this->getStoreViewRenderer()
            ]
        );
        $this->addColumn(
            HreflangsConfigReader::LANGUAGE_CODE,
            [
                'label'    => __('Language Code'),
                'renderer' => $this->getLanguageCodeRenderer()
            ]
        );
        $this->addColumn(
            HreflangsConfigReader::COUNTRY_CODE,
            [
                'label'    => __('Country Code'),
                'renderer' => $this->getCountryCodeRenderer()
            ]
        );
        $this->addColumn(
            HreflangsConfigReader::PAGES,
            [
                'label'    => __('Pages'),
                'renderer' => $this->getPagesRenderer()
            ]
        );
        $this->addColumn(
            HreflangsConfigReader::X_DEFAULT,
            [
                'label'    => __('X-default'),
                'renderer' => $this->getXDefaultRenderer()
            ]
        );

        $this->_addAfter       = false;
        $this->_addButtonLabel = __('Add');
    }

    /**
     * Prepare existing row data object
     *
     * @param DataObject $row
     * @throws LocalizedException
     */
    protected function _prepareArrayRow(DataObject $row)
    {
        $options = [];

        $store = $row->getStore();
        if ($store !== null) {
            $options['option_' . $this->getStoreViewRenderer()->calcOptionHash($store)] = 'selected="selected"';
        }

        $languageCode = $row->getLanguageCode();
        if ($languageCode !== null) {
            $options['option_' . $this->getLanguageCodeRenderer()->calcOptionHash(
                $languageCode
            )] = 'selected="selected"';
        }

        $countryCode = $row->getCountryCode();
        if ($countryCode !== null) {
            $options['option_' . $this->getCountryCodeRenderer()->calcOptionHash($countryCode)] = 'selected="selected"';
        }

        $pages = $row->getPages();
        if (!empty($pages) && is_array($pages)) {

            foreach ($pages as $page) {
                $options['option_' . $this->getPagesRenderer()->calcOptionHash($page)] = 'selected="selected"';
            }
        }

        $xDefault = $row->getXDefault();
        if ($xDefault !== null) {
            $options['option_' . $this->getXDefaultRenderer()->calcOptionHash($xDefault)] = 'selected="selected"';
        }

        $row->setData('option_extra_attrs', $options);
    }

    /**
     * @return StoreView
     * @throws LocalizedException
     */
    protected function getStoreViewRenderer()
    {
        if (!$this->storeViewRenderer) {
            $this->storeViewRenderer = $this->getLayout()->createBlock(
                StoreView::class,
                '',
                ['data' => ['is_render_to_js_template' => true]]
            );
        }

        return $this->storeViewRenderer;
    }

    /**
     * @return LanguageCode
     * @throws LocalizedException
     */
    protected function getLanguageCodeRenderer()
    {
        if (!$this->languageCodeRenderer) {
            $this->languageCodeRenderer = $this->getLayout()->createBlock(
                LanguageCode::class,
                '',
                ['data' => ['is_render_to_js_template' => true]]
            );
        }

        return $this->languageCodeRenderer;
    }

    /**
     * @return CountryCode
     * @throws LocalizedException
     */
    protected function getCountryCodeRenderer()
    {
        if (!$this->countryCodeRenderer) {
            $this->countryCodeRenderer = $this->getLayout()->createBlock(
                CountryCode::class,
                '',
                ['data' => ['is_render_to_js_template' => true]]
            );
        }

        return $this->countryCodeRenderer;
    }

    /**
     * @return Pages
     * @throws LocalizedException
     */
    protected function getPagesRenderer()
    {
        if (!$this->pagesRenderer) {
            $this->pagesRenderer = $this->getLayout()->createBlock(
                Pages::class,
                '',
                ['data' => ['is_render_to_js_template' => true]]
            );
        }

        return $this->pagesRenderer;
    }

    /**
     * @return XDefault
     * @throws LocalizedException
     */
    protected function getXDefaultRenderer()
    {
        if (!$this->xDefaultRenderer) {
            $this->xDefaultRenderer = $this->getLayout()->createBlock(
                XDefault::class,
                '',
                ['data' => ['is_render_to_js_template' => true]]
            );
        }

        return $this->xDefaultRenderer;
    }
}

Spamworldpro Mini