/** * Prepare rating edit form * * @return $this */ protected function _prepareForm() { /** @var \Magento\Framework\Data\Form $form */ $form = $this->_formFactory->create(); $this->setForm($form); $fieldset = $form->addFieldset('rating_form', array('legend' => __('Rating Title'))); $fieldset->addField('rating_code', 'text', array('name' => 'rating_code', 'label' => __('Default Value'), 'class' => 'required-entry', 'required' => true)); foreach ($this->_systemStore->getStoreCollection() as $store) { $fieldset->addField('rating_code_' . $store->getId(), 'text', array('label' => $store->getName(), 'name' => 'rating_codes[' . $store->getId() . ']')); } if ($this->_session->getRatingData()) { $form->setValues($this->_session->getRatingData()); $data = $this->_session->getRatingData(); if (isset($data['rating_codes'])) { $this->_setRatingCodes($data['rating_codes']); } $this->_session->setRatingData(null); } elseif ($this->_coreRegistry->registry('rating_data')) { $form->setValues($this->_coreRegistry->registry('rating_data')->getData()); if ($this->_coreRegistry->registry('rating_data')->getRatingCodes()) { $this->_setRatingCodes($this->_coreRegistry->registry('rating_data')->getRatingCodes()); } } if ($this->_coreRegistry->registry('rating_data')) { $collection = $this->_optionFactory->create()->getResourceCollection()->addRatingFilter($this->_coreRegistry->registry('rating_data')->getId())->load(); $i = 1; foreach ($collection->getItems() as $item) { $fieldset->addField('option_code_' . $item->getId(), 'hidden', array('required' => true, 'name' => 'option_title[' . $item->getId() . ']', 'value' => $item->getCode() ? $item->getCode() : $i)); $i++; } } else { for ($i = 1; $i <= 5; $i++) { $fieldset->addField('option_code_' . $i, 'hidden', array('required' => true, 'name' => 'option_title[add_' . $i . ']', 'value' => $i)); } } $fieldset = $form->addFieldset('visibility_form', array('legend' => __('Rating Visibility'))); if (!$this->_storeManager->isSingleStoreMode()) { $field = $fieldset->addField('stores', 'multiselect', array('label' => __('Visible In'), 'name' => 'stores[]', 'values' => $this->_systemStore->getStoreValuesForForm())); $renderer = $this->getLayout()->createBlock('Magento\\Backend\\Block\\Store\\Switcher\\Form\\Renderer\\Fieldset\\Element'); $field->setRenderer($renderer); if ($this->_coreRegistry->registry('rating_data')) { $form->getElement('stores')->setValue($this->_coreRegistry->registry('rating_data')->getStores()); } } $fieldset->addField('is_active', 'checkbox', array('label' => __('Is Active'), 'name' => 'is_active', 'value' => 1)); $fieldset->addField('position', 'text', array('label' => __('Sort Order'), 'name' => 'position')); if ($this->_coreRegistry->registry('rating_data')) { $form->getElement('position')->setValue($this->_coreRegistry->registry('rating_data')->getPosition()); $form->getElement('is_active')->setIsChecked($this->_coreRegistry->registry('rating_data')->getIsActive()); } return parent::_prepareForm(); }
/** * @param string $ratingCode * @param array $stores * @return void */ protected function createRating($ratingCode, $stores) { $stores[] = \Magento\Store\Model\Store::DEFAULT_STORE_ID; $rating = $this->getRating($ratingCode); if (!$rating->getData()) { $rating->setRatingCode($ratingCode)->setStores($stores)->setIsActive('1')->setEntityId($this->getRatingEntityId())->save(); /**Create rating options*/ $options = [1 => '1', 2 => '2', 3 => '3', 4 => '4', 5 => '5']; foreach ($options as $key => $optionCode) { $optionModel = $this->ratingOptionsFactory->create(); $optionModel->setCode($optionCode)->setValue($key)->setRatingId($rating->getId())->setPosition($key)->save(); } } }
/** * Set rating options to form * * @return void */ protected function setRatingOptions() { if ($this->_coreRegistry->registry('rating_data')) { $collection = $this->optionFactory->create()->getResourceCollection()->addRatingFilter($this->_coreRegistry->registry('rating_data')->getId())->load(); $i = 1; foreach ($collection->getItems() as $item) { $this->getFieldset('rating_form')->addField('option_code_' . $item->getId(), 'hidden', ['required' => true, 'name' => 'option_title[' . $item->getId() . ']', 'value' => $item->getCode() ? $item->getCode() : $i]); $i++; } } else { for ($i = 1; $i <= 5; $i++) { $this->getFieldset('rating_form')->addField('option_code_' . $i, 'hidden', ['required' => true, 'name' => 'option_title[add_' . $i . ']', 'value' => $i]); } } }
/** * @param int $optionId * @return $this */ public function updateOptionVote($optionId) { $this->_ratingOptionFactory->create()->setOptionId($optionId)->setVoteId($this->getVoteId())->setReviewId($this->getReviewId())->setDoUpdate(1)->addVote(); return $this; }