diff --git a/core/lib/Thelia/Config/Resources/action.xml b/core/lib/Thelia/Config/Resources/action.xml index 7eea2e005..5bf4cbab8 100755 --- a/core/lib/Thelia/Config/Resources/action.xml +++ b/core/lib/Thelia/Config/Resources/action.xml @@ -22,6 +22,11 @@ + + + + + diff --git a/core/lib/Thelia/Config/Resources/config.xml b/core/lib/Thelia/Config/Resources/config.xml index eda938f2b..6011e9c98 100755 --- a/core/lib/Thelia/Config/Resources/config.xml +++ b/core/lib/Thelia/Config/Resources/config.xml @@ -43,6 +43,9 @@
+ + + diff --git a/core/lib/Thelia/Config/Resources/routing/front.xml b/core/lib/Thelia/Config/Resources/routing/front.xml index 3d6078f58..3ccf9e557 100755 --- a/core/lib/Thelia/Config/Resources/routing/front.xml +++ b/core/lib/Thelia/Config/Resources/routing/front.xml @@ -30,7 +30,17 @@ - Thelia\Controller\Front\CustomerAddressController::createAction + Thelia\Controller\Front\AddressController::createAction + address + + + + Thelia\Controller\Front\DefaultController::noAction + address_edit + + + + Thelia\Controller\Front\AddressController::updateAction @@ -50,7 +60,7 @@ cart - + diff --git a/core/lib/Thelia/Controller/Front/CustomerAddressController.php b/core/lib/Thelia/Controller/Front/AddressController.php similarity index 55% rename from core/lib/Thelia/Controller/Front/CustomerAddressController.php rename to core/lib/Thelia/Controller/Front/AddressController.php index a2c426dac..8568236f6 100644 --- a/core/lib/Thelia/Controller/Front/CustomerAddressController.php +++ b/core/lib/Thelia/Controller/Front/AddressController.php @@ -24,33 +24,41 @@ namespace Thelia\Controller\Front; use Thelia\Core\Event\AddressCreateOrUpdateEvent; use Thelia\Core\Event\TheliaEvents; -use Thelia\Form\AddressForm; +use Thelia\Form\AddressCreateForm; +use Thelia\Form\AddressUpdateForm; use Thelia\Form\Exception\FormValidationException; +use Thelia\Model\Base\AddressQuery; use Thelia\Model\Customer; use Thelia\Tools\URL; /** - * Class CustomerAddressController + * Class AddressController * @package Thelia\Controller\Front * @author Manuel Raynaud */ -class CustomerAddressController extends BaseFrontController +class AddressController extends BaseFrontController { + /** + * Create controller. + * Check if customer is logged in + * + * Dispatch TheliaEvents::ADDRESS_CREATE event + */ public function createAction() { if ($this->getSecurityContext()->hasCustomerUser() === false) { $this->redirect(URL::getIndexPage()); } - $addressCreate = new AddressForm($this->getRequest()); + $addressCreate = new AddressCreateForm($this->getRequest()); try { $customer = $this->getSecurityContext()->getCustomerUser(); $form = $this->validateForm($addressCreate, "post"); - $event = $this->createAddressEvent($form->getData()); + $event = $this->createAddressEvent($form); $event->setCustomer($customer); $this->dispatch(TheliaEvents::ADDRESS_CREATE, $event); @@ -77,25 +85,74 @@ class CustomerAddressController extends BaseFrontController public function updateAction() { + $request = $this->getRequest(); + if ($this->getSecurityContext()->hasCustomerUser() === false) { + $this->redirectToRoute("home"); + } + + if(null === $address_id = $request->get("address_id")) { + $this->redirectToRoute("home"); + } + + $addressUpdate = new AddressUpdateForm($request); + + try { + $customer = $this->getSecurityContext()->getCustomerUser(); + + $form = $this->validateForm($addressUpdate); + + $address = AddressQuery::create()->findPk($address_id); + + if (null === $address) { + $this->redirectToRoute("home"); + } + + if($address->getCustomer()->getId() != $customer->getId()) { + $this->redirectToRoute("home"); + } + + $event = $this->createAddressEvent($form); + $event->setAddress($address); + + $this->dispatch(TheliaEvents::ADDRESS_UPDATE, $event); + + $this->redirectSuccess($addressUpdate); + }catch (FormValidationException $e) { + $message = sprintf("Please check your input: %s", $e->getMessage()); + } + catch (\Exception $e) { + $message = sprintf("Sorry, an error occured: %s", $e->getMessage()); + } + + if ($message !== false) { + \Thelia\Log\Tlog::getInstance()->error(sprintf("Error during address creation process : %s", $message)); + + $addressUpdate->setErrorMessage($message); + + $this->getParserContext() + ->addForm($addressUpdate) + ->setGeneralError($message) + ; + } } - protected function createAddressEvent($data) + protected function createAddressEvent($form) { return new AddressCreateOrUpdateEvent( - $data["label"], - $data["title"], - $data["firstname"], - $data["lastname"], - $data["address1"], - $data["address2"], - $data["address3"], - $data["zipcode"], - $data["city"], - $data["country"], - $data["cellpone"], - $data["phone"], - $data["company"] + $form->get("label")->getData(), + $form->get("title")->getData(), + $form->get("firstname")->getData(), + $form->get("lastname")->getData(), + $form->get("address1")->getData(), + $form->get("address2")->getData(), + $form->get("address3")->getData(), + $form->get("zipcode")->getData(), + $form->get("city")->getData(), + $form->get("country")->getData(), + $form->get("cellphone")->getData(), + $form->get("phone")->getData(), + $form->get("company")->getData() ); } } \ No newline at end of file diff --git a/core/lib/Thelia/Controller/Front/BaseFrontController.php b/core/lib/Thelia/Controller/Front/BaseFrontController.php index b6d4a6f93..40296f361 100755 --- a/core/lib/Thelia/Controller/Front/BaseFrontController.php +++ b/core/lib/Thelia/Controller/Front/BaseFrontController.php @@ -23,6 +23,7 @@ namespace Thelia\Controller\Front; use Thelia\Controller\BaseController; +use Thelia\Tools\URL; class BaseFrontController extends BaseController { diff --git a/core/lib/Thelia/Controller/Front/DefaultController.php b/core/lib/Thelia/Controller/Front/DefaultController.php index d9c5a681a..2b1792640 100755 --- a/core/lib/Thelia/Controller/Front/DefaultController.php +++ b/core/lib/Thelia/Controller/Front/DefaultController.php @@ -56,13 +56,16 @@ class DefaultController extends BaseFrontController } } + $view = null; + if (! $view = $request->query->get('view')) { - $view = "index"; if ($request->request->has('view')) { $view = $request->request->get('view'); } } + if(!is_null($view)) { + $request->attributes->set('_view', $view); + } - $request->attributes->set('_view', $view); } } diff --git a/core/lib/Thelia/Core/Event/AddressEvent.php b/core/lib/Thelia/Core/Event/AddressEvent.php new file mode 100644 index 000000000..5167108fd --- /dev/null +++ b/core/lib/Thelia/Core/Event/AddressEvent.php @@ -0,0 +1,54 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Core\Event; +use Symfony\Component\EventDispatcher\Event; +use Thelia\Model\Address; + + +/** + * Class AddressEvent + * @package Thelia\Core\Event + * @author Manuel Raynaud + */ +class AddressEvent extends ActionEvent +{ + /** + * @var \Thelia\Model\Address + */ + protected $address; + + function __construct(Address $address) + { + $this->address = $address; + } + + + /** + * @return \Thelia\Model\Address + */ + public function getAddress() + { + return $this->address; + } +} \ No newline at end of file diff --git a/core/lib/Thelia/Core/Event/TheliaEvents.php b/core/lib/Thelia/Core/Event/TheliaEvents.php index 150edb748..8e3156cfc 100755 --- a/core/lib/Thelia/Core/Event/TheliaEvents.php +++ b/core/lib/Thelia/Core/Event/TheliaEvents.php @@ -88,12 +88,13 @@ final class TheliaEvents /** * Sent once the customer change form has been successfully validated, and before customer update in the database. */ - const BEFORE_CHANGECUSTOMER = "action.before_updateCustomer"; + const BEFORE_UPDATECUSTOMER = "action.before_updateCustomer"; /** * Sent just after a successful update of a customer in the database. */ - const AFTER_CHANGECUSTOMER = "action.after_updateCustomer"; + const AFTER_UPDATECUSTOMER = "action.after_updateCustomer"; + // -- ADDRESS MANAGEMENT --------------------------------------------------------- /** * sent for address creation */ @@ -104,6 +105,17 @@ final class TheliaEvents */ const ADDRESS_UPDATE = "action.updateAddress"; + const BEFORE_CREATEADDRESS = "action.before_createAddress"; + const AFTER_CREATEADDRESS = "action.after_createAddress"; + + const BEFORE_UPDATEADDRESS = "action.before_updateAddress"; + const AFTER_UPDATEADDRESS = "action.after_updateAddress"; + + const BEFORE_DELETEADDRESS = "action.before_deleteAddress"; + const AFTER_DELETEADDRESS = "action.after_deleteAddress"; + + // -- END ADDRESS MANAGEMENT --------------------------------------------------------- + /** * Sent once the category creation form has been successfully validated, and before category insertion in the database. */ diff --git a/core/lib/Thelia/Core/Template/Loop/Address.php b/core/lib/Thelia/Core/Template/Loop/Address.php index 43bbbaefb..329890e07 100755 --- a/core/lib/Thelia/Core/Template/Loop/Address.php +++ b/core/lib/Thelia/Core/Template/Loop/Address.php @@ -61,7 +61,7 @@ class Address extends BaseLoop ), 'current' ), - Argument::createBooleanTypeArgument('default'), + Argument::createBooleanTypeArgument('default', false), Argument::createIntListTypeArgument('exclude') ); } @@ -96,10 +96,9 @@ class Address extends BaseLoop $default = $this->getDefault(); + if ($default === true) { $search->filterByIsDefault(1, Criteria::EQUAL); - } elseif ($default === false) { - $search->filterByIsDefault(1, Criteria::NOT_EQUAL); } $exclude = $this->getExclude(); @@ -116,7 +115,7 @@ class Address extends BaseLoop $loopResultRow = new LoopResultRow(); $loopResultRow ->set("ID", $address->getId()) - ->set("NAME", $address->getName()) + ->set("LABEL", $address->getLabel()) ->set("CUSTOMER", $address->getCustomerId()) ->set("TITLE", $address->getTitleId()) ->set("COMPANY", $address->getCompany()) diff --git a/core/lib/Thelia/Form/AddressForm.php b/core/lib/Thelia/Form/AddressCreateForm.php similarity index 97% rename from core/lib/Thelia/Form/AddressForm.php rename to core/lib/Thelia/Form/AddressCreateForm.php index b98577927..3f953fe38 100644 --- a/core/lib/Thelia/Form/AddressForm.php +++ b/core/lib/Thelia/Form/AddressCreateForm.php @@ -26,11 +26,11 @@ use Symfony\Component\Validator\Constraints\NotBlank; /** - * Class AddressForm + * Class AddressCreateForm * @package Thelia\Form * @author Manuel Raynaud */ -class AddressForm extends BaseForm +class AddressCreateForm extends BaseForm { /** @@ -60,7 +60,8 @@ class AddressForm extends BaseForm "constraints" => array( new NotBlank() ), - "label" => "address name" + "label" => "address name", + "required" => true )) ->add("title", "text", array( "constraints" => array( diff --git a/core/lib/Thelia/Form/AddressUpdateForm.php b/core/lib/Thelia/Form/AddressUpdateForm.php new file mode 100644 index 000000000..aa969831b --- /dev/null +++ b/core/lib/Thelia/Form/AddressUpdateForm.php @@ -0,0 +1,69 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Form; +use Symfony\Component\Validator\Constraints\NotBlank; + + +/** + * Class AddressUpdateForm + * @package Thelia\Form + * @author Manuel Raynaud + */ +class AddressUpdateForm extends AddressCreateForm { + + /** + * + * in this function you add all the fields you need for your Form. + * Form this you have to call add method on $this->formBuilder attribute : + * + * $this->formBuilder->add("name", "text") + * ->add("email", "email", array( + * "attr" => array( + * "class" => "field" + * ), + * "label" => "email", + * "constraints" => array( + * new \Symfony\Component\Validator\Constraints\NotBlank() + * ) + * ) + * ) + * ->add('age', 'integer'); + * + * @return null + */ + protected function buildForm() + { + parent::buildForm(); + + + } + + /** + * @return string the name of you form. This name must be unique + */ + public function getName() + { + return "thelia_address_update"; + } +} \ No newline at end of file diff --git a/core/lib/Thelia/Model/Address.php b/core/lib/Thelia/Model/Address.php index 2501d5d1f..413797eeb 100755 --- a/core/lib/Thelia/Model/Address.php +++ b/core/lib/Thelia/Model/Address.php @@ -4,21 +4,12 @@ namespace Thelia\Model; use Propel\Runtime\Connection\ConnectionInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Thelia\Core\Event\AddressEvent; +use Thelia\Core\Event\TheliaEvents; use Thelia\Model\Base\Address as BaseAddress; class Address extends BaseAddress { - - protected $dispatcher; - - public function setDispatcher(EventDispatcherInterface $dispatcher) - { - $this->dispatcher = $dispatcher; - } - - public function getDispatcher() - { - return $this->dispatcher; - } + use \Thelia\Model\Tools\ModelEventDispatcherTrait; /** * Code to be run before inserting to database @@ -27,6 +18,7 @@ class Address extends BaseAddress { */ public function preInsert(ConnectionInterface $con = null) { + $this->dispatchEvent(TheliaEvents::BEFORE_CREATEADDRESS, new AddressEvent($this)); return true; } @@ -36,7 +28,7 @@ class Address extends BaseAddress { */ public function postInsert(ConnectionInterface $con = null) { - + $this->dispatchEvent(TheliaEvents::AFTER_CREATEADDRESS, new AddressEvent($this)); } /** @@ -46,6 +38,7 @@ class Address extends BaseAddress { */ public function preUpdate(ConnectionInterface $con = null) { + $this->dispatchEvent(TheliaEvents::BEFORE_UPDATEADDRESS, new AddressEvent($this)); return true; } @@ -55,7 +48,7 @@ class Address extends BaseAddress { */ public function postUpdate(ConnectionInterface $con = null) { - + $this->dispatchEvent(TheliaEvents::AFTER_UPDATEADDRESS, new AddressEvent($this)); } /** @@ -65,6 +58,7 @@ class Address extends BaseAddress { */ public function preDelete(ConnectionInterface $con = null) { + $this->dispatchEvent(TheliaEvents::BEFORE_DELETEADDRESS, new AddressEvent($this)); return true; } @@ -74,7 +68,7 @@ class Address extends BaseAddress { */ public function postDelete(ConnectionInterface $con = null) { - + $this->dispatchEvent(TheliaEvents::AFTER_DELETEADDRESS, new AddressEvent($this)); } } diff --git a/core/lib/Thelia/Model/Customer.php b/core/lib/Thelia/Model/Customer.php index 9572b6441..080c02ed6 100755 --- a/core/lib/Thelia/Model/Customer.php +++ b/core/lib/Thelia/Model/Customer.php @@ -2,7 +2,7 @@ namespace Thelia\Model; -use Symfony\Component\Config\Definition\Exception\Exception; +use Propel\Runtime\Exception\PropelException; use Thelia\Model\AddressQuery; use Thelia\Model\Base\Customer as BaseCustomer; @@ -115,7 +115,7 @@ class Customer extends BaseCustomer implements UserInterface $con->commit(); - } catch(Exception $e) { + } catch(PropelException $e) { $con->rollback(); throw $e; } @@ -225,7 +225,7 @@ class Customer extends BaseCustomer implements UserInterface */ public function preUpdate(ConnectionInterface $con = null) { - $this->dispatchEvent(TheliaEvents::BEFORE_CHANGECUSTOMER, new CustomerEvent($this)); + $this->dispatchEvent(TheliaEvents::BEFORE_UPDATECUSTOMER, new CustomerEvent($this)); return true; } @@ -234,7 +234,7 @@ class Customer extends BaseCustomer implements UserInterface */ public function postUpdate(ConnectionInterface $con = null) { - $this->dispatchEvent(TheliaEvents::AFTER_CHANGECUSTOMER, new CustomerEvent($this)); + $this->dispatchEvent(TheliaEvents::AFTER_UPDATECUSTOMER, new CustomerEvent($this)); } /** diff --git a/documentation/api/classes/Thelia.Core.Event.TheliaEvents.html b/documentation/api/classes/Thelia.Core.Event.TheliaEvents.html index fe9f532a1..2d4072603 100755 --- a/documentation/api/classes/Thelia.Core.Event.TheliaEvents.html +++ b/documentation/api/classes/Thelia.Core.Event.TheliaEvents.html @@ -1631,8 +1631,8 @@ ADMIN_LOGIN
BEFORE_CREATECUSTOMER
AFTER_CREATECUSTOMER
- BEFORE_CHANGECUSTOMER
- AFTER_CHANGECUSTOMER
+ BEFORE_UPDATECUSTOMER
+ AFTER_UPDATECUSTOMER
BEFORE_CREATECATEGORY
AFTER_CREATECATEGORY
BEFORE_DELETECATEGORY
@@ -1891,8 +1891,8 @@
-

