![]() 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-cms/Block/Adminhtml/Page/Widget/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Cms\Block\Adminhtml\Page\Widget; /** * CMS page chooser for Wysiwyg CMS widget * * @author Magento Core Team <[email protected]> */ class Chooser extends \Magento\Backend\Block\Widget\Grid\Extended { /** * @var \Magento\Cms\Model\Page */ protected $_cmsPage; /** * @var \Magento\Cms\Model\PageFactory */ protected $_pageFactory; /** * @var \Magento\Cms\Model\ResourceModel\Page\CollectionFactory */ protected $_collectionFactory; /** * @var \Magento\Framework\View\Model\PageLayout\Config\BuilderInterface */ protected $pageLayoutBuilder; /** * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\Backend\Helper\Data $backendHelper * @param \Magento\Cms\Model\Page $cmsPage * @param \Magento\Cms\Model\PageFactory $pageFactory * @param \Magento\Cms\Model\ResourceModel\Page\CollectionFactory $collectionFactory * @param \Magento\Framework\View\Model\PageLayout\Config\BuilderInterface $pageLayoutBuilder * @param array $data */ public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Backend\Helper\Data $backendHelper, \Magento\Cms\Model\Page $cmsPage, \Magento\Cms\Model\PageFactory $pageFactory, \Magento\Cms\Model\ResourceModel\Page\CollectionFactory $collectionFactory, \Magento\Framework\View\Model\PageLayout\Config\BuilderInterface $pageLayoutBuilder, array $data = [] ) { $this->pageLayoutBuilder = $pageLayoutBuilder; $this->_cmsPage = $cmsPage; $this->_pageFactory = $pageFactory; $this->_collectionFactory = $collectionFactory; parent::__construct($context, $backendHelper, $data); } /** * Block construction, prepare grid params * * @return void */ protected function _construct() { parent::_construct(); //$this->setDefaultSort('name'); $this->setUseAjax(true); $this->setDefaultFilter(['chooser_is_active' => '1']); } /** * Prepare chooser element HTML * * @param \Magento\Framework\Data\Form\Element\AbstractElement $element Form Element * @return \Magento\Framework\Data\Form\Element\AbstractElement */ public function prepareElementHtml(\Magento\Framework\Data\Form\Element\AbstractElement $element) { $uniqId = $this->mathRandom->getUniqueHash($element->getId()); $sourceUrl = $this->getUrl('cms/page_widget/chooser', ['uniq_id' => $uniqId]); $chooser = $this->getLayout()->createBlock( \Magento\Widget\Block\Adminhtml\Widget\Chooser::class )->setElement( $element )->setConfig( $this->getConfig() )->setFieldsetId( $this->getFieldsetId() )->setSourceUrl( $sourceUrl )->setUniqId( $uniqId ); if ($element->getValue()) { $page = $this->_pageFactory->create()->load((int)$element->getValue()); if ($page->getId()) { $chooser->setLabel($this->escapeHtml($page->getTitle())); } } $element->setData('after_element_html', $chooser->toHtml()); return $element; } /** * Grid Row JS Callback * * @return string */ public function getRowClickCallback() { $chooserJsObject = $this->getId(); $js = ' function (grid, event) { var trElement = Event.findElement(event, "tr"); var pageTitle = trElement.down("td").next().innerHTML; var pageId = trElement.down("td").innerHTML.replace(/^\s+|\s+$/g,""); ' . $chooserJsObject . '.setElementValue(pageId); ' . $chooserJsObject . '.setElementLabel(pageTitle); ' . $chooserJsObject . '.close(); } '; return $js; } /** * Prepare pages collection * * @return \Magento\Backend\Block\Widget\Grid\Extended */ protected function _prepareCollection() { $collection = $this->_collectionFactory->create(); /* @var $collection \Magento\Cms\Model\ResourceModel\Page\CollectionFactory */ $collection->setFirstStoreFlag(true); $this->setCollection($collection); return parent::_prepareCollection(); } /** * Prepare columns for pages grid * * @return $this */ protected function _prepareColumns() { $this->addColumn( 'chooser_id', [ 'header' => __('ID'), 'index' => 'page_id', 'header_css_class' => 'col-id', 'column_css_class' => 'col-id' ] ); $this->addColumn( 'chooser_title', [ 'header' => __('Title'), 'index' => 'title', 'header_css_class' => 'col-title', 'column_css_class' => 'col-title' ] ); $this->addColumn( 'chooser_identifier', [ 'header' => __('URL Key'), 'index' => 'identifier', 'header_css_class' => 'col-url', 'column_css_class' => 'col-url' ] ); $this->addColumn( 'chooser_page_layout', [ 'header' => __('Layout'), 'index' => 'page_layout', 'type' => 'options', 'options' => $this->pageLayoutBuilder->getPageLayoutsConfig()->getOptions(), 'header_css_class' => 'col-layout', 'column_css_class' => 'col-layout' ] ); $this->addColumn( 'chooser_is_active', [ 'header' => __('Status'), 'index' => 'is_active', 'type' => 'options', 'options' => $this->_cmsPage->getAvailableStatuses(), 'header_css_class' => 'col-status', 'column_css_class' => 'col-status' ] ); return parent::_prepareColumns(); } /** * Get grid url * * @return string */ public function getGridUrl() { return $this->getUrl('cms/page_widget/chooser', ['_current' => true]); } }