protected function SubscriptionsFormBase::actions in Simplenews 8.2
Same name and namespace in other branches
- 8 src/Form/SubscriptionsFormBase.php \Drupal\simplenews\Form\SubscriptionsFormBase::actions()
- 3.x src/Form/SubscriptionsFormBase.php \Drupal\simplenews\Form\SubscriptionsFormBase::actions()
Returns an array of supported actions for the current entity form.
This function generates a list of Form API elements which represent actions supported by the current entity form.
@todo Consider introducing a 'preview' action here, since it is used by many entity types.
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 An array of supported Form API action elements keyed by name.
Overrides EntityForm::actions
2 calls to SubscriptionsFormBase::actions()
- SubscriptionsBlockForm::actions in src/
Form/ SubscriptionsBlockForm.php - Returns an array of supported actions for the current entity form.
- SubscriptionsPageForm::actions in src/
Form/ SubscriptionsPageForm.php - Returns an array of supported actions for the current entity form.
2 methods override SubscriptionsFormBase::actions()
- SubscriptionsBlockForm::actions in src/
Form/ SubscriptionsBlockForm.php - Returns an array of supported actions for the current entity form.
- SubscriptionsPageForm::actions in src/
Form/ SubscriptionsPageForm.php - Returns an array of supported actions for the current entity form.
File
- src/
Form/ SubscriptionsFormBase.php, line 157
Class
- SubscriptionsFormBase
- Entity form for Subscriber with common routines.
Namespace
Drupal\simplenews\FormCode
protected function actions(array $form, FormStateInterface $form_state) {
// There are three user groups for subscriptions forms:
// 1) An authenticated subscriber updating existing subscriptions. The main
// case is a logged in user, but it could also be an anonymous subscription
// authenticated by means of a hash. In both cases, the email address is
// set.
// 2) An unauthenticated user who enters an email address in the form and
// requests to subscribe or unsubscribe. In this case the email address
// is not set.
// 3) An administrator adding a new subscription. In this case the email
// address is not set, but there is a logged in user.
$has_widget = !$this
->getSubscriptionWidget($form_state)
->isHidden();
$has_mail = (bool) $this->entity
->getMail();
$actions = parent::actions($form, $form_state);
if ($has_widget && ($has_mail || \Drupal::currentUser()
->isAuthenticated())) {
// 1a) When authenticated with a widget
// 3) An administrator adding a new subscription.
// In both cases, show a single update button.
$actions[static::SUBMIT_UPDATE] = $actions['submit'];
$actions[static::SUBMIT_UPDATE]['#submit'][] = '::submitUpdate';
}
else {
// 2) When not authenticated, show subscribe and unsubscribe buttons. The
// user can check which newsletters to alter.
//
// 1b) The final case is when authenticated with no widget which is for a
// form that applies to a single newsletter. In this case there will be a
// single button either subscribe or unsubscribe depending on the current
// subscription state.
if ($has_widget || !$this->entity
->isSubscribed($this
->getOnlyNewsletterId())) {
// Subscribe button.
$actions[static::SUBMIT_SUBSCRIBE] = $actions['submit'];
$actions[static::SUBMIT_SUBSCRIBE]['#value'] = $this
->t('Subscribe');
$actions[static::SUBMIT_SUBSCRIBE]['#submit'][] = '::submitSubscribe';
}
if ($has_widget || $this->entity
->isSubscribed($this
->getOnlyNewsletterId())) {
// Unsubscribe button.
$actions[static::SUBMIT_UNSUBSCRIBE] = $actions['submit'];
$actions[static::SUBMIT_UNSUBSCRIBE]['#value'] = $this
->t('Unsubscribe');
$actions[static::SUBMIT_UNSUBSCRIBE]['#submit'][] = '::submitUnsubscribe';
}
}
unset($actions['submit']);
if (!$this->allowDelete) {
unset($actions['delete']);
}
return $actions;
}