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;
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),
);
}
}

View File

@@ -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
));
}
}

View File

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

View File

@@ -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';

View File

@@ -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
}
<div id="lang-update-modal"></div>