public function MessageForm::buildForm in Courier 8
Same name and namespace in other branches
- 2.x courier_message_composer/src/Form/MessageForm.php \Drupal\courier_message_composer\Form\MessageForm::buildForm()
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides FormInterface::buildForm
File
- courier_message_composer/
src/ Form/ MessageForm.php, line 83
Class
- MessageForm
- Create a message.
Namespace
Drupal\courier_message_composer\FormCode
public function buildForm(array $form, FormStateInterface $form_state, ContentEntityTypeInterface $courier_channel = NULL) {
$form['#title'] = $courier_channel
->getLabel();
$t_args = [
'@channel' => $courier_channel
->getLabel(),
];
/** @var \Drupal\courier\ChannelInterface $message */
$message = $this->entityManager
->getStorage($courier_channel
->id())
->create();
$form_state
->set('message_entity', $message);
// Identity.
$form['identity_information'] = [
'#type' => 'details',
'#title' => $this
->t('Recipient'),
'#description' => $this
->t('Select a recipient for the message.'),
'#open' => TRUE,
];
$form['identity_information']['identity'] = [
'#type' => 'radios',
'#options' => NULL,
'#title' => $this
->t('Recipient'),
'#required' => TRUE,
];
$channels = $this->identityChannelManager
->getChannels();
foreach ($channels[$courier_channel
->id()] as $entity_type_id) {
$permission = 'courier_message_composer compose ' . $courier_channel
->id() . ' to ' . $entity_type_id;
if (!$this
->currentUser()
->hasPermission($permission)) {
continue;
}
$entity_type = $this->entityManager
->getDefinition($entity_type_id);
$form['identity_information']['identity'][$entity_type_id] = [
'#prefix' => '<div class="form-item container-inline">',
'#suffix' => '</div>',
];
$form['identity_information']['identity'][$entity_type_id]['radio'] = [
'#type' => 'radio',
'#title' => $entity_type
->getLabel(),
'#return_value' => "{$entity_type_id}:*",
'#parents' => [
'identity',
],
'#default_value' => $entity_type_id == 'user' ?: '',
'#error_no_message' => TRUE,
];
$form['identity_information']['identity'][$entity_type_id]['autocomplete'] = [
'#type' => 'entity_autocomplete',
'#title' => $entity_type
->getLabel(),
'#title_display' => 'invisible',
'#target_type' => $entity_type_id,
'#tags' => FALSE,
'#parents' => [
'entity',
$entity_type_id,
],
];
if ($entity_type_id == 'user' && !$this
->currentUser()
->isAnonymous()) {
$user = User::load($this
->currentUser()
->id());
$form['identity_information']['identity'][$entity_type_id]['autocomplete']['#default_value'] = $user;
}
}
// Form display.
$display = entity_get_form_display($courier_channel
->id(), $courier_channel
->id(), 'default');
$form_state
->set([
'form_display',
], $display);
$form['message'] = [
'#tree' => TRUE,
];
$display
->buildForm($message, $form['message'], $form_state);
// Tokens.
$form['tokens'] = [
'#type' => 'container',
'#title' => $this
->t('Tokens'),
'#weight' => 51,
];
$form['tokens']['list'] = $this
->courierTokenElement();
$form['actions'] = [
'#type' => 'actions',
];
$form['actions']['submit'] = [
'#type' => 'submit',
'#value' => t('Send @channel', $t_args),
'#button_type' => 'primary',
];
return $form;
}