![]() 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-ui/Component/Control/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Ui\Component\Control; use Magento\Framework\View\Element\AbstractBlock; use Magento\Framework\View\Element\BlockInterface; use Magento\Framework\View\Element\UiComponent\Context; use Magento\Framework\View\Element\UiComponentInterface; use Magento\Framework\View\Element\UiComponent\Control\ActionPoolInterface; /** * Class ActionPool */ class ActionPool implements ActionPoolInterface { /** * Actions toolbar block name */ const ACTIONS_PAGE_TOOLBAR = 'page.actions.toolbar'; /** * Render context * * @var Context */ protected $context; /** * Actions pool * * @var Item[] */ protected $items; /** * Button factory * * @var ItemFactory */ protected $itemFactory; /** * @var AbstractBlock */ protected $toolbarBlock; /** * Construct * * @param Context $context * @param ItemFactory $itemFactory */ public function __construct(Context $context, ItemFactory $itemFactory) { $this->context = $context; $this->itemFactory = $itemFactory; } /** * Get toolbar block * * @return bool|BlockInterface */ public function getToolbar() { return $this->context->getPageLayout() ? $this->context->getPageLayout()->getBlock(static::ACTIONS_PAGE_TOOLBAR) : false; } /** * Add button * * @param string $key * @param array $data * @param UiComponentInterface $component * @return void */ public function add($key, array $data, UiComponentInterface $component) { $data['id'] = isset($data['id']) ? $data['id'] : $key; $toolbar = $this->getToolbar(); if ($toolbar !== false) { $this->items[$key] = $this->itemFactory->create(); $this->items[$key]->setData($data); $container = $this->createContainer($key, $component); $toolbar->setChild($key, $container); } } /** * Remove button * * @param string $key * @return void */ public function remove($key) { unset($this->items[$key]); } /** * Update button * * @param string $key * @param array $data * @return void */ public function update($key, array $data) { if (isset($this->items[$key])) { $this->items[$key]->setData($data); } } /** * Add html block * * @param string $type * @param string $name * @param array $arguments * @return void */ public function addHtmlBlock($type, $name = '', array $arguments = []) { $toolbar = $this->getToolbar(); $container = $this->context->getPageLayout()->createBlock($type, $name, $arguments); if ($toolbar) { $toolbar->setChild($name, $container); } } /** * Create button container * * @param string $key * @param UiComponentInterface $view * @return Container */ protected function createContainer($key, UiComponentInterface $view) { $container = $this->context->getPageLayout()->createBlock( \Magento\Ui\Component\Control\Container::class, 'container-' . $view->getName() . '-' . $key, [ 'data' => [ 'button_item' => $this->items[$key], 'context' => $view, ] ] ); return $container; } }