From 75b8950fe09ac6ed4ba822203e3f54753d509be2 Mon Sep 17 00:00:00 2001 From: TheCoreDev Date: Mon, 17 May 2021 22:25:27 +0200 Subject: [PATCH] Correction de quelques bogues dans Recettes (backOffice) --- local/modules/Recettes/Config/routing.xml | 3 +- .../Recettes/Controller/BackController.php | 5 +-- .../EventListener/ContentListener.php | 43 ++++++++++++------- .../Recettes/Form/RecetteCreateForm.php | 11 ++++- local/modules/Recettes/Loop/ProductsLoop.php | 7 +-- local/modules/Recettes/Loop/StepsLoop.php | 6 ++- .../default/includes/related-products.html | 29 +++++++------ .../backOffice/default/recette-tab.html | 4 +- 8 files changed, 68 insertions(+), 40 deletions(-) diff --git a/local/modules/Recettes/Config/routing.xml b/local/modules/Recettes/Config/routing.xml index 5a7367d3..9ffc011e 100644 --- a/local/modules/Recettes/Config/routing.xml +++ b/local/modules/Recettes/Config/routing.xml @@ -23,9 +23,10 @@ Recettes\Controller\BackController::searchProduct - + Recettes\Controller\BackController::addProduct \d+ + \d+ diff --git a/local/modules/Recettes/Controller/BackController.php b/local/modules/Recettes/Controller/BackController.php index 930987b9..b7f078e5 100755 --- a/local/modules/Recettes/Controller/BackController.php +++ b/local/modules/Recettes/Controller/BackController.php @@ -165,11 +165,10 @@ class BackController extends BaseAdminController } - public function addProduct($contentId) + public function addProduct($contentId, $recipeId) { $pseId = (int) $this->getRequest()->get('pse_id'); $quantityNeeded = (string) $this->getRequest()->get('quantity_needed'); - $recipeId = (int) $this->getRequest()->get('recipe_id'); $quantityProposed = (int) $this->getRequest()->get('quantity_proposed'); (new RecipeProducts()) @@ -179,7 +178,7 @@ class BackController extends BaseAdminController ->setNbOfProducts($quantityProposed) ->save(); - return $this->render('includes/related-products', [ 'content_id' => $contentId ]); + return $this->render('includes/related-products', [ 'recipe_id' => $recipeId, 'content_id' => $contentId ]); } diff --git a/local/modules/Recettes/EventListener/ContentListener.php b/local/modules/Recettes/EventListener/ContentListener.php index c3fea7b5..279d9739 100644 --- a/local/modules/Recettes/EventListener/ContentListener.php +++ b/local/modules/Recettes/EventListener/ContentListener.php @@ -2,12 +2,14 @@ namespace Recettes\EventListener; +use Propel\Runtime\Exception\PropelException; use Propel\Runtime\Propel; use Recettes\Model\RecipeProductsQuery; use Recettes\Model\RecipeQuery; use Recettes\Model\RecipeStepsQuery; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Thelia\Action\BaseAction; +use Thelia\Log\Tlog; use Thelia\Model\Event\ContentEvent; use Thelia\Core\HttpFoundation\Request; @@ -36,26 +38,35 @@ class ContentListener extends BaseAction implements EventSubscriberInterface $con = Propel::getConnection(); $contentId = $this->request->request->get('content_id'); - $recipeId = RecipeQuery::create() - ->findOneByContentId($contentId) - ->getId(); + try { + $recipe = RecipeQuery::create() + ->findOneByContentId($contentId); + if ($recipe) + $recipeId = $recipe->getId(); + else + return; - if ($recipeId) - { - RecipeStepsQuery::create() - ->filterByRecipeId($recipeId) - ->find($con) - ->delete(); + if ($recipeId) + { + RecipeStepsQuery::create() + ->filterByRecipeId($recipeId) + ->find($con) + ->delete(); - RecipeProductsQuery::create() - ->filterByRecipeId($recipeId) - ->find($con) - ->delete(); + RecipeProductsQuery::create() + ->filterByRecipeId($recipeId) + ->find($con) + ->delete(); - RecipeQuery::create() - ->findOneByContentId($contentId) - ->delete(); + RecipeQuery::create() + ->findOneByContentId($contentId) + ->delete(); + } } + catch (Exception $e) { + Tlog::getInstance()->error($e->getMessage()); + } + } } diff --git a/local/modules/Recettes/Form/RecetteCreateForm.php b/local/modules/Recettes/Form/RecetteCreateForm.php index cce60131..f1df73f5 100644 --- a/local/modules/Recettes/Form/RecetteCreateForm.php +++ b/local/modules/Recettes/Form/RecetteCreateForm.php @@ -38,7 +38,16 @@ class RecetteCreateForm extends BaseForm "content_id", "integer", [ - "constraints" => [ new NotBlank() ] + "constraints" => [ new NotBlank() ], + "required" => true + ] + ) + ->add( + "recipe_id", + "integer", + [ + "constraints" => [ new NotBlank() ], + "required" => true ] ) ->add( diff --git a/local/modules/Recettes/Loop/ProductsLoop.php b/local/modules/Recettes/Loop/ProductsLoop.php index 91ab3e0a..e07cacc8 100644 --- a/local/modules/Recettes/Loop/ProductsLoop.php +++ b/local/modules/Recettes/Loop/ProductsLoop.php @@ -22,7 +22,7 @@ use Thelia\Model\ProductSaleElementsQuery; */ class ProductsLoop extends BaseLoop implements PropelSearchLoopInterface { - public $countable = false; + public $countable = true; public $timestampable = false; public $versionable = false; @@ -83,9 +83,10 @@ class ProductsLoop extends BaseLoop implements PropelSearchLoopInterface { $products = RecipeProductsQuery::create(); - if (null != $recipeId = $this->getRecipeId()) { + if (null != $recipeId = $this->getRecipeId()) $products->filterByRecipeId($recipeId); - } + else + return null; return $products; } diff --git a/local/modules/Recettes/Loop/StepsLoop.php b/local/modules/Recettes/Loop/StepsLoop.php index c60047e0..19046631 100644 --- a/local/modules/Recettes/Loop/StepsLoop.php +++ b/local/modules/Recettes/Loop/StepsLoop.php @@ -57,9 +57,11 @@ class StepsLoop extends BaseLoop implements PropelSearchLoopInterface { $steps = RecipeStepsQuery::create(); - if (null != $id = $this->getRecipeId()) { + if (null != $id = $this->getRecipeId()) $steps->filterByRecipeId($id); - } + else + return null; + $steps->orderByStep(); return $steps; diff --git a/local/modules/Recettes/templates/backOffice/default/includes/related-products.html b/local/modules/Recettes/templates/backOffice/default/includes/related-products.html index f6eb006b..664e8ba0 100644 --- a/local/modules/Recettes/templates/backOffice/default/includes/related-products.html +++ b/local/modules/Recettes/templates/backOffice/default/includes/related-products.html @@ -5,19 +5,22 @@ {intl l="Quantity proposed" d="recettes"} - {loop type="recipe_products" name="products-loop" recipe_id=$recipe_id} - {loop type="product" visible="*" name="related-product" id=$PRODUCT_ID} - - {$TITLE} - {$QUANTITY_NEEDED} - {$QUANTITY_PROPOSED} - {$UNITY} - - - - + + {ifloop rel="products-loop"} + {loop type="recipe_products" name="products-loop" recipe_id=$recipe_id} + {loop type="product" visible="*" name="related-product" id=$PRODUCT_ID} + + {$TITLE} + {$QUANTITY_NEEDED} + {$QUANTITY_PROPOSED} + {$UNITY} + + + + + {/loop} {/loop} - {/loop} + {/ifloop} {elseloop rel="products-loop"} @@ -51,7 +54,7 @@ - + diff --git a/local/modules/Recettes/templates/backOffice/default/recette-tab.html b/local/modules/Recettes/templates/backOffice/default/recette-tab.html index 0a31a4f2..0ca2d3d1 100644 --- a/local/modules/Recettes/templates/backOffice/default/recette-tab.html +++ b/local/modules/Recettes/templates/backOffice/default/recette-tab.html @@ -24,7 +24,9 @@ {form_field form=$form field="content_id"} {/form_field} - + {form_field form=$form field="recipe_id"} + + {/form_field}