visualn-8.x-1.x-dev/src/Core/DrawerSkinBase.php

src/Core/DrawerSkinBase.php
<?php

namespace Drupal\visualn\Core;

use Drupal\visualn\Core\VisualNPluginBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\visualn\WindowParametersTrait;

/**
 * Base class for VisualN Drawer Skin plugins.
 *
 * @see \Drupal\visualn\Core\DrawerSkinInterface
 *
 * @ingroup drawer_skin_plugins
 */
abstract class DrawerSkinBase extends VisualNPluginBase implements DrawerSkinInterface {

  use WindowParametersTrait;

  protected $suid;

  /**
   * {@inheritdoc}
   */
  public function setWindowParameters(array $window_parameters) {
    $this->window_parameters = $window_parameters;
    $this->cleanWindowParameters();
    return $this;
  }

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

  /**
   * {@inheritdoc}
   */
  public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
    // Clean submitted values
    $drawer_config = $this->extractFormValues($form, $form_state);
    $form_state->setValues($drawer_config);
  }

  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
    //The skin_config from form_state should not change the plugin configuration,
    //it is only used to build the form according to that config.
    $skin_config = $this->extractFormValues($form, $form_state);

    $form['markup'] = [
      '#markup' => '<div>' . t('No configuration provided for this skin') . '</div>',
    ];

    return $form;
  }

  /**
   * @inheritdoc
   */
  public function extractFormValues($form, FormStateInterface $form_state) {
    // Since it is supposed to be subform_state, get all the values without limiting the scope.
    return $form_state->getValues();
  }

  /**
   * @inheritdoc
   */
  public function getSkinUid() {
    if (empty($this->suid)) {
      // generate suid for the drawer skin
      $this->suid = substr(\Drupal::service('uuid')->generate(), 0, 8);
    }
    return $this->suid;
  }

  /**
   * @inheritdoc
   */
  public function setSkinUid($suid) {
    $this->suid = $suid;
    return $this;
  }

}

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

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