Edit.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Review\Block\Adminhtml;
  7. /**
  8. * Review edit form
  9. */
  10. class Edit extends \Magento\Backend\Block\Widget\Form\Container
  11. {
  12. /**
  13. * Review action pager
  14. *
  15. * @var \Magento\Review\Helper\Action\Pager
  16. */
  17. protected $_reviewActionPager = null;
  18. /**
  19. * Core registry
  20. *
  21. * @var \Magento\Framework\Registry
  22. */
  23. protected $_coreRegistry = null;
  24. /**
  25. * Review model factory
  26. *
  27. * @var \Magento\Review\Model\ReviewFactory
  28. */
  29. protected $_reviewFactory;
  30. /**
  31. * @param \Magento\Backend\Block\Widget\Context $context
  32. * @param \Magento\Review\Model\ReviewFactory $reviewFactory
  33. * @param \Magento\Review\Helper\Action\Pager $reviewActionPager
  34. * @param \Magento\Framework\Registry $registry
  35. * @param array $data
  36. */
  37. public function __construct(
  38. \Magento\Backend\Block\Widget\Context $context,
  39. \Magento\Review\Model\ReviewFactory $reviewFactory,
  40. \Magento\Review\Helper\Action\Pager $reviewActionPager,
  41. \Magento\Framework\Registry $registry,
  42. array $data = []
  43. ) {
  44. $this->_coreRegistry = $registry;
  45. $this->_reviewActionPager = $reviewActionPager;
  46. $this->_reviewFactory = $reviewFactory;
  47. parent::__construct($context, $data);
  48. }
  49. /**
  50. * Initialize edit review
  51. *
  52. * @return void
  53. * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  54. */
  55. protected function _construct()
  56. {
  57. parent::_construct();
  58. $this->_objectId = 'id';
  59. $this->_blockGroup = 'Magento_Review';
  60. $this->_controller = 'adminhtml';
  61. /** @var $actionPager \Magento\Review\Helper\Action\Pager */
  62. $actionPager = $this->_reviewActionPager;
  63. $actionPager->setStorageId('reviews');
  64. $reviewId = $this->getRequest()->getParam('id');
  65. $prevId = $actionPager->getPreviousItemId($reviewId);
  66. $nextId = $actionPager->getNextItemId($reviewId);
  67. if ($prevId !== false) {
  68. $this->addButton(
  69. 'previous',
  70. [
  71. 'label' => __('Previous'),
  72. 'onclick' => 'setLocation(\'' . $this->getUrl('review/*/*', ['id' => $prevId]) . '\')'
  73. ],
  74. 3,
  75. 10
  76. );
  77. $this->addButton(
  78. 'save_and_previous',
  79. [
  80. 'label' => __('Save and Previous'),
  81. 'class' => 'save',
  82. 'data_attribute' => [
  83. 'mage-init' => [
  84. 'button' => [
  85. 'event' => 'save',
  86. 'target' => '#edit_form',
  87. 'eventData' => ['action' => ['args' => ['next_item' => $prevId]]],
  88. ],
  89. ],
  90. ]
  91. ],
  92. 3,
  93. 11
  94. );
  95. }
  96. if ($nextId !== false) {
  97. $this->addButton(
  98. 'save_and_next',
  99. [
  100. 'label' => __('Save and Next'),
  101. 'class' => 'save',
  102. 'data_attribute' => [
  103. 'mage-init' => [
  104. 'button' => [
  105. 'event' => 'save',
  106. 'target' => '#edit_form',
  107. 'eventData' => ['action' => ['args' => ['next_item' => $nextId]]],
  108. ],
  109. ],
  110. ]
  111. ],
  112. 3,
  113. 100
  114. );
  115. $this->addButton(
  116. 'next',
  117. [
  118. 'label' => __('Next'),
  119. 'onclick' => 'setLocation(\'' . $this->getUrl('review/*/*', ['id' => $nextId]) . '\')'
  120. ],
  121. 3,
  122. 105
  123. );
  124. }
  125. $this->buttonList->update('save', 'label', __('Save Review'));
  126. $this->buttonList->update('save', 'id', 'save_button');
  127. $this->buttonList->update('delete', 'label', __('Delete Review'));
  128. if ($this->getRequest()->getParam('productId', false)) {
  129. $this->buttonList->update(
  130. 'back',
  131. 'onclick',
  132. 'setLocation(\'' . $this->getUrl(
  133. 'catalog/product/edit',
  134. ['id' => $this->getRequest()->getParam('productId', false)]
  135. ) . '\')'
  136. );
  137. }
  138. if ($this->getRequest()->getParam('customerId', false)) {
  139. $this->buttonList->update(
  140. 'back',
  141. 'onclick',
  142. 'setLocation(\'' . $this->getUrl(
  143. 'customer/index/edit',
  144. ['id' => $this->getRequest()->getParam('customerId', false)]
  145. ) . '\')'
  146. );
  147. }
  148. if ($this->getRequest()->getParam('ret', false) == 'pending') {
  149. $this->buttonList->update('back', 'onclick', 'setLocation(\'' . $this->getUrl('review/*/pending') . '\')');
  150. $this->buttonList->update(
  151. 'delete',
  152. 'onclick',
  153. 'deleteConfirm(' . '\'' . __(
  154. 'Are you sure you want to do this?'
  155. ) . '\', ' . '\'' . $this->getUrl(
  156. '*/*/delete',
  157. [$this->_objectId => $this->getRequest()->getParam($this->_objectId), 'ret' => 'pending']
  158. ) . '\'' . ')'
  159. );
  160. $this->_coreRegistry->register('ret', 'pending');
  161. }
  162. if ($this->getRequest()->getParam($this->_objectId)) {
  163. $reviewData = $this->_reviewFactory->create()->load($this->getRequest()->getParam($this->_objectId));
  164. $this->_coreRegistry->register('review_data', $reviewData);
  165. }
  166. $this->_formInitScripts[] = '
  167. var review = {
  168. updateRating: function() {
  169. elements = [
  170. $("select_stores"),
  171. $("rating_detail").getElementsBySelector("input[type=\'radio\']")
  172. ].flatten();
  173. $(\'save_button\').disabled = true;
  174. new Ajax.Updater(
  175. "rating_detail",
  176. "' .
  177. $this->getUrl(
  178. 'review/*/ratingItems',
  179. ['_current' => true]
  180. ) .
  181. '",
  182. {
  183. parameters:Form.serializeElements(elements),
  184. evalScripts:true,
  185. onComplete:function(){ $(\'save_button\').disabled = false; }
  186. }
  187. );
  188. }
  189. }
  190. Event.observe(window, \'load\', function(){
  191. Event.observe($("select_stores"), \'change\', review.updateRating);
  192. });
  193. ';
  194. }
  195. /**
  196. * Get edit review header text
  197. *
  198. * @return \Magento\Framework\Phrase
  199. */
  200. public function getHeaderText()
  201. {
  202. $reviewData = $this->_coreRegistry->registry('review_data');
  203. if ($reviewData && $reviewData->getId()) {
  204. return __("Edit Review '%1'", $this->escapeHtml($reviewData->getTitle()));
  205. } else {
  206. return __('New Review');
  207. }
  208. }
  209. }