SlickEntityReferenceFormatterBase.php in Slick Carousel 8.2
File
src/Plugin/Field/FieldFormatter/SlickEntityReferenceFormatterBase.php
View source
<?php
namespace Drupal\slick\Plugin\Field\FieldFormatter;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\blazy\Dejavu\BlazyEntityReferenceBase;
use Drupal\slick\SlickDefault;
use Symfony\Component\DependencyInjection\ContainerInterface;
abstract class SlickEntityReferenceFormatterBase extends BlazyEntityReferenceBase implements ContainerFactoryPluginInterface {
use SlickFormatterTrait {
buildSettings as traitBuildSettings;
}
protected $loggerFactory;
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
$instance = parent::create($container, $configuration, $plugin_id, $plugin_definition);
return self::injectServices($instance, $container, 'entity');
}
public static function defaultSettings() {
return SlickDefault::extendedSettings() + parent::defaultSettings();
}
public function buildElementThumbnail(array &$build, $element, $entity, $delta) {
$settings = $element['settings'];
$item_id = $settings['item_id'];
if (!empty($settings['nav'])) {
$element[$item_id] = empty($settings['thumbnail_style']) ? [] : $this
->formatter()
->getThumbnail($settings, $element['item']);
$element['caption'] = empty($settings['thumbnail_caption']) ? [] : $this
->blazyEntity()
->getFieldRenderable($entity, $settings['thumbnail_caption'], $settings['view_mode']);
$build['thumb']['items'][$delta] = $element;
}
}
public function getScopedFormElements() {
$admin = $this
->admin();
$target_type = $this
->getFieldSetting('target_type');
$views_ui = $this
->getFieldSetting('handler') == 'default';
$bundles = $views_ui ? [] : $this
->getFieldSetting('handler_settings')['target_bundles'];
$texts = [
'text',
'text_long',
'string',
'string_long',
'link',
];
$texts = $admin
->getFieldOptions($bundles, $texts, $target_type);
return [
'thumb_captions' => $texts,
'thumb_positions' => TRUE,
'nav' => TRUE,
] + $this
->getCommonScopedFormElements() + parent::getScopedFormElements();
}
}