Browse code

Add more slide background options

Benjamin Roth authored on01/11/2017 15:50:43
Showing7 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,10 @@
1
+.slick-slider-slide {
2
+  position: relative; }
3
+  .slick-slider-slide .slick-slider-slide-image {
4
+    position: absolute;
5
+    left: 0;
6
+    right: 0;
7
+    top: 0;
8
+    bottom: 0; }
9
+
10
+/*# sourceMappingURL=slick-addons.css.map */
0 11
new file mode 100644
... ...
@@ -0,0 +1,11 @@
1
+.slick-slider-slide {
2
+  position: relative;
3
+
4
+  .slick-slider-slide-image {
5
+    position: absolute;
6
+    left: 0;
7
+    right: 0;
8
+    top: 0;
9
+    bottom: 0;
10
+  }
11
+}
0 12
\ No newline at end of file
... ...
@@ -30,7 +30,7 @@ $GLOBALS['TL_DCA']['tl_content']['palettes']['slickSliderSlideStop'] = '{type_le
30 30
 $GLOBALS['TL_DCA']['tl_content']['palettes']['slickSliderWallpaper'] = '{type_legend},type;{slickSlider_legend},eSM_slick_text,eSM_slick_url,singleSRC,size;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID,space;{invisible_legend:hide},invisible,start,stop';
31 31
 
32 32
 
33
-$GLOBALS['TL_DCA']['tl_content']['subpalettes']['eSM_addImage'] = 'singleSRC,size';
33
+$GLOBALS['TL_DCA']['tl_content']['subpalettes']['eSM_addImage'] = 'singleSRC,size,eSM_slick_slide_bgSize,eSM_slick_slide_bgPosition,eSM_slick_slide_minHeight,eSM_slick_slide_bgOpacity';
34 34
 
35 35
 /**
36 36
  * Add fields to tl_content
... ...
@@ -179,6 +179,72 @@ $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_addImage'] = array
179 179
   'sql'                     => "char(1) NOT NULL default ''"
180 180
 );
181 181
 
182
+$GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_slide_minHeight'] = array
183
+(
184
+  'label'                   => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_slide_minHeight'],
185
+  'exclude'                 => true,
186
+  'inputType'               => 'checkbox',
187
+  'eval'                    => array('tl_class'=>'w50 m12'),
188
+  'sql'                     => "char(1) NOT NULL default ''"
189
+);
190
+
191
+$GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_slide_bgPosition'] = array
192
+(
193
+  'label'                   => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_slide_bgPosition'],
194
+  'exclude'                 => true,
195
+  'inputType'               => 'select',
196
+  'options'                 => array
197
+  (
198
+    '0 0' => 'Links | Oben',
199
+    '50% 0' => 'Mitte | Oben',
200
+    '100% 0' => 'Rechts | Oben',
201
+    '0 50%' => 'Links | Mitte',
202
+    '50% 50%' => 'Mitte | Mitte',
203
+    '100% 50%' => 'Rechts | Mitte',
204
+    '0 100%' => 'Links | Unten',
205
+    '50% 100%' => 'Mitte | Unten',
206
+    '100% 100%' => 'Rechts | Unten',
207
+  ),
208
+  'eval'                    => array('tl_class' => 'w50','includeBlankOption'=>true),
209
+  'sql'                     => "varchar(16) NOT NULL default ''"
210
+);
211
+
212
+$GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_slide_bgSize'] = array
213
+(
214
+  'label'                   => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_slide_bgSize'],
215
+  'exclude'                 => true,
216
+  'inputType'               => 'select',
217
+  'options'                 => array
218
+  (
219
+    'contain' => 'Proportional',
220
+    '100% 100%' => 'Verzerrt',
221
+    'auto auto' => 'Originalgröße',
222
+  ),
223
+  'eval'                    => array('tl_class' => 'w50','includeBlankOption'=>true,'blankOptionLabel'=>'Beschnitten'),
224
+  'sql'                     => "varchar(16) NOT NULL default ''"
225
+);
226
+
227
+$GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_slide_bgOpacity'] = array
228
+(
229
+  'label'                   => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_slide_bgOpacity'],
230
+  'exclude'                 => true,
231
+  'inputType'               => 'select',
232
+  'options'                 => array
233
+  (
234
+    '10' => '10%',
235
+    '20' => '20%',
236
+    '30' => '30%',
237
+    '40' => '40%',
238
+    '50' => '50%',
239
+    '60' => '60%',
240
+    '70' => '70%',
241
+    '80' => '80%',
242
+    '90' => '90%',
243
+    '100' => '100%',
244
+  ),
245
+  'eval'                    => array('tl_class' => 'w50','includeBlankOption'=>true),
246
+  'sql'                     => "varchar(16) NOT NULL default ''"
247
+);
182 248
 
183 249
 class tl_content_eSM_slick extends Backend
184 250
 {
... ...
@@ -50,6 +50,28 @@ class ContentSlickSliderSlideStart extends \ContentElement
50 50
 
51 51
         $this->addImageToTemplate($this->Template, array('singleSRC'=>$this->singleSRC, 'size'=>$this->size));
52 52
       }
53
+
54
+      $backgroundStyle = 'background-image: url(\''.$this->Template->src.'\');';
55
+
56
+      if ($this->eSM_slick_slide_bgSize) {
57
+        $backgroundStyle .= 'background-size: ' . $this->eSM_slick_slide_bgSize . ';';
58
+      } else {
59
+        $backgroundStyle .= 'background-size: cover;';
60
+      }
61
+      if ($this->eSM_slick_slide_bgPosition) {
62
+        $backgroundStyle .= 'background-position: ' . $this->eSM_slick_slide_bgPosition . ';';
63
+      } else {
64
+        $backgroundStyle .= 'background-position: 0 0;';
65
+      }
66
+      if ($this->eSM_slick_slide_bgOpacity) {
67
+        $backgroundStyle .= 'opacity:' . $this->eSM_slick_slide_bgOpacity/100 . ';';
68
+      }
69
+
70
+      if ($this->eSM_slick_slide_minHeight) {
71
+        $this->Template->minHeight = round($this->Template->height/$this->Template->width*100).'%';
72
+      }
73
+
74
+      $this->Template->backgroundStyle = $backgroundStyle;
53 75
     }
54 76
 
55 77
   }
... ...
@@ -38,6 +38,14 @@ $GLOBALS['TL_LANG']['tl_content']['eSM_slick_adaptiveHeight'][0] = "Adaptive Hö
38 38
 $GLOBALS['TL_LANG']['tl_content']['eSM_slick_adaptiveHeight'][1] = "Die Höhe des Sliders passt sich automatisch den sichtbaren Slides an.";
39 39
 $GLOBALS['TL_LANG']['tl_content']['eSM_slick_text'][0]           = "Text";
40 40
 $GLOBALS['TL_LANG']['tl_content']['eSM_slick_text'][1]           = "Ein Text der auf dem Hintergrundbild platziert wird.";
41
+$GLOBALS['TL_LANG']['tl_content']['eSM_slick_slide_bgPosition'][0]           = "Bildposition";
42
+$GLOBALS['TL_LANG']['tl_content']['eSM_slick_slide_bgPosition'][1]           = "Legt die Positionierung des Bildes fest.";
43
+$GLOBALS['TL_LANG']['tl_content']['eSM_slick_slide_bgSize'][0]           = "Hintergrundbildgröße";
44
+$GLOBALS['TL_LANG']['tl_content']['eSM_slick_slide_bgSize'][1]           = "Steuert die Hintergrundbildgröße bezogen auf den Container.";
45
+$GLOBALS['TL_LANG']['tl_content']['eSM_slick_slide_minHeight'][0]           = "Mindesthöhe erzwingen";
46
+$GLOBALS['TL_LANG']['tl_content']['eSM_slick_slide_minHeight'][1]           = "Die Mindesthöhe des Slide wird am Bild ausgerichtet.";
47
+$GLOBALS['TL_LANG']['tl_content']['eSM_slick_slide_bgOpacity'][0]           = "Hintergrundbildtransparenz";
48
+$GLOBALS['TL_LANG']['tl_content']['eSM_slick_slide_bgOpacity'][1]           = "Die Transparenz des Hintergrundbildes.";
41 49
 /**
42 50
  * Legends
43 51
  */