BEFORE_CHANGECUSTOMER

-
BEFORE_CHANGECUSTOMER
+

BEFORE_UPDATECUSTOMER

+
BEFORE_UPDATECUSTOMER

Sent once the customer change form has been successfully validated, and before customer update in the database.

@@ -1913,8 +1913,8 @@
-

AFTER_CHANGECUSTOMER

-
AFTER_CHANGECUSTOMER
+

AFTER_UPDATECUSTOMER

+
AFTER_UPDATECUSTOMER

Sent just after a successful update of a customer in the database.

diff --git a/documentation/api/files/Action/Category.php.txt b/documentation/api/files/Action/Category.php.txt index b62357b08..ddd3362a5 100755 --- a/documentation/api/files/Action/Category.php.txt +++ b/documentation/api/files/Action/Category.php.txt @@ -109,7 +109,7 @@ class Category extends BaseAction implements EventSubscriberInterface $customer = CustomerQuery::create()->findPk(1); try { $customerEvent = new CustomerEvent($customer); - $event->getDispatcher()->dispatch(TheliaEvents::BEFORE_CHANGECUSTOMER, $customerEvent); + $event->getDispatcher()->dispatch(TheliaEvents::BEFORE_UPDATECUSTOMER, $customerEvent); $data = $form->getData(); @@ -127,7 +127,7 @@ class Category extends BaseAction implements EventSubscriberInterface ); $customerEvent->customer = $customer; - $event->getDispatcher()->dispatch(TheliaEvents::AFTER_CHANGECUSTOMER, $customerEvent); + $event->getDispatcher()->dispatch(TheliaEvents::AFTER_UPDATECUSTOMER, $customerEvent); // Update the logged-in user, and redirect to the success URL (exits) // We don-t send the login event, as the customer si already logged. diff --git a/documentation/api/files/Core/Event/TheliaEvents.php.txt b/documentation/api/files/Core/Event/TheliaEvents.php.txt index e06abc3c7..ca95903a8 100755 --- a/documentation/api/files/Core/Event/TheliaEvents.php.txt +++ b/documentation/api/files/Core/Event/TheliaEvents.php.txt @@ -78,11 +78,11 @@ final class TheliaEvents /** * Sent once the customer change form has been successfully validated, and before customer update in the database. */ - const BEFORE_CHANGECUSTOMER = "action.before_changecustomer"; + const BEFORE_UPDATECUSTOMER = "action.before_changecustomer"; /** * Sent just after a successful update of a customer in the database. */ - const AFTER_CHANGECUSTOMER = "action.after_changecustomer"; + const AFTER_UPDATECUSTOMER = "action.after_changecustomer"; /** * Sent once the category creation form has been successfully validated, and before category insertion in the database. diff --git a/documentation/api/files/Model/Customer.php.txt b/documentation/api/files/Model/Customer.php.txt index cbd507bf4..a220fd0c8 100755 --- a/documentation/api/files/Model/Customer.php.txt +++ b/documentation/api/files/Model/Customer.php.txt @@ -125,7 +125,7 @@ class Customer extends BaseCustomer implements UserInterface public function preUpdate(ConnectionInterface $con = null) { $customerEvent = new CustomerEvent($this); - $this->dispatchEvent(TheliaEvents::BEFORE_CHANGECUSTOMER, $customerEvent); + $this->dispatchEvent(TheliaEvents::BEFORE_UPDATECUSTOMER, $customerEvent); return true; } @@ -133,7 +133,7 @@ class Customer extends BaseCustomer implements UserInterface public function postUpdate(ConnectionInterface $con = null) { $customerEvent = new CustomerEvent($this); - $this->dispatchEvent(TheliaEvents::AFTER_CHANGECUSTOMER, $customerEvent); + $this->dispatchEvent(TheliaEvents::AFTER_UPDATECUSTOMER, $customerEvent); } protected function dispatchEvent($eventName, CustomerEvent $customerEvent) diff --git a/templates/default/address.html b/templates/default/address.html new file mode 100644 index 000000000..afae59197 --- /dev/null +++ b/templates/default/address.html @@ -0,0 +1,99 @@ +{check_auth context="front" roles="CUSTOMER" login_tpl="login"} +{include file="includes/header.html"} +{$page_title="{intl l='My Account'}"} + + +{form name="thelia.address.create"} +{if $form_error}
{$form_error_message}
{/if} +{* We use {navigate to="index"} as form action to avoid mixing post and get data *} + + {form_field form=$form field='success_url'} + + {/form_field} + {form_hidden_fields form=$form} + + {form_field form=$form field="label"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + {form_field form=$form field="title"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + {form_field form=$form field="firstname"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + {form_field form=$form field="lastname"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + {form_field form=$form field="address1"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + {form_field form=$form field="zipcode"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + {form_field form=$form field="city"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + {form_field form=$form field="country"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + {form_field form=$form field="phone"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + +{/form} + + +{include file="includes/footer.html"} diff --git a/templates/default/address_edit.html b/templates/default/address_edit.html new file mode 100644 index 000000000..22e70289a --- /dev/null +++ b/templates/default/address_edit.html @@ -0,0 +1,100 @@ +{check_auth context="front" roles="CUSTOMER" login_tpl="login"} +{include file="includes/header.html"} +{$page_title="{intl l='My Account'}"} + + +{form name="thelia.address.update"} +{if $form_error}
{$form_error_message}
{/if} +{* We use {navigate to="index"} as form action to avoid mixing post and get data *} +
+ {form_field form=$form field='success_url'} + + {/form_field} + + {form_hidden_fields form=$form} + + {form_field form=$form field="label"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + {form_field form=$form field="title"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + {form_field form=$form field="firstname"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + {form_field form=$form field="lastname"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + {form_field form=$form field="address1"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + {form_field form=$form field="zipcode"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + {form_field form=$form field="city"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + + {form_field form=$form field="country"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + {form_field form=$form field="phone"} + {if $error}{$message}{/if} + + + +
+ {/form_field} + +
+{/form} + + +{include file="includes/footer.html"} diff --git a/templates/default/address_list.html b/templates/default/address_list.html new file mode 100644 index 000000000..88a483e23 --- /dev/null +++ b/templates/default/address_list.html @@ -0,0 +1,11 @@ +{check_auth context="front" roles="CUSTOMER" login_tpl="login"} +{include file="includes/header.html"} +{$page_title="{intl l='My Account'}"} + +
    +{loop type="address" name="customer_list" customer="current"} +
  • {#LABEL} - {#FIRSTNAME} {#LASTNAME} - edit
  • +{/loop} +
+ +{include file="includes/footer.html"} diff --git a/templates/default/connexion.html b/templates/default/connexion.html index a6a2cc665..b3867782f 100755 --- a/templates/default/connexion.html +++ b/templates/default/connexion.html @@ -7,7 +7,6 @@ The two fields below are not par of the form, they are here to defines the action to process, and the view to render once the form is submited *} - {* the action triggered by this form *} {* This field is common to all BaseForm instances (thus, this one), and defines