| Current Path : /home/rtorresani/www/vendor/magento/module-review/Ui/DataProvider/Product/Form/Modifier/ |
| Current File : //home/rtorresani/www/vendor/magento/module-review/Ui/DataProvider/Product/Form/Modifier/Review.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Review\Ui\DataProvider\Product\Form\Modifier;
/**
* Class Review
*/
use Magento\Catalog\Model\Locator\LocatorInterface;
use Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\AbstractModifier;
use Magento\Ui\Component\Form;
use Magento\Framework\UrlInterface;
use Magento\Framework\Module\Manager as ModuleManager;
use Magento\Framework\App\ObjectManager;
/**
* Review modifier for catalog product form
*
* @api
* @since 100.1.0
*/
class Review extends AbstractModifier
{
const GROUP_REVIEW = 'review';
const GROUP_CONTENT = 'content';
const DATA_SCOPE_REVIEW = 'grouped';
const SORT_ORDER = 20;
const LINK_TYPE = 'associated';
/**
* @var LocatorInterface
* @since 100.1.0
*/
protected $locator;
/**
* @var UrlInterface
* @since 100.1.0
*/
protected $urlBuilder;
/**
* @var ModuleManager
*/
private $moduleManager;
/**
* @param LocatorInterface $locator
* @param UrlInterface $urlBuilder
*/
public function __construct(
LocatorInterface $locator,
UrlInterface $urlBuilder
) {
$this->locator = $locator;
$this->urlBuilder = $urlBuilder;
}
/**
* @inheritdoc
* @since 100.1.0
*/
public function modifyMeta(array $meta)
{
if (!$this->locator->getProduct()->getId() || !$this->getModuleManager()->isOutputEnabled('Magento_Review')) {
return $meta;
}
$meta[static::GROUP_REVIEW] = [
'children' => [
'review_listing' => [
'arguments' => [
'data' => [
'config' => [
'autoRender' => true,
'componentType' => 'insertListing',
'dataScope' => 'review_listing',
'externalProvider' => 'review_listing.review_listing_data_source',
'selectionsProvider' => 'review_listing.review_listing.product_columns.ids',
'ns' => 'review_listing',
'render_url' => $this->urlBuilder->getUrl('mui/index/render'),
'realTimeLink' => false,
'behaviourType' => 'simple',
'externalFilterMode' => true,
'imports' => [
'productId' => '${ $.provider }:data.product.current_product_id',
'__disableTmpl' => ['productId' => false],
],
'exports' => [
'productId' => '${ $.externalProvider }:params.current_product_id',
'__disableTmpl' => ['productId' => false],
],
],
],
],
],
],
'arguments' => [
'data' => [
'config' => [
'label' => __('Product Reviews'),
'collapsible' => true,
'opened' => false,
'componentType' => Form\Fieldset::NAME,
'sortOrder' =>
$this->getNextGroupSortOrder(
$meta,
static::GROUP_CONTENT,
static::SORT_ORDER
),
],
],
],
];
return $meta;
}
/**
* @inheritdoc
* @since 100.1.0
*/
public function modifyData(array $data)
{
$productId = $this->locator->getProduct()->getId();
$data[$productId][self::DATA_SOURCE_DEFAULT]['current_product_id'] = $productId;
return $data;
}
/**
* Retrieve module manager instance using dependency lookup to keep this class backward compatible.
*
* @return ModuleManager
* @deprecated 100.2.0
*/
private function getModuleManager()
{
if ($this->moduleManager === null) {
$this->moduleManager = ObjectManager::getInstance()->get(ModuleManager::class);
}
return $this->moduleManager;
}
}