BlazyFormatterBlazy.php in Blazy 7
File
src/Plugin/Field/FieldFormatter/BlazyFormatterBlazy.php
View source
<?php
namespace Drupal\blazy\Plugin\Field\FieldFormatter;
use Drupal\blazy\BlazyManagerInterface;
use Drupal\blazy\Form\BlazyAdminFormatter;
class BlazyFormatterBlazy extends BlazyFormatterBase {
public function __construct($plugin_id, $field, $instance, BlazyManagerInterface $formatter) {
parent::__construct($plugin_id, $field, $instance);
$this->formatter = $formatter;
}
public function admin() {
if (!isset($this->admin)) {
$this->admin = new BlazyAdminFormatter($this->formatter);
}
return $this->admin;
}
public function viewElements($items, $entity) {
$build = [];
$files = $this
->getEntitiesToView($items);
if (empty($files)) {
return $build;
}
$settings = $this
->buildSettings();
$settings['blazy'] = TRUE;
$settings['namespace'] = $settings['item_id'] = $settings['lazy'] = 'blazy';
$build = [
'settings' => $settings,
];
$this->formatter
->preBuildElements($build, $files, $entity);
$this
->buildElements($build, $files);
$this->formatter
->postBuildElements($build, $files, $entity);
return $this->formatter
->build($build);
}
public function buildElements(array &$build, $files) {
$settings = $build['settings'];
foreach ($files as $delta => $item) {
$settings['delta'] = $delta;
$settings['type'] = isset($item->type) ? $item->type : 'image';
$settings['uri'] = isset($item->uri) ? $item->uri : '';
$box['item'] = $item;
$box['settings'] = $settings;
$this
->buildElement($box, $item, $delta);
if (!empty($settings['caption'])) {
foreach ($settings['caption'] as $caption) {
if (isset($item->{$caption}) && ($caption_content = array_filter($this
->getCaption($item, $caption, $settings)))) {
$box['captions'][$caption] = $caption_content;
}
}
}
$build[$delta] = $this
->formatter()
->getBlazy($box);
unset($box);
}
}
public function buildElement(array &$element, $entity, $delta = 0) {
}
protected function getCaption($entity, $field_name, $settings) {
return [];
}
}