123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- /**
- * Adminhtml Review Edit Form
- */
- namespace Magento\Review\Block\Adminhtml\Edit;
- class Form extends \Magento\Backend\Block\Widget\Form\Generic
- {
- /**
- * Review data
- *
- * @var \Magento\Review\Helper\Data
- */
- protected $_reviewData = null;
- /**
- * @var \Magento\Customer\Api\CustomerRepositoryInterface
- */
- protected $customerRepository;
- /**
- * Catalog product factory
- *
- * @var \Magento\Catalog\Model\ProductFactory
- */
- protected $_productFactory;
- /**
- * Core system store model
- *
- * @var \Magento\Store\Model\System\Store
- */
- protected $_systemStore;
- /**
- * @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\Customer\APi\CustomerRepositoryInterface $customerRepository
- * @param \Magento\Catalog\Model\ProductFactory $productFactory
- * @param \Magento\Review\Helper\Data $reviewData
- * @param array $data
- */
- 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\Customer\Api\CustomerRepositoryInterface $customerRepository,
- \Magento\Catalog\Model\ProductFactory $productFactory,
- \Magento\Review\Helper\Data $reviewData,
- array $data = []
- ) {
- $this->_reviewData = $reviewData;
- $this->customerRepository = $customerRepository;
- $this->_productFactory = $productFactory;
- $this->_systemStore = $systemStore;
- parent::__construct($context, $registry, $formFactory, $data);
- }
- /**
- * Prepare edit review form
- *
- * @return $this
- * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
- */
- protected function _prepareForm()
- {
- $review = $this->_coreRegistry->registry('review_data');
- $product = $this->_productFactory->create()->load($review->getEntityPkValue());
- /** @var \Magento\Framework\Data\Form $form */
- $form = $this->_formFactory->create(
- [
- 'data' => [
- 'id' => 'edit_form',
- 'action' => $this->getUrl(
- 'review/*/save',
- [
- 'id' => $this->getRequest()->getParam('id'),
- 'ret' => $this->_coreRegistry->registry('ret')
- ]
- ),
- 'method' => 'post',
- ],
- ]
- );
- $fieldset = $form->addFieldset(
- 'review_details',
- ['legend' => __('Review Details'), 'class' => 'fieldset-wide']
- );
- $fieldset->addField(
- 'product_name',
- 'note',
- [
- 'label' => __('Product'),
- 'text' => '<a href="' . $this->getUrl(
- 'catalog/product/edit',
- ['id' => $product->getId()]
- ) . '" onclick="this.target=\'blank\'">' . $this->escapeHtml(
- $product->getName()
- ) . '</a>'
- ]
- );
- try {
- $customer = $this->customerRepository->getById($review->getCustomerId());
- $customerText = __(
- '<a href="%1" onclick="this.target=\'blank\'">%2 %3</a> <a href="mailto:%4">(%4)</a>',
- $this->getUrl('customer/index/edit', ['id' => $customer->getId(), 'active_tab' => 'review']),
- $this->escapeHtml($customer->getFirstname()),
- $this->escapeHtml($customer->getLastname()),
- $this->escapeHtml($customer->getEmail())
- );
- } catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
- $customerText = ($review->getStoreId() == \Magento\Store\Model\Store::DEFAULT_STORE_ID)
- ? __('Administrator') : __('Guest');
- }
- $fieldset->addField('customer', 'note', ['label' => __('Author'), 'text' => $customerText]);
- $fieldset->addField(
- 'summary-rating',
- 'note',
- [
- 'label' => __('Summary Rating'),
- 'text' => $this->getLayout()->createBlock(
- \Magento\Review\Block\Adminhtml\Rating\Summary::class
- )->toHtml()
- ]
- );
- $fieldset->addField(
- 'detailed-rating',
- 'note',
- [
- 'label' => __('Detailed 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->hasSingleStore()) {
- $field = $fieldset->addField(
- 'select_stores',
- 'multiselect',
- [
- 'label' => __('Visibility'),
- 'required' => true,
- 'name' => 'stores[]',
- 'values' => $this->_systemStore->getStoreValuesForForm()
- ]
- );
- $renderer = $this->getLayout()->createBlock(
- \Magento\Backend\Block\Store\Switcher\Form\Renderer\Fieldset\Element::class
- );
- $field->setRenderer($renderer);
- $review->setSelectStores($review->getStores());
- } else {
- $fieldset->addField(
- 'select_stores',
- 'hidden',
- ['name' => 'stores[]', 'value' => $this->_storeManager->getStore(true)->getId()]
- );
- $review->setSelectStores($this->_storeManager->getStore(true)->getId());
- }
- $fieldset->addField(
- 'nickname',
- 'text',
- ['label' => __('Nickname'), 'required' => true, 'name' => 'nickname']
- );
- $fieldset->addField(
- 'title',
- 'text',
- ['label' => __('Summary of Review'), 'required' => true, 'name' => 'title']
- );
- $fieldset->addField(
- 'detail',
- 'textarea',
- ['label' => __('Review'), 'required' => true, 'name' => 'detail', 'style' => 'height:24em;']
- );
- $form->setUseContainer(true);
- $form->setValues($review->getData());
- $this->setForm($form);
- return parent::_prepareForm();
- }
- }
|