![]() 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-catalog/Block/Adminhtml/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /** * Catalog manage products block * * @author Magento Core Team <[email protected]> */ namespace Magento\Catalog\Block\Adminhtml; /** * @api * @since 100.0.2 */ class Product extends \Magento\Backend\Block\Widget\Container { /** * @var \Magento\Catalog\Model\Product\TypeFactory */ protected $_typeFactory; /** * @var \Magento\Catalog\Model\ProductFactory */ protected $_productFactory; /** * @param \Magento\Backend\Block\Widget\Context $context * @param \Magento\Catalog\Model\Product\TypeFactory $typeFactory * @param \Magento\Catalog\Model\ProductFactory $productFactory * @param array $data */ public function __construct( \Magento\Backend\Block\Widget\Context $context, \Magento\Catalog\Model\Product\TypeFactory $typeFactory, \Magento\Catalog\Model\ProductFactory $productFactory, array $data = [] ) { $this->_productFactory = $productFactory; $this->_typeFactory = $typeFactory; parent::__construct($context, $data); } /** * Prepare button and grid * * @return \Magento\Catalog\Block\Adminhtml\Product */ protected function _prepareLayout() { $addButtonProps = [ 'id' => 'add_new_product', 'label' => __('Add Product'), 'class' => 'add', 'button_class' => '', 'class_name' => \Magento\Backend\Block\Widget\Button\SplitButton::class, 'options' => $this->_getAddProductButtonOptions(), 'dropdown_button_aria_label' => __('Add product of type'), ]; $this->buttonList->add('add_new', $addButtonProps); return parent::_prepareLayout(); } /** * Retrieve options for 'Add Product' split button * * @return array */ protected function _getAddProductButtonOptions() { $splitButtonOptions = []; $types = $this->_typeFactory->create()->getTypes(); uasort( $types, function ($elementOne, $elementTwo) { return ($elementOne['sort_order'] < $elementTwo['sort_order']) ? -1 : 1; } ); foreach ($types as $typeId => $type) { $splitButtonOptions[$typeId] = [ 'label' => __($type['label']), 'onclick' => "setLocation('" . $this->_getProductCreateUrl($typeId) . "')", 'default' => \Magento\Catalog\Model\Product\Type::DEFAULT_TYPE == $typeId, ]; } return $splitButtonOptions; } /** * Retrieve product create url by specified product type * * @param string $type * @return string */ protected function _getProductCreateUrl($type) { return $this->getUrl( 'catalog/*/new', ['set' => $this->_productFactory->create()->getDefaultAttributeSetId(), 'type' => $type] ); } /** * Check whether it is single store mode * * @return bool */ public function isSingleStoreMode() { return $this->_storeManager->isSingleStoreMode(); } }