diff --git a/core/lib/Thelia/Action/Content.php b/core/lib/Thelia/Action/Content.php
index 4e41331fb..4e59cafad 100644
--- a/core/lib/Thelia/Action/Content.php
+++ b/core/lib/Thelia/Action/Content.php
@@ -24,6 +24,7 @@
namespace Thelia\Action;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\Content\ContentCreateEvent;
+use Thelia\Core\Event\Content\ContentDeleteEvent;
use Thelia\Core\Event\Content\ContentToggleVisibilityEvent;
use Thelia\Core\Event\Content\ContentUpdateEvent;
use Thelia\Core\Event\TheliaEvents;
@@ -110,6 +111,19 @@ class Content extends BaseAction implements EventSubscriberInterface
}
+ public function delete(ContentDeleteEvent $event)
+ {
+ if (null !== $content = ContentQuery::create()->findPk($event->getContentId())) {
+ $defaultFolderId = $content->getDefaultFolderId();
+
+ $content->setDispatcher($this->getDispatcher())
+ ->delete();
+
+ $event->setDefaultFolderId($defaultFolderId);
+ $event->setContent($content);
+ }
+ }
+
/**
* 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 5decff765..4024ba99e 100755
--- a/core/lib/Thelia/Config/Resources/routing/admin.xml
+++ b/core/lib/Thelia/Config/Resources/routing/admin.xml
@@ -243,6 +243,10 @@
Thelia\Controller\Admin\ContentController::setToggleVisibilityAction
+
+ Thelia\Controller\Admin\ContentController::deleteAction
+
+
diff --git a/core/lib/Thelia/Controller/Admin/ContentController.php b/core/lib/Thelia/Controller/Admin/ContentController.php
index 7b865ca05..10bfe07e0 100644
--- a/core/lib/Thelia/Controller/Admin/ContentController.php
+++ b/core/lib/Thelia/Controller/Admin/ContentController.php
@@ -23,6 +23,7 @@
namespace Thelia\Controller\Admin;
use Thelia\Core\Event\Content\ContentCreateEvent;
+use Thelia\Core\Event\Content\ContentDeleteEvent;
use Thelia\Core\Event\Content\ContentToggleVisibilityEvent;
use Thelia\Core\Event\Content\ContentUpdateEvent;
use Thelia\Core\Event\TheliaEvents;
@@ -145,7 +146,7 @@ class ContentController extends AbstractCrudController
*/
protected function getDeleteEvent()
{
- // TODO: Implement getDeleteEvent() method.
+ return new ContentDeleteEvent($this->getRequest()->get('content_id'));
}
/**
@@ -289,6 +290,21 @@ class ContentController extends AbstractCrudController
}
}
+ /**
+ * Put in this method post object delete processing if required.
+ *
+ * @param \Thelia\Core\Event\Content\ContentDeleteEvent $deleteEvent the delete event
+ * @return Response a response, or null to continue normal processing
+ */
+ protected function performAdditionalDeleteAction($deleteEvent)
+ {
+ // Redirect to parent category list
+ $this->redirectToRoute(
+ 'admin.folders.default',
+ array('parent' => $deleteEvent->getDefaultFolderId())
+ );
+ }
+
/**
* @param $event \Thelia\Core\Event\UpdatePositionEvent
* @return null|Response
@@ -307,6 +323,11 @@ class ContentController extends AbstractCrudController
return null;
}
+ /**
+ * @param $positionChangeMode
+ * @param $positionValue
+ * @return UpdatePositionEvent|void
+ */
protected function createUpdatePositionEvent($positionChangeMode, $positionValue)
{
return new UpdatePositionEvent(
@@ -317,7 +338,7 @@ class ContentController extends AbstractCrudController
}
/**
- * @return FolderToggleVisibilityEvent|void
+ * @return ContentToggleVisibilityEvent|void
*/
protected function createToggleVisibilityEvent()
{
diff --git a/core/lib/Thelia/Core/Event/Content/ContentDeleteEvent.php b/core/lib/Thelia/Core/Event/Content/ContentDeleteEvent.php
new file mode 100644
index 000000000..3b5e5423b
--- /dev/null
+++ b/core/lib/Thelia/Core/Event/Content/ContentDeleteEvent.php
@@ -0,0 +1,74 @@
+. */
+/* */
+/*************************************************************************************/
+
+namespace Thelia\Core\Event\Content;
+
+
+/**
+ * Class ContentDeleteEvent
+ * @package Thelia\Core\Event\Content
+ * @author manuel raynaud
+ */
+class ContentDeleteEvent extends ContentEvent
+{
+ protected $content_id;
+
+ protected $folder_id;
+
+ function __construct($content_id)
+ {
+ $this->content_id = $content_id;
+ }
+
+ /**
+ * @param mixed $content_id
+ *
+ * @return $this
+ */
+ public function setContentId($content_id)
+ {
+ $this->content_id = $content_id;
+
+ return $this;
+ }
+
+ /**
+ * @return mixed
+ */
+ public function getContentId()
+ {
+ return $this->content_id;
+ }
+
+ public function setDefaultFolderId($folderid)
+ {
+ $this->folder_id = $folderid;
+ }
+
+ public function getDefaultFolderId()
+ {
+ return $this->folder_id;
+ }
+
+
+}
\ No newline at end of file
diff --git a/templates/admin/default/folders.html b/templates/admin/default/folders.html
index a39419b30..d4c3cea94 100644
--- a/templates/admin/default/folders.html
+++ b/templates/admin/default/folders.html
@@ -511,7 +511,7 @@
dialog_title = {intl l="Delete content"}
dialog_message = {intl l="Do you really want to delete this content ?"}
- form_action = {url path='/admin/contents/delete'}
+ form_action = {url path='/admin/content/delete'}
form_content = {$smarty.capture.content_delete_dialog nofilter}
}
{/block}