From 7bf60ad2a5c30fdac020856864afc62f372df047 Mon Sep 17 00:00:00 2001
From: gloas <gloas@afi-sa.fr>
Date: Fri, 9 Sep 2022 15:13:14 +0200
Subject: [PATCH] hotline #159972 fix file manager purge redirection

---
 VERSIONS_HOTLINE/159972                       |  1 +
 .../controllers/FileManagerController.php     |  2 +-
 .../controllers/FileManagerControllerTest.php | 26 ++++++++++++-------
 3 files changed, 19 insertions(+), 10 deletions(-)
 create mode 100644 VERSIONS_HOTLINE/159972

diff --git a/VERSIONS_HOTLINE/159972 b/VERSIONS_HOTLINE/159972
new file mode 100644
index 00000000000..69181dd6199
--- /dev/null
+++ b/VERSIONS_HOTLINE/159972
@@ -0,0 +1 @@
+ - correctif #159972 : Administration : Dans l'explorateur de fichiers, après l'utilisation de la purge, la redirection se fait bien dans le dossier courant.
\ No newline at end of file
diff --git a/application/modules/admin/controllers/FileManagerController.php b/application/modules/admin/controllers/FileManagerController.php
index 9fc658bb25d..84f7a11ef3b 100644
--- a/application/modules/admin/controllers/FileManagerController.php
+++ b/application/modules/admin/controllers/FileManagerController.php
@@ -160,7 +160,7 @@ class Admin_FileManagerController extends ZendAfi_Controller_Action {
     $message[] = $this->_('%d fichier(s) ont été supprimés',
                           count($to_delete) - count($message));
     $message = implode('<br>',$message);
-    $this->_redirectToPathWithMessage($item->getPath(), $message);
+    $this->_redirectToPathWithMessage($item->getParentPath(), $message);
   }
 
 
diff --git a/tests/application/modules/admin/controllers/FileManagerControllerTest.php b/tests/application/modules/admin/controllers/FileManagerControllerTest.php
index b153ba1aa55..6c551e0c768 100644
--- a/tests/application/modules/admin/controllers/FileManagerControllerTest.php
+++ b/tests/application/modules/admin/controllers/FileManagerControllerTest.php
@@ -959,29 +959,37 @@ class FileManagerControllerPurgeDirectoryImagesTest extends Admin_AbstractContro
 
   /** @test */
   public function dispatchPurgeFilesShouldReturnErrorOnNonValidDirectory() {
-    $this->dispatch('/admin/file-manager/purge?item=userfiles%2Falbum', true);
-    $this->assertRedirect('/admin/file-manager/index?browser=userfiles%2Falbum');
+    $this->dispatch('/admin/file-manager/purge?item=userfiles%2Falbum');
+    $this->assertRedirectTo('/admin/file-manager/index?browser=userfiles%2Falbum');
     $this->assertFlashMessengerContentContains('Seuls les dossiers "bannieres", "image" et "file" peuvent être purgés');
   }
 
 
   /** @test */
   public function dispatchPurgeFilesShouldReturnErrorOnUnwritableDirectory() {
-    $this->_disk->whenCalled('delete')
-                ->answers(false);
+    $this->_disk
+      ->whenCalled('delete')
+      ->answers(false);
 
-    $this->dispatch('/admin/file-manager/force-purge?item=userfiles%2Fimage', true);
-    $this->assertRedirect('/admin/file-manager/index?browser=userfiles%2Fimage');
+    $this->dispatch('/admin/file-manager/force-purge?item=userfiles%2Fimage');
+    $this->assertRedirectTo('/admin/file-manager/index?browser=userfiles%2Fimage');
     $this->assertFlashMessengerContentContains('Impossible de supprimer ');
   }
 
 
   /** @test */
-  public function dispatchPurgeFilesShouldDeleteUnusedFiles() {
-    $this->dispatch('/admin/file-manager/purge?item=userfiles%2Fimage', true);
-    $this->assertXPathContentContains('//button[contains(@data-url, "/admin/file-manager/force-purge")]', 'Supprimer 1 fichier(s)',$this->_response->getBody());
+  public function dispatchPurgeFilesShouldShowForcePurgeButton() {
+    $this->dispatch('/admin/file-manager/purge?item=userfiles%2Fimage');
+    $this->assertXPathContentContains('//button[contains(@data-url, "/admin/file-manager/force-purge")]', 'Supprimer 1 fichier(s)');
   }
 
+
+  /** @test */
+  public function dispatchForcePurgeFilesShouldDeleteOneFileAndRedirectToImageFolder() {
+    $this->_disk->whenCalled('delete')->with('userfiles/image/image.png')->answers(true)->beStrict();
+    $this->dispatch('/admin/file-manager/force-purge?item=userfiles%2Fimage');
+    $this->assertRedirectTo('/admin/file-manager/index?browser=userfiles%2Fimage');
+  }
 }
 
 
-- 
GitLab