Browse code

Always set empty arrays for images and videos

Benjamin Roth authored on13/01/2020 17:03:21
Showing1 changed files
... ...
@@ -57,9 +57,10 @@ class ContentSlickSliderStart extends \ContentElement
57 57
       $source = \StringUtil::deserialize($this->multiSRC);
58 58
       $objFiles = \FilesModel::findMultipleByUuids($source);
59 59
 
60
+      $imageFiles = array();
61
+      $videoFiles = array();
62
+
60 63
       if ($objFiles !== null) {
61
-        $imageFiles = array();
62
-        $videoFiles = array();
63 64
 
64 65
         foreach ($objFiles as $file) {
65 66
           if (is_file(TL_ROOT . '/' . $file->path))
Browse code

Add image slide lightbox gallery feature

Benjamin Roth authored on23/09/2019 16:13:06
Showing1 changed files
... ...
@@ -40,6 +40,14 @@ class ContentSlickSliderStart extends \ContentElement
40 40
 			$this->Template->title = $this->headline;
41 41
 		}
42 42
 
43
+    $parentKey = ($this->arrData['ptable'] ?: 'tl_article') . '__' . $this->arrData['pid'];
44
+
45
+    if (!empty($GLOBALS['TL_ESM_SLICK'][$parentKey])) {
46
+      $GLOBALS['TL_ESM_SLICK_STACK'][$parentKey][] = $GLOBALS['TL_ESM_SLICK'][$parentKey];
47
+    }
48
+
49
+    $GLOBALS['TL_ESM_SLICK'][$parentKey] = $this->id;
50
+
43 51
 		// Slider configuration
44 52
 		$this->Template->config = $this->eSM_slick_autoPlaySpeed . ',' . $this->eSM_slick_speed . ',' . $this->eSM_slick_initialSlide . ',' . $this->eSM_slick_lazyLoad . ',' . $this->eSM_slick_infinite . ',' . $this->eSM_slick_arrows . ',' . $this->eSM_slick_pagination . ',' . $this->eSM_slick_pause . ',' . $this->eSM_slick_fade . ',' . $this->eSM_slick_slidesToShow . ',' . $this->eSM_slick_slidesToScroll . ',' . $this->eSM_slick_adaptiveHeight;
45 53
 
Browse code

Allow background videos

Benjamin Roth authored on06/06/2019 19:27:31
Showing1 changed files
... ...
@@ -44,47 +44,77 @@ class ContentSlickSliderStart extends \ContentElement
44 44
 		$this->Template->config = $this->eSM_slick_autoPlaySpeed . ',' . $this->eSM_slick_speed . ',' . $this->eSM_slick_initialSlide . ',' . $this->eSM_slick_lazyLoad . ',' . $this->eSM_slick_infinite . ',' . $this->eSM_slick_arrows . ',' . $this->eSM_slick_pagination . ',' . $this->eSM_slick_pause . ',' . $this->eSM_slick_fade . ',' . $this->eSM_slick_slidesToShow . ',' . $this->eSM_slick_slidesToScroll . ',' . $this->eSM_slick_adaptiveHeight;
45 45
 
46 46
 		// Background image
47
-    if ($this->singleSRC)
47
+    if ($this->eSM_addImage && $this->multiSRC)
48 48
     {
49
+      $source = \StringUtil::deserialize($this->multiSRC);
50
+      $objFiles = \FilesModel::findMultipleByUuids($source);
49 51
 
50
-      $objFile = \FilesModel::findByUuid($this->singleSRC);
52
+      if ($objFiles !== null) {
53
+        $imageFiles = array();
54
+        $videoFiles = array();
51 55
 
52
-      if ($objFile !== null && is_file(TL_ROOT . '/' . $objFile->path))
56
+        foreach ($objFiles as $file) {
57
+          if (is_file(TL_ROOT . '/' . $file->path))
58
+          {
59
+            if (in_array($file->extension, array_map('trim', explode(',', \Config::get('validImageTypes')))))
60
+            {
61
+              $imageFiles[] = $file;
62
+            } else if (in_array($file->extension, array_map('trim', array('mp4', 'm4v', 'mov', 'wmv', 'webm', 'ogv', 'm4a', 'mp3', 'wma', 'mpeg', 'wav', 'ogg'))))
63
+            {
64
+              $videoFiles[] = $file;
65
+            }
66
+          }
67
+        }
68
+      }
69
+
70
+      if (isset($imageFiles[0]))
53 71
       {
54
-        $this->singleSRC = $objFile->path;
72
+        $this->singleSRC = $imageFiles[0]->path;
55 73
 
56
-        $this->addImageToTemplate($this->Template, array('singleSRC'=>$this->singleSRC, 'size'=>$this->size));
74
+        $this->addImageToTemplate($this->Template, array('singleSRC' => $this->singleSRC, 'size' => $this->size));
57 75
 
58
-        if ($this->eSM_slick_minHeight) {
59
-          if ($this->eSM_slick_bgSize && $this->eSM_slick_bgSize == 'auto auto') {
76
+        if ($this->eSM_slick_minHeight)
77
+        {
78
+          if ($this->eSM_slick_bgSize && $this->eSM_slick_bgSize == 'auto auto')
79
+          {
60 80
             $this->Template->minHeight = $this->Template->picture['img']['height'] . 'px';
61 81
           } else
62 82
           {
63 83
             $this->Template->minHeight = round($this->Template->picture['img']['height'] / $this->Template->picture['img']['width'] * 100) . '%';
64 84
           }
65 85
         }
66
-      }
67 86
 
68
-      $backgroundStyle = 'background-image: url(\''.$this->Template->src.'\');';
87
+        $backgroundStyle = 'background-image: url(\'' . $this->Template->src . '\');';
69 88
 
70
-      if ($this->eSM_slick_bgSize) {
71
-        $backgroundStyle .= 'background-size: ' . $this->eSM_slick_bgSize . ';';
72
-      } else {
73
-        $backgroundStyle .= 'background-size: cover;';
74
-      }
75
-      if ($this->eSM_slick_bgPosition) {
76
-        $backgroundStyle .= 'background-position: ' . $this->eSM_slick_bgPosition . ';';
77
-      } else {
78
-        $backgroundStyle .= 'background-position: 0 0;';
79
-      }
80
-      if ($this->eSM_slick_bgOpacity) {
81
-        $backgroundStyle .= 'opacity:' . $this->eSM_slick_bgOpacity/100 . ';';
82
-      }
83
-      if ($this->eSM_slick_bgRepeat) {
84
-        $backgroundStyle .= 'background-repeat: ' . $this->eSM_slick_bgRepeat . ';';
89
+        if ($this->eSM_slick_bgSize)
90
+        {
91
+          $backgroundStyle .= 'background-size: ' . $this->eSM_slick_bgSize . ';';
92
+        } else
93
+        {
94
+          $backgroundStyle .= 'background-size: cover;';
95
+        }
96
+        if ($this->eSM_slick_bgPosition)
97
+        {
98
+          $backgroundStyle .= 'background-position: ' . $this->eSM_slick_bgPosition . ';';
99
+        } else
100
+        {
101
+          $backgroundStyle .= 'background-position: 0 0;';
102
+        }
103
+        if ($this->eSM_slick_bgOpacity)
104
+        {
105
+          $backgroundStyle .= 'opacity:' . $this->eSM_slick_bgOpacity / 100 . ';';
106
+        }
107
+        if ($this->eSM_slick_bgRepeat)
108
+        {
109
+          $backgroundStyle .= 'background-repeat: ' . $this->eSM_slick_bgRepeat . ';';
110
+        }
111
+
112
+        $this->Template->backgroundStyle = $backgroundStyle;
85 113
       }
86 114
 
87
-      $this->Template->backgroundStyle = $backgroundStyle;
115
+      if (count($videoFiles)) {
116
+        $this->Template->videoFiles = $videoFiles;
117
+      }
88 118
     }
89 119
 	}
90 120
 }
Browse code

Apply the latest image related settings to the slider envelope element also

Benjamin Roth authored on07/05/2018 13:05:33
Showing1 changed files
... ...
@@ -54,6 +54,15 @@ class ContentSlickSliderStart extends \ContentElement
54 54
         $this->singleSRC = $objFile->path;
55 55
 
56 56
         $this->addImageToTemplate($this->Template, array('singleSRC'=>$this->singleSRC, 'size'=>$this->size));
57
+
58
+        if ($this->eSM_slick_minHeight) {
59
+          if ($this->eSM_slick_bgSize && $this->eSM_slick_bgSize == 'auto auto') {
60
+            $this->Template->minHeight = $this->Template->picture['img']['height'] . 'px';
61
+          } else
62
+          {
63
+            $this->Template->minHeight = round($this->Template->picture['img']['height'] / $this->Template->picture['img']['width'] * 100) . '%';
64
+          }
65
+        }
57 66
       }
