process delete language

This commit is contained in:
Manuel Raynaud
2013-10-23 12:36:08 +02:00
parent b16edfbd1d
commit 53e25ce7c1
5 changed files with 34 additions and 4 deletions

View File

@@ -24,6 +24,7 @@
namespace Thelia\Action; namespace Thelia\Action;
use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\Lang\LangCreateEvent; use Thelia\Core\Event\Lang\LangCreateEvent;
use Thelia\Core\Event\Lang\LangDeleteEvent;
use Thelia\Core\Event\Lang\LangToggleDefaultEvent; use Thelia\Core\Event\Lang\LangToggleDefaultEvent;
use Thelia\Core\Event\Lang\LangUpdateEvent; use Thelia\Core\Event\Lang\LangUpdateEvent;
use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Event\TheliaEvents;
@@ -71,6 +72,7 @@ class Lang extends BaseAction implements EventSubscriberInterface
$lang = new LangModel(); $lang = new LangModel();
$lang $lang
->setDispatcher($this->getDispatcher())
->setTitle($event->getTitle()) ->setTitle($event->getTitle())
->setCode($event->getCode()) ->setCode($event->getCode())
->setLocale($event->getLocale()) ->setLocale($event->getLocale())
@@ -81,6 +83,16 @@ class Lang extends BaseAction implements EventSubscriberInterface
$event->setLang($lang); $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. * Returns an array of event names this subscriber wants to listen to.
* *
@@ -106,7 +118,8 @@ class Lang extends BaseAction implements EventSubscriberInterface
return array( return array(
TheliaEvents::LANG_UPDATE => array('update', 128), TheliaEvents::LANG_UPDATE => array('update', 128),
TheliaEvents::LANG_TOGGLEDEFAULT => array('toggleDefault', 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),
); );
} }
} }

View File

@@ -25,6 +25,7 @@ namespace Thelia\Controller\Admin;
use Symfony\Component\Form\Form; use Symfony\Component\Form\Form;
use Thelia\Core\Event\Lang\LangCreateEvent; use Thelia\Core\Event\Lang\LangCreateEvent;
use Thelia\Core\Event\Lang\LangDeleteEvent;
use Thelia\Core\Event\Lang\LangToggleDefaultEvent; use Thelia\Core\Event\Lang\LangToggleDefaultEvent;
use Thelia\Core\Event\Lang\LangUpdateEvent; use Thelia\Core\Event\Lang\LangUpdateEvent;
use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Event\TheliaEvents;
@@ -194,6 +195,23 @@ class LangController extends BaseAdminController
{ {
if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::DELETE)) return $response; 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
));
} }
} }

View File

@@ -64,7 +64,4 @@ class LangDeleteEvent extends LangEvent
return $this->lang_id; return $this->lang_id;
} }
} }

View File

@@ -693,6 +693,7 @@ final class TheliaEvents
const LANG_UPDATE = 'action.lang.update'; const LANG_UPDATE = 'action.lang.update';
const LANG_CREATE = 'action.lang.create'; const LANG_CREATE = 'action.lang.create';
const LANG_DELETE = 'action.lang.delete';
const LANG_TOGGLEDEFAULT = 'action.lang.toggleDefault'; const LANG_TOGGLEDEFAULT = 'action.lang.toggleDefault';

View File

@@ -237,6 +237,7 @@
form_action = {url path='/admin/configuration/languages/delete'} form_action = {url path='/admin/configuration/languages/delete'}
form_content = {$smarty.capture.delete_dialog nofilter} form_content = {$smarty.capture.delete_dialog nofilter}
form_error_message = $error_delete_message
} }
<div id="lang-update-modal"></div> <div id="lang-update-modal"></div>