diff --git a/core/lib/Thelia/Action/Folder.php b/core/lib/Thelia/Action/Folder.php
index 647a6ac33..c9f8a0dfd 100644
--- a/core/lib/Thelia/Action/Folder.php
+++ b/core/lib/Thelia/Action/Folder.php
@@ -25,6 +25,7 @@ namespace Thelia\Action;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\FolderCreateEvent;
use Thelia\Core\Event\FolderDeleteEvent;
+use Thelia\Core\Event\FolderToggleVisibilityEvent;
use Thelia\Core\Event\FolderUpdateEvent;
use Thelia\Core\Event\TheliaEvents;
use Thelia\Model\FolderQuery;
@@ -88,6 +89,17 @@ class Folder extends BaseAction implements EventSubscriberInterface {
$event->setFolder($folder);
}
+ public function toggleVisibility(FolderToggleVisibilityEvent $event)
+ {
+ $folder = $event->getFolder();
+
+ $folder
+ ->setDispatcher($this->getDispatcher())
+ ->setVisible(!$folder->getVisible())
+ ->save();
+
+ }
+
/**
* Returns an array of event names this subscriber wants to listen to.
*
diff --git a/core/lib/Thelia/Config/Resources/routing/admin.xml b/core/lib/Thelia/Config/Resources/routing/admin.xml
index e371f685d..dbb6b1199 100755
--- a/core/lib/Thelia/Config/Resources/routing/admin.xml
+++ b/core/lib/Thelia/Config/Resources/routing/admin.xml
@@ -204,11 +204,15 @@
Thelia\Controller\Admin\FolderController::updateAction
-
+
+ Thelia\Controller\Admin\FolderController::setToggleVisibilityAction
+
+
+
Thelia\Controller\Admin\FolderController::processUpdateAction
-
+
Thelia\Controller\Admin\FolderController::deleteAction
diff --git a/core/lib/Thelia/Controller/Admin/AbstractCrudController.php b/core/lib/Thelia/Controller/Admin/AbstractCrudController.php
index 7b9550610..a86f55b13 100644
--- a/core/lib/Thelia/Controller/Admin/AbstractCrudController.php
+++ b/core/lib/Thelia/Controller/Admin/AbstractCrudController.php
@@ -492,9 +492,6 @@ abstract class AbstractCrudController extends BaseAdminController
$changeEvent = $this->createToggleVisibilityEvent($this->getRequest());
- // Create and dispatch the change event
- $changeEvent->setIsDefault(true);
-
try {
$this->dispatch($this->visibilityToggleEventIdentifier, $changeEvent);
} catch (\Exception $ex) {
@@ -502,7 +499,7 @@ abstract class AbstractCrudController extends BaseAdminController
return $this->errorPage($ex);
}
- $this->redirectToListTemplate();
+ return $this->nullResponse();
}
/**
diff --git a/core/lib/Thelia/Controller/Admin/FolderController.php b/core/lib/Thelia/Controller/Admin/FolderController.php
index d75c0ab96..ea8e2f909 100644
--- a/core/lib/Thelia/Controller/Admin/FolderController.php
+++ b/core/lib/Thelia/Controller/Admin/FolderController.php
@@ -24,6 +24,7 @@
namespace Thelia\Controller\Admin;
use Thelia\Core\Event\FolderCreateEvent;
use Thelia\Core\Event\FolderDeleteEvent;
+use Thelia\Core\Event\FolderToggleVisibilityEvent;
use Thelia\Core\Event\FolderUpdateEvent;
use Thelia\Core\Event\TheliaEvents;
use Thelia\Form\FolderCreationForm;
@@ -147,6 +148,14 @@ class FolderController extends AbstractCrudController
return new FolderDeleteEvent($this->getRequest()->get('folder_id'), 0);
}
+ /**
+ *
+ */
+ protected function createToggleVisibilityEvent()
+ {
+ return new FolderToggleVisibilityEvent($this->getExistingObject());
+ }
+
/**
* Return true if the event contains the object, e.g. the action has updated the object in the event.
*
diff --git a/core/lib/Thelia/Core/Event/FolderToggleVisibilityEvent.php b/core/lib/Thelia/Core/Event/FolderToggleVisibilityEvent.php
new file mode 100644
index 000000000..9d7c53ab7
--- /dev/null
+++ b/core/lib/Thelia/Core/Event/FolderToggleVisibilityEvent.php
@@ -0,0 +1,34 @@
+. */
+/* */
+/*************************************************************************************/
+
+namespace Thelia\Core\Event;
+
+
+/**
+ * Class FolderToggleVisibilityEvent
+ * @package Thelia\Core\Event
+ * @author Manuel Raynaud
+ */
+class FolderToggleVisibilityEvent extends FolderEvent {
+
+}
\ No newline at end of file