You are here

public function AdminSettingsForm::buildForm in Commerce Add To Cart Link 2.x

Same name and namespace in other branches
  1. 8 src/Form/AdminSettingsForm.php \Drupal\commerce_add_to_cart_link\Form\AdminSettingsForm::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 ConfigFormBase::buildForm

File

src/Form/AdminSettingsForm.php, line 65

Class

AdminSettingsForm
Provides the admin form for editing module settings.

Namespace

Drupal\commerce_add_to_cart_link\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this
    ->config('commerce_add_to_cart_link.settings');
  $form['csrf_token'] = [
    '#type' => 'details',
    '#title' => $this
      ->t('Token protection'),
    '#open' => TRUE,
    '#tree' => TRUE,
  ];

  /** @var \Drupal\user\RoleInterface[] $roles */
  $roles = $this->roleStorage
    ->loadMultiple();
  usort($roles, function ($a, $b) {

    /**
     * @var \Drupal\user\RoleInterface $a
     * @var \Drupal\user\RoleInterface $b
     */
    return $a
      ->getWeight() - $b
      ->getWeight();
  });
  $role_options = array_reduce($roles, function ($result, $item) {

    /** @var \Drupal\user\RoleInterface $item */
    $result[$item
      ->id()] = $item
      ->label();
    return $result;
  }, []);
  $form['csrf_token']['roles'] = [
    '#type' => 'checkboxes',
    '#title' => $this
      ->t('Roles'),
    '#description' => $this
      ->t('Add to cart and add to wishlist links will be protected with a CSRF token for users having at least one role checked here.'),
    '#options' => $role_options,
    '#default_value' => $config
      ->get('csrf_token.roles'),
  ];
  $form['redirect_back'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Redirect back to referer'),
    '#description' => $this
      ->t('If checked, the user will be redirected back to the referer instead of the cart/wishlist page, if the referer is a valid internal url.'),
    '#default_value' => $config
      ->get('redirect_back'),
  ];
  return parent::buildForm($form, $form_state);
}