You are here

public function FilterBlock::blockForm in Open Social 10.1.x

Same name and namespace in other branches
  1. 10.3.x modules/social_features/social_activity/modules/social_activity_filter/src/Plugin/views/display/FilterBlock.php \Drupal\social_activity_filter\Plugin\views\display\FilterBlock::blockForm()
  2. 10.0.x modules/social_features/social_activity/modules/social_activity_filter/src/Plugin/views/display/FilterBlock.php \Drupal\social_activity_filter\Plugin\views\display\FilterBlock::blockForm()
  3. 10.2.x modules/social_features/social_activity/modules/social_activity_filter/src/Plugin/views/display/FilterBlock.php \Drupal\social_activity_filter\Plugin\views\display\FilterBlock::blockForm()

Adds the configuration form elements specific to this views block plugin.

This method allows block instances to override the views items_per_page.

Parameters

\Drupal\views\Plugin\Block\ViewsBlock $block: The ViewsBlock plugin.

array $form: The form definition array for the block configuration form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The renderable form array representing the entire configuration form.

Overrides ModeBlock::blockForm

See also

\Drupal\views\Plugin\Block\ViewsBlock::blockForm()

File

modules/social_features/social_activity/modules/social_activity_filter/src/Plugin/views/display/FilterBlock.php, line 106

Class

FilterBlock
The plugin that handles a block.

Namespace

Drupal\social_activity_filter\Plugin\views\display

Code

public function blockForm(ViewsBlock $block, array &$form, FormStateInterface $form_state) {
  parent::blockForm($block, $form, $form_state);

  // Check if overridden filter option is enabled for current views block.
  if (!$this
    ->getOption('override_tags_filter')) {
    return $form;
  }
  $allow_settings = $this
    ->getOption('tags_filter');
  $allow_settings += array_filter($this
    ->getOption('allow'));
  $block_configuration = $block
    ->getConfiguration();
  if (isset($block_configuration['delta'])) {
    $delta = $block_configuration['delta'];
  }
  else {
    $triggered = $form_state
      ->getTriggeringElement();
    $delta = is_int($triggered['#parents'][1]) ? $triggered['#parents'][1] : '';
  }
  if ($vid = $form_state
    ->get('new_options_tags_' . $delta)) {
    $opt = $this
      ->getTermOptionslist($vid);
  }
  else {
    $opt = $this
      ->getTermOptionslist($block_configuration['vocabulary']);
  }
  foreach ($allow_settings as $type => $enabled) {
    if (empty($enabled)) {
      continue;
    }
    switch ($type) {
      case 'vocabulary':
        $form['override']['vocabulary'] = [
          '#type' => 'select',
          '#title' => $this
            ->t('Vocabulary'),
          '#options' => $this
            ->getVocabularyOptionsList(),
          '#default_value' => $block_configuration['vocabulary'],
          '#empty_option' => $this
            ->t('None'),
          '#empty_value' => '_none',
          '#ajax' => [
            'callback' => [
              static::class,
              'updateTagsOptions',
            ],
            'wrapper' => 'edit-block-term-wrapper-' . $delta,
          ],
        ];
        $form['override']['delta'] = [
          '#type' => 'hidden',
          '#value' => $delta,
        ];
        break;
      case 'tags':

        // Adds workaround to hide/display tags field due to "states" issue in
        // block_field plugin.
        $hidden = empty($opt) ? 'hidden' : '';
        $form['override']['tags'] = [
          '#type' => 'select',
          '#title' => $this
            ->t('Tags'),
          '#description' => $this
            ->t('Select the tags to filter items in the stream.'),
          '#default_value' => $block_configuration['tags'],
          '#options' => $opt,
          '#multiple' => TRUE,
          '#required' => !empty($opt) ? TRUE : FALSE,
          '#prefix' => '<div id="edit-block-term-wrapper-' . $delta . '" class="' . $hidden . '">',
          '#suffix' => '</div>',
        ];
        break;
      case 'items_per_page':
        $form['override']['items_per_page']['#weight'] = 10;
        break;
    }
  }
  $form['override']['#process'] = [
    [
      static::class,
      'processFilterTags',
    ],
  ];
  return $form;
}