blazy-8.x-2.x-dev/src/Plugin/views/style/BlazyViews.php
src/Plugin/views/style/BlazyViews.php
<?php
namespace Drupal\blazy\Plugin\views\style;
use Drupal\Core\Form\FormStateInterface;
use Drupal\blazy\BlazyDefault;
use Drupal\blazy\Views\BlazyStyleVanilla;
use Drupal\blazy\internals\Internals;
/**
* Provides Blazy Grid style plugin.
*/
class BlazyViews extends BlazyStyleVanilla implements BlazyViewsInterface {
/**
* {@inheritdoc}
*/
protected static $namespace = 'blazy';
/**
* {@inheritdoc}
*/
protected static $itemId = 'content';
/**
* {@inheritdoc}
*/
protected static $itemPrefix = 'blazy';
/**
* {@inheritdoc}
*/
protected static $captionId = 'captions';
/**
* {@inheritdoc}
*/
protected $usesRowPlugin = TRUE;
/**
* {@inheritdoc}
*/
protected $usesGrouping = FALSE;
/**
* {@inheritdoc}
*/
public function admin() {
return Internals::service('blazy.admin');
}
/**
* Overrides StylePluginBase::buildOptionsForm().
*/
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
$definition = [
'plugin_id' => $this->getPluginId(),
'namespace' => 'blazy',
'grid_form' => TRUE,
'grid_required' => TRUE,
'grid_simple' => TRUE,
'no_image_style' => TRUE,
'opening_class' => 'form--views',
'settings' => $this->options,
'style' => TRUE,
'_views' => TRUE,
];
// Build the form.
$this->admin()->gridOnlyForm($form, $definition);
}
/**
* Overrides StylePluginBase::render().
*/
public function render() {
$settings = $this->buildSettings();
$blazies = $settings['blazies'];
$view = $this->view;
$blazies->set('is.grid', TRUE);
$elements = [];
foreach ($this->renderGrouping($view->result, $settings['grouping']) as $rows) {
$items = [];
foreach ($rows as $index => $row) {
$view->row_index = $index;
$items[$index] = $view->rowPlugin->render($row);
}
// Supports lightbox gallery if using Blazy formatter.
$build = ['items' => $items];
$this->checkBlazy($settings, $build, $rows);
$build['#settings'] = $settings;
$elements = $this->manager->build($build);
unset($view->row_index, $items);
}
return $elements;
}
/**
* {@inheritdoc}
*/
protected function defineOptions() {
$options = [];
foreach (BlazyDefault::gridSettings() as $key => $value) {
$options[$key] = ['default' => $value];
}
return $options + parent::defineOptions();
}
}
