diff --git a/core/lib/Thelia/Action/Module.php b/core/lib/Thelia/Action/Module.php index a994288d9..d27bedd1f 100644 --- a/core/lib/Thelia/Action/Module.php +++ b/core/lib/Thelia/Action/Module.php @@ -27,6 +27,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Filesystem\Filesystem; use Thelia\Core\Event\Cache\CacheEvent; use Thelia\Core\Event\Module\ModuleDeleteEvent; +use Thelia\Core\Event\Module\ModuleEvent; use Thelia\Core\Event\Module\ModuleToggleActivationEvent; use Thelia\Core\Event\TheliaEvents; use Thelia\Model\Map\ModuleTableMap; @@ -99,6 +100,28 @@ class Module extends BaseAction implements EventSubscriberInterface } } + /** + * @param ModuleEvent $event + */ + public function update(ModuleEvent $event) + { + if (null !== $module = ModuleQuery::create()->findPk($event->getId())) { + + $module + ->setDispatcher($this->getDispatcher()) + ->setLocale($event->getLocale()) + ->setTitle($event->getTitle()) + ->setChapo($event->getChapo()) + ->setDescription($event->getDescription()) + ->setPostscriptum($event->getPostscriptum()) + ; + + $module->save(); + + $event->setModule($module); + } + } + protected function cacheClear() { $cacheEvent = new CacheEvent($this->container->getParameter('kernel.cache_dir')); @@ -130,7 +153,8 @@ class Module extends BaseAction implements EventSubscriberInterface { return array( TheliaEvents::MODULE_TOGGLE_ACTIVATION => array('toggleActivation', 128), - TheliaEvents::MODULE_DELETE => array('delete', 128) + TheliaEvents::MODULE_DELETE => array('delete', 128), + TheliaEvents::MODULE_UPDATE => array('update', 128), ); } } diff --git a/core/lib/Thelia/Config/Resources/form.xml b/core/lib/Thelia/Config/Resources/form.xml index ecd530b69..dd21a9232 100644 --- a/core/lib/Thelia/Config/Resources/form.xml +++ b/core/lib/Thelia/Config/Resources/form.xml @@ -122,6 +122,8 @@
+ + diff --git a/core/lib/Thelia/Config/Resources/routing/admin.xml b/core/lib/Thelia/Config/Resources/routing/admin.xml index 823e037b5..684a953ae 100755 --- a/core/lib/Thelia/Config/Resources/routing/admin.xml +++ b/core/lib/Thelia/Config/Resources/routing/admin.xml @@ -921,16 +921,25 @@ - + Thelia\Controller\Admin\ModuleController::indexAction - + + Thelia\Controller\Admin\ModuleController::updateAction + \d+ + + + + Thelia\Controller\Admin\ModuleController::processUpdateAction + + + Thelia\Controller\Admin\ModuleController::toggleActivationAction \d+ - + Thelia\Controller\Admin\ModuleController::deleteAction diff --git a/core/lib/Thelia/Controller/Admin/AbstractCrudController.php b/core/lib/Thelia/Controller/Admin/AbstractCrudController.php index 689ac9b1b..11ed4fc50 100644 --- a/core/lib/Thelia/Controller/Admin/AbstractCrudController.php +++ b/core/lib/Thelia/Controller/Admin/AbstractCrudController.php @@ -267,7 +267,7 @@ abstract class AbstractCrudController extends BaseAdminController */ public function defaultAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::VIEW)) return $response; return $this->renderList(); } @@ -279,7 +279,7 @@ abstract class AbstractCrudController extends BaseAdminController public function createAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::CREATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::CREATE)) return $response; $error_msg = false; @@ -340,7 +340,7 @@ abstract class AbstractCrudController extends BaseAdminController public function updateAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; // Load the object $object = $this->getExistingObject(); @@ -366,7 +366,7 @@ abstract class AbstractCrudController extends BaseAdminController public function processUpdateAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $error_msg = false; @@ -431,7 +431,7 @@ abstract class AbstractCrudController extends BaseAdminController public function updatePositionAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; try { $mode = $this->getRequest()->get('mode', null); @@ -465,7 +465,7 @@ abstract class AbstractCrudController extends BaseAdminController protected function genericUpdatePositionAction($object, $eventName, $doFinalRedirect = true) { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; if ($object != null) { @@ -499,7 +499,7 @@ abstract class AbstractCrudController extends BaseAdminController public function setToggleVisibilityAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $changeEvent = $this->createToggleVisibilityEvent($this->getRequest()); @@ -521,7 +521,7 @@ abstract class AbstractCrudController extends BaseAdminController public function deleteAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::DELETE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::DELETE)) return $response; // Get the currency id, and dispatch the delet request $deleteEvent = $this->getDeleteEvent(); diff --git a/core/lib/Thelia/Controller/Admin/AddressController.php b/core/lib/Thelia/Controller/Admin/AddressController.php index a89366583..3e2812bd0 100644 --- a/core/lib/Thelia/Controller/Admin/AddressController.php +++ b/core/lib/Thelia/Controller/Admin/AddressController.php @@ -56,7 +56,7 @@ class AddressController extends AbstractCrudController public function useAddressAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $address_id = $this->getRequest()->request->get('address_id'); diff --git a/core/lib/Thelia/Controller/Admin/AdminLogsController.php b/core/lib/Thelia/Controller/Admin/AdminLogsController.php index 1c7b6542f..5f3fadb0f 100644 --- a/core/lib/Thelia/Controller/Admin/AdminLogsController.php +++ b/core/lib/Thelia/Controller/Admin/AdminLogsController.php @@ -32,7 +32,7 @@ class AdminLogsController extends BaseAdminController public function defaultAction() { - if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::VIEW)) return $response; // Render the edition template. return $this->render('admin-logs'); diff --git a/core/lib/Thelia/Controller/Admin/AreaController.php b/core/lib/Thelia/Controller/Admin/AreaController.php index 79c549201..2464ad0cb 100644 --- a/core/lib/Thelia/Controller/Admin/AreaController.php +++ b/core/lib/Thelia/Controller/Admin/AreaController.php @@ -231,7 +231,7 @@ class AreaController extends AbstractCrudController public function addCountry() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $areaCountryForm = new AreaCountryForm($this->getRequest()); $error_msg = null; @@ -273,7 +273,7 @@ class AreaController extends AbstractCrudController public function removeCountry() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $request = $this->getRequest(); $removeCountryEvent = new AreaRemoveCountryEvent($request->request->get('areai_id', 0), $request->request->get('country_id', 0)); @@ -284,7 +284,7 @@ class AreaController extends AbstractCrudController public function updatePostageAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $areaUpdateForm = new AreaPostageForm($this->getRequest()); $error_msg = null; diff --git a/core/lib/Thelia/Controller/Admin/AttributeController.php b/core/lib/Thelia/Controller/Admin/AttributeController.php index 9644d6651..ce1ca3072 100644 --- a/core/lib/Thelia/Controller/Admin/AttributeController.php +++ b/core/lib/Thelia/Controller/Admin/AttributeController.php @@ -235,7 +235,7 @@ class AttributeController extends AbstractCrudController protected function addRemoveFromAllTemplates($eventType) { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; try { if (null !== $object = $this->getExistingObject()) { diff --git a/core/lib/Thelia/Controller/Admin/BaseAdminController.php b/core/lib/Thelia/Controller/Admin/BaseAdminController.php index a36318232..5d10c65b6 100755 --- a/core/lib/Thelia/Controller/Admin/BaseAdminController.php +++ b/core/lib/Thelia/Controller/Admin/BaseAdminController.php @@ -118,17 +118,18 @@ class BaseAdminController extends BaseController * Check current admin user authorisations. An ADMIN role is assumed. * * @param mixed $resources a single resource or an array of resources. + * @param mixed $modules a single module or an array of modules. * @param mixed $accesses a single access or an array of accesses. * * @return mixed null if authorization is granted, or a Response object which contains the error page otherwise - * */ - protected function checkAuth($resources, $accesses) + protected function checkAuth($resources, $modules, $accesses) { $resources = is_array($resources) ? $resources : array($resources); + $modules = is_array($modules) ? $modules : array($modules); $accesses = is_array($accesses) ? $accesses : array($accesses); - if ($this->getSecurityContext()->isGranted(array("ADMIN"), $resources, $accesses)) { + if ($this->getSecurityContext()->isGranted(array("ADMIN"), $resources, $modules, $accesses)) { // Okay ! return null; } diff --git a/core/lib/Thelia/Controller/Admin/CategoryController.php b/core/lib/Thelia/Controller/Admin/CategoryController.php index 018aa3586..3a8428766 100755 --- a/core/lib/Thelia/Controller/Admin/CategoryController.php +++ b/core/lib/Thelia/Controller/Admin/CategoryController.php @@ -215,7 +215,7 @@ class CategoryController extends AbstractCrudController public function setToggleVisibilityAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $event = new CategoryToggleVisibilityEvent($this->getExistingObject()); @@ -295,7 +295,7 @@ class CategoryController extends AbstractCrudController public function addRelatedContentAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $content_id = intval($this->getRequest()->get('content_id')); @@ -325,7 +325,7 @@ class CategoryController extends AbstractCrudController public function addRelatedPictureAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) { + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) { return $response; } @@ -353,7 +353,7 @@ class CategoryController extends AbstractCrudController public function deleteRelatedContentAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $content_id = intval($this->getRequest()->get('content_id')); diff --git a/core/lib/Thelia/Controller/Admin/ConfigController.php b/core/lib/Thelia/Controller/Admin/ConfigController.php index 67aec848a..fe18720b6 100644 --- a/core/lib/Thelia/Controller/Admin/ConfigController.php +++ b/core/lib/Thelia/Controller/Admin/ConfigController.php @@ -186,7 +186,7 @@ class ConfigController extends AbstractCrudController public function changeValuesAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $variables = $this->getRequest()->get('variable', array()); diff --git a/core/lib/Thelia/Controller/Admin/ContentController.php b/core/lib/Thelia/Controller/Admin/ContentController.php index 0b850734c..82d9ec8bd 100644 --- a/core/lib/Thelia/Controller/Admin/ContentController.php +++ b/core/lib/Thelia/Controller/Admin/ContentController.php @@ -69,7 +69,7 @@ class ContentController extends AbstractCrudController public function addAdditionalFolderAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $folder_id = intval($this->getRequest()->request->get('additional_folder_id')); @@ -97,7 +97,7 @@ class ContentController extends AbstractCrudController public function removeAdditionalFolderAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $folder_id = intval($this->getRequest()->request->get('additional_folder_id')); diff --git a/core/lib/Thelia/Controller/Admin/CountryController.php b/core/lib/Thelia/Controller/Admin/CountryController.php index 0ef2f1006..d950cc487 100644 --- a/core/lib/Thelia/Controller/Admin/CountryController.php +++ b/core/lib/Thelia/Controller/Admin/CountryController.php @@ -235,7 +235,7 @@ class CountryController extends AbstractCrudController public function toggleDefaultAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $content = null; if (null !== $country_id = $this->getRequest()->get('country_id')) { $toogleDefaultEvent = new CountryToggleDefaultEvent($country_id); diff --git a/core/lib/Thelia/Controller/Admin/CouponController.php b/core/lib/Thelia/Controller/Admin/CouponController.php index 0169a16b9..167a13d55 100755 --- a/core/lib/Thelia/Controller/Admin/CouponController.php +++ b/core/lib/Thelia/Controller/Admin/CouponController.php @@ -62,7 +62,7 @@ class CouponController extends BaseAdminController */ public function browseAction() { - $this->checkAuth(AdminResources::COUPON, AccessManager::VIEW); + $this->checkAuth(AdminResources::COUPON, array(), AccessManager::VIEW); $args['urlReadCoupon'] = $this->getRoute( 'admin.coupon.read', @@ -94,7 +94,7 @@ class CouponController extends BaseAdminController */ public function readAction($couponId) { - $this->checkAuth(AdminResources::COUPON, AccessManager::VIEW); + $this->checkAuth(AdminResources::COUPON, array(), AccessManager::VIEW); // Database request repeated in the loop but cached $search = CouponQuery::create(); @@ -122,7 +122,7 @@ class CouponController extends BaseAdminController public function createAction() { // Check current user authorization - $response = $this->checkAuth(AdminResources::COUPON, AccessManager::CREATE); + $response = $this->checkAuth(AdminResources::COUPON, array(), AccessManager::CREATE); if ($response !== null) { return $response; } @@ -170,7 +170,7 @@ class CouponController extends BaseAdminController public function updateAction($couponId) { // Check current user authorization - $response = $this->checkAuth(AdminResources::COUPON, AccessManager::UPDATE); + $response = $this->checkAuth(AdminResources::COUPON, array(), AccessManager::UPDATE); if ($response !== null) { return $response; } @@ -274,7 +274,7 @@ class CouponController extends BaseAdminController */ public function getConditionInputAction($conditionId) { - $this->checkAuth(AdminResources::COUPON, AccessManager::VIEW); + $this->checkAuth(AdminResources::COUPON, array(), AccessManager::VIEW); $this->checkXmlHttpRequest(); @@ -304,7 +304,7 @@ class CouponController extends BaseAdminController */ public function updateConditionsAction($couponId) { - $this->checkAuth(AdminResources::COUPON, AccessManager::VIEW); + $this->checkAuth(AdminResources::COUPON, array(), AccessManager::VIEW); $this->checkXmlHttpRequest(); diff --git a/core/lib/Thelia/Controller/Admin/CurrencyController.php b/core/lib/Thelia/Controller/Admin/CurrencyController.php index 504877157..be780a13b 100644 --- a/core/lib/Thelia/Controller/Admin/CurrencyController.php +++ b/core/lib/Thelia/Controller/Admin/CurrencyController.php @@ -185,7 +185,7 @@ class CurrencyController extends AbstractCrudController public function updateRatesAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; try { $this->dispatch(TheliaEvents::CURRENCY_UPDATE_RATES); @@ -203,7 +203,7 @@ class CurrencyController extends AbstractCrudController public function setDefaultAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $changeEvent = new CurrencyUpdateEvent($this->getRequest()->get('currency_id', 0)); diff --git a/core/lib/Thelia/Controller/Admin/CustomerController.php b/core/lib/Thelia/Controller/Admin/CustomerController.php index ec55b3e43..f312167c5 100644 --- a/core/lib/Thelia/Controller/Admin/CustomerController.php +++ b/core/lib/Thelia/Controller/Admin/CustomerController.php @@ -47,6 +47,7 @@ class CustomerController extends AbstractCrudController { public function __construct() { + parent::__construct( 'customer', 'lastname', diff --git a/core/lib/Thelia/Controller/Admin/FeatureController.php b/core/lib/Thelia/Controller/Admin/FeatureController.php index 1be5dfeec..8ff3a972e 100644 --- a/core/lib/Thelia/Controller/Admin/FeatureController.php +++ b/core/lib/Thelia/Controller/Admin/FeatureController.php @@ -235,7 +235,7 @@ class FeatureController extends AbstractCrudController protected function addRemoveFromAllTemplates($eventType) { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; try { if (null !== $object = $this->getExistingObject()) { diff --git a/core/lib/Thelia/Controller/Admin/FileController.php b/core/lib/Thelia/Controller/Admin/FileController.php index 5c712898a..f4d2c3f73 100755 --- a/core/lib/Thelia/Controller/Admin/FileController.php +++ b/core/lib/Thelia/Controller/Admin/FileController.php @@ -71,7 +71,7 @@ class FileController extends BaseAdminController */ public function saveImageAjaxAction($parentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); if ($this->isParentTypeValid($parentType)) { @@ -161,7 +161,7 @@ class FileController extends BaseAdminController */ public function saveDocumentAjaxAction($parentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); if ($this->isParentTypeValid($parentType)) { @@ -239,7 +239,7 @@ class FileController extends BaseAdminController */ public function getImageListAjaxAction($parentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); $args = array('imageType' => $parentType, 'parentId' => $parentId); @@ -256,7 +256,7 @@ class FileController extends BaseAdminController */ public function getDocumentListAjaxAction($parentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); $args = array('documentType' => $parentType, 'parentId' => $parentId); @@ -273,7 +273,7 @@ class FileController extends BaseAdminController */ public function getImageFormAjaxAction($parentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); $args = array('imageType' => $parentType, 'parentId' => $parentId); @@ -290,7 +290,7 @@ class FileController extends BaseAdminController */ public function getDocumentFormAjaxAction($parentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); $args = array('documentType' => $parentType, 'parentId' => $parentId); @@ -307,7 +307,7 @@ class FileController extends BaseAdminController */ public function viewImageAction($imageId, $parentType) { - if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE)) { + if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE)) { return $response; } try { @@ -336,7 +336,7 @@ class FileController extends BaseAdminController */ public function viewDocumentAction($documentId, $parentType) { - if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE)) { + if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE)) { return $response; } try { @@ -365,7 +365,7 @@ class FileController extends BaseAdminController */ public function updateImageAction($imageId, $parentType) { - if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE)) { + if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE)) { return $response; } @@ -442,7 +442,7 @@ class FileController extends BaseAdminController */ public function updateDocumentAction($documentId, $parentType) { - if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE)) { + if (null !== $response = $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE)) { return $response; } @@ -519,7 +519,7 @@ class FileController extends BaseAdminController */ public function deleteImageAction($imageId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); $fileManager = new FileManager($this->container); @@ -591,7 +591,7 @@ class FileController extends BaseAdminController */ public function deleteDocumentAction($documentId, $parentType) { - $this->checkAuth(AdminResources::retrieve($parentType), AccessManager::UPDATE); + $this->checkAuth(AdminResources::retrieve($parentType), array(), AccessManager::UPDATE); $this->checkXmlHttpRequest(); $fileManager = new FileManager($this->container); diff --git a/core/lib/Thelia/Controller/Admin/HomeController.php b/core/lib/Thelia/Controller/Admin/HomeController.php index 8679b28e6..e8711f97d 100644 --- a/core/lib/Thelia/Controller/Admin/HomeController.php +++ b/core/lib/Thelia/Controller/Admin/HomeController.php @@ -33,7 +33,7 @@ class HomeController extends BaseAdminController public function defaultAction() { - if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::VIEW)) return $response; // Render the edition template. return $this->render('home'); diff --git a/core/lib/Thelia/Controller/Admin/LangController.php b/core/lib/Thelia/Controller/Admin/LangController.php index ccf980c81..e7862badc 100644 --- a/core/lib/Thelia/Controller/Admin/LangController.php +++ b/core/lib/Thelia/Controller/Admin/LangController.php @@ -51,7 +51,7 @@ class LangController extends BaseAdminController public function defaultAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::VIEW)) return $response; return $this->renderDefault(); } @@ -72,7 +72,7 @@ class LangController extends BaseAdminController public function updateAction($lang_id) { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $this->checkXmlHttpRequest(); @@ -96,7 +96,7 @@ class LangController extends BaseAdminController public function processUpdateAction($lang_id) { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $error_msg = false; @@ -138,7 +138,7 @@ class LangController extends BaseAdminController public function toggleDefaultAction($lang_id) { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $this->checkXmlHttpRequest(); $error = false; @@ -169,7 +169,7 @@ class LangController extends BaseAdminController public function addAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::CREATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::CREATE)) return $response; $createForm = new LangCreateForm($this->getRequest()); @@ -211,7 +211,7 @@ class LangController extends BaseAdminController public function deleteAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::DELETE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::DELETE)) return $response; $error_msg = false; @@ -235,7 +235,7 @@ class LangController extends BaseAdminController public function defaultBehaviorAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $error_msg = false; @@ -267,7 +267,7 @@ class LangController extends BaseAdminController public function domainAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $error_msg = false; $langUrlForm = new LangUrlForm($this->getRequest()); @@ -314,7 +314,7 @@ class LangController extends BaseAdminController private function domainActivation($activate) { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $error_msg = false; diff --git a/core/lib/Thelia/Controller/Admin/LanguageController.php b/core/lib/Thelia/Controller/Admin/LanguageController.php index 7559cb5cc..b91124277 100644 --- a/core/lib/Thelia/Controller/Admin/LanguageController.php +++ b/core/lib/Thelia/Controller/Admin/LanguageController.php @@ -35,7 +35,7 @@ class LanguageController extends BaseAdminController { public function defaultAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::VIEW)) return $response; return $this->render("languages"); } diff --git a/core/lib/Thelia/Controller/Admin/MailingSystemController.php b/core/lib/Thelia/Controller/Admin/MailingSystemController.php index cfe6f06dd..1fe79c353 100644 --- a/core/lib/Thelia/Controller/Admin/MailingSystemController.php +++ b/core/lib/Thelia/Controller/Admin/MailingSystemController.php @@ -36,7 +36,7 @@ class MailingSystemController extends BaseAdminController public function defaultAction() { - if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::VIEW)) return $response; // Hydrate the form abd pass it to the parser $data = array( @@ -64,7 +64,7 @@ class MailingSystemController extends BaseAdminController public function updateAction() { // Check current user authorization - if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::UPDATE)) return $response; $error_msg = false; diff --git a/core/lib/Thelia/Controller/Admin/ModuleController.php b/core/lib/Thelia/Controller/Admin/ModuleController.php index 53322949a..c9cd97359 100644 --- a/core/lib/Thelia/Controller/Admin/ModuleController.php +++ b/core/lib/Thelia/Controller/Admin/ModuleController.php @@ -23,12 +23,15 @@ namespace Thelia\Controller\Admin; +use Thelia\Core\Event\Module\ModuleEvent; use Thelia\Core\Security\Resource\AdminResources; use Thelia\Core\Event\Module\ModuleDeleteEvent; use Thelia\Core\Event\Module\ModuleToggleActivationEvent; use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Security\AccessManager; +use Thelia\Form\ModuleModificationForm; +use Thelia\Model\ModuleQuery; use Thelia\Module\ModuleManagement; /** @@ -36,28 +39,158 @@ use Thelia\Module\ModuleManagement; * @package Thelia\Controller\Admin * @author Manuel Raynaud */ -class ModuleController extends BaseAdminController +class ModuleController extends AbstractCrudController { + public function __construct() + { + parent::__construct( + 'module', + null, + null, + + AdminResources::MODULE, + + null, + TheliaEvents::MODULE_UPDATE, + null + ); + } + + protected function getCreationForm() + { + return null; + } + + protected function getUpdateForm() + { + return new ModuleModificationForm($this->getRequest()); + } + + protected function getCreationEvent($formData) + { + return null; + } + + protected function getUpdateEvent($formData) + { + $event = new ModuleEvent(); + + $event->setLocale($formData['locale']); + $event->setId($formData['id']); + $event->setTitle($formData['title']); + $event->setChapo($formData['chapo']); + $event->setDescription($formData['description']); + $event->setPostscriptum($formData['postscriptum']); + + return $event; + } + + protected function getDeleteEvent() + { + return null; + } + + protected function eventContainsObject($event) + { + return $event->hasModule(); + } + + protected function hydrateObjectForm($object) + { + $object->setLocale($this->getCurrentEditionLocale()); + $data = array( + 'id' => $object->getId(), + 'locale' => $object->getLocale(), + 'title' => $object->getTitle(), + 'chapo' => $object->getChapo(), + 'description' => $object->getDescription(), + 'postscriptum' => $object->getPostscriptum(), + ); + + // Setup the object form + return new ModuleModificationForm($this->getRequest(), "form", $data); + } + + protected function getObjectFromEvent($event) + { + return $event->hasModule() ? $event->getModule() : null; + } + + protected function getExistingObject() + { + return ModuleQuery::create() + ->joinWithI18n($this->getCurrentEditionLocale()) + ->findOneById($this->getRequest()->get('module_id')); + } + + + protected function getObjectLabel($object) + { + return $object->getTitle(); + } + + protected function getObjectId($object) + { + return $object->getId(); + } + + protected function getViewArguments() + { + return array(); + } + + protected function getRouteArguments($module_id = null) + { + return array( + 'module_id' => $module_id === null ? $this->getRequest()->get('module_id') : $module_id, + ); + } + + protected function renderListTemplate($currentOrder) + { + // We always return to the feature edition form + return $this->render( + 'modules', + array() + ); + } + + protected function renderEditionTemplate() + { + // We always return to the feature edition form + return $this->render('module-edit', array_merge($this->getViewArguments(), $this->getRouteArguments())); + } + + protected function redirectToEditionTemplate($request = null, $country = null) + { + // We always return to the module edition form + $this->redirectToRoute( + "admin.module.update", + $this->getViewArguments(), + $this->getRouteArguments() + ); + } + + protected function redirectToListTemplate() + { + $this->redirectToRoute( + "admin.module" + ); + } + public function indexAction() { - if (null !== $response = $this->checkAuth(AdminResources::MODULE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::MODULE, array(), AccessManager::VIEW)) return $response; - $modulemanagement = new ModuleManagement(); - $modulemanagement->updateModules(); + $moduleManagement = new ModuleManagement(); + $moduleManagement->updateModules(); return $this->render("modules"); } - public function updateAction($module_id) - { - return $this->render("module-edit", array( - "module_id" => $module_id - )); - } - public function toggleActivationAction($module_id) { - if (null !== $response = $this->checkAuth(AdminResources::MODULE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::MODULE, array(), AccessManager::UPDATE)) return $response; $message = null; try { $event = new ModuleToggleActivationEvent($module_id); @@ -89,7 +222,7 @@ class ModuleController extends BaseAdminController public function deleteAction() { - if (null !== $response = $this->checkAuth(AdminResources::MODULE, AccessManager::DELETE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::MODULE, array(), AccessManager::DELETE)) return $response; $message = null; try { diff --git a/core/lib/Thelia/Controller/Admin/OrderController.php b/core/lib/Thelia/Controller/Admin/OrderController.php index 54dcc3059..0a293278e 100644 --- a/core/lib/Thelia/Controller/Admin/OrderController.php +++ b/core/lib/Thelia/Controller/Admin/OrderController.php @@ -47,7 +47,7 @@ class OrderController extends BaseAdminController { public function indexAction() { - if (null !== $response = $this->checkAuth(AdminResources::ORDER, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::VIEW)) return $response; return $this->render("orders", array("display_order" => 20)); } @@ -60,7 +60,7 @@ class OrderController extends BaseAdminController public function updateStatus($order_id = null) { - if (null !== $response = $this->checkAuth(AdminResources::ORDER, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE)) return $response; $message = null; @@ -111,7 +111,7 @@ class OrderController extends BaseAdminController public function updateDeliveryRef($order_id) { - if (null !== $response = $this->checkAuth(AdminResources::ORDER, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE)) return $response; $message = null; @@ -146,7 +146,7 @@ class OrderController extends BaseAdminController public function updateAddress($order_id) { - if (null !== $response = $this->checkAuth(AdminResources::ORDER, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE)) return $response; $message = null; @@ -212,7 +212,7 @@ class OrderController extends BaseAdminController protected function generatePdf($order_id, $fileName) { - if (null !== $response = $this->checkAuth(AdminResources::ORDER, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE)) return $response; $html = $this->renderRaw( $fileName, diff --git a/core/lib/Thelia/Controller/Admin/ProductController.php b/core/lib/Thelia/Controller/Admin/ProductController.php index a711ada52..9aa2d279e 100644 --- a/core/lib/Thelia/Controller/Admin/ProductController.php +++ b/core/lib/Thelia/Controller/Admin/ProductController.php @@ -407,7 +407,7 @@ class ProductController extends AbstractCrudController public function setToggleVisibilityAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $event = new ProductToggleVisibilityEvent($this->getExistingObject()); @@ -483,7 +483,7 @@ class ProductController extends AbstractCrudController { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $content_id = intval($this->getRequest()->get('content_id')); @@ -509,7 +509,7 @@ class ProductController extends AbstractCrudController { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $content_id = intval($this->getRequest()->get('content_id')); @@ -561,7 +561,7 @@ class ProductController extends AbstractCrudController public function addAccessoryAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $accessory_id = intval($this->getRequest()->get('accessory_id')); @@ -586,7 +586,7 @@ class ProductController extends AbstractCrudController public function deleteAccessoryAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $accessory_id = intval($this->getRequest()->get('accessory_id')); @@ -642,7 +642,7 @@ class ProductController extends AbstractCrudController public function setProductTemplateAction($productId) { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $product = ProductQuery::create()->findPk($productId); @@ -739,7 +739,7 @@ class ProductController extends AbstractCrudController public function addAdditionalCategoryAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $category_id = intval($this->getRequest()->request->get('additional_category_id')); @@ -764,7 +764,7 @@ class ProductController extends AbstractCrudController public function deleteAdditionalCategoryAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $category_id = intval($this->getRequest()->get('additional_category_id')); @@ -861,7 +861,7 @@ class ProductController extends AbstractCrudController public function addProductSaleElementAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $event = new ProductSaleElementCreateEvent( $this->getExistingObject(), @@ -885,7 +885,7 @@ class ProductController extends AbstractCrudController public function deleteProductSaleElementAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $event = new ProductSaleElementDeleteEvent( $this->getRequest()->get('product_sale_element_id',0), @@ -944,7 +944,7 @@ class ProductController extends AbstractCrudController protected function processProductSaleElementUpdate($changeForm) { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $error_msg = false; @@ -1053,7 +1053,7 @@ class ProductController extends AbstractCrudController public function buildCombinationsAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $error_msg = false; diff --git a/core/lib/Thelia/Controller/Admin/ProfileController.php b/core/lib/Thelia/Controller/Admin/ProfileController.php index 909d055b8..9b83c30b7 100644 --- a/core/lib/Thelia/Controller/Admin/ProfileController.php +++ b/core/lib/Thelia/Controller/Admin/ProfileController.php @@ -221,7 +221,7 @@ class ProfileController extends AbstractCrudController public function updateAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $object = $this->getExistingObject(); @@ -306,7 +306,7 @@ class ProfileController extends AbstractCrudController public function processUpdateResourceAccess() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $error_msg = false; @@ -355,7 +355,7 @@ class ProfileController extends AbstractCrudController public function processUpdateModuleAccess() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $error_msg = false; diff --git a/core/lib/Thelia/Controller/Admin/ShippingZoneController.php b/core/lib/Thelia/Controller/Admin/ShippingZoneController.php index 8e8f38eec..82b630398 100644 --- a/core/lib/Thelia/Controller/Admin/ShippingZoneController.php +++ b/core/lib/Thelia/Controller/Admin/ShippingZoneController.php @@ -42,13 +42,13 @@ class ShippingZoneController extends BaseAdminController public function indexAction() { - if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, array(), AccessManager::VIEW)) return $response; return $this->render("shipping-zones", array("display_shipping_zone" => 20)); } public function updateAction($shipping_zones_id) { - if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, array(), AccessManager::VIEW)) return $response; return $this->render("shipping-zones-edit", array( "shipping_zones_id" => $shipping_zones_id )); @@ -59,7 +59,7 @@ class ShippingZoneController extends BaseAdminController */ public function addArea() { - if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, array(), AccessManager::UPDATE)) return $response; $shippingAreaForm = new ShippingZoneAddArea($this->getRequest()); $error_msg = null; @@ -94,7 +94,7 @@ class ShippingZoneController extends BaseAdminController public function removeArea() { - if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::SHIPPING_ZONE, array(), AccessManager::UPDATE)) return $response; $shippingAreaForm = new ShippingZoneRemoveArea($this->getRequest()); $error_msg = null; diff --git a/core/lib/Thelia/Controller/Admin/SystemLogController.php b/core/lib/Thelia/Controller/Admin/SystemLogController.php index 96621717c..118f06efb 100644 --- a/core/lib/Thelia/Controller/Admin/SystemLogController.php +++ b/core/lib/Thelia/Controller/Admin/SystemLogController.php @@ -86,7 +86,7 @@ class SystemLogController extends BaseAdminController public function defaultAction() { - if (null !== $response = $this->checkAuth(AdminResources::SYSTEM_LOG, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::SYSTEM_LOG, array(), AccessManager::VIEW)) return $response; /* const VAR_LEVEL = "tlog_level"; @@ -121,7 +121,7 @@ class SystemLogController extends BaseAdminController public function saveAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; $error_msg = false; diff --git a/core/lib/Thelia/Controller/Admin/TaxRuleController.php b/core/lib/Thelia/Controller/Admin/TaxRuleController.php index 2e6cb2b70..b85123505 100644 --- a/core/lib/Thelia/Controller/Admin/TaxRuleController.php +++ b/core/lib/Thelia/Controller/Admin/TaxRuleController.php @@ -219,7 +219,7 @@ class TaxRuleController extends AbstractCrudController public function updateAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $object = $this->getExistingObject(); @@ -237,7 +237,7 @@ class TaxRuleController extends AbstractCrudController public function setDefaultAction() { - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $setDefaultEvent = new TaxRuleEvent(); @@ -255,7 +255,7 @@ class TaxRuleController extends AbstractCrudController public function processUpdateTaxesAction() { // Check current user authorization - if (null !== $response = $this->checkAuth($this->resourceCode, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; $error_msg = false; diff --git a/core/lib/Thelia/Controller/Admin/TemplateController.php b/core/lib/Thelia/Controller/Admin/TemplateController.php index fd7df6bb2..5e551679d 100644 --- a/core/lib/Thelia/Controller/Admin/TemplateController.php +++ b/core/lib/Thelia/Controller/Admin/TemplateController.php @@ -211,7 +211,7 @@ class TemplateController extends AbstractCrudController public function addAttributeAction() { // Check current user authorization - if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, array(), AccessManager::UPDATE)) return $response; $attribute_id = intval($this->getRequest()->get('attribute_id')); @@ -235,7 +235,7 @@ class TemplateController extends AbstractCrudController public function deleteAttributeAction() { // Check current user authorization - if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, array(), AccessManager::UPDATE)) return $response; $event = new TemplateDeleteAttributeEvent( $this->getExistingObject(), @@ -270,7 +270,7 @@ class TemplateController extends AbstractCrudController public function addFeatureAction() { // Check current user authorization - if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, array(), AccessManager::UPDATE)) return $response; $feature_id = intval($this->getRequest()->get('feature_id')); @@ -294,7 +294,7 @@ class TemplateController extends AbstractCrudController public function deleteFeatureAction() { // Check current user authorization - if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::TEMPLATE, array(), AccessManager::UPDATE)) return $response; $event = new TemplateDeleteFeatureEvent( $this->getExistingObject(), diff --git a/core/lib/Thelia/Controller/Admin/TranslationsController.php b/core/lib/Thelia/Controller/Admin/TranslationsController.php index 30ebbcdb2..654a3ffdf 100644 --- a/core/lib/Thelia/Controller/Admin/TranslationsController.php +++ b/core/lib/Thelia/Controller/Admin/TranslationsController.php @@ -161,14 +161,14 @@ class TranslationsController extends BaseAdminController public function defaultAction() { - if (null !== $response = $this->checkAuth(AdminResources::TRANSLATIONS, AccessManager::VIEW)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::TRANSLATIONS, array(), AccessManager::VIEW)) return $response; return $this->renderTemplate(); } public function updateAction() { - if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, AccessManager::UPDATE)) return $response; + if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; return $this->renderTemplate(); } diff --git a/core/lib/Thelia/Core/Event/Module/ModuleEvent.php b/core/lib/Thelia/Core/Event/Module/ModuleEvent.php index 583a3afc9..7dc3f67e8 100644 --- a/core/lib/Thelia/Core/Event/Module/ModuleEvent.php +++ b/core/lib/Thelia/Core/Event/Module/ModuleEvent.php @@ -37,6 +37,109 @@ class ModuleEvent extends ActionEvent */ protected $module; + protected $id; + protected $locale; + protected $title; + protected $chapo; + protected $description; + protected $postscriptum; + + /** + * @param mixed $chapo + */ + public function setChapo($chapo) + { + $this->chapo = $chapo; + } + + /** + * @return mixed + */ + public function getChapo() + { + return $this->chapo; + } + + /** + * @param mixed $description + */ + public function setDescription($description) + { + $this->description = $description; + } + + /** + * @return mixed + */ + public function getDescription() + { + return $this->description; + } + + /** + * @param mixed $id + */ + public function setId($id) + { + $this->id = $id; + } + + /** + * @return mixed + */ + public function getId() + { + return $this->id; + } + + /** + * @param mixed $locale + */ + public function setLocale($locale) + { + $this->locale = $locale; + } + + /** + * @return mixed + */ + public function getLocale() + { + return $this->locale; + } + + /** + * @param mixed $postscriptum + */ + public function setPostscriptum($postscriptum) + { + $this->postscriptum = $postscriptum; + } + + /** + * @return mixed + */ + public function getPostscriptum() + { + return $this->postscriptum; + } + + /** + * @param mixed $title + */ + public function setTitle($title) + { + $this->title = $title; + } + + /** + * @return mixed + */ + public function getTitle() + { + return $this->title; + } + public function __construct(Module $module = null) { $this->module = $module; diff --git a/core/lib/Thelia/Core/Event/TheliaEvents.php b/core/lib/Thelia/Core/Event/TheliaEvents.php index 6dbe89e10..1dfcb673c 100755 --- a/core/lib/Thelia/Core/Event/TheliaEvents.php +++ b/core/lib/Thelia/Core/Event/TheliaEvents.php @@ -693,8 +693,9 @@ final class TheliaEvents const MODULE_TOGGLE_ACTIVATION = 'thelia.module.toggleActivation'; /** - * sent when a module is deleted + * module */ + const MODULE_UPDATE = 'thelia.module.update'; const MODULE_DELETE = 'thelia.module.delete'; /** diff --git a/core/lib/Thelia/Core/Security/Resource/AdminResources.php b/core/lib/Thelia/Core/Security/Resource/AdminResources.php index 834c2c628..e953b83aa 100644 --- a/core/lib/Thelia/Core/Security/Resource/AdminResources.php +++ b/core/lib/Thelia/Core/Security/Resource/AdminResources.php @@ -84,7 +84,7 @@ final class AdminResources const MESSAGE = "admin.configuration.message"; - const MODULE = "admin.configuration.module"; + const MODULE = "admin.module"; const ORDER = "admin.order"; diff --git a/core/lib/Thelia/Core/Security/SecurityContext.php b/core/lib/Thelia/Core/Security/SecurityContext.php index 128feb516..e97a19877 100755 --- a/core/lib/Thelia/Core/Security/SecurityContext.php +++ b/core/lib/Thelia/Core/Security/SecurityContext.php @@ -123,7 +123,7 @@ class SecurityContext * * @return Boolean */ - final public function isGranted(array $roles, array $resources, array $accesses) + final public function isGranted(array $roles, array $resources, array $modules, array $accesses) { // Find a user which matches the required roles. $user = $this->getCustomerUser(); @@ -140,7 +140,7 @@ class SecurityContext return false; } - if (empty($resources) || empty($accesses)) { + if ((empty($resources) && empty($modules)) || empty($accesses)) { return true; } @@ -172,6 +172,28 @@ class SecurityContext } } + foreach ($modules as $module) { + if ($module === '') { + continue; + } + + if(!array_key_exists('module', $userPermissions)) { + return false; + } + + $module = strtolower($module); + + if (!array_key_exists($module, $userPermissions['module'])) { + return false; + } + + foreach ($accesses as $access) { + if (!$userPermissions['module'][$module]->can($access)) { + return false; + } + } + } + return true; } diff --git a/core/lib/Thelia/Core/Template/Loop/Auth.php b/core/lib/Thelia/Core/Template/Loop/Auth.php index ef466d3e9..072193f34 100755 --- a/core/lib/Thelia/Core/Template/Loop/Auth.php +++ b/core/lib/Thelia/Core/Template/Loop/Auth.php @@ -60,6 +60,12 @@ class Auth extends BaseLoop implements ArraySearchLoopInterface new AlphaNumStringListType() ) ), + new Argument( + 'module', + new TypeCollection( + new AlphaNumStringListType() + ) + ), new Argument( 'access', new TypeCollection( @@ -79,10 +85,20 @@ class Auth extends BaseLoop implements ArraySearchLoopInterface { $roles = $this->getRole(); $resource = $this->getResource(); + $module = $this->getModule(); $access = $this->getAccess(); + if(null !== $module) { + $in = true; + } + try { - if (true === $this->securityContext->isGranted($roles, $resource === null ? array() : $resource, $access === null ? array() : $access)) { + if (true === $this->securityContext->isGranted( + $roles, + $resource === null ? array() : $resource, + $module === null ? array() : $module, + $access === null ? array() : $access) + ) { // Create an empty row: loop is no longer empty :) $loopResult->addRow(new LoopResultRow()); diff --git a/core/lib/Thelia/Core/Template/Loop/FolderPath.php b/core/lib/Thelia/Core/Template/Loop/FolderPath.php index ce5ea9526..92c42f890 100644 --- a/core/lib/Thelia/Core/Template/Loop/FolderPath.php +++ b/core/lib/Thelia/Core/Template/Loop/FolderPath.php @@ -102,9 +102,9 @@ class FolderPath extends BaseI18nLoop implements ArraySearchLoopInterface if ($folder != null) { $results[] = array( - "ID" => $result->getId(), - "TITLE" => $result->getVirtualColumn('i18n_TITLE'), - "URL" => $result->getUrl($this->locale), + "ID" => $folder->getId(), + "TITLE" => $folder->getVirtualColumn('i18n_TITLE'), + "URL" => $folder->getUrl($this->locale), "LOCALE" => $this->locale, ); diff --git a/core/lib/Thelia/Core/Template/Smarty/Plugins/AdminUtilities.php b/core/lib/Thelia/Core/Template/Smarty/Plugins/AdminUtilities.php index 0be66997a..78e1c8f5b 100644 --- a/core/lib/Thelia/Core/Template/Smarty/Plugins/AdminUtilities.php +++ b/core/lib/Thelia/Core/Template/Smarty/Plugins/AdminUtilities.php @@ -69,6 +69,7 @@ class AdminUtilities extends AbstractSmartyPlugin { // The required permissions $resource = $this->getParam($params, 'resource'); + $module = $this->getParam($params, 'module'); $access = $this->getParam($params, 'access'); // The base position change path @@ -92,7 +93,12 @@ class AdminUtilities extends AbstractSmartyPlugin */ - if ($permissions == null || $this->securityContext->isGranted("ADMIN", array($resource), array($access))) { + if ($permissions == null || $this->securityContext->isGranted( + "ADMIN", + $resource === null ? array() : array($resource), + $module === null ? array() : array($module), + array($access)) + ) { return $this->fetch_snippet($smarty, 'includes/admin-utilities-position-block', array( 'admin_utilities_go_up_url' => URL::getInstance()->absoluteUrl($path, array('mode' => 'up', $url_parameter => $id)), diff --git a/core/lib/Thelia/Core/Template/Smarty/Plugins/Security.php b/core/lib/Thelia/Core/Template/Smarty/Plugins/Security.php index 4f8b0ccc2..46a45c0c4 100755 --- a/core/lib/Thelia/Core/Template/Smarty/Plugins/Security.php +++ b/core/lib/Thelia/Core/Template/Smarty/Plugins/Security.php @@ -55,9 +55,10 @@ class Security extends AbstractSmartyPlugin { $roles = $this->_explode($this->getParam($params, 'role')); $resources = $this->_explode($this->getParam($params, 'resource')); + $modules = $this->_explode($this->getParam($params, 'module')); $accesses = $this->_explode($this->getParam($params, 'access')); - if (! $this->securityContext->isGranted($roles, $resources, $accesses)) { + if (! $this->securityContext->isGranted($roles, $resources, $modules, $accesses)) { $ex = new AuthenticationException( sprintf("User not granted for roles '%s', to access resources '%s' with %s in context '%s'.", diff --git a/local/modules/FakeCB/Tests/FakeCBTest.php b/core/lib/Thelia/Form/ModuleModificationForm.php similarity index 55% rename from local/modules/FakeCB/Tests/FakeCBTest.php rename to core/lib/Thelia/Form/ModuleModificationForm.php index 20a68fc1d..5b65f5709 100755 --- a/local/modules/FakeCB/Tests/FakeCBTest.php +++ b/core/lib/Thelia/Form/ModuleModificationForm.php @@ -4,7 +4,7 @@ /* Thelia */ /* */ /* Copyright (c) OpenStudio */ -/* email : info@thelia.net */ +/* email : info@thelia.net */ /* web : http://www.thelia.net */ /* */ /* This program is free software; you can redistribute it and/or modify */ @@ -21,32 +21,55 @@ /* */ /*************************************************************************************/ -namespace FakeCB\Tests; +namespace Thelia\Form; -use FakeCB\FakeCB; -use Thelia\Tests\Module\BaseModuleTestor; +use Symfony\Component\Validator\Constraints; +use Symfony\Component\Validator\ExecutionContextInterface; +use Thelia\Model\ModuleQuery; -/** - * - * @author Etienne Roudeix - * - */ -class FakeCBTest extends BaseModuleTestor +class ModuleModificationForm extends BaseForm { - public function getTestedClassName() + use StandardDescriptionFieldsTrait; + + protected function buildForm() { - return 'FakeCB\FakeCB'; + $this->addStandardDescFields(); + + $this->formBuilder + ->add("id", "hidden", array( + "required" => true, + "constraints" => array( + new Constraints\NotBlank(), + new Constraints\Callback( + array( + "methods" => array( + array($this, "verifyModuleId"), + ), + ) + ), + ), + "attr" => array( + "id" => "module_update_id", + ), + )) + ; } - public function getTestedInstance() + /** + * @return string the name of you form. This name must be unique + */ + public function getName() { - return new FakeCB(); + return "thelia_admin_module_modification"; } - public function testInstall() + public function verifyModuleId($value, ExecutionContextInterface $context) { - //$fakeCB = new FakeCB(); + $module = ModuleQuery::create() + ->findPk($value); - //$fakeCB->install(); + if (null === $module) { + $context->addViolation("Module ID not found"); + } } } diff --git a/core/lib/Thelia/Model/Admin.php b/core/lib/Thelia/Model/Admin.php index 84fb65b35..7c88ee8d2 100755 --- a/core/lib/Thelia/Model/Admin.php +++ b/core/lib/Thelia/Model/Admin.php @@ -35,15 +35,24 @@ class Admin extends BaseAdmin implements UserInterface return AdminResources::SUPERADMINISTRATOR; } - $userPermissionsQuery = ProfileResourceQuery::create() + $userResourcePermissionsQuery = ProfileResourceQuery::create() ->joinResource("resource", Criteria::LEFT_JOIN) ->withColumn('resource.code', 'code') ->filterByProfileId($profileId) ->find(); + $userModulePermissionsQuery = ProfileModuleQuery::create() + ->joinModule("module", Criteria::LEFT_JOIN) + ->withColumn('module.code', 'code') + ->filterByProfileId($profileId) + ->find(); + $userPermissions = array(); - foreach($userPermissionsQuery as $userPermission) { - $userPermissions[$userPermission->getVirtualColumn('code')] = new AccessManager($userPermission->getAccess()); + foreach($userResourcePermissionsQuery as $userResourcePermission) { + $userPermissions[$userResourcePermission->getVirtualColumn('code')] = new AccessManager($userResourcePermission->getAccess()); + } + foreach($userModulePermissionsQuery as $userModulePermission) { + $userPermissions['module'][strtolower($userModulePermission->getVirtualColumn('code'))] = new AccessManager($userModulePermission->getAccess()); } return $userPermissions; diff --git a/core/lib/Thelia/Model/Module.php b/core/lib/Thelia/Model/Module.php index 36ed8778e..b2518169d 100755 --- a/core/lib/Thelia/Model/Module.php +++ b/core/lib/Thelia/Model/Module.php @@ -4,8 +4,11 @@ namespace Thelia\Model; use Propel\Runtime\Connection\ConnectionInterface; use Thelia\Model\Base\Module as BaseModule; +use Thelia\Model\Tools\ModelEventDispatcherTrait; -class Module extends BaseModule { +class Module extends BaseModule +{ + use ModelEventDispatcherTrait; public function postSave(ConnectionInterface $con = null) { @@ -32,4 +35,4 @@ class Module extends BaseModule { public function getI18nPath() { return $this->getBaseDir() . DS . "I18n"; } -} \ No newline at end of file +} diff --git a/install/insert.sql b/install/insert.sql index c49f3e210..42470c72b 100755 --- a/install/insert.sql +++ b/install/insert.sql @@ -47,8 +47,7 @@ INSERT INTO `config` (`name`, `value`, `secured`, `hidden`, `created_at`, `updat INSERT INTO `module` (`id`, `code`, `type`, `activate`, `position`, `full_namespace`, `created_at`, `updated_at`) VALUES (1, 'TheliaDebugBar', 1, 1, 1, 'TheliaDebugBar\\TheliaDebugBar', NOW(), NOW()), (2, 'Colissimo', 2, 0, 1, 'Colissimo\\Colissimo', NOW(), NOW()), -(3, 'Cheque', 3, 0, 1, 'Cheque\\Cheque', NOW(), NOW()), -(4, 'FakeCB', 3, 0, 2, 'FakeCB\\FakeCB', NOW(), NOW()); +(3, 'Cheque', 3, 0, 1, 'Cheque\\Cheque', NOW(), NOW()); INSERT INTO `module_i18n` (`id`, `locale`, `title`, `description`, `chapo`, `postscriptum`) VALUES ('1', 'en_US', 'Debug bar', NULL, NULL, NULL), @@ -1225,7 +1224,7 @@ INSERT INTO resource (`id`, `code`, `created_at`, `updated_at`) VALUES (14, 'admin.configuration.language', NOW(), NOW()), (15, 'admin.configuration.mailing-system', NOW(), NOW()), (16, 'admin.configuration.message', NOW(), NOW()), -(17, 'admin.configuration.module', NOW(), NOW()), +(17, 'admin.module', NOW(), NOW()), (18, 'admin.order', NOW(), NOW()), (19, 'admin.product', NOW(), NOW()), (20, 'admin.configuration.profile', NOW(), NOW()), diff --git a/local/modules/FakeCB/Config/config.xml b/local/modules/FakeCB/Config/config.xml deleted file mode 100755 index 2430f5027..000000000 --- a/local/modules/FakeCB/Config/config.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/local/modules/FakeCB/Config/module.xml b/local/modules/FakeCB/Config/module.xml deleted file mode 100644 index 0beea57f4..000000000 --- a/local/modules/FakeCB/Config/module.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - FakeCB\FakeCB - - fake cb - - - simulation cb - - 1.0 - - Manuel Raynaud - mraynaud@openstudio.fr - - payment - 2.0.0 - alpha - diff --git a/local/modules/FakeCB/FakeCB.php b/local/modules/FakeCB/FakeCB.php deleted file mode 100755 index 58c8318da..000000000 --- a/local/modules/FakeCB/FakeCB.php +++ /dev/null @@ -1,88 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace FakeCB; - -use Propel\Runtime\Connection\ConnectionInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\HttpFoundation\Request; -use Thelia\Model\Base\ModuleImageQuery; -use Thelia\Module\BaseModule; -use Thelia\Module\PaymentModuleInterface; - -class FakeCB extends BaseModule implements PaymentModuleInterface -{ - protected $request; - protected $dispatcher; - - public function setRequest(Request $request) - { - $this->request = $request; - } - - public function getRequest() - { - return $this->request; - } - - public function setDispatcher(EventDispatcherInterface $dispatcher) - { - $this->dispatcher = $dispatcher; - } - - public function getDispatcher() - { - return $this->dispatcher; - } - - public function pay() - { - // TODO: Implement pay() method. - } - - - public function postActivation(ConnectionInterface $con = null) - { - /* insert the images from image folder if first module activation */ - $module = $this->getModuleModel(); - if(ModuleImageQuery::create()->filterByModule($module)->count() == 0) { - $this->deployImageFolder($module, sprintf('%s/images', __DIR__)); - } - - /* set module title */ - $this->setTitle( - $module, - array( - "en_US" => "Credit Card", - "fr_FR" => "Carte de crédit", - ) - ); - } - - - public function getCode() - { - return 'FakeCB'; - } - -} diff --git a/local/modules/FakeCB/images/mastercard.png b/local/modules/FakeCB/images/mastercard.png deleted file mode 100755 index 28701c3dd..000000000 Binary files a/local/modules/FakeCB/images/mastercard.png and /dev/null differ diff --git a/local/modules/FakeCB/images/visa.png b/local/modules/FakeCB/images/visa.png deleted file mode 100755 index ef0447105..000000000 Binary files a/local/modules/FakeCB/images/visa.png and /dev/null differ diff --git a/reset_install.sh b/reset_install.sh index 83288a509..4409dc783 100755 --- a/reset_install.sh +++ b/reset_install.sh @@ -42,6 +42,5 @@ php Thelia module:activate Colissimo echo -e "\n\033[01;34m[INFO] Activating Payment Module(s)\033[00m\n" php Thelia module:activate Cheque -php Thelia module:activate FakeCB -echo -e "\n\033[00;32m[SUCCESS] Reset done\033[00m\n" \ No newline at end of file +echo -e "\n\033[00;32m[SUCCESS] Reset done\033[00m\n" diff --git a/templates/admin/default/configuration.html b/templates/admin/default/configuration.html index 6b4428b1a..dec253917 100644 --- a/templates/admin/default/configuration.html +++ b/templates/admin/default/configuration.html @@ -116,13 +116,6 @@ {module_include location='system_configuration_top'} - {loop type="auth" name="pcc1" role="ADMIN" resource="admin.configuration.module" access="VIEW"} - - {intl l='Modules activation'} - - - {/loop} - {loop type="auth" name="pcc2" role="ADMIN" resource="admin.configuration.variable" access="VIEW"} {intl l='System variables'} diff --git a/templates/admin/default/includes/module-block.html b/templates/admin/default/includes/module-block.html index 527e9bf6a..1cfdec3c2 100644 --- a/templates/admin/default/includes/module-block.html +++ b/templates/admin/default/includes/module-block.html @@ -27,9 +27,9 @@ @@ -39,16 +39,23 @@
-{* {loop type="auth" name="can_change" role="ADMIN" resource="admin.modules" access="VIEW"} - - {/loop}*} - {loop type="auth" name="can_change" role="ADMIN" resource="admin.modules" access="UPDATE"} + + + {loop type="auth" name="can_change" role="ADMIN" module=$CODE access="VIEW"} + {intl l="Configure"} + {/loop} + + {*loop type="auth" name="can_change" role="ADMIN" resource="admin.modules" access="VIEW"} + + {/loop*} + + {loop type="auth" name="can_change" role="ADMIN" resource="admin.module" access="UPDATE"} {/loop} - {loop type="auth" name="can_delete" role="ADMIN" resource="admin.modules" access="DELETE"} - + {loop type="auth" name="can_delete" role="ADMIN" resource="admin.module" access="DELETE"} + {/loop}
diff --git a/templates/admin/default/module-edit.html b/templates/admin/default/module-edit.html new file mode 100644 index 000000000..755a50826 --- /dev/null +++ b/templates/admin/default/module-edit.html @@ -0,0 +1,82 @@ +{extends file="admin-layout.tpl"} + +{block name="page-title"}{intl l='Edit a module'}{/block} + +{block name="check-resource"}admin.module{/block} +{block name="check-access"}update{/block} + +{block name="main-content"} + +
+ +
+ + + + {loop type="module" name="module" id=$module_id backend_context="1" lang=$edit_language_id} + +
+
+ +
+ + {form name="thelia.admin.module.modification"} + + + + {include + file = "includes/inner-form-toolbar.html" + hide_submit_buttons = false + + page_url = {url path="/admin/module/update/$module_id"} + close_url = {url path="/admin/modules"} + } + + {* Be sure to get the product ID, even if the form could not be validated *} + + + {form_hidden_fields form=$form} + + {form_field form=$form field='success_url'} + + {/form_field} + + {if $form_error}
{$form_error_message}
{/if} + + {include file="includes/standard-description-form-fields.html" form=$form} + +
+
+
+ +
+

{intl l='Module created on %date_create. Last modification: %date_change' date_create={format_date date=$CREATE_DATE} date_change={format_date date=$UPDATE_DATE}}

+
+
+
+
+ + + {/form} +
+ +
+
+ + {/loop} + +
+ +
+ +{/block} + +{block name="javascript-initialization"} + + + +{/block} \ No newline at end of file diff --git a/templates/admin/default/modules.html b/templates/admin/default/modules.html index d82bce399..0eebed2b8 100644 --- a/templates/admin/default/modules.html +++ b/templates/admin/default/modules.html @@ -2,7 +2,7 @@ {block name="page-title"}{intl l='Modules'}{/block} -{block name="check-resource"}admin.configuration.module{/block} +{block name="check-resource"}admin.module{/block} {block name="check-access"}view{/block} {block name="main-content"} @@ -53,7 +53,7 @@ dialog_title = {intl l="Delete a module"} dialog_message = {intl l="Do you really want to delete this module ?"} - form_action = {url path='/admin/configuration/modules/delete'} + form_action = {url path='/admin/modules/delete'} form_content = {$smarty.capture.delete_module_dialog nofilter} } @@ -81,8 +81,8 @@ {/javascripts}