diff --git a/core/lib/Thelia/Action/Content.php b/core/lib/Thelia/Action/Content.php
index fa4229a02..cca90b2b2 100644
--- a/core/lib/Thelia/Action/Content.php
+++ b/core/lib/Thelia/Action/Content.php
@@ -27,6 +27,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\Content\ContentAddFolderEvent;
use Thelia\Core\Event\Content\ContentCreateEvent;
use Thelia\Core\Event\Content\ContentDeleteEvent;
+use Thelia\Core\Event\Content\ContentRemoveFolderEvent;
use Thelia\Core\Event\Content\ContentToggleVisibilityEvent;
use Thelia\Core\Event\Content\ContentUpdateEvent;
use Thelia\Core\Event\TheliaEvents;
@@ -127,6 +128,12 @@ class Content extends BaseAction implements EventSubscriberInterface
}
}
+ /**
+ *
+ * associate a folder to a content if the association already does not exists
+ *
+ * @param ContentAddFolderEvent $event
+ */
public function addFolder(ContentAddFolderEvent $event)
{
if(ContentFolderQuery::create()
@@ -144,6 +151,18 @@ class Content extends BaseAction implements EventSubscriberInterface
}
}
+ public function removeFolder(ContentRemoveFolderEvent $event)
+ {
+ $contentFolder = ContentFolderQuery::create()
+ ->filterByContent($event->getContent())
+ ->filterByFolderId($event->getFolderId())
+ ->findOne();
+
+ if(null !== $contentFolder) {
+ $contentFolder->delete();
+ }
+ }
+
/**
* 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 246279f08..2c595b877 100755
--- a/core/lib/Thelia/Config/Resources/routing/admin.xml
+++ b/core/lib/Thelia/Config/Resources/routing/admin.xml
@@ -396,11 +396,11 @@
- Thelia\Controller\Admin\ContentController::addAdditionalCategoryAction
+ Thelia\Controller\Admin\ContentController::addAdditionalFolderAction
- Thelia\Controller\Admin\ContentController::deleteAdditionalCategoryAction
+ Thelia\Controller\Admin\ContentController::removeAdditionalFolderAction
diff --git a/core/lib/Thelia/Controller/Admin/ContentController.php b/core/lib/Thelia/Controller/Admin/ContentController.php
index 6929be41c..c3811695f 100644
--- a/core/lib/Thelia/Controller/Admin/ContentController.php
+++ b/core/lib/Thelia/Controller/Admin/ContentController.php
@@ -25,6 +25,7 @@ namespace Thelia\Controller\Admin;
use Thelia\Core\Event\Content\ContentAddFolderEvent;
use Thelia\Core\Event\Content\ContentCreateEvent;
use Thelia\Core\Event\Content\ContentDeleteEvent;
+use Thelia\Core\Event\Content\ContentRemoveFolderEvent;
use Thelia\Core\Event\Content\ContentToggleVisibilityEvent;
use Thelia\Core\Event\Content\ContentUpdateEvent;
use Thelia\Core\Event\TheliaEvents;
@@ -61,6 +62,11 @@ class ContentController extends AbstractCrudController
);
}
+ /**
+ * controller adding content to additional folder
+ *
+ * @return mixed|\Symfony\Component\HttpFoundation\Response
+ */
public function addAdditionalFolderAction()
{
// Check current user authorization
@@ -75,12 +81,41 @@ class ContentController extends AbstractCrudController
);
try {
-
+ $this->dispatch(TheliaEvents::CONTENT_ADD_FOLDER, $event);
} catch (\Exception $e) {
- $this->errorPage($e);
+ return $this->errorPage($e);
}
}
+ $this->redirectToEditionTemplate();
+ }
+
+ /**
+ * controller removing additional folder to a content
+ *
+ * @return mixed|\Symfony\Component\HttpFoundation\Response
+ */
+ public function removeAdditionalFolderAction()
+ {
+ // Check current user authorization
+ if (null !== $response = $this->checkAuth('admin.content.update')) return $response;
+
+ $folder_id = intval($this->getRequest()->request->get('additional_folder_id'));
+
+ if ($folder_id > 0) {
+ $event = new ContentRemoveFolderEvent(
+ $this->getExistingObject(),
+ $folder_id
+ );
+
+ try {
+ $this->dispatch(TheliaEvents::CONTENT_REMOVE_FOLDER, $event);
+ } catch (\Exception $e) {
+ return $this->errorPage($e);
+ }
+ }
+
+ $this->redirectToEditionTemplate();
}
/**
diff --git a/core/lib/Thelia/Core/Event/Content/ContentRemoveFolderEvent.php b/core/lib/Thelia/Core/Event/Content/ContentRemoveFolderEvent.php
new file mode 100644
index 000000000..195f4f3b0
--- /dev/null
+++ b/core/lib/Thelia/Core/Event/Content/ContentRemoveFolderEvent.php
@@ -0,0 +1,34 @@
+. */
+/* */
+/*************************************************************************************/
+
+namespace Thelia\Core\Event\Content;
+
+
+/**
+ * Class ContentRemoveFolderEvent
+ * @package Thelia\Core\Event\Content
+ * @author Manuel Raynaud
+ */
+class ContentRemoveFolderEvent extends ContentAddFolderEvent
+{
+}
\ No newline at end of file