diff --git a/core/lib/Thelia/Action/Folder.php b/core/lib/Thelia/Action/Folder.php index 97e023993..647a6ac33 100644 --- a/core/lib/Thelia/Action/Folder.php +++ b/core/lib/Thelia/Action/Folder.php @@ -23,10 +23,12 @@ namespace Thelia\Action; use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Thelia\Core\Event\FolderCreateEvent; use Thelia\Core\Event\FolderDeleteEvent; use Thelia\Core\Event\FolderUpdateEvent; use Thelia\Core\Event\TheliaEvents; use Thelia\Model\FolderQuery; +use Thelia\Model\Folder as FolderModel; /** @@ -68,6 +70,24 @@ class Folder extends BaseAction implements EventSubscriberInterface { } } + /** + * @param FolderCreateEvent $event + */ + public function create(FolderCreateEvent $event) + { + $folder = new FolderModel(); + $folder->setDispatcher($this->getDispatcher()); + + $folder + ->setParent($event->getParent()) + ->setVisible($event->getVisible()) + ->setLocale($event->getLocale()) + ->setTitle($event->getTitle()) + ->save(); + + $event->setFolder($folder); + } + /** * Returns an array of event names this subscriber wants to listen to. * diff --git a/core/lib/Thelia/Controller/Admin/FolderController.php b/core/lib/Thelia/Controller/Admin/FolderController.php index 55135b2b2..d75c0ab96 100644 --- a/core/lib/Thelia/Controller/Admin/FolderController.php +++ b/core/lib/Thelia/Controller/Admin/FolderController.php @@ -22,9 +22,11 @@ /*************************************************************************************/ namespace Thelia\Controller\Admin; +use Thelia\Core\Event\FolderCreateEvent; use Thelia\Core\Event\FolderDeleteEvent; use Thelia\Core\Event\FolderUpdateEvent; use Thelia\Core\Event\TheliaEvents; +use Thelia\Form\FolderCreationForm; use Thelia\Form\FolderModificationForm; use Thelia\Model\FolderQuery; @@ -61,7 +63,7 @@ class FolderController extends AbstractCrudController */ protected function getCreationForm() { - // TODO: Implement getCreationForm() method. + return new FolderCreationForm($this->getRequest()); } /** @@ -103,7 +105,15 @@ class FolderController extends AbstractCrudController */ protected function getCreationEvent($formData) { - // TODO: Implement getCreationEvent() method. + $creationEvent = new FolderCreateEvent(); + + $creationEvent + ->setLocale($formData['locale']) + ->setTitle($formData['title']) + ->setVisible($formData['visible']) + ->setParent($formData['parent']); + + return $creationEvent; } /**