You are here

public function ViewsAddButtonArea::buildOptionsForm in Views Add Button 8

Same name and namespace in other branches
  1. 2.0.x src/Plugin/views/area/ViewsAddButtonArea.php \Drupal\views_add_button\Plugin\views\area\ViewsAddButtonArea::buildOptionsForm()

Provide the options form.

Overrides TokenizeAreaPluginBase::buildOptionsForm

File

src/Plugin/views/area/ViewsAddButtonArea.php, line 117

Class

ViewsAddButtonArea
Defines a views area plugin.

Namespace

Drupal\views_add_button\Plugin\views\area

Code

public function buildOptionsForm(&$form, FormStateInterface $form_state) {
  parent::buildOptionsForm($form, $form_state);
  $form['type'] = [
    '#type' => 'select',
    '#title' => t('Entity Type'),
    '#options' => $this
      ->createEntityBundleList(),
    '#empty_option' => '- Select -',
    '#default_value' => $this->options['type'],
    '#weight' => -10,
    '#required' => TRUE,
  ];
  $form['render_plugin'] = [
    '#type' => 'select',
    '#title' => t('Custom Rendering Plugin'),
    '#description' => t('If you would like to specify a plugin to use for generating the URL and creating the
        link, set it here. Leave unset to use the entity default plugin (recommended).'),
    '#options' => $this
      ->createPluginList(),
    '#empty_option' => '- Select -',
    '#default_value' => $this->options['render_plugin'],
    '#weight' => -10,
  ];
  $form['access_plugin'] = [
    '#type' => 'select',
    '#title' => t('Custom Access Plugin'),
    '#description' => t('If you would like to specify an access plugin to use, set it here.
        Leave unset to use the entity default plugin (recommended).'),
    '#options' => $this
      ->createPluginList(),
    '#empty_option' => '- Select -',
    '#default_value' => $this->options['access_plugin'],
    '#weight' => -10,
  ];
  $form['context'] = [
    '#type' => 'textfield',
    '#title' => t('Entity Context'),
    '#description' => t('Certain entities require a special context parameter. Set the context (or relevant
      token) here. Check the help for the relevant Views Add Button module for further questions.'),
    '#default_value' => $this->options['context'],
    '#weight' => -9,
  ];
  $form['button_text'] = [
    '#type' => 'textfield',
    '#title' => t('Button Text for the add button'),
    '#description' => t('Leave empty for the default: "Add [entity_bundle]"'),
    '#default_value' => $this->options['button_text'],
    '#weight' => -7,
  ];
  $form['query_string'] = [
    '#type' => 'textfield',
    '#title' => t('Query string to append to the add link'),
    '#description' => t('Add the query string, without the "?" .'),
    '#default_value' => $this->options['query_string'],
    '#weight' => -6,
  ];
  $form['button_classes'] = [
    '#type' => 'textfield',
    '#title' => t('Button classes for the add link - usually "button" or "btn," with additional styling classes.'),
    '#default_value' => $this->options['button_classes'],
    '#weight' => -5,
  ];
  $form['button_attributes'] = [
    '#type' => 'textarea',
    '#title' => t('Additional Button Attributes'),
    '#description' => t('Add one attribute string per line, without quotes (i.e. name=views_add_button).'),
    '#default_value' => $this->options['button_attributes'],
    '#cols' => 60,
    '#rows' => 2,
    '#weight' => -4,
  ];
  $form['button_access_denied'] = [
    '#type' => 'text_format',
    '#title' => t('Access Denied HTML'),
    '#description' => t('HTML to inject if access is denied.'),
    '#cols' => 60,
    '#rows' => 2,
    '#weight' => -3,
    '#default_value' => $this->options['button_access_denied']['value'],
  ];
  $form['button_prefix'] = [
    '#type' => 'text_format',
    '#title' => t('Prefix HTML'),
    '#description' => t('HTML to inject before the button.'),
    '#cols' => 60,
    '#rows' => 2,
    '#weight' => -3,
    '#default_value' => $this->options['button_prefix']['value'],
  ];
  $form['button_suffix'] = [
    '#type' => 'text_format',
    '#title' => t('Suffix HTML'),
    '#description' => t('HTML to inject after the button.'),
    '#cols' => 60,
    '#rows' => 2,
    '#weight' => -2,
    '#default_value' => $this->options['button_suffix']['value'],
  ];
  $form['destination'] = [
    '#type' => 'checkbox',
    '#title' => t('Include destination parameter?'),
    '#default_value' => $this->options['destination'],
    '#weight' => -1,
  ];
  $this
    ->tokenForm($form, $form_state);
}