From 422a80fcce8561bddf788c91b9128379d4a3c2e4 Mon Sep 17 00:00:00 2001 From: Etienne Roudeix Date: Fri, 8 Nov 2013 11:26:06 +0100 Subject: [PATCH] module modification --- core/lib/Thelia/Action/Module.php | 26 ++- core/lib/Thelia/Config/Resources/form.xml | 2 + .../Thelia/Config/Resources/routing/admin.xml | 15 +- .../Controller/Admin/ModuleController.php | 153 ++++++++++++++++-- .../Thelia/Core/Event/Module/ModuleEvent.php | 103 ++++++++++++ core/lib/Thelia/Core/Event/TheliaEvents.php | 3 +- .../Core/Security/Resource/AdminResources.php | 2 +- .../Thelia/Core/Template/Loop/FolderPath.php | 6 +- .../Thelia/Form/ModuleModificationForm.php | 57 +++++-- core/lib/Thelia/Model/Module.php | 5 +- local/modules/FakeCB/Config/config.xml | 36 ----- local/modules/FakeCB/Config/module.xml | 18 --- local/modules/FakeCB/FakeCB.php | 88 ---------- local/modules/FakeCB/images/mastercard.png | Bin 3733 -> 0 bytes local/modules/FakeCB/images/visa.png | Bin 3158 -> 0 bytes templates/admin/default/configuration.html | 7 - .../admin/default/includes/module-block.html | 6 +- templates/admin/default/module-edit.html | 82 ++++++++++ templates/admin/default/modules.html | 8 +- 19 files changed, 424 insertions(+), 193 deletions(-) rename local/modules/FakeCB/Tests/FakeCBTest.php => core/lib/Thelia/Form/ModuleModificationForm.php (55%) delete mode 100755 local/modules/FakeCB/Config/config.xml delete mode 100644 local/modules/FakeCB/Config/module.xml delete mode 100755 local/modules/FakeCB/FakeCB.php delete mode 100755 local/modules/FakeCB/images/mastercard.png delete mode 100755 local/modules/FakeCB/images/visa.png create mode 100644 templates/admin/default/module-edit.html 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 a966b2608..52af62c45 100755 --- a/core/lib/Thelia/Config/Resources/routing/admin.xml +++ b/core/lib/Thelia/Config/Resources/routing/admin.xml @@ -925,16 +925,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/ModuleController.php b/core/lib/Thelia/Controller/Admin/ModuleController.php index 53322949a..24f297cbf 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,25 +39,155 @@ 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; - $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; 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/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/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/Module.php b/core/lib/Thelia/Model/Module.php index d57df77fa..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) { 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 28701c3dd2b033657d86bd5edb3d4e138cba8bf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3733 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 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..f11be5331 100644 --- a/templates/admin/default/includes/module-block.html +++ b/templates/admin/default/includes/module-block.html @@ -27,9 +27,9 @@ @@ -48,7 +48,7 @@ {/loop} {loop type="auth" name="can_delete" role="ADMIN" resource="admin.modules" 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}