Source of file SignUpForm.php
Size: 5,127 Bytes - Last Modified: 2021-12-23T10:52:26+00:00
/var/www/docs.ssmods.com/process/src/code/SignUpModal/code/forms/SignUpForm.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | <?php /** * Class SignUpForm */ class SignUpForm extends Form { public function __construct($controller, $name, $arguments = array()) { /** ========================================= * @var Form $form * @var FormAction $submit ===========================================*/ /** ----------------------------------------- * Fields * ----------------------------------------*/ $fields = $this->createFields(); /** ----------------------------------------- * Actions * ----------------------------------------*/ $submit = FormAction::create('Submit'); $submit->setTitle(_t('Toast.SIGNUP_BUTTON', 'Sign me up')) ->addExtraClass('btn btn-primary'); $actions = FieldList::create( $submit ); /** ----------------------------------------- * Validation * ----------------------------------------*/ $required = RequiredFields::create(array( 'Name', 'Contact' )); /** ----------------------------------------- * Form * ----------------------------------------*/ $form = Form::create($this, $name, $fields, $actions, $required); if ($arguments) { $form->loadDataFrom($arguments); } if ($formData = Session::get('FormInfo.Form_' . $name . '.data')) { $form->loadDataFrom($formData); } parent::__construct($controller, $name, $fields, $actions, $required); $this->setAttribute('data-parsley-validate', true); $this->setAttribute('autocomplete', 'on'); $this->addExtraClass('form'); } private function createFields() { /** ========================================= * @var FieldList $fields * @var TextField $name * @var EmailField $email * @var EmailField $honeypot ===========================================*/ /** ----------------------------------------- * Fields * ----------------------------------------*/ $name = TextField::create('Name', _t('Toast.SIGNUP_NAME', 'First Name')); $email = EmailField::create('Contact', _t('Toast.SIGNUP_EMAIL', 'Email')); $honeypot = EmailField::create('Email', 'SPAM PROTECTION - DO NOT FILL THIS FIELD IN'); /** ----------------------------------------- * Customise * ----------------------------------------*/ $name->setAttribute('placeholder', _t('Toast.SIGNUP_NAME_PLACEHOLDER', '')); $email->setAttribute('placeholder', _t('Toast.SIGNUP_EMAIL_PLACEHOLDER', '')); $honeypot->addExtraClass('honeypot'); /** ----------------------------------------- * Return * ----------------------------------------*/ $fields = FieldList::create(array( $name, $email, $honeypot, )); return $fields; } public function Submit($data, $form) { /** ========================================= * @var Form $form * @var 0Email $email * @var SignUpMessage $record ===========================================*/ $data = $form->getData(); $siteConfig = SiteConfig::current_site_config(); // Save data to session Session::set('FormInfo.Form_' . $this->name . '.data', $data); if (isset($data['Email']) && $data['Email'] != '') { $form->setMessage('Spam protection field should be empty', 'bad'); return $this->controller->redirect($this->controller->Link()); } $data['Email'] = $data['Contact']; /** ----------------------------------------- * Record * ----------------------------------------*/ $record = SignUpMessage::create($data); $recordID = $record->write(); Session::set('Toast.SignUpRecord', $recordID); // Set the cart if it exists if ($cartID = Session::get('shoppingcartid')) { $record->CartID = $cartID; $record->write(); } /** ----------------------------------------- * Finish * ----------------------------------------*/ Session::clear('FormInfo.Form_' . $this->name . '.data'); $message = $siteConfig->dbObject('SignUpSuccessMessage') ? : '<p>Your enquiry has been received.</p>'; $this->setMessage($message, 'success'); if ($this->request->isAjax()) { $data = array( 'record_id' => $recordID, 'html' => $this->renderWith('SignUpForm', array('Message' => $message))->forTemplate() ); return json_encode($data, JSON_HEX_QUOT | JSON_HEX_TAG); } else { return $this->controller->redirect($this->controller->data()->Link('?success=1')); } } public function getSuccess() { return isset($_REQUEST['success']) && $_REQUEST['success'] == "1"; } } |