outlayer-8.x-1.4/src/Plugin/views/style/OutlayerViewsBase.php

src/Plugin/views/style/OutlayerViewsBase.php
<?php

namespace Drupal\outlayer\Plugin\views\style;

use Drupal\blazy\Views\BlazyStylePluginBase;
use Drupal\outlayer\OutlayerDefault;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Base Outlayer style plugin.
 */
abstract class OutlayerViewsBase extends BlazyStylePluginBase {

  /**
   * {@inheritdoc}
   */
  protected static $namespace = 'outlayer';

  /**
   * {@inheritdoc}
   */
  protected static $itemId = 'box';

  /**
   * {@inheritdoc}
   */
  protected static $itemPrefix = 'box';

  /**
   * {@inheritdoc}
   */
  protected static $captionId = 'caption';

  /**
   * {@inheritdoc}
   */
  protected $usesRowPlugin = TRUE;

  /**
   * {@inheritdoc}
   */
  protected $usesGrouping = FALSE;

  /**
   * The outlayer service manager.
   *
   * @var \Drupal\outlayer\OutlayerManagerInterface
   */
  protected $manager;

  /**
   * {@inheritdoc}
   */
  public static function create(
    ContainerInterface $container,
    array $configuration,
    $plugin_id,
    $plugin_definition,
  ) {
    $instance = parent::create(
      $container,
      $configuration,
      $plugin_id,
      $plugin_definition
    );
    $instance->manager = $container->get('outlayer.manager');
    $instance->blazyManager = $instance->blazyManager ?? $container->get('blazy.manager');

    return $instance;
  }

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

  /**
   * {@inheritdoc}
   */
  public function admin() {
    return \Drupal::service('outlayer.admin');
  }

  /**
   * Returns item list suitable for button groups.
   */
  public function buildItemList(array $items, array $settings, $type = 'sorter') {
    $outlayers = $settings['outlayers'];
    $id = $outlayers->get('view.based_id') ?: $settings['instance_id'];
    return [
      '#theme' => 'item_list',
      '#items' => $items,
      '#context' => ['settings' => $settings],
      '#attributes' => [
        'class' => [
          'outlayer-list',
          'outlayer-list--' . $type,
          'btn-group',
        ],
        'data-instance-id' => $id,
      ],
      '#wrapper_attributes' => [
        'class' => ['item-list--outlayer', 'item-list--outlayer-' . $type],
      ],
    ];
  }

  /**
   * Provides commons settings for the style plugins.
   */
  protected function buildSettings() {
    $settings  = parent::buildSettings();
    $settings += OutlayerDefault::htmlSettings();
    $blazies   = $settings['blazies'];

    $blazies->set('item.id', static::$itemId)
      ->set('item.prefix', static::$itemPrefix)
      ->set('item.caption', static::$captionId)
      ->set('namespace', static::$namespace)
      ->set('is.noratio', TRUE);

    return $settings;
  }

}

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

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