58 67
 
59 68
       $backgroundStyle = 'background-image: url(\''.$this->Template->src.'\');';
... ...
@@ -71,9 +80,8 @@ class ContentSlickSliderStart extends \ContentElement
71 80
       if ($this->eSM_slick_bgOpacity) {
72 81
         $backgroundStyle .= 'opacity:' . $this->eSM_slick_bgOpacity/100 . ';';
73 82
       }
74
-
75
-      if ($this->eSM_slick_minHeight) {
76
-        $this->Template->minHeight = round($this->Template->height/$this->Template->width*100).'%';
83
+      if ($this->eSM_slick_bgRepeat) {
84
+        $backgroundStyle .= 'background-repeat: ' . $this->eSM_slick_bgRepeat . ';';
77 85
       }
78 86
 
79 87
       $this->Template->backgroundStyle = $backgroundStyle;
Browse code

Add even more background options

Benjamin Roth authored on01/11/2017 16:54:37
Showing1 changed files
... ...
@@ -42,5 +42,41 @@ class ContentSlickSliderStart extends \ContentElement
42 42
 
43 43
 		// Slider configuration
44 44
 		$this->Template->config = $this->eSM_slick_autoPlaySpeed . ',' . $this->eSM_slick_speed . ',' . $this->eSM_slick_initialSlide . ',' . $this->eSM_slick_lazyLoad . ',' . $this->eSM_slick_infinite . ',' . $this->eSM_slick_arrows . ',' . $this->eSM_slick_pagination . ',' . $this->eSM_slick_pause . ',' . $this->eSM_slick_fade . ',' . $this->eSM_slick_slidesToShow . ',' . $this->eSM_slick_slidesToScroll . ',' . $this->eSM_slick_adaptiveHeight;
45
+
46
+		// Background image
47
+    if ($this->singleSRC)
48
+    {
49
+
50
+      $objFile = \FilesModel::findByUuid($this->singleSRC);
51
+
52
+      if ($objFile !== null && is_file(TL_ROOT . '/' . $objFile->path))
53
+      {
54
+        $this->singleSRC = $objFile->path;
55
+
56
+        $this->addImageToTemplate($this->Template, array('singleSRC'=>$this->singleSRC, 'size'=>$this->size));
57
+      }
58
+
59
+      $backgroundStyle = 'background-image: url(\''.$this->Template->src.'\');';
60
+
61
+      if ($this->eSM_slick_bgSize) {
62
+        $backgroundStyle .= 'background-size: ' . $this->eSM_slick_bgSize . ';';
63
+      } else {
64
+        $backgroundStyle .= 'background-size: cover;';
65
+      }
66
+      if ($this->eSM_slick_bgPosition) {
67
+        $backgroundStyle .= 'background-position: ' . $this->eSM_slick_bgPosition . ';';
68
+      } else {
69
+        $backgroundStyle .= 'background-position: 0 0;';
70
+      }
71
+      if ($this->eSM_slick_bgOpacity) {
72
+        $backgroundStyle .= 'opacity:' . $this->eSM_slick_bgOpacity/100 . ';';
73
+      }
74
+
75
+      if ($this->eSM_slick_minHeight) {
76
+        $this->Template->minHeight = round($this->Template->height/$this->Template->width*100).'%';
77
+      }
78
+
79
+      $this->Template->backgroundStyle = $backgroundStyle;
80
+    }
45 81
 	}
