Version 1
[yaffs-website] / web / modules / contrib / slick / src / SlickFormatter.php
1 <?php
2
3 namespace Drupal\slick;
4
5 use Drupal\slick\Entity\Slick;
6 use Drupal\blazy\BlazyFormatterManager;
7
8 /**
9  * Implements SlickFormatterInterface.
10  */
11 class SlickFormatter extends BlazyFormatterManager implements SlickFormatterInterface {
12
13   /**
14    * {@inheritdoc}
15    */
16   public function buildSettings(array &$build, $items) {
17     $settings = &$build['settings'];
18
19     // Prepare integration with Blazy.
20     $settings['item_id']   = 'slide';
21     $settings['namespace'] = 'slick';
22
23     // Pass basic info to parent::buildSettings().
24     parent::buildSettings($build, $items);
25
26     // Slick specific stuffs.
27     $build['optionset'] = Slick::load($settings['optionset']);
28
29     // Ensures deleted optionset while being used doesn't screw up.
30     if (empty($build['optionset'])) {
31       $build['optionset'] = Slick::load('default');
32     }
33
34     if (!isset($settings['nav'])) {
35       $settings['nav'] = !empty($settings['optionset_thumbnail']) && isset($items[1]);
36     }
37
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;
43
44       if (empty($settings['blazy'])) {
45         $settings['lazy_class'] = $settings['lazy_attribute'] = 'lazy';
46       }
47     }
48     else {
49       // Nothing to work with Vanilla on, disable the asnavfor, else JS error.
50       $settings['nav'] = FALSE;
51     }
52
53     // Only trim overridables options if enabled.
54     if (empty($settings['override'])) {
55       $settings['overridables'] = array_filter($settings['overridables']);
56     }
57   }
58
59   /**
60    * Gets the thumbnail image.
61    */
62   public function getThumbnail($settings = []) {
63     $thumbnail = [];
64     if (!empty($settings['uri'])) {
65       $thumbnail = [
66         '#theme'      => 'image_style',
67         '#style_name' => isset($settings['thumbnail_style']) ? $settings['thumbnail_style'] : 'thumbnail',
68         '#uri'        => $settings['uri'],
69       ];
70
71       foreach (['height', 'width', 'alt', 'title'] as $data) {
72         $thumbnail["#$data"] = isset($settings[$data]) ? $settings[$data] : NULL;
73       }
74     }
75     return $thumbnail;
76   }
77
78 }