public function EasyEmailTypeForm::form in Easy Email 2.0.x
Same name and namespace in other branches
- 8 src/Form/EasyEmailTypeForm.php \Drupal\easy_email\Form\EasyEmailTypeForm::form()
Gets the actual form array to be built.
Overrides EntityForm::form
See also
\Drupal\Core\Entity\EntityForm::processForm()
\Drupal\Core\Entity\EntityForm::afterBuild()
File
- src/
Form/ EasyEmailTypeForm.php, line 42
Class
- EasyEmailTypeForm
- Class EasyEmailTypeForm.
Namespace
Drupal\easy_email\FormCode
public function form(array $form, FormStateInterface $form_state) {
$form = parent::form($form, $form_state);
/** @var \Drupal\easy_email\Entity\EasyEmailTypeInterface $easy_email_type */
$easy_email_type = $this->entity;
$form['label'] = [
'#type' => 'textfield',
'#title' => $this
->t('Label'),
'#maxlength' => 255,
'#default_value' => $easy_email_type
->label(),
'#description' => $this
->t("Label for the Email type."),
'#required' => TRUE,
];
$form['id'] = [
'#type' => 'machine_name',
'#default_value' => $easy_email_type
->id(),
'#machine_name' => [
'exists' => '\\Drupal\\easy_email\\Entity\\EasyEmailType::load',
],
'#disabled' => !$easy_email_type
->isNew(),
];
if ($easy_email_type
->isNew()) {
return $form;
}
/** @var \Drupal\easy_email\Entity\EasyEmailInterface $easy_email */
$easy_email = $this->entityTypeManager
->getStorage('easy_email')
->create([
'type' => $easy_email_type
->id(),
]);
if ($easy_email
->hasField('key')) {
$form['key'] = [
'#type' => 'textfield',
'#title' => $this
->t('Unique Key Pattern'),
'#maxlength' => 255,
'#default_value' => $easy_email_type
->getKey(),
'#description' => $this
->t("To prevent duplicate emails, use tokens to define a key that uniquely identifies a specific email. If duplicates are allowed, you can leave this blank."),
];
}
$form['to'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Recipients'),
];
$form['to']['recipient'] = [
'#type' => 'textfield',
'#title' => $this
->t('To'),
'#maxlength' => 1024,
'#default_value' => !empty($easy_email_type
->getRecipient()) ? implode(', ', $easy_email_type
->getRecipient()) : NULL,
];
if ($easy_email
->hasField('cc_address')) {
$form['to']['cc'] = [
'#type' => 'textfield',
'#title' => $this
->t('CC'),
'#maxlength' => 1024,
'#default_value' => !empty($easy_email_type
->getCc()) ? implode(', ', $easy_email_type
->getCc()) : NULL,
];
}
if ($easy_email
->hasField('bcc_address')) {
$form['to']['bcc'] = [
'#type' => 'textfield',
'#title' => $this
->t('BCC'),
'#maxlength' => 1024,
'#default_value' => !empty($easy_email_type
->getBcc()) ? implode(', ', $easy_email_type
->getBcc()) : NULL,
];
}
if ($easy_email
->hasField('from_name') || $easy_email
->hasField('from_address') || $easy_email
->hasField('reply_to')) {
$form['sender'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Sender'),
];
if ($easy_email
->hasField('from_name')) {
$form['sender']['fromName'] = [
'#type' => 'textfield',
'#title' => $this
->t('From Name'),
'#maxlength' => 255,
'#default_value' => $easy_email_type
->getFromName(),
];
}
if ($easy_email
->hasField('from_address')) {
$form['sender']['fromAddress'] = [
'#type' => 'textfield',
'#title' => $this
->t('From Address'),
'#maxlength' => 255,
'#default_value' => $easy_email_type
->getFromAddress(),
];
}
if ($easy_email
->hasField('reply_to')) {
$form['sender']['replyToAddress'] = [
'#type' => 'textfield',
'#title' => $this
->t('Reply To Address'),
'#maxlength' => 255,
'#default_value' => $easy_email_type
->getReplyToAddress(),
];
}
}
$form['content'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Content'),
];
$form['content']['subject'] = [
'#type' => 'textfield',
'#title' => $this
->t('Subject'),
'#maxlength' => 255,
'#default_value' => $easy_email_type
->getSubject(),
];
$form['content']['body'] = [
'#type' => 'vertical_tabs',
'#default_tab' => 'edit-body-html',
];
if ($easy_email
->hasField('body_html')) {
$form['body_html'] = [
'#type' => 'details',
'#title' => $this
->t('HTML Body'),
'#group' => 'body',
];
$body_html = $easy_email_type
->getBodyHtml();
$form['body_html']['bodyHtml'] = [
'#type' => 'text_format',
'#rows' => 30,
'#title' => $this
->t('HTML Body'),
'#default_value' => !empty($body_html) ? $body_html['value'] : NULL,
'#format' => !empty($body_html) ? $body_html['format'] : NULL,
];
}
if ($easy_email
->hasField('body_html') && $easy_email
->hasField('inbox_preview')) {
$form['body_html']['inboxPreview'] = [
'#type' => 'textarea',
'#description' => $this
->t('The inbox preview text will be hidden in the body of the message. It will only be seen while viewing a message in the inbox of supported email clients.'),
'#rows' => 5,
'#title' => $this
->t('Inbox Preview'),
'#default_value' => $easy_email_type
->getInboxPreview(),
];
}
if ($easy_email
->hasField('body_plain')) {
$form['body_plain'] = [
'#type' => 'details',
'#title' => $this
->t('Plain Text Body'),
'#group' => 'body',
];
if ($easy_email
->hasField('body_html')) {
$form['body_plain']['generateBodyPlain'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Generate plain text body from HTML body'),
'#default_value' => $easy_email_type
->getGenerateBodyPlain(),
];
}
$form['body_plain']['bodyPlain'] = [
'#type' => 'textarea',
'#rows' => 30,
'#title' => $this
->t('Plain Text Body'),
'#default_value' => $easy_email_type
->getBodyPlain(),
'#states' => [
'disabled' => [
':input[name="generateBodyPlain"]' => [
'checked' => TRUE,
],
],
],
];
}
if ($easy_email
->hasField('attachment_path')) {
$form['content']['attachment'] = [
'#type' => 'textfield',
'#title' => $this
->t('Dynamic Attachments'),
'#maxlength' => 1024,
'#description' => $this
->t('Use relative file paths, URIs, and tokens that resolve to file paths. Separate multiple paths with a comma.'),
'#default_value' => !empty($easy_email_type
->getAttachment()) ? implode(', ', $easy_email_type
->getAttachment()) : NULL,
];
}
if ($easy_email
->hasField('attachment')) {
$form['content']['saveAttachment'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Save dynamic attachments to email log'),
'#description' => $this
->t('Warning: this can take up a lot of space in both the database and file system.'),
'#default_value' => $easy_email_type
->getSaveAttachment(),
];
/** @var \Drupal\Core\StreamWrapper\StreamWrapperManagerInterface $stream_wrapper_manager */
$stream_wrapper_manager = \Drupal::service('stream_wrapper_manager');
$scheme_options = $stream_wrapper_manager
->getNames(StreamWrapperInterface::WRITE_VISIBLE);
// Default to private scheme is none has been chosen before.
$default_scheme = $easy_email_type
->getAttachmentScheme();
if (empty($default_scheme) && !empty($scheme_options['private'])) {
$default_scheme = 'private';
}
elseif (empty($default_scheme) && !empty($scheme_options['public'])) {
$default_scheme = 'public';
}
$form['content']['attachmentScheme'] = [
'#type' => 'radios',
'#options' => $scheme_options,
'#title' => $this
->t('Upload Destination'),
'#default_value' => $default_scheme,
'#required' => TRUE,
'#states' => [
'visible' => [
':input[name="saveAttachment"]' => [
'checked' => TRUE,
],
],
],
];
$form['content']['attachmentDirectory'] = [
'#type' => 'textfield',
'#title' => $this
->t('File Directory'),
'#description' => $this
->t('Optional subdirectory within the upload destination where files will be stored. Do not include preceding or trailing slashes. This field supports tokens.'),
'#default_value' => $easy_email_type
->getAttachmentDirectory(),
'#states' => [
'visible' => [
':input[name="saveAttachment"]' => [
'checked' => TRUE,
],
],
],
];
}
$form['tokens'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Replacement Patterns'),
];
$form['tokens']['tokens'] = [
'#theme' => 'token_tree_link',
'#token_types' => [
'easy_email',
],
'#recursion_limit' => 5,
'#show_restricted' => TRUE,
];
return $form;
}