46 82
 }
Browse code

Add some more configurable options (slidesToShow,slidesToScroll,adaptiveHeight)

Benjamin Roth authored on19/06/2017 15:10:51
Showing1 changed files
... ...
@@ -41,6 +41,6 @@ class ContentSlickSliderStart extends \ContentElement
41 41
 		}
42 42
 
43 43
 		// Slider configuration
44
-		$this->Template->config = $this->eSM_slick_autoPlaySpeed . ',' . $this->eSM_slick_speed . ',' . $this->eSM_slick_initialSlide . ',' . $this->eSM_slick_lazyLoad . ',' . $this->eSM_slick_infinite . ',' . $this->eSM_slick_arrows . ',' . $this->eSM_slick_pagination . ',' . $this->eSM_slick_pause . ',' . $this->eSM_slick_fade;
44
+		$this->Template->config = $this->eSM_slick_autoPlaySpeed . ',' . $this->eSM_slick_speed . ',' . $this->eSM_slick_initialSlide . ',' . $this->eSM_slick_lazyLoad . ',' . $this->eSM_slick_infinite . ',' . $this->eSM_slick_arrows . ',' . $this->eSM_slick_pagination . ',' . $this->eSM_slick_pause . ',' . $this->eSM_slick_fade . ',' . $this->eSM_slick_slidesToShow . ',' . $this->eSM_slick_slidesToScroll . ',' . $this->eSM_slick_adaptiveHeight;
45 45
 	}
