commerce-8.x-2.8/modules/checkout/src/Plugin/Commerce/CheckoutPane/ContactInformation.php
modules/checkout/src/Plugin/Commerce/CheckoutPane/ContactInformation.php
<?php
namespace Drupal\commerce_checkout\Plugin\Commerce\CheckoutPane;
use Drupal\Core\Form\FormStateInterface;
/**
* Provides the contact information pane.
*
* @CommerceCheckoutPane(
* id = "contact_information",
* label = @Translation("Contact information"),
* default_step = "order_information",
* wrapper_element = "fieldset",
* )
*/
class ContactInformation extends CheckoutPaneBase implements CheckoutPaneInterface {
/**
* {@inheritdoc}
*/
public function defaultConfiguration() {
return [
'double_entry' => FALSE,
] + parent::defaultConfiguration();
}
/**
* {@inheritdoc}
*/
public function buildConfigurationSummary() {
if (!empty($this->configuration['double_entry'])) {
$summary = $this->t('Require double entry of email: Yes');
}
else {
$summary = $this->t('Require double entry of email: No');
}
return $summary;
}
/**
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$form = parent::buildConfigurationForm($form, $form_state);
$form['double_entry'] = [
'#type' => 'checkbox',
'#title' => $this->t('Require double entry of email'),
'#description' => $this->t('Forces anonymous users to enter their email in two consecutive fields, which must have identical values.'),
'#default_value' => $this->configuration['double_entry'],
];
return $form;
}
/**
* {@inheritdoc}
*/
public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
parent::submitConfigurationForm($form, $form_state);
if (!$form_state->getErrors()) {
$values = $form_state->getValue($form['#parents']);
$this->configuration['double_entry'] = !empty($values['double_entry']);
}
}
/**
* {@inheritdoc}
*/
public function isVisible() {
// Show the pane only for guest checkout.
return empty($this->order->getCustomerId());
}
/**
* {@inheritdoc}
*/
public function buildPaneSummary() {
return [
'#plain_text' => $this->order->getEmail(),
];
}
/**
* {@inheritdoc}
*/
public function buildPaneForm(array $pane_form, FormStateInterface $form_state, array &$complete_form) {
$pane_form['email'] = [
'#type' => 'email',
'#title' => $this->t('Email'),
'#default_value' => $this->order->getEmail(),
'#required' => TRUE,
];
if ($this->configuration['double_entry']) {
$pane_form['email_confirm'] = [
'#type' => 'email',
'#title' => $this->t('Confirm email'),
'#default_value' => $this->order->getEmail(),
'#required' => TRUE,
];
}
return $pane_form;
}
/**
* {@inheritdoc}
*/
public function validatePaneForm(array &$pane_form, FormStateInterface $form_state, array &$complete_form) {
$values = $form_state->getValue($pane_form['#parents']);
if ($this->configuration['double_entry'] && $values['email'] != $values['email_confirm']) {
$form_state->setError($pane_form, $this->t('The specified emails do not match.'));
}
}
/**
* {@inheritdoc}
*/
public function submitPaneForm(array &$pane_form, FormStateInterface $form_state, array &$complete_form) {
$values = $form_state->getValue($pane_form['#parents']);
$this->order->setEmail($values['email']);
}
}
