create module event and eventListener

This commit is contained in:
Manuel Raynaud
2013-10-17 18:26:23 +02:00
parent 1b0de7144a
commit d25ad53d5a
9 changed files with 256 additions and 6 deletions

View File

@@ -22,6 +22,9 @@
/*************************************************************************************/
namespace Thelia\Controller\Admin;
use Thelia\Core\Event\Module\ModuleToggleActivationEvent;
use Thelia\Core\Event\TheliaEvents;
use Thelia\Module\ModuleManagement;
/**
@@ -35,11 +38,10 @@ class ModuleController extends BaseAdminController
{
if (null !== $response = $this->checkAuth("admin.module.view")) return $response;
$modulemanagement = new ModuleManagement();
$modulemanagement->updateModules();
return $this->render("modules", array("display_module" => 20));
return $this->render("modules");
}
public function updateAction($module_id)
@@ -48,4 +50,28 @@ class ModuleController extends BaseAdminController
"module_id" => $module_id
));
}
public function toggleActivationAction($module_id)
{
if (null !== $response = $this->checkAuth("admin.module.update")) return $response;
$message = null;
try {
$event = new ModuleToggleActivationEvent($module_id);
$this->dispatch(TheliaEvents::MODULE_TOGGLE_ACTIVATION, $event);
} catch (\Exception $e) {
$message = $e->getMessage();
}
if($this->getRequest()->isXmlHttpRequest()) {
if($message) {
$response = $this->nullResponse($message, 500);
}
$response = $this->nullResponse();
} else {
$response = $this->render("modules");
}
return $response;
}
}

View File

@@ -58,7 +58,7 @@ class BaseController extends ContainerAware
/**
* Return an empty response (after an ajax request, for example)
*/
protected function nullResponse($status = 200)
protected function nullResponse($content = null, $status = 200)
{
return new Response(null, $status);
}
@@ -66,9 +66,9 @@ class BaseController extends ContainerAware
/**
* Return a JSON response
*/
protected function jsonResponse($json_data)
protected function jsonResponse($json_data, $status = 200)
{
return new Response($json_data, 200, array('content-type' => 'application/json'));
return new Response($json_data, $status, array('content-type' => 'application/json'));
}
/**