... ...
@@ -1,7 +1,13 @@
1 1
 <?php //$this->dumpTemplateVars(); ?>
2 2
 <?php $this->block('content'); ?>
3 3
 
4
-      <div class="slick-slider-slide"<?php if ($this->eSM_addImage && $this->src): ?> style="background-image: url('<?= $this->src ?>'); min-height: <?= round($this->height/$this->width*100) ?>vw;"<?php endif; ?>>
4
+      <div class="slick-slider-slide slide_<?= $this->id ?>">
5
+        <?php if ($this->eSM_addImage && $this->src): ?>
6
+        <div class="slick-slider-slide-image" style="<?= $this->backgroundStyle ?>"></div>
7
+          <?php if ($this->minHeight): ?>
8
+          <style>.slide_<?= $this->id ?>:before { content: ""; display: block; padding-top: <?= $this->minHeight ?>; float: left; }</style>
9
+          <?php endif; ?>
10
+        <?php endif; ?>
5 11
         <div class="slide-content">
6 12
 
7 13
 <?php $this->endblock(); ?>
... ...
@@ -2,6 +2,7 @@
2 2
 
3 3
 $GLOBALS['TL_CSS'][] = '/system/modules/eSM_slick/assets/lib/slick/'.$GLOBALS['TL_ASSETS']['SLICKSLIDER'].'/css/slick.css';
4 4
 $GLOBALS['TL_CSS'][] = '/system/modules/eSM_slick/assets/lib/slick/'.$GLOBALS['TL_ASSETS']['SLICKSLIDER'].'/css/slick-theme.css';
5
+$GLOBALS['TL_CSS'][] = '/system/modules/eSM_slick/assets/css/slick-addons.css';
5 6
 
6 7
 ?>
7 8
 
... ...
@@ -24,7 +25,7 @@ $GLOBALS['TL_CSS'][] = '/system/modules/eSM_slick/assets/lib/slick/'.$GLOBALS['T
24 25
                 speed: parseInt(c[1]),
25 26
                 initialSlide: parseInt(c[2]),
26 27
                 lazyLoad: c[3],
27
-                cssEase: 'linear',
28
+                cssEase: 'ease',
28 29
                 slidesToShow: parseInt(c[9]),
29 30
                 slidesToScroll: parseInt(c[10]),
30 31
                 adaptiveHeight: (parseInt(c[11]) == 1 ? true : false)