Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 88 |
| ContactFormEditForm | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
132 | |
0.00% |
0 / 88 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| getEditableConfigNames | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| form | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 46 |
|||
| validateForm | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 10 |
|||
| save | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 24 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\contact\ContactFormEditForm. | |
| */ | |
| namespace Drupal\contact; | |
| use Drupal\Core\DependencyInjection\ContainerInjectionInterface; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| use Drupal\Core\Entity\EntityForm; | |
| use Drupal\Core\Entity\EntityTypeInterface; | |
| use Drupal\Core\Form\ConfigFormBaseTrait; | |
| use Drupal\Core\Form\FormStateInterface; | |
| use Egulias\EmailValidator\EmailValidator; | |
| /** | |
| * Base form for contact form edit forms. | |
| */ | |
| class ContactFormEditForm extends EntityForm implements ContainerInjectionInterface { | |
| use ConfigFormBaseTrait; | |
| /** | |
| * The email validator. | |
| * | |
| * @var \Egulias\EmailValidator\EmailValidator | |
| */ | |
| protected $emailValidator; | |
| /** | |
| * Constructs a new ContactFormEditForm. | |
| * | |
| * @param \Egulias\EmailValidator\EmailValidator $email_validator | |
| * The email validator. | |
| */ | |
| public function __construct(EmailValidator $email_validator) { | |
| $this->emailValidator = $email_validator; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function create(ContainerInterface $container) { | |
| return new static( | |
| $container->get('email.validator') | |
| ); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function getEditableConfigNames() { | |
| return ['contact.settings']; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function form(array $form, FormStateInterface $form_state) { | |
| $form = parent::form($form, $form_state); | |
| $contact_form = $this->entity; | |
| $default_form = $this->config('contact.settings')->get('default_form'); | |
| $form['label'] = array( | |
| '#type' => 'textfield', | |
| '#title' => $this->t('Label'), | |
| '#maxlength' => 255, | |
| '#default_value' => $contact_form->label(), | |
| '#description' => $this->t("Example: 'website feedback' or 'product information'."), | |
| '#required' => TRUE, | |
| ); | |
| $form['id'] = array( | |
| '#type' => 'machine_name', | |
| '#default_value' => $contact_form->id(), | |
| '#maxlength' => EntityTypeInterface::BUNDLE_MAX_LENGTH, | |
| '#machine_name' => array( | |
| 'exists' => '\Drupal\contact\Entity\ContactForm::load', | |
| ), | |
| '#disabled' => !$contact_form->isNew(), | |
| ); | |
| $form['recipients'] = array( | |
| '#type' => 'textarea', | |
| '#title' => $this->t('Recipients'), | |
| '#default_value' => implode(', ', $contact_form->getRecipients()), | |
| '#description' => $this->t("Example: 'webmaster@example.com' or 'sales@example.com,support@example.com' . To specify multiple recipients, separate each email address with a comma."), | |
| '#required' => TRUE, | |
| ); | |
| $form['reply'] = array( | |
| '#type' => 'textarea', | |
| '#title' => $this->t('Auto-reply'), | |
| '#default_value' => $contact_form->getReply(), | |
| '#description' => $this->t('Optional auto-reply. Leave empty if you do not want to send the user an auto-reply message.'), | |
| ); | |
| $form['weight'] = array( | |
| '#type' => 'weight', | |
| '#title' => $this->t('Weight'), | |
| '#default_value' => $contact_form->getWeight(), | |
| '#description' => $this->t('When listing forms, those with lighter (smaller) weights get listed before forms with heavier (larger) weights. Forms with equal weights are sorted alphabetically.'), | |
| ); | |
| $form['selected'] = array( | |
| '#type' => 'checkbox', | |
| '#title' => $this->t('Make this the default form'), | |
| '#default_value' => $default_form === $contact_form->id(), | |
| ); | |
| return $form; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function validateForm(array &$form, FormStateInterface $form_state) { | |
| parent::validateForm($form, $form_state); | |
| // Validate and each email recipient. | |
| $recipients = explode(',', $form_state->getValue('recipients')); | |
| foreach ($recipients as &$recipient) { | |
| $recipient = trim($recipient); | |
| if (!$this->emailValidator->isValid($recipient)) { | |
| $form_state->setErrorByName('recipients', $this->t('%recipient is an invalid email address.', array('%recipient' => $recipient))); | |
| } | |
| } | |
| $form_state->setValue('recipients', $recipients); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function save(array $form, FormStateInterface $form_state) { | |
| $contact_form = $this->entity; | |
| $status = $contact_form->save(); | |
| $contact_settings = $this->config('contact.settings'); | |
| $edit_link = $this->entity->link($this->t('Edit')); | |
| if ($status == SAVED_UPDATED) { | |
| drupal_set_message($this->t('Contact form %label has been updated.', array('%label' => $contact_form->label()))); | |
| $this->logger('contact')->notice('Contact form %label has been updated.', array('%label' => $contact_form->label(), 'link' => $edit_link)); | |
| } | |
| else { | |
| drupal_set_message($this->t('Contact form %label has been added.', array('%label' => $contact_form->label()))); | |
| $this->logger('contact')->notice('Contact form %label has been added.', array('%label' => $contact_form->label(), 'link' => $edit_link)); | |
| } | |
| // Update the default form. | |
| if ($form_state->getValue('selected')) { | |
| $contact_settings | |
| ->set('default_form', $contact_form->id()) | |
| ->save(); | |
| } | |
| // If it was the default form, empty out the setting. | |
| elseif ($contact_settings->get('default_form') == $contact_form->id()) { | |
| $contact_settings | |
| ->set('default_form', NULL) | |
| ->save(); | |
| } | |
| $form_state->setRedirectUrl($contact_form->urlInfo('collection')); | |
| } | |
| } |