splide-1.0.x-dev/src/SplideSkinPluginBase.php

src/SplideSkinPluginBase.php
<?php

namespace Drupal\splide;

use Drupal\Core\Plugin\PluginBase;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Provides base class for all splide skins.
 */
abstract class SplideSkinPluginBase extends PluginBase implements SplideSkinPluginInterface {

  /**
   * The splide main/thumbnail skin definitions.
   *
   * @var array
   */
  protected $skins;

  /**
   * The splide arrow skin definitions.
   *
   * @var array
   */
  protected $arrows;

  /**
   * The splide dot skin definitions.
   *
   * @var array
   */
  protected $dots;

  /**
   * The manager service.
   *
   * @var \Drupal\splide\SplideManagerInterface
   */
  protected $manager;

  /**
   * {@inheritdoc}
   */
  public static function create(
    ContainerInterface $container,
    array $configuration,
    $plugin_id,
    $plugin_definition,
  ) {
    $instance = new static($configuration, $plugin_id, $plugin_definition);
    $instance->manager = $container->get('splide.manager');
    $instance->skins = $instance->setSkins();
    $instance->arrows = $instance->setArrows();
    $instance->dots = $instance->setDots();

    return $instance;
  }

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

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

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

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

  /**
   * Alias for BlazyInterface::getPath().
   */
  protected function getPath($type, $name, $absolute = TRUE): ?string {
    return $this->manager->getPath($type, $name, $absolute);
  }

  /**
   * Sets the required plugin main/thumbnail skins.
   */
  abstract protected function setSkins();

  /**
   * Sets the optional/ empty plugin arrow skins.
   */
  protected function setArrows() {
    return [];
  }

  /**
   * Sets the optional/ empty plugin dot skins.
   */
  protected function setDots() {
    return [];
  }

}

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

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