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}