public function index() { $this->setPageTitle(OW::getLanguage()->text('contactus', 'index_page_title')); $this->setPageHeading(OW::getLanguage()->text('contactus', 'index_page_heading')); $contactEmails = array(); $contacts = CONTACTUS_BOL_Service::getInstance()->getDepartmentList(); foreach ($contacts as $contact) { /* @var $contact CONTACTUS_BOL_Department */ $contactEmails[$contact->id]['label'] = CONTACTUS_BOL_Service::getInstance()->getDepartmentLabel($contact->id); $contactEmails[$contact->id]['email'] = $contact->email; } $form = new Form('contact_form'); $fieldTo = new Selectbox('to'); foreach ($contactEmails as $id => $value) { $fieldTo->addOption($id, $value['label']); } $fieldTo->setRequired(); $fieldTo->setHasInvitation(false); $fieldTo->setLabel($this->text('contactus', 'form_label_to')); $form->addElement($fieldTo); $fieldFrom = new TextField('from'); $fieldFrom->setLabel($this->text('contactus', 'form_label_from')); $fieldFrom->setRequired(); $fieldFrom->addValidator(new EmailValidator()); if (ow::getUser()->isAuthenticated()) { $fieldFrom->setValue(OW::getUser()->getEmail()); } $form->addElement($fieldFrom); $fieldSubject = new TextField('subject'); $fieldSubject->setLabel($this->text('contactus', 'form_label_subject')); $fieldSubject->setRequired(); $form->addElement($fieldSubject); $fieldMessage = new Textarea('message'); $fieldMessage->setLabel($this->text('contactus', 'form_label_message')); $fieldMessage->setRequired(); $form->addElement($fieldMessage); $fieldCaptcha = new CaptchaField('captcha'); $fieldCaptcha->setLabel($this->text('contactus', 'form_label_captcha')); $form->addElement($fieldCaptcha); $submit = new Submit('send'); $submit->setValue($this->text('contactus', 'form_label_submit')); $form->addElement($submit); $this->addForm($form); if (OW::getRequest()->isPost()) { if ($form->isValid($_POST)) { $data = $form->getValues(); if (!array_key_exists($data['to'], $contactEmails)) { OW::getFeedback()->error($this->text('contactus', 'no_department')); return; } $mail = OW::getMailer()->createMail(); $mail->addRecipientEmail($contactEmails[$data['to']]['email']); $mail->setSender($data['from']); $mail->setSenderSuffix(false); $mail->setSubject($data['subject']); $mail->setTextContent($data['message']); OW::getMailer()->addToQueue($mail); OW::getSession()->set('contactus.dept', $contactEmails[$data['to']]['label']); $this->redirectToAction('sent'); } } }
public function EnquiryForm() { if (!Email::validEmailAddress($this->EmailTo) || !Email::validEmailAddress($this->EmailFrom)) { return false; } if (!$this->EmailSubject) { $this->EmailSubject = 'Website Enquiry'; } $elements = $this->EnquiryFormFields(); /* empty form, return nothing */ if ($elements->count() == 0) { return false; } /* Build the fieldlist */ $fields = FieldList::create(); $validator = RequiredFields::create(); $jsValidator = array(); /* Create filter for possible $_GET parameters / pre-population */ $get_param_filter = FileNameFilter::create(); foreach ($elements as $el) { $key = $this->keyGen($el->FieldName, $el->SortOrder); $field = false; $type = false; if ($el->FieldType == 'Text') { if ($el->FieldOptions == 1) { $field = TextField::create($key, htmlspecialchars($el->FieldName)); } else { $field = TextareaField::create($key, htmlspecialchars($el->FieldName)); $field->setRows($el->FieldOptions); } } elseif ($el->FieldType == 'Email') { $field = EmailField::create($key, htmlspecialchars($el->FieldName)); } elseif ($el->FieldType == 'Select') { $options = preg_split('/\\n\\r?/', $el->FieldOptions, -1, PREG_SPLIT_NO_EMPTY); if (count($options) > 0) { $tmp = array(); foreach ($options as $o) { $tmp[trim($o)] = trim($o); } $field = DropdownField::create($key, htmlspecialchars($el->FieldName), $tmp); $field->setEmptyString('[ Please Select ]'); } } elseif ($el->FieldType == 'Checkbox') { $options = preg_split('/\\n\\r?/', $el->FieldOptions, -1, PREG_SPLIT_NO_EMPTY); if (count($options) > 0) { $tmp = array(); foreach ($options as $o) { $tmp[trim($o)] = trim($o); } $field = CheckboxSetField::create($key, htmlspecialchars($el->FieldName), $tmp); } } elseif ($el->FieldType == 'Radio') { $options = preg_split('/\\n\\r?/', $el->FieldOptions, -1, PREG_SPLIT_NO_EMPTY); if (count($options) > 0) { $tmp = array(); foreach ($options as $o) { $tmp[trim($o)] = trim($o); } $field = OptionsetField::create($key, htmlspecialchars($el->FieldName), $tmp); } } elseif ($el->FieldType == 'Header') { if ($el->FieldOptions) { $field = LiteralField::create(htmlspecialchars($el->FieldName), '<h4>' . htmlspecialchars($el->FieldName) . '</h4> <p class="note">' . nl2br(htmlspecialchars($el->FieldOptions)) . '</p>'); } else { $field = HeaderField::create(htmlspecialchars($el->FieldName), 4); } } elseif ($el->FieldType == 'Note') { if ($el->FieldOptions) { $field = LiteralField::create(htmlspecialchars($el->FieldName), '<p class="note">' . nl2br(htmlspecialchars($el->FieldOptions)) . '</p>'); } else { $field = LiteralField::create(htmlspecialchars($el->FieldName), '<p class="note">' . htmlspecialchars($el->FieldName) . '</p>'); } } if ($field) { /* Allow $_GET parameters to pre-populate fields */ $request = $this->request; $get_var = $get_param_filter->filter($el->FieldName); if (!$request->isPOST() && !$field->Value() && null != $request->getVar($get_var)) { $field->setValue($request->getVar($get_var)); } if ($el->RequiredField == 1) { $field->addExtraClass('required'); /* Add "Required" next to field" */ $validator->addRequiredField($key); $jsValidator[$key] = $el->FieldType; } if ($el->PlaceholderText) { $field->setAttribute('placeholder', $el->PlaceholderText); } $fields->push($field); } } if ($this->AddCaptcha) { $label = $this->CaptchaLabel; $field = CaptchaField::create('CaptchaImage', $label); $field->addExtraClass('required'); $validator->addRequiredField('CaptchaImage'); $jsValidator['CaptchaImage'] = 'Text'; if ($this->CaptchaHelp) { $field->setRightTitle('<span id="CaptchaHelp">' . htmlspecialchars($this->CaptchaHelp) . '</span>'); } $fields->push($field); } $actions = FieldList::create(FormAction::create('SendEnquiryForm', $this->EmailSubmitButtonText)); if (Config::inst()->get('EnquiryPage', 'js_validation')) { Requirements::customScript('var EnquiryFormValidator=' . json_encode($jsValidator) . ';'); Requirements::javascript(basename(dirname(dirname(__FILE__))) . '/javascript/enquiryform.js'); } $form = Form::create($this, 'EnquiryForm', $fields, $actions, $validator); return $form; }
public function EnquiryForm() { if (!Email::validEmailAddress($this->EmailTo) || !Email::validEmailAddress($this->EmailFrom)) { return false; } if (!$this->EmailSubject) { $this->EmailSubject = 'Website Enquiry'; } $elements = $this->EnquiryFormFields(); if ($elements->count() == 0) { return false; } /* Build the fieldlist */ $fields = new FieldList(); $validator = new RequiredFields(); $jsValidator = array(); foreach ($elements as $el) { $key = $this->keyGen($el->FieldName, $el->SortOrder); $field = false; $type = false; if ($el->FieldType == 'Text') { if ($el->FieldOptions == 1) { $field = new TextField($key, htmlspecialchars($el->FieldName)); } else { $field = new TextareaField($key, htmlspecialchars($el->FieldName)); $field->setRows($el->FieldOptions); } } else { if ($el->FieldType == 'Email') { $field = new EmailField($key, htmlspecialchars($el->FieldName)); } else { if ($el->FieldType == 'Select') { $options = preg_split('/\\n\\r?/', $el->FieldOptions, -1, PREG_SPLIT_NO_EMPTY); if (count($options) > 0) { $tmp = array(); foreach ($options as $o) { $tmp[trim($o)] = trim($o); } $field = new DropdownField($key, htmlspecialchars($el->FieldName), $tmp); $field->setEmptyString('[ Please Select ]'); } } else { if ($el->FieldType == 'Checkbox') { $options = preg_split('/\\n\\r?/', $el->FieldOptions, -1, PREG_SPLIT_NO_EMPTY); if (count($options) > 0) { $tmp = array(); foreach ($options as $o) { $tmp[trim($o)] = trim($o); } $field = new CheckboxSetField($key, htmlspecialchars($el->FieldName), $tmp); } } else { if ($el->FieldType == 'Radio') { $options = preg_split('/\\n\\r?/', $el->FieldOptions, -1, PREG_SPLIT_NO_EMPTY); if (count($options) > 0) { $tmp = array(); foreach ($options as $o) { $tmp[trim($o)] = trim($o); } $field = new OptionsetField($key, htmlspecialchars($el->FieldName), $tmp); } } else { if ($el->FieldType == 'Header') { if ($el->FieldOptions) { $field = new LiteralField(htmlspecialchars($el->FieldName), '<h4>' . htmlspecialchars($el->FieldName) . '</h4> <p class="note">' . nl2br(htmlspecialchars($el->FieldOptions)) . '</p>'); } else { $field = new HeaderField(htmlspecialchars($el->FieldName), 4); } } else { if ($el->FieldType == 'Note') { if ($el->FieldOptions) { $field = new LiteralField(htmlspecialchars($el->FieldName), '<p class="note">' . nl2br(htmlspecialchars($el->FieldOptions)) . '</p>'); } else { $field = new LiteralField(htmlspecialchars($el->FieldName), '<p class="note">' . htmlspecialchars($el->FieldName) . '</p>'); } } } } } } } } if ($field) { if ($el->RequiredField == 1) { $field->addExtraClass('required'); /* Add "Required" next to field" */ $validator->addRequiredField($key); $jsValidator[$key] = $el->FieldType; } if ($el->PlaceholderText) { $field->setAttribute('placeholder', $el->PlaceholderText); } $fields->push($field); } } if ($this->AddCaptcha) { $label = $this->CaptchaLabel; $field = new CaptchaField('CaptchaImage', $label); $field->addExtraClass('required'); $validator->addRequiredField('CaptchaImage'); $jsValidator['CaptchaImage'] = 'Text'; if ($this->CaptchaHelp) { $field->setRightTitle('<span id="CaptchaHelp">' . htmlspecialchars($this->CaptchaHelp) . '</span>'); } $fields->push($field); } $actions = new FieldList(new FormAction('SendEnquiryForm', $this->EmailSubmitButtonText)); Requirements::customScript("var EnquiryFormValidator=" . json_encode($jsValidator) . ';'); Requirements::javascript(basename(dirname(dirname(__FILE__))) . "/templates/javascript/EnquiryForm.js"); $form = new Form($this, 'EnquiryForm', $fields, $actions, $validator); return $form; }