Skip to content

Commit ff0ae09

Browse files
committed
fix: give possibility to review when there's no criterion
1 parent 943d264 commit ff0ae09

2 files changed

Lines changed: 25 additions & 18 deletions

File tree

controllers/front/PostComment.php

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Copyright since 2007 PrestaShop SA and Contributors
45
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
@@ -23,6 +24,7 @@
2324
* @copyright Since 2007 PrestaShop SA and Contributors
2425
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
2526
*/
27+
2628
use Doctrine\ORM\EntityManagerInterface;
2729
use PrestaShop\Module\ProductComment\Entity\ProductComment;
2830
use PrestaShop\Module\ProductComment\Entity\ProductCommentCriterion;
@@ -60,7 +62,7 @@ public function display()
6062
$comment_title = Tools::getValue('comment_title');
6163
$comment_content = Tools::getValue('comment_content');
6264
$customer_name = Tools::getValue('customer_name');
63-
$criterions = (array) Tools::getValue('criterion');
65+
$criterions = Tools::getValue('criterion', []);
6466

6567
/** @var ProductCommentRepository $productCommentRepository */
6668
$productCommentRepository = $this->context->controller->getContainer()->get('product_comment_repository');
@@ -141,19 +143,22 @@ private function addCommentGrades(ProductComment $productComment, array $criteri
141143
$criterionRepository = $entityManager->getRepository(ProductCommentCriterion::class);
142144
$averageGrade = 0;
143145

144-
foreach ($criterions as $criterionId => $grade) {
145-
$criterion = $criterionRepository->findOneBy(['id' => $criterionId]);
146-
$criterionGrade = new ProductCommentGrade(
147-
$productComment,
148-
$criterion,
149-
$grade
150-
);
146+
if (!empty($criterions)) {
147+
foreach ($criterions as $criterionId => $grade) {
148+
$criterion = $criterionRepository->findOneBy(['id' => $criterionId]);
149+
$criterionGrade = new ProductCommentGrade(
150+
$productComment,
151+
$criterion,
152+
$grade
153+
);
154+
155+
$entityManager->persist($criterionGrade);
156+
$averageGrade += $grade;
157+
}
151158

152-
$entityManager->persist($criterionGrade);
153-
$averageGrade += $grade;
159+
$averageGrade /= count($criterions);
154160
}
155161

156-
$averageGrade /= count($criterions);
157162
$productComment->setGrade($averageGrade);
158163
}
159164

@@ -199,7 +204,6 @@ private function validateCriterions(array $criterions)
199204
/** @var EntityManagerInterface $entityManager */
200205
$entityManager = $this->container->get('doctrine.orm.entity_manager');
201206
$criterionRepository = $entityManager->getRepository(ProductCommentCriterion::class);
202-
203207
foreach ($criterions as $criterionId => $grade) {
204208
// @todo manage validation for criterion restricted on categories or products
205209
$criterion = $criterionRepository->findOneBy(['id' => $criterionId]);

views/js/post-comment.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,15 @@ jQuery(document).ready(function () {
128128
$(fieldSelector).removeClass('error');
129129
$(fieldSelector).addClass('valid');
130130
}
131-
132-
if (!ratingChosen) {
133-
criterionsInfo.show();
134-
isValid = false;
135-
} else {
136-
criterionsInfo.hide();
131+
const fieldCriterion = $('#criterions_list').length;
132+
133+
if (fieldCriterion) {
134+
if (!ratingChosen) {
135+
criterionsInfo.show();
136+
isValid = false;
137+
} else {
138+
criterionsInfo.hide();
139+
}
137140
}
138141
});
139142

0 commit comments

Comments
 (0)