46 46
 }
Browse code

Initial commit

Benjamin Roth authored on16/02/2017 11:35:38
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,46 @@
1
+<?php
2
+
3
+/**
4
+ * Slick slider for Contao
5
+ *
6
+ * Copyright (c) 2016 Benjamin Roth
7
+ *
8
+ * @license LGPL-3.0+
9
+ */
10
+
11
+namespace eSM_slick;
12
+
13
+
14
+/**
15
+ * Front end content element slick slider start.
16
+ */
17
+class ContentSlickSliderStart extends \ContentElement
18
+{
19
+
20
+	/**
21
+	 * Template
22
+	 * @var string
23
+	 */
24
+	protected $strTemplate = 'ce_slick_slider_start';
25
+
26
+
27
+	/**
28
+	 * Generate the content element
29
+	 */
30
+	protected function compile()
31
+	{
32
+		if (TL_MODE == 'BE')
33
+		{
34
+			$this->strTemplate = 'be_wildcard';
35
+
36
+			/** @var \BackendTemplate|object $objTemplate */
37
+			$objTemplate = new \BackendTemplate($this->strTemplate);
38
+
39
+			$this->Template = $objTemplate;
40
+			$this->Template->title = $this->headline;
41
+		}
42
+
43
+		// Slider configuration
44
+		$this->Template->config = $this->eSM_slick_autoPlaySpeed . ',' . $this->eSM_slick_speed . ',' . $this->eSM_slick_initialSlide . ',' . $this->eSM_slick_lazyLoad . ',' . $this->eSM_slick_infinite . ',' . $this->eSM_slick_arrows . ',' . $this->eSM_slick_pagination . ',' . $this->eSM_slick_pause . ',' . $this->eSM_slick_fade;
45
+	}
46
+}