View source
<?php
namespace Drupal\blazy\Plugin\Field\FieldFormatter;
use Drupal\blazy\BlazyManagerInterface;
use Drupal\blazy\BlazyDefault;
use Drupal\blazy\Form\BlazyAdminFormatter;
class BlazyTextFormatter extends FormatterBase {
use BlazyFormatterTrait;
public function __construct($plugin_id, $field, $instance, BlazyManagerInterface $formatter) {
parent::__construct($plugin_id, $field, $instance);
$this->formatter = $formatter;
}
public static function defaultSettings() {
return BlazyDefault::baseSettings();
}
public function getRequiredForms() {
return [
'grid' => $this->isMultiple,
];
}
public function admin() {
if (!isset($this->admin)) {
$this->admin = new BlazyAdminFormatter($this->formatter);
}
return $this->admin;
}
public function viewElements($items, $entity) {
$settings = $this
->buildSettings();
$settings['_grid'] = !empty($settings['style']) && !empty($settings['grid']);
if (!$this->isMultiple || !$settings['_grid']) {
$types = field_info_field_types($this->fieldDefinition['type']);
$display['type'] = isset($types['default_formatter']) ? $types['default_formatter'] : '';
if ($fallback = text_field_formatter_view($this->entityType, $entity, $this->fieldDefinition, $this->fieldInstance, $this->langcode, $items, $display)) {
return $fallback;
}
}
$settings['vanilla'] = TRUE;
$settings['namespace'] = $settings['item_id'] = 'blazy';
$build = [
'settings' => $settings,
];
$this->formatter
->preBuildElements($build, $items, $entity);
foreach ($items as $item) {
$content = _text_sanitize($this->fieldInstance, $settings['langcode'], $item, 'value');
$build[] = [
'#markup' => $content,
];
unset($content);
}
return $this->formatter
->build($build);
}
public function settingsForm($form, &$form_state, $definition) {
$element = [];
if (!$this->isMultiple) {
return $element;
}
$this
->admin()
->buildSettingsForm($element, $definition);
return $element;
}
public function getScopedFormElements() {
return [
'grid_required' => $this->isMultiple,
'no_image_style' => TRUE,
'no_layouts' => TRUE,
'responsive_image' => FALSE,
'style' => TRUE,
] + parent::getScopedFormElements();
}
}