3 namespace Drupal\slick;
5 use Drupal\slick\Entity\Slick;
6 use Drupal\blazy\BlazyFormatterManager;
9 * Implements SlickFormatterInterface.
11 class SlickFormatter extends BlazyFormatterManager implements SlickFormatterInterface {
16 public function buildSettings(array &$build, $items) {
17 $settings = &$build['settings'];
19 // Prepare integration with Blazy.
20 $settings['item_id'] = 'slide';
21 $settings['namespace'] = 'slick';
23 // Pass basic info to parent::buildSettings().
24 parent::buildSettings($build, $items);
26 // Slick specific stuffs.
27 $build['optionset'] = Slick::load($settings['optionset']);
29 // Ensures deleted optionset while being used doesn't screw up.
30 if (empty($build['optionset'])) {
31 $build['optionset'] = Slick::load('default');
34 if (!isset($settings['nav'])) {
35 $settings['nav'] = !empty($settings['optionset_thumbnail']) && isset($items[1]);
38 // Do not bother for SlickTextFormatter, or when vanilla is on.
39 if (empty($settings['vanilla'])) {
40 $lazy = $build['optionset']->getSetting('lazyLoad');
41 $settings['blazy'] = $lazy == 'blazy' || !empty($settings['blazy']);
42 $settings['lazy'] = $settings['blazy'] ? 'blazy' : $lazy;
44 if (empty($settings['blazy'])) {
45 $settings['lazy_class'] = $settings['lazy_attribute'] = 'lazy';
49 // Nothing to work with Vanilla on, disable the asnavfor, else JS error.
50 $settings['nav'] = FALSE;
53 // Only trim overridables options if disabled.
54 if (empty($settings['override']) && isset($settings['overridables'])) {
55 $settings['overridables'] = array_filter($settings['overridables']);
60 * Gets the thumbnail image using theme_image_style().
62 * @param array $settings
63 * The array containing: thumbnail_style, etc.
65 * The \Drupal\image\Plugin\Field\FieldType\ImageItem object.
68 * The renderable array of thumbnail image.
70 public function getThumbnail(array $settings = [], $item = NULL) {
72 if (!empty($settings['uri'])) {
74 '#theme' => 'image_style',
75 '#style_name' => isset($settings['thumbnail_style']) ? $settings['thumbnail_style'] : 'thumbnail',
76 '#uri' => $settings['uri'],