views_group_action-8.x-1.x-dev/src/Plugin/ViewGroupAction/Form/ActionFormBase.php

src/Plugin/ViewGroupAction/Form/ActionFormBase.php
<?php

namespace Drupal\views_group_action\Plugin\ViewGroupAction\Form;

use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\PluginBase;
use Drupal\views\ViewExecutable;

/**
 * Provides the base class for View group action form plugin.
 */
abstract class ActionFormBase extends PluginBase implements ActionFormInterface {

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->setConfiguration($configuration);
  }

  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return [
      'view' => NULL,
      'views_result_rows' => [],
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function getConfiguration() {
    return $this->configuration;
  }

  /**
   * {@inheritdoc}
   */
  public function setConfiguration(array $configuration) {
    $this->configuration = NestedArray::mergeDeep($this->defaultConfiguration(), $configuration);
  }

  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
  }

  /**
   * {@inheritdoc}
   */
  public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
    if (!$form_state->getErrors()) {
      $this->configuration = [];
      foreach ($form_state->getValue($form['#parents']) as $key => $value) {
        $this->configuration[$key] = $value;
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  public function getPluginLabel() {
    return (string) $this->pluginDefinition['label'];
  }

  /**
   * Get all entities from views result rows.
   *
   * @return \Drupal\Core\Entity\EntityInterface[]
   *   Processing entities.
   */
  protected function getResultEntities() {
    $entities = [];
    if (!empty($this->configuration['views_result_rows'])) {
      foreach ($this->configuration['views_result_rows'] as $result_row) {
        if (!empty($result_row->_entity) && $result_row->_entity instanceof EntityInterface) {
          $entities[$result_row->_entity->id()] = $result_row->_entity;
        }
      }
    }
    return $entities;
  }

  /**
   * {@inheritdoc}
   */
  public function isApplicable(ViewExecutable $view) {
    return TRUE;
  }

  /**
   * {@inheritdoc}
   */
  abstract public function buildActionForm(array $form, FormStateInterface $form_state);

  /**
   * {@inheritdoc}
   */
  abstract public function validateActionForm(array &$form, FormStateInterface $form_state);

  /**
   * {@inheritdoc}
   */
  abstract public function submitActionForm(array &$form, FormStateInterface $form_state);

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc