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}
+
+
{/block}
\ No newline at end of file