From 16fc3d20c722a6a87404be9f53e750680b1fefb9 Mon Sep 17 00:00:00 2001 From: Benoit Charpentier Date: Tue, 14 Apr 2026 14:38:19 +0200 Subject: [PATCH 1/3] fix(app) : instance_id duplicates on clone button --- controllers/front/ajax.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/controllers/front/ajax.php b/controllers/front/ajax.php index 984b06a6..ef499ac7 100644 --- a/controllers/front/ajax.php +++ b/controllers/front/ajax.php @@ -271,12 +271,14 @@ public function displayAjaxduplicateState() 'id_shop', 'id_lang', 'position', + 'instance_id', ]; foreach ($excludedProperties as $property) { unset($originalValues[$property]); } $newBlock = new PrettyBlocksModel(); $newBlock->hydrate($originalValues); + $newBlock->instance_id = uniqid(); $newBlock->id_shop = $idShop; $newBlock->id_lang = (int) $language; $newBlock->add(); From 733955a1ac0d5150334b35aa12b5183b08558850 Mon Sep 17 00:00:00 2001 From: Benoit Charpentier Date: Mon, 26 Oct 2026 10:16:44 +0100 Subject: [PATCH 2/3] get prod file --- prettyblocks.php | 1 - 1 file changed, 1 deletion(-) diff --git a/prettyblocks.php b/prettyblocks.php index 8f45520f..eba758a3 100755 --- a/prettyblocks.php +++ b/prettyblocks.php @@ -1,5 +1,4 @@ Date: Mon, 26 Oct 2026 10:36:39 +0100 Subject: [PATCH 3/3] =?UTF-8?q?fix(prettyblocks)=20:=20mode=20=C3=A9dition?= =?UTF-8?q?=20non=20cacheable=20par=20LiteSpeed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le script d'édition (build.js, preventDefault sur tous les liens) est injecté sur le seul en-tête Sec-Fetch-Dest: iframe, que LiteSpeed ignore dans sa clé de cache : la page rendue pour l'iframe du builder pouvait être cachée en public et servie à tous les visiteurs, chez qui plus aucun lien ne répondait au clic (incident maisonaveni du 23/10/2026). --- prettyblocks.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/prettyblocks.php b/prettyblocks.php index eba758a3..f366dd68 100755 --- a/prettyblocks.php +++ b/prettyblocks.php @@ -444,6 +444,12 @@ public function hookdisplayHeader($params) { $this->_addDynamicZones(); if ((isset($_SERVER['HTTP_SEC_FETCH_DEST']) && $_SERVER['HTTP_SEC_FETCH_DEST'] == 'iframe') || Tools::getValue('prettyblocks') === '1') { + // Mode édition (iframe du builder) : build.js neutralise TOUS les liens de la page + // (preventDefault + postMessage vers le BO). Cette condition se déclenche sur le seul + // en-tête Sec-Fetch-Dest, que LiteSpeed ne prend pas en compte dans sa clé de cache : + // sans ceci, la page rendue pour l'iframe est mise en cache public et servie à tous + // les visiteurs, chez qui plus aucun lien ne répond au clic (incident maisonaveni, 23/10/2026). + Hook::exec('litespeedNotCacheable', ['reason' => 'PrettyBlocks edit mode', 'from' => 'prettyblocks']); $this->context->controller->registerJavascript( 'prettyblocks', 'modules/' . $this->name . '/views/js/build/build.js',