PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 3.3.1
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v3.3.1
4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / EmbedPress / Elementor / Widgets / Embedpress_Elementor.php
embedpress / EmbedPress / Elementor / Widgets Last commit date
Embedpress_Document.php 4 years ago Embedpress_Elementor.php 4 years ago
Embedpress_Elementor.php
1366 lines
1 <?php
2
3 namespace EmbedPress\Elementor\Widgets;
4
5
6 use \Elementor\Controls_Manager as Controls_Manager;
7 use Elementor\Group_Control_Background;
8 use \Elementor\Group_Control_Css_Filter;
9 use Elementor\Group_Control_Image_Size;
10 use \Elementor\Widget_Base as Widget_Base;
11 use EmbedPress\Includes\Traits\Branding;
12 use \EmbedPress\Shortcode;
13
14 (defined( 'ABSPATH' )) or die( "No direct script access allowed." );
15
16 class Embedpress_Elementor extends Widget_Base {
17 use Branding;
18 protected $pro_class = '';
19 protected $pro_text = '';
20 public function get_name() {
21 return 'embedpres_elementor';
22 }
23
24 public function get_title() {
25 return esc_html__( 'EmbedPress', 'embedpress' );
26 }
27
28 public function get_categories() {
29 return [ 'embedpress' ];
30 }
31
32 public function get_custom_help_url() {
33 return 'https://embedpress.com/documentation';
34 }
35
36 public function get_icon() {
37 return 'icon-embedpress';
38 }
39
40 /**
41 * Get widget keywords.
42 *
43 * Retrieve the list of keywords the widget belongs to.
44 *
45 * @return array Widget keywords.
46 * @since 2.4.1
47 * @access public
48 *
49 */
50 public function get_keywords() {
51 return [
52 'embedpress',
53 'audio',
54 'video',
55 'map',
56 'youtube',
57 'vimeo',
58 'wistia',
59 'twitch',
60 'soundcloud',
61 'giphy gifs',
62 'spotify',
63 'smugmug',
64 'meetup',
65 'dailymotion',
66 'instagram',
67 'slideshare',
68 'flickr',
69 'ted',
70 'google docs',
71 'google slides',
72 'google drawings'
73 ];
74 }
75
76 protected function _register_controls() {
77 $this->pro_class = is_embedpress_pro_active() ? '': 'embedpress-pro-control';
78 $this->pro_text = is_embedpress_pro_active() ? '': '<sup class="embedpress-pro-label" style="color:red">'.__('Pro', 'embedpress').'</sup>';
79 /**
80 * EmbedPress Content Settings
81 */
82 $this->start_controls_section(
83 'embedpress_elementor_content_settings',
84 [
85 'label' => esc_html__( 'Content Settings', 'embedpress' ),
86 ]
87 );
88
89 do_action( 'embedpress/embeded/extend', $this );
90 $this->add_control(
91 'embedpress_pro_embeded_source',
92 [
93 'label' => __( 'Source Name', 'embedpress' ),
94 'type' => Controls_Manager::SELECT,
95 'label_block' => false,
96 'default' => ['default'],
97 'options' => [
98 'default' => __( 'Default', 'embedpress' ),
99 'youtube' => __( 'YouTube', 'embedpress' ),
100 'vimeo' => __( 'Vimeo', 'embedpress' ),
101 'dailymotion' => __( 'Dailymotion', 'embedpress' ),
102 'wistia' => __( 'Wistia', 'embedpress' ),
103 'twitch' => __( 'Twitch', 'embedpress' ),
104 'soundcloud' => __( 'SoundCloud', 'embedpress' ),
105 ]
106 ]
107 );
108 $this->add_control(
109 'embedpress_embeded_link',
110 [
111
112 'label' => __( 'Embedded Link', 'embedpress' ),
113 'type' => Controls_Manager::TEXT,
114 'dynamic' => [
115 'active' => true,
116 ],
117 'placeholder' => __( 'Enter your Link', 'embedpress' ),
118 'label_block' => true
119
120 ]
121 );
122 $this->add_control(
123 'spotify_theme',
124 [
125 'label' => __( 'Player Background', 'embedpress' ),
126 'description' => __( 'Dynamic option will use the most vibrant color from the album art.', 'embedpress' ),
127 'type' => Controls_Manager::SELECT,
128 'label_block' => false,
129 'default' => '1',
130 'options' => [
131 '1' => __( 'Dynamic', 'embedpress' ),
132 '0' => __( 'Black & White', 'embedpress' )
133 ],
134 'condition' => [
135 'embedpress_pro_embeded_source' => 'spotify'
136 ]
137 ]
138 );
139 do_action( 'embedpress/control/extend', $this );
140 $this->add_control(
141 'embedpress_pro_video_start_time',
142 [
143 'label' => __( 'Start Time', 'embedpress' ),
144 'type' => Controls_Manager::NUMBER,
145 'description' => __( 'Specify a start time (in seconds)', 'embedpress' ),
146 'condition' => [
147 'embedpress_pro_embeded_source' => ['youtube', 'vimeo', 'wistia', 'dailymotion', 'twitch']
148 ],
149 ]
150 );
151 $this->init_youtube_controls();
152 $this->init_vimeo_controls();
153 $this->init_wistia_controls();
154 $this->init_soundcloud_controls();
155 $this->init_dailymotion_control();
156 $this->init_twitch_control();
157
158 $this->end_controls_section();
159
160 $this->init_youtube_subscription_section();
161 $this->init_youtube_livechat_section();
162
163 if (! is_embedpress_pro_active()) {
164 $this->start_controls_section(
165 'embedpress_pro_section',
166 [
167 'label' => __('Go Premium for More Features', 'embedpress'),
168 ]
169 );
170
171 $this->add_control(
172 'embedpress_pro_cta',
173 [
174 'label' => __('Unlock more possibilities', 'embedpress'),
175 'type' => Controls_Manager::CHOOSE,
176 'options' => [
177 '1' => [
178 'title' => '',
179 'icon' => 'eicon-lock',
180 ],
181 ],
182 'default' => '1',
183 'description' => '<span class="pro-feature"> Get the <a href="https://wpdeveloper.net/in/upgrade-embedpress" target="_blank">Pro version</a> for more provider support and customization options.</span>',
184 ]
185 );
186
187 $this->end_controls_section();
188 }
189
190 $this->init_style_controls();
191 }
192 public function init_youtube_controls() {
193 $yt_condition = [
194 'embedpress_pro_embeded_source' => 'youtube'
195 ];
196 $this->add_control(
197 'embedpress_pro_youtube_end_time',
198 [
199 'label' => __( 'End Time', 'embedpress' ),
200 'type' => Controls_Manager::NUMBER,
201 'description' => __( 'Specify an end time (in seconds)', 'embedpress' ),
202 'condition' => $yt_condition,
203 ]
204 );
205 $this->add_control(
206 'embedpress_pro_youtube_auto_play',
207 [
208 'label' => __( 'Auto Play', 'embedpress' ),
209 'type' => Controls_Manager::SWITCHER,
210 'label_block' => false,
211 'return_value' => 'yes',
212 'default' => 'no',
213 'condition' => $yt_condition,
214 ]
215 );
216 $this->add_control(
217 'embedpress_pro_youtube_player_options',
218 [
219 'label' => __( 'Player Options', 'embedpress' ),
220 'type' => Controls_Manager::HEADING,
221 'condition' => $yt_condition,
222 ]
223 );
224 $this->add_control(
225 'embedpress_pro_youtube_display_controls',
226 [
227 'label' => __( 'Controls', 'embedpress' ),
228 'type' => Controls_Manager::SELECT,
229 'label_block' => false,
230 'default' => 1,
231 'options' => [
232 '1' => __( 'Display immediately', 'embedpress' ),
233 '2' => __( 'Display after user initiation', 'embedpress' ),
234 '0' => __( 'Hide controls', 'embedpress' )
235 ],
236 'condition' => $yt_condition,
237 ]
238 );
239 $this->add_control(
240 'embedpress_pro_youtube_enable_fullscreen_button',
241 [
242 'label' => __( 'Fullscreen button', 'embedpress' ),
243 'type' => Controls_Manager::SWITCHER,
244 'label_block' => false,
245 'return_value' => 'yes',
246 'default' => 'yes',
247 'condition' => [
248 'embedpress_pro_embeded_source' => 'youtube',
249 'embedpress_pro_youtube_display_controls!' => '0'
250 ]
251 ]
252 );
253 $this->add_control(
254 'embedpress_pro_youtube_display_video_annotations',
255 [
256 'label' => __( 'Video Annotations', 'embedpress' ),
257 'type' => Controls_Manager::SWITCHER,
258 'label_block' => false,
259 'default' => 1,
260 'options' => [
261 '1' => __( 'Display', 'embedpress' ),
262 '3' => __( 'Do Not Display', 'embedpress' )
263 ],
264 'condition' => $yt_condition,
265 ]
266 );
267 //--- YouTube Pro control starts ---
268 $this->add_control(
269 'embedpress_pro_youtube_progress_bar_color',
270 [
271 'label' => __( 'Progress Bar Color', 'embedpress' ),
272 'type' => Controls_Manager::SELECT,
273 'label_block' => false,
274 'default' => 'red',
275 'options' => [
276 'red' => __( 'Red', 'embedpress' ),
277 'white' => __( 'White', 'embedpress' )
278 ],
279 'condition' => $yt_condition,
280 ]
281 );
282 $this->add_control(
283 'embedpress_pro_youtube_force_closed_captions',
284 [
285 'label' => sprintf(__( 'Closed Captions %s', 'embedpress' ), $this->pro_text ),
286 'type' => Controls_Manager::SWITCHER,
287 'label_block' => false,
288 'return_value' => 'yes',
289 'default' => 'no',
290 'separator' => 'before',
291 'classes' => $this->pro_class,
292 'condition' => $yt_condition,
293 ]
294 );
295 $this->add_control(
296 'embedpress_pro_youtube_modest_branding',
297 [
298 'label' => sprintf(__( 'Modest Branding %s', 'embedpress' ), $this->pro_text ),
299 'type' => Controls_Manager::SELECT,
300 'label_block' => false,
301 'default' => 1,
302 'options' => [
303 '0' => __( 'Display', 'embedpress' ),
304 '1' => __( 'Do Not Display', 'embedpress' )
305 ],
306 'condition' => [
307 'embedpress_pro_embeded_source' => 'youtube',
308 'embedpress_pro_youtube_display_controls!' => '0',
309 'embedpress_pro_youtube_progress_bar_color!' => 'white'
310 ],
311 'classes' => $this->pro_class,
312 ]
313 );
314 $this->add_control(
315 'embedpress_pro_youtube_display_related_videos',
316 [
317 'label' => __( 'Related Videos', 'embedpress' ),
318 'description' => __( 'Set it to "Yes" to display related videos from all channels. Otherwise, related videos will show from the same channel.', 'embedpress' ),
319 'type' => Controls_Manager::SWITCHER,
320 'label_block' => false,
321 'return_value' => 'yes',
322 'default' => 'yes',
323 'condition' => $yt_condition,
324 ]
325 );
326 $this->init_branding_controls( 'youtube');
327 }
328 public function init_youtube_subscription_section() {
329 $yt_condition = [
330 'embedpress_pro_embeded_source' => 'youtube',
331 ];
332 $this->start_controls_section(
333 'embedpress_yt_subscription_section',
334 [
335 'label' => __( 'YouTube Subscriber', 'embedpress' ),
336 'condition' => $yt_condition,
337
338 ]
339 );
340
341
342 $this->add_control(
343 'yt_sub_channel',
344 [
345
346 'label' => sprintf( __( 'Channel Link or ID %s', 'embedpress' ), $this->pro_text),
347 'type' => Controls_Manager::TEXT,
348 'dynamic' => [
349 'active' => true,
350 ],
351 'placeholder' => __( 'Enter Channel Link or ID', 'embedpress' ),
352 'label_block' => true,
353 'condition' => $yt_condition,
354 'classes' => $this->pro_class,
355 ]
356 );
357 $this->add_control(
358 'yt_sub_text',
359 [
360
361 'label' => sprintf( __( 'Subscription Text %s', 'embedpress' ), $this->pro_text),
362 'type' => Controls_Manager::TEXT,
363 'dynamic' => [
364 'active' => true,
365 ],
366 'placeholder' => __( 'Eg. Don\'t miss out! Subscribe', 'embedpress' ),
367 'label_block' => true,
368 'condition' => $yt_condition,
369 'classes' => $this->pro_class,
370 ]
371 );
372
373
374 $this->add_control(
375 'yt_sub_layout',
376 [
377 'label' => sprintf(__( 'Layout %s', 'embedpress' ), $this->pro_text ),
378 'type' => Controls_Manager::SELECT,
379 'label_block' => false,
380 'default' => 'default',
381 'options' => [
382 'default' => __( 'Default', 'embedpress' ),
383 'full' => __( 'Full', 'embedpress' )
384 ],
385 'condition' => [
386 'embedpress_pro_embeded_source' => 'youtube',
387 ],
388 'classes' => $this->pro_class,
389 ]
390 );
391
392 $this->add_control(
393 'yt_sub_theme',
394 [
395 'label' => sprintf(__( 'Theme %s', 'embedpress' ), $this->pro_text ),
396 'type' => Controls_Manager::SELECT,
397 'label_block' => false,
398 'default' => 'default',
399 'options' => [
400 'default' => __( 'Default', 'embedpress' ),
401 'dark' => __( 'Dark', 'embedpress' )
402 ],
403 'condition' => [
404 'embedpress_pro_embeded_source' => 'youtube',
405 ],
406 'classes' => $this->pro_class,
407 ]
408 );
409
410 $this->add_control(
411 'yt_sub_count',
412 [
413 'label' => sprintf(__( 'Subscriber Count %s', 'embedpress' ), $this->pro_text ),
414 'type' => Controls_Manager::SWITCHER,
415 'label_block' => false,
416 'return_value' => 'yes',
417 'default' => 'yes',
418 'condition' => $yt_condition,
419 'classes' => $this->pro_class,
420 ]
421 );
422
423 $this->end_controls_section();
424
425 }
426 public function init_youtube_livechat_section() {
427 $yt_condition = [
428 'embedpress_pro_embeded_source' => 'youtube',
429 ];
430 $this->start_controls_section(
431 'embedpress_yt_livechat_section',
432 [
433 'label' => __( 'YouTube Live Chat', 'embedpress' ),
434 'condition' => $yt_condition,
435
436 ]
437 );
438
439 $this->add_control(
440 'yt_lc_show',
441 [
442 'label' => sprintf(__( 'Show YouTube Live Chat %s', 'embedpress' ), $this->pro_text ),
443 'type' => Controls_Manager::SWITCHER,
444 'label_block' => false,
445 'return_value' => 'yes',
446 'default' => '',
447 'label_off' => __( 'Hide', 'embedpress' ),
448 'label_on' => __( 'Show', 'embedpress' ),
449 'condition' => $yt_condition,
450 'classes' => $this->pro_class,
451 ]
452 );
453
454
455 $this->end_controls_section();
456
457 }
458 public function init_dailymotion_control ( ){
459 //@TODO; Kamal - migrate from 'embedpress_pro_dailymotion_logo' to 'embedpress_pro_dailymotion_ui_logo'
460 $this->add_control(
461 'embedpress_pro_dailymotion_ui_logo',
462 [
463 'label' => sprintf(__( 'Logo %s', 'embedpress' ), $this->pro_text ),
464 'type' => Controls_Manager::SWITCHER,
465 'label_block' => false,
466 'return_value' => 'yes',
467 'default' => 'yes',
468 'label_off' => __( 'Hide', 'embedpress' ),
469 'label_on' => __( 'Show', 'embedpress' ),
470 'condition' => [
471 'embedpress_pro_embeded_source' => 'dailymotion'
472 ],
473 'classes' => $this->pro_class,
474 ]
475 );
476 $this->add_control(
477 'embedpress_pro_dailymotion_autoplay',
478 [
479 'label' => __( 'Auto Play', 'embedpress' ),
480 'type' => Controls_Manager::SWITCHER,
481 'label_block' => false,
482 'return_value' => 'yes',
483 'default' => 'no',
484 'label_off' => __( 'Hide', 'embedpress' ),
485 'label_on' => __( 'Show', 'embedpress' ),
486 'condition' => [
487 'embedpress_pro_embeded_source' => 'dailymotion'
488 ]
489 ]
490 );
491 $this->add_control(
492 'embedpress_pro_dailymotion_play_on_mobile',
493 [
494 'label' => __( 'Play On Mobile', 'embedpress' ),
495 'type' => Controls_Manager::SWITCHER,
496 'label_block' => false,
497 'return_value' => 'yes',
498 'default' => 'no',
499 'label_off' => __( 'Hide', 'embedpress' ),
500 'label_on' => __( 'Show', 'embedpress' ),
501 'condition' => [
502 'embedpress_pro_embeded_source' => 'dailymotion',
503 'embedpress_pro_dailymotion_autoplay' => 'yes'
504 ]
505 ]
506 );
507 $this->add_control(
508 'embedpress_pro_dailymotion_mute',
509 [
510 'label' => __( 'Mute', 'embedpress' ),
511 'type' => Controls_Manager::SWITCHER,
512 'label_block' => false,
513 'return_value' => 'yes',
514 'default' => 'no',
515 'label_off' => __( 'Hide', 'embedpress' ),
516 'label_on' => __( 'Show', 'embedpress' ),
517 'condition' => [
518 'embedpress_pro_embeded_source' => 'dailymotion'
519 ]
520 ]
521 );
522 $this->add_control(
523 'embedpress_pro_dailymotion_player_control',
524 [
525 'label' => __( 'Player Controls', 'embedpress' ),
526 'type' => Controls_Manager::SWITCHER,
527 'label_block' => false,
528 'return_value' => 'yes',
529 'default' => 'yes',
530 'label_off' => __( 'Hide', 'embedpress' ),
531 'label_on' => __( 'Show', 'embedpress' ),
532 'condition' => [
533 'embedpress_pro_embeded_source' => 'dailymotion'
534 ]
535 ]
536 );
537 $this->add_control(
538 'embedpress_pro_dailymotion_video_info',
539 [
540 'label' => __( 'Video Info', 'embedpress' ),
541 'type' => Controls_Manager::SWITCHER,
542 'label_block' => false,
543 'return_value' => 'yes',
544 'default' => 'yes',
545 'label_off' => __( 'Hide', 'embedpress' ),
546 'label_on' => __( 'Show', 'embedpress' ),
547 'condition' => [
548 'embedpress_pro_embeded_source' => 'dailymotion'
549 ]
550 ]
551 );
552 $this->add_control(
553 'embedpress_pro_dailymotion_control_color',
554 [
555 'label' => __( 'Control Color', 'embedpress' ),
556 'type' => Controls_Manager::COLOR,
557 'label_block' => false,
558 'default' => '#dd3333',
559 'condition' => [
560 'embedpress_pro_embeded_source' => 'dailymotion'
561 ]
562 ]
563 );
564 $this->init_branding_controls( 'dailymotion');
565
566 }
567 public function init_wistia_controls( ) {
568 $this->add_control(
569 'embedpress_pro_wistia_auto_play',
570 [
571 'label' => __( 'Auto Play', 'embedpress' ),
572 'type' => Controls_Manager::SWITCHER,
573 'label_block' => false,
574 'return_value' => 'yes',
575 'default' => 'no',
576 'condition' => [
577 'embedpress_pro_embeded_source' => 'wistia'
578 ],
579 ]
580 );
581
582 $this->add_control(
583 'embedpress_pro_wistia_color',
584 [
585 'label' => __( 'Scheme', 'embedpress' ),
586 'type' => Controls_Manager::COLOR,
587 'label_block' => false,
588 'default' => '#dd3333',
589 'condition' => [
590 'embedpress_pro_embeded_source' => 'wistia'
591 ]
592 ]
593 );
594
595
596
597 $this->add_control(
598 'embedpress_pro_wistia_captions_enabled_by_default',
599 [
600 'label' => __( 'Captions Enabled By Default', 'embedpress' ),
601 'type' => Controls_Manager::SWITCHER,
602 'label_block' => false,
603 'return_value' => 'yes',
604 'default' => 'no',
605 'condition' => [
606 'embedpress_pro_embeded_source' => 'wistia',
607 'embedpress_pro_wistia_captions' => 'yes'
608 ],
609 'classes' => $this->pro_class,
610 ]
611 );
612
613 $this->add_control(
614 'embedpress_pro_wistia_player_options',
615 [
616 'label' => __( 'Player Options', 'embedpress' ),
617 'type' => Controls_Manager::HEADING,
618 'separator' => 'before',
619 'condition' => [
620 'embedpress_pro_embeded_source' => 'wistia'
621 ]
622 ]
623 );
624
625
626
627 $this->add_control(
628 'embedpress_pro_wistia_fullscreen_button',
629 [
630 'label' => __( 'Fullscreen Button', 'embedpress' ),
631 'type' => Controls_Manager::SWITCHER,
632 'label_block' => false,
633 'return_value' => 'yes',
634 'default' => 'no',
635 'condition' => [
636 'embedpress_pro_embeded_source' => 'wistia'
637 ],
638 ]
639 );
640
641 $this->add_control(
642 'embedpress_pro_wistia_small_play_button',
643 [
644 'label' => __( 'Small Play Button', 'embedpress' ),
645 'type' => Controls_Manager::SWITCHER,
646 'label_block' => false,
647 'return_value' => 'yes',
648 'default' => 'no',
649 'condition' => [
650 'embedpress_pro_embeded_source' => 'wistia'
651 ],
652 ]
653 );
654
655
656
657
658 $this->add_control(
659 'embedpress_pro_wistia_resumable',
660 [
661 'label' => __( 'Resumable', 'embedpress' ),
662 'type' => Controls_Manager::SWITCHER,
663 'label_block' => false,
664 'return_value' => 'yes',
665 'default' => 'no',
666 'condition' => [
667 'embedpress_pro_embeded_source' => 'wistia'
668 ],
669 ]
670 );
671
672
673 $this->add_control(
674 'embedpress_pro_wistia_focus',
675 [
676 'label' => __( 'Focus', 'embedpress' ),
677 'type' => Controls_Manager::SWITCHER,
678 'label_block' => false,
679 'return_value' => 'yes',
680 'default' => 'no',
681 'condition' => [
682 'embedpress_pro_embeded_source' => 'wistia'
683 ],
684 ]
685 );
686
687 // --- Wistia PRO Controls --
688 $this->add_control(
689 'embedpress_pro_wistia_captions',
690 [
691 'label' => sprintf(__( 'Captions %s', 'embedpress' ), $this->pro_text ),
692 'type' => Controls_Manager::SWITCHER,
693 'label_block' => false,
694 'return_value' => 'yes',
695 'default' => 'no',
696 'condition' => [
697 'embedpress_pro_embeded_source' => 'wistia'
698 ],
699 'classes' => $this->pro_class,
700 ]
701 );
702 $this->add_control(
703 'embedpress_pro_wistia_playbar',
704 [
705 'label' => __( 'Playbar ', 'embedpress' ),
706 'type' => Controls_Manager::SWITCHER,
707 'label_block' => false,
708 'return_value' => 'yes',
709 'default' => 'no',
710 'condition' => [
711 'embedpress_pro_embeded_source' => 'wistia'
712 ],
713 ]
714 );
715
716 $this->add_control(
717 'embedpress_pro_wistia_volume_control',
718 [
719 'label' => sprintf(__( 'Volume Control %s', 'embedpress' ), $this->pro_text ),
720 'type' => Controls_Manager::SWITCHER,
721 'label_block' => false,
722 'return_value' => 'yes',
723 'default' => 'yes',
724 'condition' => [
725 'embedpress_pro_embeded_source' => 'wistia'
726 ],
727 'classes' => $this->pro_class,
728 ]
729 );
730
731
732 $this->add_control(
733 'embedpress_pro_wistia_volume',
734 [
735 'label' => sprintf(__( 'Volume %s', 'embedpress' ), $this->pro_text ),
736 'type' => Controls_Manager::SLIDER,
737 'default' => [
738 'size' => 100,
739 ],
740 'range' => [
741 'px' => [
742 'min' => 0,
743 'max' => 100,
744 ]
745 ],
746 'condition' => [
747 'embedpress_pro_embeded_source' => 'wistia',
748 'embedpress_pro_wistia_volume_control' => 'yes'
749 ],
750 'classes' => $this->pro_class,
751 ]
752 );
753
754 $this->add_control(
755 'embedpress_pro_wistia_rewind',
756 [
757 'label' => __( 'Rewind', 'embedpress' ),
758 'type' => Controls_Manager::SWITCHER,
759 'label_block' => false,
760 'return_value' => 'yes',
761 'default' => 'no',
762 'condition' => [
763 'embedpress_pro_embeded_source' => 'wistia'
764 ],
765 ]
766 );
767
768 $this->add_control(
769 'embedpress_pro_wistia_rewind_time',
770 [
771 'label' => __( 'Rewind time', 'embedpress' ),
772 'type' => Controls_Manager::SLIDER,
773 'default' => [
774 'size' => 10,
775 ],
776 'range' => [
777 'px' => [
778 'min' => 1,
779 'max' => 100,
780 ]
781 ],
782 'condition' => [
783 'embedpress_pro_wistia_rewind' => 'yes',
784 'embedpress_pro_embeded_source' => 'wistia'
785 ],
786 ]
787 );
788 $this->init_branding_controls( 'wistia');
789
790 }
791 public function init_twitch_control( ) {
792 $condition = [
793 'embedpress_pro_embeded_source' => 'twitch'
794 ];
795 $this->add_control(
796 'embedpress_pro_twitch_autoplay',
797 [
798 'label' => __( 'Autoplay', 'embedpress' ),
799 'type' => Controls_Manager::SWITCHER,
800 'label_off' => __( 'No', 'embedpress' ),
801 'label_on' => __( 'Yes', 'embedpress' ),
802 'default' => 'yes',
803 'condition' => $condition,
804 ]
805 );
806 $this->add_control(
807 'embedpress_pro_fs',
808 [
809 'label' => __( 'Allow Full Screen Video', 'embedpress' ),
810 'type' => Controls_Manager::SWITCHER,
811 'label_off' => __( 'No', 'embedpress' ),
812 'label_on' => __( 'Yes', 'embedpress' ),
813 'default' => 'yes',
814 'condition' => $condition,
815 ]
816 );
817
818 // -- Twitch PRO controls --
819 $this->add_control(
820 'embedpress_pro_twitch_chat',
821 [
822 'label' => sprintf(__( 'Show Chat %s', 'embedpress' ), $this->pro_text ),
823 'type' => Controls_Manager::SWITCHER,
824 'label_off' => __( 'Hide', 'embedpress' ),
825 'label_on' => __( 'Show', 'embedpress' ),
826 'condition' => $condition,
827 'classes' => $this->pro_class,
828
829 ]
830 );
831 $this->add_control(
832 'embedpress_pro_twitch_mute',
833 [
834 'label' => __( 'Mute on start', 'embedpress' ),
835 'type' => Controls_Manager::SWITCHER,
836 'label_off' => __( 'Hide', 'embedpress' ),
837 'label_on' => __( 'Show', 'embedpress' ),
838 'condition' => $condition,
839 ]
840 );
841 $this->add_control(
842 'embedpress_pro_twitch_theme',
843 [
844 'label' => __( 'Theme', 'embedpress' ),
845 'type' => Controls_Manager::SELECT,
846 'default' => 'dark',
847 'options' => [
848 'dark' => __( 'Dark', 'embedpress' ),
849 'light' => __( 'Light', 'embedpress' ),
850 ],
851 'condition' => $condition,
852 ]
853 );
854
855 $this->init_branding_controls( 'twitch');
856
857 }
858 public function init_soundcloud_controls( ) {
859 $this->add_control(
860 'embedpress_pro_soundcloud_visual',
861 [
862 'label' => __( 'Visual Player', 'embedpress' ),
863 'type' => Controls_Manager::SWITCHER,
864 'label_block' => false,
865 'return_value' => 'yes',
866 'default' => 'no',
867 'label_off' => __( 'Hide', 'embedpress' ),
868 'label_on' => __( 'Show', 'embedpress' ),
869 'condition' => [
870 'embedpress_pro_embeded_source' => 'soundcloud'
871 ],
872 ]
873 );
874
875 $this->add_control(
876 'embedpress_pro_soundcloud_color',
877 [
878 'label' => __( 'Scheme', 'embedpress' ),
879 'type' => Controls_Manager::COLOR,
880 'label_block' => false,
881 'default' => '#FF5500',
882 'condition' => [
883 'embedpress_pro_embeded_source' => 'soundcloud'
884 ]
885 ]
886 );
887
888 $this->add_control(
889 'embedpress_pro_soundcloud_autoplay',
890 [
891 'label' => __( 'Auto Play', 'embedpress' ),
892 'type' => Controls_Manager::SWITCHER,
893 'label_block' => false,
894 'return_value' => 'yes',
895 'default' => 'no',
896 'label_off' => __( 'Hide', 'embedpress' ),
897 'label_on' => __( 'Show', 'embedpress' ),
898 'condition' => [
899 'embedpress_pro_embeded_source' => 'soundcloud'
900 ],
901 ]
902 );
903
904
905
906 $this->add_control(
907 'embedpress_pro_soundcloud_share_button',
908 [
909 'label' => __( 'Share Button', 'embedpress' ),
910 'type' => Controls_Manager::SWITCHER,
911 'label_block' => false,
912 'return_value' => 'yes',
913 'default' => 'yes',
914 'label_off' => __( 'Hide', 'embedpress' ),
915 'label_on' => __( 'Show', 'embedpress' ),
916 'condition' => [
917 'embedpress_pro_embeded_source' => 'soundcloud'
918 ],
919 ]
920 );
921
922 $this->add_control(
923 'embedpress_pro_soundcloud_comments',
924 [
925 'label' => __( 'Comments', 'embedpress' ),
926 'type' => Controls_Manager::SWITCHER,
927 'label_block' => false,
928 'return_value' => 'yes',
929 'default' => 'yes',
930 'label_off' => __( 'Hide', 'embedpress' ),
931 'label_on' => __( 'Show', 'embedpress' ),
932 'condition' => [
933 'embedpress_pro_embeded_source' => 'soundcloud'
934 ],
935 ]
936 );
937
938
939
940 $this->add_control(
941 'embedpress_pro_soundcloud_artwork',
942 [
943 'label' => __( 'Artwork', 'embedpress' ),
944 'type' => Controls_Manager::SWITCHER,
945 'label_block' => false,
946 'return_value' => 'yes',
947 'default' => 'yes',
948 'label_off' => __( 'Hide', 'embedpress' ),
949 'label_on' => __( 'Show', 'embedpress' ),
950 'condition' => [
951 'embedpress_pro_embeded_source' => 'soundcloud',
952 'embedpress_pro_soundcloud_visual!' => 'yes'
953 ]
954 ]
955 );
956
957 $this->add_control(
958 'embedpress_pro_soundcloud_play_count',
959 [
960 'label' => __( 'Play Count', 'embedpress' ),
961 'type' => Controls_Manager::SWITCHER,
962 'label_block' => false,
963 'return_value' => 'yes',
964 'default' => 'yes',
965 'label_off' => __( 'Hide', 'embedpress' ),
966 'label_on' => __( 'Show', 'embedpress' ),
967 'condition' => [
968 'embedpress_pro_embeded_source' => 'soundcloud',
969 'embedpress_pro_soundcloud_visual!' => 'yes'
970 ],
971 ]
972 );
973
974 $this->add_control(
975 'embedpress_pro_soundcloud_user_name',
976 [
977 'label' => __( 'User Name', 'embedpress' ),
978 'type' => Controls_Manager::SWITCHER,
979 'label_block' => false,
980 'return_value' => 'yes',
981 'default' => 'yes',
982 'label_off' => __( 'Hide', 'embedpress' ),
983 'label_on' => __( 'Show', 'embedpress' ),
984 'condition' => [
985 'embedpress_pro_embeded_source' => 'soundcloud'
986 ],
987 ]
988 );
989
990 $this->add_control(
991 'embedpress_pro_soundcloud_buy_button',
992 [
993 'label' => sprintf(__( 'Buy Button %s', 'embedpress' ), $this->pro_text ),
994 'type' => Controls_Manager::SWITCHER,
995 'label_block' => false,
996 'return_value' => 'yes',
997 'default' => 'yes',
998 'label_off' => __( 'Hide', 'embedpress' ),
999 'label_on' => __( 'Show', 'embedpress' ),
1000 'condition' => [
1001 'embedpress_pro_embeded_source' => 'soundcloud'
1002 ],
1003 'classes' => $this->pro_class,
1004 ]
1005 );
1006 $this->add_control(
1007 'embedpress_pro_soundcloud_download_button',
1008 [
1009 'label' => sprintf(__( 'Download Button %s', 'embedpress' ), $this->pro_text ),
1010 'type' => Controls_Manager::SWITCHER,
1011 'label_block' => false,
1012 'return_value' => 'yes',
1013 'default' => 'yes',
1014 'label_off' => __( 'Hide', 'embedpress' ),
1015 'label_on' => __( 'Show', 'embedpress' ),
1016 'condition' => [
1017 'embedpress_pro_embeded_source' => 'soundcloud'
1018 ],
1019 'classes' => $this->pro_class,
1020 ]
1021 );
1022 }
1023 public function init_vimeo_controls( ) {
1024 $this->add_control(
1025 'embedpress_pro_vimeo_auto_play',
1026 [
1027 'label' => __( 'Auto Play', 'embedpress' ),
1028 'type' => Controls_Manager::SWITCHER,
1029 'label_block' => false,
1030 'return_value' => 'yes',
1031 'default' => 'no',
1032 'condition' => [
1033 'embedpress_pro_embeded_source' => 'vimeo'
1034 ]
1035 ]
1036 );
1037
1038
1039 $this->add_control(
1040 'embedpress_pro_vimeo_color',
1041 [
1042 'label' => __( 'Scheme', 'embedpress' ),
1043 'type' => Controls_Manager::COLOR,
1044 'label_block' => false,
1045 'default' => '#00adef',
1046 'condition' => [
1047 'embedpress_pro_embeded_source' => 'vimeo'
1048 ]
1049 ]
1050 );
1051
1052 $this->add_control(
1053 'embedpress_pro_vimeo_author_options',
1054 [
1055 'label' => __( 'Author Information', 'embedpress' ),
1056 'type' => Controls_Manager::HEADING,
1057 'separator' => 'before',
1058 'condition' => [
1059 'embedpress_pro_embeded_source' => 'vimeo'
1060 ]
1061 ]
1062 );
1063
1064 $this->add_control(
1065 'embedpress_pro_vimeo_display_title',
1066 [
1067 'label' => __( 'Title', 'embedpress' ),
1068 'type' => Controls_Manager::SWITCHER,
1069 'label_block' => false,
1070 'return_value' => 'yes',
1071 'default' => 'yes',
1072 'condition' => [
1073 'embedpress_pro_embeded_source' => 'vimeo'
1074 ]
1075 ]
1076 );
1077
1078 //----- Vimeo PRO controls
1079
1080 $this->add_control(
1081 'embedpress_pro_vimeo_display_author',
1082 [
1083 'label' => __( 'Author', 'embedpress' ),
1084 'type' => Controls_Manager::SWITCHER,
1085 'label_block' => false,
1086 'return_value' => 'yes',
1087 'default' => 'yes',
1088 'condition' => [
1089 'embedpress_pro_embeded_source' => 'vimeo'
1090 ],
1091 ]
1092 );
1093
1094 $this->add_control(
1095 'embedpress_pro_vimeo_avatar',
1096 [
1097 'label' => __( 'Avatar', 'embedpress' ),
1098 'type' => Controls_Manager::SWITCHER,
1099 'label_block' => false,
1100 'return_value' => 'yes',
1101 'default' => 'yes',
1102 'condition' => [
1103 'embedpress_pro_embeded_source' => 'vimeo'
1104 ],
1105 ]
1106 );
1107
1108 $this->add_control(
1109 'embedpress_pro_vimeo_loop',
1110 [
1111 'label' => sprintf(__( 'Loop %s', 'embedpress' ), $this->pro_text ),
1112 'type' => Controls_Manager::SWITCHER,
1113 'label_block' => false,
1114 'return_value' => 'yes',
1115 'default' => 'no',
1116 'condition' => [
1117 'embedpress_pro_embeded_source' => 'vimeo'
1118 ],
1119 'classes' => $this->pro_class,
1120 ]
1121 );
1122
1123 $this->add_control(
1124 'embedpress_pro_vimeo_autopause',
1125 [
1126 'label' => sprintf(__( 'Auto Pause %s', 'embedpress' ), $this->pro_text ),
1127 'type' => Controls_Manager::SWITCHER,
1128 'label_block' => false,
1129 'return_value' => 'yes',
1130 'default' => 'no',
1131 'condition' => [
1132 'embedpress_pro_embeded_source' => 'vimeo'
1133 ],
1134 'classes' => $this->pro_class,
1135 ]
1136 );
1137
1138 $this->add_control(
1139 'embedpress_pro_vimeo_dnt',
1140 [
1141 'label' => sprintf(__( 'DNT %s', 'embedpress' ), $this->pro_text ),
1142 'type' => Controls_Manager::SWITCHER,
1143 'label_block' => false,
1144 'return_value' => 'yes',
1145 'default' => 'yes',
1146 'description' => __( 'Set this parameter to "yes" will block the player from tracking any session data, including all cookies',
1147 'embedpress' ),
1148 'condition' => [
1149 'embedpress_pro_embeded_source' => 'vimeo'
1150 ],
1151 'classes' => $this->pro_class,
1152 ]
1153 );
1154
1155
1156 $this->init_branding_controls( 'vimeo');
1157
1158 }
1159 public function init_spotify_controls() {
1160 $condition = [
1161 'embedpress_pro_embeded_source' => 'spotify'
1162 ];
1163
1164
1165 $this->add_control(
1166 'spotify_theme',
1167 [
1168 'label' => __( 'Player Background', 'embedpress' ),
1169 'description' => __( 'Dynamic option will use the most vibrant color from the album art.', 'embedpress' ),
1170 'type' => Controls_Manager::SELECT,
1171 'label_block' => false,
1172 'default' => '1',
1173 'options' => [
1174 '1' => __( 'Dynamic', 'embedpress' ),
1175 '0' => __( 'Black & White', 'embedpress' )
1176 ],
1177 'condition' => $condition
1178 ]
1179 );
1180
1181 $this->add_control(
1182 'spotify_follow_theme',
1183 [
1184 'label' => __( 'Follow Widget Background', 'embedpress' ),
1185 'type' => Controls_Manager::SELECT,
1186 'label_block' => false,
1187 'default' => 'light',
1188 'options' => [
1189 'light' => __( 'Light', 'embedpress' ),
1190 'dark' => __( 'Dark', 'embedpress' )
1191 ],
1192 'condition' => $condition
1193 ]
1194 );
1195 }
1196
1197 public function init_style_controls() {
1198 $this->start_controls_section(
1199 'embedpress_style_section',
1200 [
1201 'label' => __( 'Style', 'embedpress' ),
1202 'tab' => Controls_Manager::TAB_STYLE,
1203 ]
1204 );
1205 //$this->add_control(
1206 // 'embedpress_elementor_aspect_ratio',
1207 // [
1208 // 'label' => __( 'Aspect Ratio', 'embedpress' ),
1209 // 'description' => __( 'Good for any video. You may turn it off for other embed type.', 'embedpress' ),
1210 // 'type' => Controls_Manager::SELECT,
1211 // 'options' => [
1212 // 0 => __('None'),
1213 // '169' => '16:9',
1214 // '219' => '21:9',
1215 // '43' => '4:3',
1216 // '32' => '3:2',
1217 // '11' => '1:1',
1218 // '916' => '9:16',
1219 // ],
1220 // 'default' => 0,
1221 // 'prefix_class' => 'embedpress-aspect-ratio-',
1222 // 'frontend_available' => true,
1223 // ]
1224 //);
1225 $this->add_control(
1226 'width',
1227 [
1228 'label' => __( 'Width', 'embedpress' ),
1229 'type' => Controls_Manager::SLIDER,
1230 'size_units' => [ 'px' ],
1231 'range' => [
1232 'px' => [
1233 'min' => 0,
1234 'max' => 1500,
1235 'step' => 5,
1236 ],
1237 ],
1238 'default' => [
1239 'unit' => 'px',
1240 'size' => 600,
1241 ]
1242 ]
1243 );
1244 $this->add_control(
1245 'height',
1246 [
1247 'label' => __( 'Height', 'embedpress' ),
1248 'type' => Controls_Manager::SLIDER,
1249 'size_units' => [ 'px' ],
1250 'range' => [
1251 'px' => [
1252 'min' => 0,
1253 'max' => 1500,
1254 'step' => 5,
1255 ],
1256 ],
1257 'default' => [
1258 'unit' => 'px',
1259 'size' => 400,
1260 ]
1261 ]
1262 );
1263 $this->add_responsive_control(
1264 'margin',
1265 [
1266 'label' => __( 'Margin', 'embedpress' ),
1267 'type' => Controls_Manager::DIMENSIONS,
1268 'size_units' => [ 'px', '%', 'em' ],
1269 'selectors' => [
1270 '{{WRAPPER}} .embedpress-elements-wrapper .embedpress-wrapper' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1271 ],
1272 ]
1273 );
1274 $this->add_responsive_control(
1275 'padding',
1276 [
1277 'label' => __( 'Padding', 'embedpress' ),
1278 'type' => Controls_Manager::DIMENSIONS,
1279 'size_units' => [ 'px', '%', 'em' ],
1280 'selectors' => [
1281 '{{WRAPPER}} .embedpress-elements-wrapper .embedpress-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1282 ],
1283 ]
1284 );
1285 $this->add_responsive_control(
1286 'align',
1287 [
1288 'label' => esc_html__( 'Alignment', 'embedpress' ),
1289 'type' => Controls_Manager::CHOOSE,
1290 'options' => [
1291 'left' => [
1292 'title' => esc_html__( 'Left', 'embedpress' ),
1293 'icon' => 'eicon-text-align-left',
1294 ],
1295 'center' => [
1296 'title' => esc_html__( 'Center', 'embedpress' ),
1297 'icon' => 'eicon-text-align-center',
1298 ],
1299 'right' => [
1300 'title' => esc_html__( 'Right', 'embedpress' ),
1301 'icon' => 'eicon-text-align-right',
1302 ],
1303 ],
1304 'prefix_class' => 'elementor%s-align-',
1305 'default' => '',
1306 ]
1307 );
1308 $this->add_group_control(
1309 Group_Control_Background::get_type(),
1310 [
1311 'name' => 'background',
1312 'label' => __( 'Background', 'embedpress' ),
1313 'types' => [ 'classic', 'gradient' ],
1314 'selector' => '{{WRAPPER}} .embedpress-elements-wrapper .embedpress-wrapper, {{WRAPPER}} .embedpress-fit-aspect-ratio .embedpress-wrapper iframe',
1315 ]
1316 );
1317 $this->add_group_control(
1318 Group_Control_Css_Filter::get_type(),
1319 [
1320 'name' => 'embedpress_elementor_css_filters',
1321 'selector' => '{{WRAPPER}} .embedpress-elements-wrapper .embedpress-wrapper',
1322 ]
1323 );
1324 $this->end_controls_section();
1325 }
1326 protected function render() {
1327 add_filter( 'embedpress_should_modify_spotify', '__return_false');
1328 $settings = $this->get_settings_for_display();
1329 $height = (!empty( $settings['height']) && !empty( $settings['height']['size'] ))
1330 ? $settings['height']['size'] : null;
1331 $width = (!empty( $settings['width']) && !empty( $settings['width']['size'] ))
1332 ? $settings['width']['size'] : null;
1333
1334 $embed_content = Shortcode::parseContent( $settings['embedpress_embeded_link'], true, [ 'height'=> $height, 'width'=>$width ] );
1335 $embed_content = $this->onAfterEmbedSpotify($embed_content, $settings);
1336 $embed = apply_filters( 'embedpress_elementor_embed', $embed_content, $settings );
1337 $content = is_object( $embed ) ? $embed->embed : $embed;
1338
1339 ?>
1340 <div class="embedpress-elements-wrapper <?php echo !empty( $settings['embedpress_elementor_aspect_ratio']) ? 'embedpress-fit-aspect-ratio': ''; ?>">
1341 <?php echo $content; ?>
1342 </div>
1343 <?php
1344 }
1345 public function onAfterEmbedSpotify( $embed, $setting ) {
1346 if ( !isset( $embed->provider_name ) || strtolower( $embed->provider_name ) !== 'spotify' || !isset( $embed->embed ) ) {
1347 return $embed;
1348 }
1349 preg_match( '/src=\"(.+?)\"/', $embed->embed, $match );
1350 $url_full = $match[ 1 ];
1351 $modified_url = str_replace( 'playlist-v2', 'playlist', $url_full);
1352 // apply elementor related mod
1353 if(isset( $setting['spotify_theme'])){
1354 if ( strpos( $modified_url, '?') !== false ) {
1355 $modified_url .= '&theme='.sanitize_text_field( $setting['spotify_theme']);
1356 }else{
1357 $modified_url .= '?theme='.sanitize_text_field( $setting['spotify_theme']);
1358 }
1359 }
1360
1361
1362 $embed->embed = str_replace( $url_full, $modified_url, $embed->embed );
1363 return $embed;
1364 }
1365 }
1366