You are here

public function IndexNameDepth::buildOptionsForm in Views Taxonomy Term Name Depth 8.6

Same name and namespace in other branches
  1. 8 src/Plugin/views/argument/IndexNameDepth.php \Drupal\views_taxonomy_term_name_depth\Plugin\views\argument\IndexNameDepth::buildOptionsForm()
  2. 8.3 src/Plugin/views/argument/IndexNameDepth.php \Drupal\views_taxonomy_term_name_depth\Plugin\views\argument\IndexNameDepth::buildOptionsForm()
  3. 7.x src/Plugin/views/argument/IndexNameDepth.php \Drupal\views_taxonomy_term_name_depth\Plugin\views\argument\IndexNameDepth::buildOptionsForm()

Provide a form to edit options for this plugin.

Overrides ArgumentPluginBase::buildOptionsForm

File

src/Plugin/views/argument/IndexNameDepth.php, line 73

Class

IndexNameDepth
Argument handler for taxonomy terms with depth.

Namespace

Drupal\views_taxonomy_term_name_depth\Plugin\views\argument

Code

public function buildOptionsForm(&$form, FormStateInterface $form_state) {
  $form['depth'] = [
    '#type' => 'weight',
    '#title' => $this
      ->t('Depth'),
    '#default_value' => $this->options['depth'],
    '#description' => $this
      ->t('The depth will match nodes tagged with terms in the hierarchy. For example, if you have the term "fruit" and a child term "apple", with a depth of 1 (or higher) then filtering for the term "fruit" will get nodes that are tagged with "apple" as well as "fruit". If negative, the reverse is true; searching for "apple" will also pick up nodes tagged with "fruit" if depth is -1 (or lower).'),
  ];

  // Load all the available vocabularies to create a list of options for the
  // select list.
  $vocabularies = Vocabulary::loadMultiple();
  $vocab_options = [];
  foreach ($vocabularies as $machine_name => $vocabulary) {
    $vocab_options[$machine_name] = $vocabulary
      ->label();
  }
  $form['vocabularies'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Vocabularies'),
    '#default_value' => $this->options['vocabularies'],
    '#options' => $vocab_options,
    '#multiple' => TRUE,
    '#description' => $this
      ->t('Choose the vocabularies to check against. This is useful if you have terms of the same name across different vocabularies.'),
  ];
  $form['break_phrase'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Allow multiple values'),
    '#description' => $this
      ->t('If selected, users can enter multiple values in the form of 1+2+3. Due to the number of JOINs it would require, AND will be treated as OR with this filter.'),
    '#default_value' => !empty($this->options['break_phrase']),
  ];
  parent::buildOptionsForm($form, $form_state);
}