<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Review\Block\Adminhtml\Add;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\View\Helper\SecureHtmlRenderer;
/**
* Adminhtml add product review form
*
* @author Magento Core Team <core@magentocommerce.com>
*/
class Form extends \Magento\Backend\Block\Widget\Form\Generic
{
/**
* Review data
*
* @var \Magento\Review\Helper\Data
*/
protected $_reviewData = null;
/**
* Core system store model
*
* @var \Magento\Store\Model\System\Store
*/
protected $_systemStore;
/**
* @var SecureHtmlRenderer
*/
private $secureRenderer;
/**
* @param \Magento\Backend\Block\Template\Context $context
* @param \Magento\Framework\Registry $registry
* @param \Magento\Framework\Data\FormFactory $formFactory
* @param \Magento\Store\Model\System\Store $systemStore
* @param \Magento\Review\Helper\Data $reviewData
* @param array $data
* @param SecureHtmlRenderer|null $htmlRenderer
*/
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Framework\Registry $registry,
\Magento\Framework\Data\FormFactory $formFactory,
\Magento\Store\Model\System\Store $systemStore,
\Magento\Review\Helper\Data $reviewData,
array $data = [],
?SecureHtmlRenderer $htmlRenderer = null
) {
$this->_reviewData = $reviewData;
$this->_systemStore = $systemStore;
$this->secureRenderer = $htmlRenderer ?: ObjectManager::getInstance()->get(SecureHtmlRenderer::class);
parent::__construct($context, $registry, $formFactory, $data);
}
/**
* Prepare add review form
*
* @return void
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
protected function _prepareForm()
{
/** @var \Magento\Framework\Data\Form $form */
$form = $this->_formFactory->create();
$fieldset = $form->addFieldset('add_review_form', ['legend' => __('Review Details')]);
$beforeHtml = $this->secureRenderer->renderStyleAsTag('display: none;', '#edit_form');
$fieldset->setBeforeElementHtml($beforeHtml);
$fieldset->addField('product_name', 'note', ['label' => __('Product'), 'text' => 'product_name']);
$fieldset->addField(
'detailed-rating',
'note',
[
'label' => __('Product Rating'),
'required' => true,
'text' => '<div id="rating_detail">' . $this->getLayout()->createBlock(
\Magento\Review\Block\Adminhtml\Rating\Detailed::class
)->toHtml() . '</div>'
]
);
$fieldset->addField(
'status_id',
'select',
[
'label' => __('Status'),
'required' => true,
'name' => 'status_id',
'values' => $this->_reviewData->getReviewStatusesOptionArray()
]
);
/**
* Check is single store mode
*/
if (!$this->_storeManager->isSingleStoreMode()) {
$field = $fieldset->addField(
'select_stores',
'multiselect',
[
'label' => __('Visibility'),
'required' => true,
'name' => 'select_stores[]',
'values' => $this->_systemStore->getStoreValuesForForm()
]
);
$renderer = $this->getLayout()->createBlock(
\Magento\Backend\Block\Store\Switcher\Form\Renderer\Fieldset\Element::class
);
$field->setRenderer($renderer);
}
$fieldset->addField(
'nickname',
'text',
[
'name' => 'nickname',
'title' => __('Nickname'),
'label' => __('Nickname'),
'maxlength' => '50',
'required' => true
]
);
$fieldset->addField(
'title',
'text',
[
'name' => 'title',
'title' => __('Summary of Review'),
'label' => __('Summary of Review'),
'maxlength' => '255',
'required' => true
]
);
$fieldset->addField(
'detail',
'textarea',
[
'name' => 'detail',
'title' => __('Review'),
'label' => __('Review'),
'required' => true
]
);
$fieldset->addField('product_id', 'hidden', ['name' => 'product_id']);
$form->setMethod('post');
$form->setUseContainer(true);
$form->setId('edit_form');
$form->setAction($this->getUrl('review/product/post'));
$this->setForm($form);
}
}
|