diff --git a/core/lib/Thelia/Config/Resources/routing/front.xml b/core/lib/Thelia/Config/Resources/routing/front.xml index 2235bdb0c..74cf23db8 100755 --- a/core/lib/Thelia/Config/Resources/routing/front.xml +++ b/core/lib/Thelia/Config/Resources/routing/front.xml @@ -173,4 +173,14 @@ contact + + Thelia\Controller\Front\ContactController::sendAction + contact + + + + Thelia\Controller\Front\DefaultController::noAction + contact-success + + diff --git a/core/lib/Thelia/Controller/Front/ContactController.php b/core/lib/Thelia/Controller/Front/ContactController.php index a807f6351..83bd2588e 100644 --- a/core/lib/Thelia/Controller/Front/ContactController.php +++ b/core/lib/Thelia/Controller/Front/ContactController.php @@ -22,6 +22,9 @@ /*************************************************************************************/ namespace Thelia\Controller\Front; +use Thelia\Form\ContactForm; +use Thelia\Form\Exception\FormValidationException; +use Thelia\Model\ConfigQuery; /** @@ -31,5 +34,40 @@ namespace Thelia\Controller\Front; */ class ContactController extends BaseFrontController { + /** + * send contact message + */ + public function sendAction() + { + $error_message = false; + $contactForm = new ContactForm($this->getRequest()); + try { + $form = $this->validateForm($contactForm); + + $message = \Swift_Message::newInstance($form->get('subject')->getData()) + ->addFrom($form->get('email')->getData(), $form->get('firstname')->getData().' '.$form->get('lastname')->getData()) + ->addTo(ConfigQuery::read('contact_email'), ConfigQuery::read('company_name')) + ->setBody($form->get('message')->getData()) + ; + + $this->getMailer()->send($message); + + } catch(FormValidationException $e) { + $error_message = $e->getMessage(); + } + + if ($error_message !== false) { + \Thelia\Log\Tlog::getInstance()->error(sprintf("Error during customer creation process : %s", $error_message)); + + $contactForm->setErrorMessage($error_message); + + $this->getParserContext() + ->addForm($contactForm) + ->setGeneralError($error_message) + ; + } else { + $this->redirectToRoute('contact.success'); + } + } } \ No newline at end of file diff --git a/core/lib/Thelia/Form/ContactForm.php b/core/lib/Thelia/Form/ContactForm.php index 4ac94a2cd..097e651da 100644 --- a/core/lib/Thelia/Form/ContactForm.php +++ b/core/lib/Thelia/Form/ContactForm.php @@ -60,7 +60,7 @@ class ContactForm extends BaseForm { $this->formBuilder ->add('firstname', 'text', array( - 'constraint' => array( + 'constraints' => array( new NotBlank() ), 'label' => Translator::getInstance()->trans('firstname'), @@ -69,7 +69,7 @@ class ContactForm extends BaseForm ) )) ->add('lastname', 'text', array( - 'constraint' => array( + 'constraints' => array( new NotBlank() ), 'label' => Translator::getInstance()->trans('lastname'), @@ -78,7 +78,7 @@ class ContactForm extends BaseForm ) )) ->add('email', 'email', array( - 'constraint' => array( + 'constraints' => array( new NotBlank(), new Email() ), @@ -88,7 +88,7 @@ class ContactForm extends BaseForm ) )) ->add('subject', 'text', array( - 'constraint' => array( + 'constraints' => array( new NotBlank() ), 'label' => Translator::getInstance()->trans('subject'), @@ -97,7 +97,7 @@ class ContactForm extends BaseForm ) )) ->add('message', 'text', array( - 'constraint' => array( + 'constraints' => array( new NotBlank() ), 'label' => Translator::getInstance()->trans('message'), @@ -114,6 +114,6 @@ class ContactForm extends BaseForm */ public function getName() { - return 'thelia.contact'; + return 'thelia_contact'; } } \ No newline at end of file diff --git a/install/insert.sql b/install/insert.sql index 991eb7892..b7cbebac7 100755 --- a/install/insert.sql +++ b/install/insert.sql @@ -28,7 +28,8 @@ INSERT INTO `config` (`name`, `value`, `secured`, `hidden`, `created_at`, `updat ('thelia_customer_remember_me_cookie_name', 'tcrmcn', 0, 0, NOW(), NOW()), ('thelia_customer_remember_me_cookie_expiration', 31536000, 0, 0, NOW(), NOW()), ('session_config.handlers', 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NativeFileSessionHandler', 0, 0, NOW(), NOW()), -('company_name','', 0, 0, NOW(), NOW()) +('company_name','', 0, 0, NOW(), NOW()), +('contact_email','', 0, 0, NOW(), NOW()) ; diff --git a/templates/default/assets/less/thelia/forms.less b/templates/default/assets/less/thelia/forms.less index c8e8a3dad..d39d64ea1 100755 --- a/templates/default/assets/less/thelia/forms.less +++ b/templates/default/assets/less/thelia/forms.less @@ -50,6 +50,7 @@ // Form Register #form-address, +#form-contact, #form-register { .panel-body { .control-label { .make-sm-column(3); } diff --git a/templates/default/contact-success.html b/templates/default/contact-success.html new file mode 100644 index 000000000..59a79974e --- /dev/null +++ b/templates/default/contact-success.html @@ -0,0 +1,15 @@ +{extends file="layout.tpl"} + +{* Breadcrumb *} +{block name='no-return-functions' append} + {$breadcrumbs = [['title' => {intl l="Thanks !"}, 'url'=>{url path="/contact/success"}]]} +{/block} + +{block name="main-content"} +
+
+

{intl l="Thanks !"}

+

{intl l="Thanks for your message, we will contact as soon as possible"}

+
+
+{/block} \ No newline at end of file diff --git a/templates/default/contact.html b/templates/default/contact.html index 161ef58ab..2a9458368 100644 --- a/templates/default/contact.html +++ b/templates/default/contact.html @@ -1,5 +1,105 @@ {extends file="layout.tpl"} -{block name="main-content"} +{* Breadcrumb *} +{block name='no-return-functions' append} + {$breadcrumbs = [['title' => {intl l="Contact us"}, 'url'=>{url path="/contact"}]]} +{/block} +{block name="main-content"} +
+
+

{intl l="Contact us"}

+ + {form name="thelia.contact"} +
+ {form_hidden_fields form=$form} +
+
+ 1. {intl l="Personal Informations"} +
+
+ {form_field form=$form field="firstname"} +
+ +
+ + {if $error } + {$message} + {assign var="error_focus" value="true"} + {elseif $value != "" && !$error} + + {/if} +
+
+ {/form_field} + {form_field form=$form field="lastname"} +
+ +
+ + {if $error } + {$message} + {assign var="error_focus" value="true"} + {elseif $value != "" && !$error} + + {/if} +
+
+ {/form_field} + {form_field form=$form field="email"} +
+ +
+ + {if $error } + {$message} + {assign var="error_focus" value="true"} + {elseif $value != "" && !$error} + + {/if} +
+
+ {/form_field} + {form_field form=$form field="subject"} +
+ +
+ + {if $error } + {$message} + {assign var="error_focus" value="true"} + {elseif $value != "" && !$error} + + {/if} +
+
+ {/form_field} + {form_field form=$form field="message"} +
+ +
+ + {if $error } + {$message} + {assign var="error_focus" value="true"} + {elseif $value != "" && !$error} + + {/if} +
+
+ {/form_field} + +
+
+ +
+
+
+
+
+ {/form} +
+
{/block} \ No newline at end of file