From 53e25ce7c12c9d093b1fe988d096216683082db2 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Wed, 23 Oct 2013 12:36:08 +0200 Subject: [PATCH] process delete language --- core/lib/Thelia/Action/Lang.php | 15 ++++++++++++++- .../Thelia/Controller/Admin/LangController.php | 18 ++++++++++++++++++ .../Thelia/Core/Event/Lang/LangDeleteEvent.php | 3 --- core/lib/Thelia/Core/Event/TheliaEvents.php | 1 + templates/admin/default/languages.html | 1 + 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/core/lib/Thelia/Action/Lang.php b/core/lib/Thelia/Action/Lang.php index a539cd486..0bfb96020 100644 --- a/core/lib/Thelia/Action/Lang.php +++ b/core/lib/Thelia/Action/Lang.php @@ -24,6 +24,7 @@ namespace Thelia\Action; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Thelia\Core\Event\Lang\LangCreateEvent; +use Thelia\Core\Event\Lang\LangDeleteEvent; use Thelia\Core\Event\Lang\LangToggleDefaultEvent; use Thelia\Core\Event\Lang\LangUpdateEvent; use Thelia\Core\Event\TheliaEvents; @@ -71,6 +72,7 @@ class Lang extends BaseAction implements EventSubscriberInterface $lang = new LangModel(); $lang + ->setDispatcher($this->getDispatcher()) ->setTitle($event->getTitle()) ->setCode($event->getCode()) ->setLocale($event->getLocale()) @@ -81,6 +83,16 @@ class Lang extends BaseAction implements EventSubscriberInterface $event->setLang($lang); } + public function delete(LangDeleteEvent $event) + { + if (null !== $lang = LangQuery::create()->findPk($event->getLangId())) { + $lang->setDispatcher($this->getDispatcher()) + ->delete(); + + $event->setLang($lang); + } + } + /** * Returns an array of event names this subscriber wants to listen to. * @@ -106,7 +118,8 @@ class Lang extends BaseAction implements EventSubscriberInterface return array( TheliaEvents::LANG_UPDATE => array('update', 128), TheliaEvents::LANG_TOGGLEDEFAULT => array('toggleDefault', 128), - TheliaEvents::LANG_CREATE => array('create', 128) + TheliaEvents::LANG_CREATE => array('create', 128), + TheliaEvents::LANG_DELETE => array('delete', 128), ); } } \ No newline at end of file diff --git a/core/lib/Thelia/Controller/Admin/LangController.php b/core/lib/Thelia/Controller/Admin/LangController.php index 66b2a87d3..4be58dc26 100644 --- a/core/lib/Thelia/Controller/Admin/LangController.php +++ b/core/lib/Thelia/Controller/Admin/LangController.php @@ -25,6 +25,7 @@ namespace Thelia\Controller\Admin; use Symfony\Component\Form\Form; use Thelia\Core\Event\Lang\LangCreateEvent; +use Thelia\Core\Event\Lang\LangDeleteEvent; use Thelia\Core\Event\Lang\LangToggleDefaultEvent; use Thelia\Core\Event\Lang\LangUpdateEvent; use Thelia\Core\Event\TheliaEvents; @@ -194,6 +195,23 @@ class LangController extends BaseAdminController { if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::DELETE)) return $response; + $error_msg = false; + + try { + + $deleteEvent = new LangDeleteEvent($this->getRequest()->get('language_id', 0)); + + $this->dispatch(TheliaEvents::LANG_DELETE, $deleteEvent); + + $this->redirectToRoute('admin.configuration.languages'); + } catch (\Exception $ex) { + \Thelia\Log\Tlog::getInstance()->error(sprintf("error during language removal with message : %s", $ex->getMessage())); + $error_msg = $ex->getMessage(); + } + + $this->render('languages', array( + 'error_delete_message' => $error_msg + )); } } \ No newline at end of file diff --git a/core/lib/Thelia/Core/Event/Lang/LangDeleteEvent.php b/core/lib/Thelia/Core/Event/Lang/LangDeleteEvent.php index e05775955..eebbe27e4 100644 --- a/core/lib/Thelia/Core/Event/Lang/LangDeleteEvent.php +++ b/core/lib/Thelia/Core/Event/Lang/LangDeleteEvent.php @@ -64,7 +64,4 @@ class LangDeleteEvent extends LangEvent return $this->lang_id; } - - - } \ No newline at end of file diff --git a/core/lib/Thelia/Core/Event/TheliaEvents.php b/core/lib/Thelia/Core/Event/TheliaEvents.php index 5da2dc88c..6857dc2ec 100755 --- a/core/lib/Thelia/Core/Event/TheliaEvents.php +++ b/core/lib/Thelia/Core/Event/TheliaEvents.php @@ -693,6 +693,7 @@ final class TheliaEvents const LANG_UPDATE = 'action.lang.update'; const LANG_CREATE = 'action.lang.create'; + const LANG_DELETE = 'action.lang.delete'; const LANG_TOGGLEDEFAULT = 'action.lang.toggleDefault'; diff --git a/templates/admin/default/languages.html b/templates/admin/default/languages.html index 4df1ed8dd..e8a695c0b 100644 --- a/templates/admin/default/languages.html +++ b/templates/admin/default/languages.html @@ -237,6 +237,7 @@ form_action = {url path='/admin/configuration/languages/delete'} form_content = {$smarty.capture.delete_dialog nofilter} + form_error_message = $error_delete_message }