PluginProbe
Master Addons for Elementor – Elementor Addons, Widgets, Mega Menu Builder, Popup Builder, Widget Builder & Template Kits / 3.1.9
Master Addons for Elementor – Elementor Addons, Widgets, Mega Menu Builder, Popup Builder, Widget Builder & Template Kits v3.1.9
3.2.2 3.2.3 3.2.1 3.2.0 3.1.9 3.1.8 3.1.7 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.9 trunk 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.3 1.1.4 1.1.5 All 174 releases
master-addons / inc / modules / animation / bg-slider / bg-slider.php

bg-slider.php in Master Addons for Elementor – Elementor Addons, Widgets, Mega Menu Builder, Popup Builder, Widget Builder & Template Kits 3.1.9, at inc/modules/animation/bg-slider/bg-slider.php

434 lines 14.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace MasterAddons\Modules\Animation;
4
5 if (!defined('ABSPATH')) {
6 exit; // Exit if accessed directly
7 }
8
9 use \Elementor\Element_Base;
10 use \Elementor\Controls_Manager;
11 use \Elementor\Group_Control_Image_Size;
12 use \Elementor\Group_Control_Background;
13
14 if (!class_exists('MasterAddons\Modules\Animation\BgSlider')) {
15 class BgSlider
16 {
17 private static $_instance = null;
18
19 private function __construct()
20 {
21 add_action('elementor/element/after_section_end', [$this, '_add_controls'], 10, 3);
22
23 add_action('elementor/frontend/element/before_render', [$this, '_before_render'], 10, 1);
24 add_action('elementor/frontend/column/before_render', [$this, '_before_render'], 10, 1);
25 add_action('elementor/frontend/section/before_render', [$this, '_before_render'], 10, 1);
26 add_action('elementor/frontend/container/before_render', [$this, '_before_render'], 10, 1);
27
28 add_action('elementor/element/print_template', [$this, '_print_template'], 10, 2);
29 add_action('elementor/section/print_template', [$this, '_print_template'], 10, 2);
30 add_action('elementor/column/print_template', [$this, '_print_template'], 10, 2);
31 add_action('elementor/container/print_template', [$this, '_print_template'], 10, 2);
32
33 // Enqueue scripts in editor preview
34 add_action('elementor/preview/enqueue_scripts', [$this, 'jltma_el_add_js_css']);
35 }
36
37
38 public static function jltma_el_add_js_css()
39 {
40 // CSS - Vendor (registered with jltma- prefix by Assets_Manager)
41 wp_enqueue_style('jltma-vegas');
42
43 // JS - Vendor (registered with jltma- prefix by Assets_Manager)
44 wp_enqueue_script('jltma-vegas');
45
46 // JS - Module
47 wp_enqueue_script('master-addons-bg-slider');
48 }
49
50 public function _add_controls($element, $section_id, $args)
51 {
52 if (('section' === $element->get_name() && 'section_background' === $section_id) || ('column' === $element->get_name() && 'section_style' === $section_id) || ('container' === $element->get_name() && 'section_background' === $section_id)) {
53
54 $element->start_controls_section(
55 '_ma_el_section_bg_slider',
56 [
57 'label' => __('Background Slider ', 'master-addons' ) . JLTMA_EXTENSION_BADGE,
58 'tab' => Controls_Manager::TAB_STYLE
59 ]
60 );
61
62 $element->add_control(
63 'ma_el_enable_bg_slider',
64 [
65 'type' => Controls_Manager::SWITCHER,
66 'label' => __('Enable Background Slider', 'master-addons' ),
67 'default' => '',
68 'label_on' => __('Yes', 'master-addons' ),
69 'label_off' => __('No', 'master-addons' ),
70 'return_value' => 'yes',
71 'render_type' => 'template',
72 ]
73 );
74
75 $element->add_control(
76 'ma_el_bg_slider_apply_changes',
77 [
78 'type' => Controls_Manager::RAW_HTML,
79 'raw' => '<div class="elementor-update-preview-button editor-ma-bg-slider-preview-update"><span>Update changes to Preview</span><button class="elementor-button elementor-button-success" onclick="elementor.reloadPreview();">Apply</button></div>',
80 'separator' => 'after',
81 'condition' => [
82 'ma_el_enable_bg_slider' => 'yes',
83 ],
84 ]
85 );
86
87 $element->add_control(
88 'ma_el_bg_slider_images',
89 [
90 'label' => __('Add Images', 'master-addons' ),
91 'type' => Controls_Manager::GALLERY,
92 'default' => [],
93 'condition' => [
94 'ma_el_enable_bg_slider' => 'yes',
95 ],
96 ]
97 );
98
99 $element->add_group_control(
100 Group_Control_Image_Size::get_type(),
101 [
102 'name' => 'ma_el_thumbnail',
103 'default' => 'full',
104 'condition' => [
105 'ma_el_enable_bg_slider' => 'yes',
106 ],
107 ]
108 );
109
110 /*$slides_to_show = range( 1, 10 );
111 $slides_to_show = array_combine( $slides_to_show, $slides_to_show );
112
113 $element->add_control(
114 'slides_to_show',
115 [
116 'label' => __( 'Slides to Show', 'master-addons' ),
117 'type' => Controls_Manager::SELECT,
118 'default' => '3',
119 'options' => $slides_to_show,
120 ]
121 );*/
122 /*$element->add_control(
123 'slide',
124 [
125 'label' => __( 'Initial Slide', 'master-addons' ),
126 'type' => Controls_Manager::TEXT,
127 'label_block' => true,
128 'placeholder' => __( 'Initial Slide', 'master-addons' ),
129 'default' => __( '0', 'master-addons' ),
130 ]
131 );*/
132
133 $element->add_control(
134 'ma_el_slider_transition',
135 [
136 'label' => __('Transition', 'master-addons' ),
137 'type' => Controls_Manager::SELECT,
138 'options' => [
139 'fade' => __('Fade', 'master-addons' ),
140 'fade2' => __('Fade2', 'master-addons' ),
141 'slideLeft' => __('slide Left', 'master-addons' ),
142 'slideLeft2' => __('Slide Left 2', 'master-addons' ),
143 'slideRight' => __('Slide Right', 'master-addons' ),
144 'slideRight2' => __('Slide Right 2', 'master-addons' ),
145 'slideUp' => __('Slide Up', 'master-addons' ),
146 'slideUp2' => __('Slide Up 2', 'master-addons' ),
147 'slideDown' => __('Slide Down', 'master-addons' ),
148 'slideDown2' => __('Slide Down 2', 'master-addons' ),
149 'zoomIn' => __('Zoom In', 'master-addons' ),
150 'zoomIn2' => __('Zoom In 2', 'master-addons' ),
151 'zoomOut' => __('Zoom Out', 'master-addons' ),
152 'zoomOut2' => __('Zoom Out 2', 'master-addons' ),
153 'swirlLeft' => __('Swirl Left', 'master-addons' ),
154 'swirlLeft2' => __('Swirl Left 2', 'master-addons' ),
155 'swirlRight' => __('Swirl Right', 'master-addons' ),
156 'swirlRight2' => __('Swirl Right 2', 'master-addons' ),
157 'burn' => __('Burn', 'master-addons' ),
158 'burn2' => __('Burn 2', 'master-addons' ),
159 'blur' => __('Blur', 'master-addons' ),
160 'blur2' => __('Blur 2', 'master-addons' ),
161 'flash' => __('Flash', 'master-addons' ),
162 'flash2' => __('Flash 2', 'master-addons' ),
163 'random' => __('Random', 'master-addons' )
164 ],
165 'default' => 'fade',
166 'condition' => [
167 'ma_el_enable_bg_slider' => 'yes',
168 ],
169 ]
170 );
171
172 $element->add_control(
173 'ma_el_slider_display_random',
174 [
175 'label' => __('Random Display?', 'master-addons' ),
176 'type' => Controls_Manager::SWITCHER,
177 'default' => 'no',
178 'label_on' => __('Yes', 'master-addons' ),
179 'label_off' => __('No', 'master-addons' ),
180 'return_value' => 'yes',
181 'condition' => [
182 'ma_el_enable_bg_slider' => 'yes',
183 ],
184 ]
185 );
186
187 $element->add_control(
188 'ma_el_slider_animation',
189 [
190 'label' => __('Animation', 'master-addons' ),
191 'type' => Controls_Manager::SELECT,
192 'options' => [
193 'kenburns' => __('Kenburns', 'master-addons' ),
194 'kenburnsUp' => __('Kenburns Up', 'master-addons' ),
195 'kenburnsDown' => __('Kenburns Down', 'master-addons' ),
196 'kenburnsRight' => __('Kenburns Right', 'master-addons' ),
197 'kenburnsLeft' => __('Kenburns Left', 'master-addons' ),
198 'kenburnsUpLeft' => __('Kenburns Up Left', 'master-addons' ),
199 'kenburnsUpRight' => __('Kenburns Up Right', 'master-addons' ),
200 'kenburnsDownLeft' => __('Kenburns Down Left', 'master-addons' ),
201 'kenburnsDownRight' => __('Kenburns Down Right', 'master-addons' ),
202 'random' => __('Random', 'master-addons' ),
203 '' => __('None', 'master-addons' )
204 ],
205 'default' => 'kenburns',
206 'condition' => [
207 'ma_el_enable_bg_slider' => 'yes',
208 ],
209 ]
210 );
211
212 $element->add_control(
213 'ma_el_custom_overlay_switcher',
214 [
215 'label' => __('Custom Overlay', 'master-addons' ),
216 'type' => Controls_Manager::SWITCHER,
217 'default' => '',
218 'label_on' => __('Show', 'master-addons' ),
219 'label_off' => __('Hide', 'master-addons' ),
220 'return_value' => 'yes',
221 'condition' => [
222 'ma_el_enable_bg_slider' => 'yes',
223 ],
224 ]
225 );
226
227 /*$element->add_control(
228 'custom_overlay',
229 [
230 'label' => __( 'Overlay Image', 'master-addons' ),
231 'type' => Controls_Manager::MEDIA,
232 'condition' => [
233 'ma_el_custom_overlay_switcher' => 'yes',
234 ]
235 ]
236 );*/
237
238 $element->add_group_control(
239 Group_Control_Background::get_type(),
240 [
241 'name' => 'ma_el_slider_custom_overlay',
242 'label' => __('Overlay Image', 'master-addons' ),
243 'types' => ['none', 'classic', 'gradient'],
244 'selector' => '{{WRAPPER}} .vegas-overlay',
245 'condition' => [
246 'ma_el_enable_bg_slider' => 'yes',
247 'ma_el_custom_overlay_switcher' => 'yes',
248 ]
249 ]
250 );
251
252 $element->add_control(
253 'ma_el_slider_overlay',
254 [
255 'label' => __('Overlay', 'master-addons' ),
256 'type' => Controls_Manager::SELECT,
257 'options' => [
258 '' => __('None', 'master-addons' ),
259 '01' => __('Style 1', 'master-addons' ),
260 '02' => __('Style 2', 'master-addons' ),
261 '03' => __('Style 3', 'master-addons' ),
262 '04' => __('Style 4', 'master-addons' ),
263 '05' => __('Style 5', 'master-addons' ),
264 '06' => __('Style 6', 'master-addons' ),
265 '07' => __('Style 7', 'master-addons' ),
266 '08' => __('Style 8', 'master-addons' ),
267 '09' => __('Style 9', 'master-addons' )
268 ],
269 'default' => '01',
270 'condition' => [
271 'ma_el_enable_bg_slider' => 'yes',
272 'ma_el_custom_overlay_switcher' => '',
273 ]
274 ]
275 );
276 $element->add_control(
277 'ma_el_slider_cover',
278 [
279 'label' => __('Cover', 'master-addons' ),
280 'type' => Controls_Manager::SELECT,
281 'options' => [
282 'true' => __('True', 'master-addons' ),
283 'false' => __('False', 'master-addons' )
284 ],
285 'default' => 'true',
286 'condition' => [
287 'ma_el_enable_bg_slider' => 'yes',
288 ],
289 ]
290 );
291 $element->add_control(
292 'ma_el_slider_delay',
293 [
294 'label' => __('Delay', 'master-addons' ),
295 'type' => Controls_Manager::TEXT,
296 'label_block' => true,
297 'placeholder' => __('Delay', 'master-addons' ),
298 'default' => __('5000', 'master-addons' ),
299 'condition' => [
300 'ma_el_enable_bg_slider' => 'yes',
301 ],
302 ]
303 );
304 $element->add_control(
305 'ma_el_slider_timer_bar',
306 [
307 'label' => __('Timer', 'master-addons' ),
308 'type' => Controls_Manager::SELECT,
309 'options' => [
310 'true' => __('True', 'master-addons' ),
311 'false' => __('False', 'master-addons' )
312 ],
313 'default' => 'true',
314 'condition' => [
315 'ma_el_enable_bg_slider' => 'yes',
316 ],
317 ]
318 );
319
320 $element->end_controls_section();
321 }
322 }
323
324
325 function _before_render(\Elementor\Element_Base $element)
326 {
327 if ($element->get_name() != 'section' && $element->get_name() != 'column' && $element->get_name() != 'container') {
328 return;
329 }
330
331 $settings = $element->get_settings();
332
333 // Check if bg slider is enabled first
334 if (empty($settings['ma_el_enable_bg_slider']) || $settings['ma_el_enable_bg_slider'] !== 'yes') {
335 return;
336 }
337
338 if (empty($settings['ma_el_bg_slider_images'])) {
339 return;
340 }
341
342 $element->add_render_attribute('_wrapper', 'class', 'has_ma_el_bg_slider');
343
344 $slides = [];
345 foreach ($settings['ma_el_bg_slider_images'] as $attachment) {
346 $image_url = Group_Control_Image_Size::get_attachment_image_src(
347 $attachment['id'],
348 'ma_el_thumbnail',
349 $settings
350 );
351 $slides[] = $image_url;
352 }
353
354 if (empty($slides)) {
355 return;
356 }
357
358 // Make slider random
359 if ($settings['ma_el_slider_display_random'] === 'yes') {
360 shuffle($slides);
361 }
362
363 // Enqueue scripts when element is rendered
364 self::jltma_el_add_js_css();
365
366 // Add data attributes for JavaScript to read
367 $images_string = implode(',', $slides);
368 $element->add_render_attribute('_wrapper', 'data-ma-el-bg-slider-images', $images_string);
369 $element->add_render_attribute('_wrapper', 'data-ma-el-bg-slider-transition', $settings['ma_el_slider_transition']);
370 $element->add_render_attribute('_wrapper', 'data-ma-el-bg-slider-animation', $settings['ma_el_slider_animation']);
371 $element->add_render_attribute('_wrapper', 'data-ma-el-bg-custom-overlay', $settings['ma_el_custom_overlay_switcher']);
372 $element->add_render_attribute('_wrapper', 'data-ma-el-bg-slider-overlay', $settings['ma_el_slider_overlay']);
373 $element->add_render_attribute('_wrapper', 'data-ma-el-bg-slider-cover', $settings['ma_el_slider_cover']);
374 $element->add_render_attribute('_wrapper', 'data-ma-el-bs-slider-delay', $settings['ma_el_slider_delay']);
375 $element->add_render_attribute('_wrapper', 'data-ma-el-bs-slider-timer', $settings['ma_el_slider_timer_bar']);
376 }
377
378 function _print_template($template, $widget)
379 {
380 if ($widget->get_name() != 'section' && $widget->get_name() != 'column' && $widget->get_name() != 'container') {
381 return $template;
382 }
383
384 $old_template = $template;
385 ob_start();
386 ?>
387
388 <# if(settings.ma_el_enable_bg_slider === 'yes' && !_.isUndefined(settings.ma_el_bg_slider_images) && settings.ma_el_bg_slider_images.length){
389 var slides_path_string='', ma_el_transition=settings.ma_el_slider_transition, ma_el_animation=settings.ma_el_slider_animation, ma_el_custom_overlay=settings.ma_el_custom_overlay_switcher, ma_el_overlay='', ma_el_cover=settings.ma_el_slider_cover, ma_el_delay=settings.ma_el_slider_delay, ma_el_timer=settings.ma_el_slider_timer_bar;
390 var slider_data=[];
391 slides=settings.ma_el_bg_slider_images;
392 for(var i in slides){
393 slider_data[i]=slides[i].url;
394 }
395 slides_path_string=slider_data.join();
396 if(settings.ma_el_custom_overlay_switcher=='yes' ){
397 ma_el_overlay='00.png';
398 }else{
399 if(settings.ma_el_slider_overlay){
400 ma_el_overlay=settings.ma_el_slider_overlay + '.png';
401 }else{
402 ma_el_overlay='00.png';
403 }
404 } #>
405
406 <div class="ma-el-section-bs">
407 <div class="ma-el-section-bs-inner" data-ma-el-bg-slider="{{ slides_path_string }}" data-ma-el-bg-slider-transition="{{ ma_el_transition }}" data-ma-el-bg-slider-animation="{{ ma_el_animation }}" data-ma-el-bg-custom-overlay="{{ ma_el_custom_overlay }}" data-ma-el-bg-slider-overlay="{{ ma_el_overlay }}" data-ma-el-bg-slider-cover="{{ ma_el_cover }}" data-ma-el-bs-slider-delay="{{ ma_el_delay }}" data-ma-el-bs-slider-timer="{{ ma_el_timer }}"></div>
408 </div>
409
410 <# } #>
411
412 <?php
413 $slider_content = ob_get_contents();
414 ob_end_clean();
415 $template = $slider_content . $old_template;
416
417 return $template;
418 }
419
420
421 public static function get_instance()
422 {
423 if (is_null(self::$_instance)) {
424 self::$_instance = new self();
425 }
426 return self::$_instance;
427 }
428 }
429 }
430
431 if (class_exists('MasterAddons\Modules\Animation\BgSlider')) {
432 BgSlider::get_instance();
433 }
434