View source
<?php
namespace Drupal\slick\Plugin\Field\FieldFormatter;
use Drupal\blazy\Plugin\Field\FieldFormatter\FormatterBase;
use Drupal\slick\SlickFormatterInterface;
use Drupal\slick\SlickManagerInterface;
use Drupal\slick\SlickDefault;
class SlickTextFormatter extends FormatterBase {
use SlickFormatterTrait;
public function __construct($plugin_id, $field, $instance, SlickFormatterInterface $formatter, SlickManagerInterface $manager) {
parent::__construct($plugin_id, $field, $instance);
$this->formatter = $formatter;
$this->manager = $manager;
}
public static function defaultSettings() {
return SlickDefault::baseSettings() + SlickDefault::gridSettings();
}
public function getRequiredForms() {
return [
'grid' => $this->isMultiple,
];
}
public function viewElements($items, $entity) {
$settings = $this
->buildSettings();
if (!$this->isMultiple) {
$types = field_info_field_types($this->fieldDefinition['type']);
$display['type'] = isset($types['default_formatter']) ? $types['default_formatter'] : '';
if ($fallback = text_field_formatter_view($settings['entity_type_id'], $entity, $this->fieldDefinition, $this->fieldInstance, $this->langcode, $items, $display)) {
return $fallback;
}
}
$settings['vanilla'] = TRUE;
$build = [
'settings' => $settings,
];
$this
->formatter()
->preBuildElements($build, $items, $entity);
$this
->buildElements($build, $items);
$element = $this
->manager()
->build($build);
return $element;
}
public function buildElements(array &$build, $items) {
$settings = $build['settings'];
foreach ($items as $item) {
$text = _text_sanitize($this->fieldInstance, $settings['langcode'], $item, 'value');
$build['items'][] = [
'#markup' => $text,
];
unset($text);
}
}
public function settingsForm($form, &$form_state, $definition) {
$element = [];
if (!$this->isMultiple) {
return $element;
}
$this
->admin()
->buildSettingsForm($element, $definition);
return $element;
}
public function getScopedFormElements() {
return [
'no_image_style' => TRUE,
'no_layouts' => TRUE,
'responsive_image' => FALSE,
'style' => TRUE,
] + parent::getScopedFormElements();
}
}