3 namespace Drupal\blazy\Dejavu;
5 use Drupal\views\Plugin\views\style\StylePluginBase;
6 use Drupal\blazy\BlazyManagerInterface;
7 use Symfony\Component\DependencyInjection\ContainerInterface;
10 * A base for blazy views integration to have re-usable methods in one place.
12 * @see \Drupal\mason\Plugin\views\style\MasonViews
13 * @see \Drupal\gridstack\Plugin\views\style\GridStackViews
14 * @see \Drupal\slick_views\Plugin\views\style\SlickViews
16 abstract class BlazyStylePluginBase extends StylePluginBase {
18 use BlazyStylePluginTrait;
23 protected $usesRowPlugin = TRUE;
28 protected $usesGrouping = FALSE;
31 * Constructs a GridStackManager object.
33 public function __construct(array $configuration, $plugin_id, $plugin_definition, BlazyManagerInterface $blazy_manager) {
34 parent::__construct($configuration, $plugin_id, $plugin_definition);
35 $this->blazyManager = $blazy_manager;
41 public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
42 return new static($configuration, $plugin_id, $plugin_definition, $container->get('blazy.manager'));
46 * Returns an individual row/element content.
48 public function buildElement(array &$element, $row, $index) {
49 $settings = &$element['settings'];
50 $item_id = empty($settings['item_id']) ? 'box' : $settings['item_id'];
52 // Add main image fields if so configured.
53 if (!empty($settings['image'])) {
54 // Supports individual grid/box image style either inline IMG, or CSS.
55 $image = $this->getImageRenderable($settings, $row, $index);
56 $element['item'] = $this->getImageItem($image);
57 $element[$item_id] = empty($image['rendered']) ? [] : $image['rendered'];
60 // Add caption fields if so configured.
61 $element['caption'] = $this->getCaption($index, $settings);
63 // Add layout field, may be a list field, or builtin layout options.
64 if (!empty($settings['layout'])) {
65 $this->getLayout($settings, $index);