From c777878869fdde09d08a32c60bb0a9016e0dffca Mon Sep 17 00:00:00 2001
From: Laurent Laffont <llaffont@afi-sa.fr>
Date: Mon, 29 Oct 2018 11:03:02 +0100
Subject: [PATCH] dev #80538 back link on search result activate originated
 form

---
 library/Class/CriteresRecherche.php                |  1 +
 library/ZendAfi/View/Helper/AdvancedSearch.php     | 10 ++++++----
 tests/library/Class/CriteresRechercheTest.php      |  2 ++
 .../AdvancedSearch/AdvancedSearchTest.php          | 14 +++++++++++++-
 4 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/library/Class/CriteresRecherche.php b/library/Class/CriteresRecherche.php
index 6005e19285b..5525893a8ef 100644
--- a/library/Class/CriteresRecherche.php
+++ b/library/Class/CriteresRecherche.php
@@ -67,6 +67,7 @@ class Class_CriteresRecherche {
                              'operateur_editeur'=>'',
                              'operateur_collection'=>'',
                              'section' => '',
+                             'form_id' => '',
                              'page' => 1,
                              'page_size' => '',
                              'genre' => '',
diff --git a/library/ZendAfi/View/Helper/AdvancedSearch.php b/library/ZendAfi/View/Helper/AdvancedSearch.php
index 72b02f8422e..f75765a4884 100644
--- a/library/ZendAfi/View/Helper/AdvancedSearch.php
+++ b/library/ZendAfi/View/Helper/AdvancedSearch.php
@@ -109,8 +109,9 @@ class ZendAfi_View_Helper_AdvancedSearch extends ZendAfi_View_Helper_BaseHelper
     if(!$form_wrapper->isFormVisible())
       $html = $this->_tag('p', $this->_('Ce formulaire n\'est pas visible.'), ['class' => 'error']) . $html;
 
-    $html .= $this->view->renderForm($this->_populateForm($form_wrapper->getForm()),
-                                     ['append' => [$this->_clearFormButton(count($content))]]);
+    $form_id = count($content);
+    $html .= $this->view->renderForm($this->_populateForm($form_wrapper->getForm(), $form_id),
+                                     ['append' => [$this->_clearFormButton($form_id)]]);
     $content[] = $html;
 
     return $content;
@@ -122,11 +123,12 @@ class ZendAfi_View_Helper_AdvancedSearch extends ZendAfi_View_Helper_BaseHelper
   }
 
 
-  protected function _populateForm($form) {
+  protected function _populateForm($form, $form_id) {
     $request = Zend_Controller_Front::getInstance()->getRequest();
     $form->populate($request->getParams());
     $form->setAction($this->view->url(['controller' => 'recherche',
-                                       'action' => 'simple'],
+                                       'action' => 'simple',
+                                       'form_id' => $form_id],
                                       null, true));
     return $form;
   }
diff --git a/tests/library/Class/CriteresRechercheTest.php b/tests/library/Class/CriteresRechercheTest.php
index 3d09acf0a2c..5fb75af5c01 100644
--- a/tests/library/Class/CriteresRechercheTest.php
+++ b/tests/library/Class/CriteresRechercheTest.php
@@ -58,11 +58,13 @@ class CriteresRechercheRetourTest extends ModelTestCase {
         'page_size' => 10]],
 
       [['expressionRecherche' => 'La nouvelle grille',
+        'form_id' => 2,
         'facettes' => 'B1',
         'facette' => 'T1'],
 
        ['controller' => 'recherche',
         'action' => 'simple',
+        'form_id' => 2,
         'expressionRecherche' => 'La nouvelle grille',
         'facettes' => 'B1-T1']],
 
diff --git a/tests/scenarios/AdvancedSearch/AdvancedSearchTest.php b/tests/scenarios/AdvancedSearch/AdvancedSearchTest.php
index 65ff48fb005..80463ec061e 100644
--- a/tests/scenarios/AdvancedSearch/AdvancedSearchTest.php
+++ b/tests/scenarios/AdvancedSearch/AdvancedSearchTest.php
@@ -569,9 +569,21 @@ class AdvancedSearchValidCustomFormsSelectedAndPublishedTest extends AdvancedSea
 
 
   /** @test */
-  public function formShouldContainsResetButton() {
+  public function formOnSecondTabShouldContainsResetButtonWithFormIdOne() {
     $this->assertXPathContentContains('//button[contains(@data-url,"/recherche/avancee/statut/reset/form_id/1")]', 'Réinitialiser');
   }
+
+
+  /** @test */
+  public function formOnFirstTabActionShouldBeRechercheSimpleFormIdZero() {
+    $this->assertXPath('//form[contains(@action, "/recherche/simple/form_id/0")]');
+  }
+
+
+  /** @test */
+  public function formOnSecondTabActionShouldBeRechercheSimpleFormIdOne() {
+    $this->assertXPath('//form[contains(@action, "/recherche/simple/form_id/1")]');
+  }
 }
 
 
-- 
GitLab