PluginProbe
Elementor Website Builder – more than just a page builder / 3.3.0
Elementor Website Builder – more than just a page builder v3.3.0
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
← All changes | includes/widgets/video.php +148 -406 4.2.23.3.0 View file →
@@ -1,9 +1,8 @@
1 1 <?php
2 2 namespace Elementor;
3 3
4 4 use Elementor\Modules\DynamicTags\Module as TagsModule;
5 -use Elementor\Modules\Promotions\Controls\Promotion_Control;
6 5
7 6 if ( ! defined( 'ABSPATH' ) ) {
8 7 exit; // Exit if accessed directly.
9 8 }
@@ -41,9 +40,9 @@
41 40 *
42 41 * @return string Widget title.
43 42 */
44 43 public function get_title() {
45 - return esc_html__( 'Video', 'elementor' );
44 + return __( 'Video', 'elementor' );
46 45 }
47 46
48 47 /**
49 48 * Get widget icon.
@@ -85,60 +84,16 @@
85 84 *
86 85 * @return array Widget keywords.
87 86 */
88 87 public function get_keywords() {
89 - return [ 'video', 'player', 'embed', 'youtube', 'vimeo', 'dailymotion', 'videopress' ];
88 + return [ 'video', 'player', 'embed', 'youtube', 'vimeo', 'dailymotion' ];
90 89 }
91 90
92 - protected function is_dynamic_content(): bool {
93 - return false;
94 - }
95 -
96 91 /**
97 - * Get style dependencies.
98 - *
99 - * Retrieve the list of style dependencies the widget requires.
100 - *
101 - * @since 3.24.0
102 - * @access public
103 - *
104 - * @return array Widget style dependencies.
105 - */
106 - public function get_style_depends(): array {
107 - return [ 'widget-video' ];
108 - }
109 -
110 - public function has_widget_inner_wrapper(): bool {
111 - return ! Plugin::$instance->experiments->is_feature_active( 'e_optimized_markup' );
112 - }
113 -
114 - /**
115 92 * Register video widget controls.
116 93 *
117 94 * Adds different input fields to allow the user to change and customize the widget settings.
118 95 *
119 - * @since 3.19.0
120 - * @access protected
121 - *
122 - * @return array Widget promotion data.
123 - */
124 - protected function get_upsale_data() {
125 - return [
126 - 'condition' => ! Utils::has_pro(),
127 - 'image' => esc_url( ELEMENTOR_ASSETS_URL . 'images/go-pro.svg' ),
128 - 'image_alt' => esc_attr__( 'Upgrade', 'elementor' ),
129 - 'title' => esc_html__( "Grab your visitors' attention", 'elementor' ),
130 - 'description' => esc_html__( 'Get the Video Playlist widget and grow your toolbox with Elementor Pro.', 'elementor' ),
131 - 'upgrade_url' => esc_url( 'https://go.elementor.com/go-pro-video-widget/' ),
132 - 'upgrade_text' => esc_html__( 'Upgrade Now', 'elementor' ),
133 - ];
134 - }
135 -
136 - /**
137 - * Register video widget controls.
138 - *
139 - * Adds different input fields to allow the user to change and customize the widget settings.
140 - *
141 96 * @since 3.1.0
142 97 * @access protected
143 98 */
144 99 protected function register_controls() {
@@ -144,9 +99,9 @@
144 99 protected function register_controls() {
145 100 $this->start_controls_section(
146 101 'section_video',
147 102 [
148 - 'label' => esc_html__( 'Video', 'elementor' ),
103 + 'label' => __( 'Video', 'elementor' ),
149 104 ]
150 105 );
151 106
152 107 $this->add_control(
@@ -151,17 +106,16 @@
151 106
152 107 $this->add_control(
153 108 'video_type',
154 109 [
155 - 'label' => esc_html__( 'Source', 'elementor' ),
110 + 'label' => __( 'Source', 'elementor' ),
156 111 'type' => Controls_Manager::SELECT,
157 112 'default' => 'youtube',
158 113 'options' => [
159 - 'youtube' => esc_html__( 'YouTube', 'elementor' ),
160 - 'vimeo' => esc_html__( 'Vimeo', 'elementor' ),
161 - 'dailymotion' => esc_html__( 'Dailymotion', 'elementor' ),
162 - 'videopress' => esc_html__( 'VideoPress', 'elementor' ),
163 - 'hosted' => esc_html__( 'Self Hosted', 'elementor' ),
114 + 'youtube' => __( 'YouTube', 'elementor' ),
115 + 'vimeo' => __( 'Vimeo', 'elementor' ),
116 + 'dailymotion' => __( 'Dailymotion', 'elementor' ),
117 + 'hosted' => __( 'Self Hosted', 'elementor' ),
164 118 ],
165 119 'frontend_available' => true,
166 120 ]
167 121 );
@@ -168,9 +122,9 @@
168 122
169 123 $this->add_control(
170 124 'youtube_url',
171 125 [
172 - 'label' => esc_html__( 'Link', 'elementor' ),
126 + 'label' => __( 'Link', 'elementor' ),
173 127 'type' => Controls_Manager::TEXT,
174 128 'dynamic' => [
175 129 'active' => true,
176 130 'categories' => [
@@ -177,17 +131,14 @@
177 131 TagsModule::POST_META_CATEGORY,
178 132 TagsModule::URL_CATEGORY,
179 133 ],
180 134 ],
181 - 'placeholder' => esc_html__( 'Enter your URL', 'elementor' ) . ' (YouTube)',
135 + 'placeholder' => __( 'Enter your URL', 'elementor' ) . ' (YouTube)',
182 136 'default' => 'https://www.youtube.com/watch?v=XHOmBV4js_E',
183 137 'label_block' => true,
184 138 'condition' => [
185 139 'video_type' => 'youtube',
186 140 ],
187 - 'ai' => [
188 - 'active' => false,
189 - ],
190 141 'frontend_available' => true,
191 142 ]
192 143 );
193 144
@@ -193,9 +144,9 @@
193 144
194 145 $this->add_control(
195 146 'vimeo_url',
196 147 [
197 - 'label' => esc_html__( 'Link', 'elementor' ),
148 + 'label' => __( 'Link', 'elementor' ),
198 149 'type' => Controls_Manager::TEXT,
199 150 'dynamic' => [
200 151 'active' => true,
201 152 'categories' => [
@@ -202,17 +153,14 @@
202 153 TagsModule::POST_META_CATEGORY,
203 154 TagsModule::URL_CATEGORY,
204 155 ],
205 156 ],
206 - 'placeholder' => esc_html__( 'Enter your URL', 'elementor' ) . ' (Vimeo)',
157 + 'placeholder' => __( 'Enter your URL', 'elementor' ) . ' (Vimeo)',
207 158 'default' => 'https://vimeo.com/235215203',
208 159 'label_block' => true,
209 160 'condition' => [
210 161 'video_type' => 'vimeo',
211 162 ],
212 - 'ai' => [
213 - 'active' => false,
214 - ],
215 163 ]
216 164 );
217 165
218 166 $this->add_control(
@@ -217,9 +165,9 @@
217 165
218 166 $this->add_control(
219 167 'dailymotion_url',
220 168 [
221 - 'label' => esc_html__( 'Link', 'elementor' ),
169 + 'label' => __( 'Link', 'elementor' ),
222 170 'type' => Controls_Manager::TEXT,
223 171 'dynamic' => [
224 172 'active' => true,
225 173 'categories' => [
@@ -226,17 +174,14 @@
226 174 TagsModule::POST_META_CATEGORY,
227 175 TagsModule::URL_CATEGORY,
228 176 ],
229 177 ],
230 - 'placeholder' => esc_html__( 'Enter your URL', 'elementor' ) . ' (Dailymotion)',
178 + 'placeholder' => __( 'Enter your URL', 'elementor' ) . ' (Dailymotion)',
231 179 'default' => 'https://www.dailymotion.com/video/x6tqhqb',
232 180 'label_block' => true,
233 181 'condition' => [
234 182 'video_type' => 'dailymotion',
235 183 ],
236 - 'ai' => [
237 - 'active' => false,
238 - ],
239 184 ]
240 185 );
241 186
242 187 $this->add_control(
@@ -241,12 +186,12 @@
241 186
242 187 $this->add_control(
243 188 'insert_url',
244 189 [
245 - 'label' => esc_html__( 'External URL', 'elementor' ),
190 + 'label' => __( 'External URL', 'elementor' ),
246 191 'type' => Controls_Manager::SWITCHER,
247 192 'condition' => [
248 - 'video_type' => [ 'hosted', 'videopress' ],
193 + 'video_type' => 'hosted',
249 194 ],
250 195 ]
251 196 );
252 197
@@ -252,9 +197,9 @@
252 197
253 198 $this->add_control(
254 199 'hosted_url',
255 200 [
256 - 'label' => esc_html__( 'Choose Video File', 'elementor' ),
201 + 'label' => __( 'Choose File', 'elementor' ),
257 202 'type' => Controls_Manager::MEDIA,
258 203 'dynamic' => [
259 204 'active' => true,
260 205 'categories' => [
@@ -260,13 +205,11 @@
260 205 'categories' => [
261 206 TagsModule::MEDIA_CATEGORY,
262 207 ],
263 208 ],
264 - 'media_types' => [
265 - 'video',
266 - ],
209 + 'media_type' => 'video',
267 210 'condition' => [
268 - 'video_type' => [ 'hosted', 'videopress' ],
211 + 'video_type' => 'hosted',
269 212 'insert_url' => '',
270 213 ],
271 214 ]
272 215 );
@@ -273,9 +216,9 @@
273 216
274 217 $this->add_control(
275 218 'external_url',
276 219 [
277 - 'label' => esc_html__( 'URL', 'elementor' ),
220 + 'label' => __( 'URL', 'elementor' ),
278 221 'type' => Controls_Manager::URL,
279 222 'autocomplete' => false,
280 223 'options' => false,
281 224 'label_block' => true,
@@ -286,9 +229,10 @@
286 229 TagsModule::POST_META_CATEGORY,
287 230 TagsModule::URL_CATEGORY,
288 231 ],
289 232 ],
290 - 'placeholder' => esc_html__( 'Enter your URL', 'elementor' ),
233 + 'media_type' => 'video',
234 + 'placeholder' => __( 'Enter your URL', 'elementor' ),
291 235 'condition' => [
292 236 'video_type' => 'hosted',
293 237 'insert_url' => 'yes',
294 238 ],
@@ -295,42 +239,14 @@
295 239 ]
296 240 );
297 241
298 242 $this->add_control(
299 - 'videopress_url',
300 - [
301 - 'label' => esc_html__( 'URL', 'elementor' ),
302 - 'type' => Controls_Manager::TEXT,
303 - 'label_block' => true,
304 - 'show_label' => false,
305 - 'default' => 'https://videopress.com/v/ZCAOzTNk',
306 - 'dynamic' => [
307 - 'active' => true,
308 - 'categories' => [
309 - TagsModule::POST_META_CATEGORY,
310 - TagsModule::URL_CATEGORY,
311 - ],
312 - ],
313 - 'placeholder' => esc_html__( 'VideoPress URL', 'elementor' ),
314 - 'ai' => [
315 - 'active' => false,
316 - ],
317 - 'condition' => [
318 - 'video_type' => 'videopress',
319 - 'insert_url' => 'yes',
320 - ],
321 -
322 - ]
323 - );
324 -
325 - $this->add_control(
326 243 'start',
327 244 [
328 - 'label' => esc_html__( 'Start Time', 'elementor' ),
245 + 'label' => __( 'Start Time', 'elementor' ),
329 246 'type' => Controls_Manager::NUMBER,
330 - 'description' => esc_html__( 'Specify a start time (in seconds)', 'elementor' ),
247 + 'description' => __( 'Specify a start time (in seconds)', 'elementor' ),
331 248 'frontend_available' => true,
332 - 'separator' => 'before',
333 249 ]
334 250 );
335 251
336 252 $this->add_control(
@@ -335,11 +251,11 @@
335 251
336 252 $this->add_control(
337 253 'end',
338 254 [
339 - 'label' => esc_html__( 'End Time', 'elementor' ),
255 + 'label' => __( 'End Time', 'elementor' ),
340 256 'type' => Controls_Manager::NUMBER,
341 - 'description' => esc_html__( 'Specify an end time (in seconds)', 'elementor' ),
257 + 'description' => __( 'Specify an end time (in seconds)', 'elementor' ),
342 258 'condition' => [
343 259 'video_type' => [ 'youtube', 'hosted' ],
344 260 ],
345 261 'frontend_available' => true,
@@ -348,9 +264,9 @@
348 264
349 265 $this->add_control(
350 266 'video_options',
351 267 [
352 - 'label' => esc_html__( 'Video Options', 'elementor' ),
268 + 'label' => __( 'Video Options', 'elementor' ),
353 269 'type' => Controls_Manager::HEADING,
354 270 'separator' => 'before',
355 271 ]
356 272 );
@@ -357,17 +273,24 @@
357 273
358 274 $this->add_control(
359 275 'autoplay',
360 276 [
361 - 'label' => esc_html__( 'Autoplay', 'elementor' ),
362 - 'description' => sprintf(
363 - /* translators: 1: `<a>` opening tag, 2: `</a>` closing tag. */
364 - esc_html__( 'Note: Autoplay is affected by %1$s Google’s Autoplay policy %2$s on Chrome browsers.', 'elementor' ),
365 - '<a href="https://developers.google.com/web/updates/2017/09/autoplay-policy-changes" target="_blank">',
366 - '</a>'
367 - ),
277 + 'label' => __( 'Autoplay', 'elementor' ),
368 278 'type' => Controls_Manager::SWITCHER,
369 279 'frontend_available' => true,
280 + 'conditions' => [
281 + 'relation' => 'or',
282 + 'terms' => [
283 + [
284 + 'name' => 'show_image_overlay',
285 + 'value' => '',
286 + ],
287 + [
288 + 'name' => 'image_overlay[url]',
289 + 'value' => '',
290 + ],
291 + ],
292 + ],
370 293 ]
371 294 );
372 295
373 296 $this->add_control(
@@ -372,9 +295,9 @@
372 295
373 296 $this->add_control(
374 297 'play_on_mobile',
375 298 [
376 - 'label' => esc_html__( 'Play On Mobile', 'elementor' ),
299 + 'label' => __( 'Play On Mobile', 'elementor' ),
377 300 'type' => Controls_Manager::SWITCHER,
378 301 'condition' => [
379 302 'autoplay' => 'yes',
380 303 ],
@@ -384,9 +307,9 @@
384 307
385 308 $this->add_control(
386 309 'mute',
387 310 [
388 - 'label' => esc_html__( 'Mute', 'elementor' ),
311 + 'label' => __( 'Mute', 'elementor' ),
389 312 'type' => Controls_Manager::SWITCHER,
390 313 'frontend_available' => true,
391 314 ]
392 315 );
@@ -393,9 +316,9 @@
393 316
394 317 $this->add_control(
395 318 'loop',
396 319 [
397 - 'label' => esc_html__( 'Loop', 'elementor' ),
320 + 'label' => __( 'Loop', 'elementor' ),
398 321 'type' => Controls_Manager::SWITCHER,
399 322 'condition' => [
400 323 'video_type!' => 'dailymotion',
401 324 ],
@@ -405,12 +328,12 @@
405 328
406 329 $this->add_control(
407 330 'controls',
408 331 [
409 - 'label' => esc_html__( 'Player Controls', 'elementor' ),
332 + 'label' => __( 'Player Controls', 'elementor' ),
410 333 'type' => Controls_Manager::SWITCHER,
411 - 'label_off' => esc_html__( 'Hide', 'elementor' ),
412 - 'label_on' => esc_html__( 'Show', 'elementor' ),
334 + 'label_off' => __( 'Hide', 'elementor' ),
335 + 'label_on' => __( 'Show', 'elementor' ),
413 336 'default' => 'yes',
414 337 'condition' => [
415 338 'video_type!' => 'vimeo',
416 339 ],
@@ -420,12 +343,12 @@
420 343
421 344 $this->add_control(
422 345 'showinfo',
423 346 [
424 - 'label' => esc_html__( 'Video Info', 'elementor' ),
347 + 'label' => __( 'Video Info', 'elementor' ),
425 348 'type' => Controls_Manager::SWITCHER,
426 - 'label_off' => esc_html__( 'Hide', 'elementor' ),
427 - 'label_on' => esc_html__( 'Show', 'elementor' ),
349 + 'label_off' => __( 'Hide', 'elementor' ),
350 + 'label_on' => __( 'Show', 'elementor' ),
428 351 'default' => 'yes',
429 352 'condition' => [
430 353 'video_type' => [ 'dailymotion' ],
431 354 ],
@@ -432,11 +355,11 @@
432 355 ]
433 356 );
434 357
435 358 $this->add_control(
436 - 'cc_load_policy',
359 + 'modestbranding',
437 360 [
438 - 'label' => esc_html__( 'Captions', 'elementor' ),
361 + 'label' => __( 'Modest Branding', 'elementor' ),
439 362 'type' => Controls_Manager::SWITCHER,
440 363 'condition' => [
441 364 'video_type' => [ 'youtube' ],
442 365 'controls' => 'yes',
@@ -447,12 +370,12 @@
447 370
448 371 $this->add_control(
449 372 'logo',
450 373 [
451 - 'label' => esc_html__( 'Logo', 'elementor' ),
374 + 'label' => __( 'Logo', 'elementor' ),
452 375 'type' => Controls_Manager::SWITCHER,
453 - 'label_off' => esc_html__( 'Hide', 'elementor' ),
454 - 'label_on' => esc_html__( 'Show', 'elementor' ),
376 + 'label_off' => __( 'Hide', 'elementor' ),
377 + 'label_on' => __( 'Show', 'elementor' ),
455 378 'default' => 'yes',
456 379 'condition' => [
457 380 'video_type' => [ 'dailymotion' ],
458 381 ],
@@ -462,13 +385,13 @@
462 385 // YouTube.
463 386 $this->add_control(
464 387 'yt_privacy',
465 388 [
466 - 'label' => esc_html__( 'Privacy Mode', 'elementor' ),
389 + 'label' => __( 'Privacy Mode', 'elementor' ),
467 390 'type' => Controls_Manager::SWITCHER,
468 - 'description' => esc_html__( 'When you turn on privacy mode, YouTube/Vimeo won\'t store information about visitors on your website unless they play the video.', 'elementor' ),
391 + 'description' => __( 'When you turn on privacy mode, YouTube won\'t store information about visitors on your website unless they play the video.', 'elementor' ),
469 392 'condition' => [
470 - 'video_type' => [ 'youtube', 'vimeo' ],
393 + 'video_type' => 'youtube',
471 394 ],
472 395 'frontend_available' => true,
473 396 ]
474 397 );
@@ -475,9 +398,9 @@
475 398
476 399 $this->add_control(
477 400 'lazy_load',
478 401 [
479 - 'label' => esc_html__( 'Lazy Load', 'elementor' ),
402 + 'label' => __( 'Lazy Load', 'elementor' ),
480 403 'type' => Controls_Manager::SWITCHER,
481 404 'conditions' => [
482 405 'relation' => 'or',
483 406 'terms' => [
@@ -509,13 +432,13 @@
509 432
510 433 $this->add_control(
511 434 'rel',
512 435 [
513 - 'label' => esc_html__( 'Suggested Videos', 'elementor' ),
436 + 'label' => __( 'Suggested Videos', 'elementor' ),
514 437 'type' => Controls_Manager::SELECT,
515 438 'options' => [
516 - '' => esc_html__( 'Current Video Channel', 'elementor' ),
517 - 'yes' => esc_html__( 'Any Video', 'elementor' ),
439 + '' => __( 'Current Video Channel', 'elementor' ),
440 + 'yes' => __( 'Any Video', 'elementor' ),
518 441 ],
519 442 'condition' => [
520 443 'video_type' => 'youtube',
521 444 ],
@@ -525,12 +448,12 @@
525 448 // Vimeo.
526 449 $this->add_control(
527 450 'vimeo_title',
528 451 [
529 - 'label' => esc_html__( 'Intro Title', 'elementor' ),
452 + 'label' => __( 'Intro Title', 'elementor' ),
530 453 'type' => Controls_Manager::SWITCHER,
531 - 'label_off' => esc_html__( 'Hide', 'elementor' ),
532 - 'label_on' => esc_html__( 'Show', 'elementor' ),
454 + 'label_off' => __( 'Hide', 'elementor' ),
455 + 'label_on' => __( 'Show', 'elementor' ),
533 456 'default' => 'yes',
534 457 'condition' => [
535 458 'video_type' => 'vimeo',
536 459 ],
@@ -539,12 +462,12 @@
539 462
540 463 $this->add_control(
541 464 'vimeo_portrait',
542 465 [
543 - 'label' => esc_html__( 'Intro Portrait', 'elementor' ),
466 + 'label' => __( 'Intro Portrait', 'elementor' ),
544 467 'type' => Controls_Manager::SWITCHER,
545 - 'label_off' => esc_html__( 'Hide', 'elementor' ),
546 - 'label_on' => esc_html__( 'Show', 'elementor' ),
468 + 'label_off' => __( 'Hide', 'elementor' ),
469 + 'label_on' => __( 'Show', 'elementor' ),
547 470 'default' => 'yes',
548 471 'condition' => [
549 472 'video_type' => 'vimeo',
550 473 ],
@@ -553,12 +476,12 @@
553 476
554 477 $this->add_control(
555 478 'vimeo_byline',
556 479 [
557 - 'label' => esc_html__( 'Intro Byline', 'elementor' ),
480 + 'label' => __( 'Intro Byline', 'elementor' ),
558 481 'type' => Controls_Manager::SWITCHER,
559 - 'label_off' => esc_html__( 'Hide', 'elementor' ),
560 - 'label_on' => esc_html__( 'Show', 'elementor' ),
482 + 'label_off' => __( 'Hide', 'elementor' ),
483 + 'label_on' => __( 'Show', 'elementor' ),
561 484 'default' => 'yes',
562 485 'condition' => [
563 486 'video_type' => 'vimeo',
564 487 ],
@@ -567,9 +490,9 @@
567 490
568 491 $this->add_control(
569 492 'color',
570 493 [
571 - 'label' => esc_html__( 'Controls Color', 'elementor' ),
494 + 'label' => __( 'Controls Color', 'elementor' ),
572 495 'type' => Controls_Manager::COLOR,
573 496 'default' => '',
574 497 'condition' => [
575 498 'video_type' => [ 'vimeo', 'dailymotion' ],
@@ -579,12 +502,12 @@
579 502
580 503 $this->add_control(
581 504 'download_button',
582 505 [
583 - 'label' => esc_html__( 'Download Button', 'elementor' ),
506 + 'label' => __( 'Download Button', 'elementor' ),
584 507 'type' => Controls_Manager::SWITCHER,
585 - 'label_off' => esc_html__( 'Hide', 'elementor' ),
586 - 'label_on' => esc_html__( 'Show', 'elementor' ),
508 + 'label_off' => __( 'Hide', 'elementor' ),
509 + 'label_on' => __( 'Show', 'elementor' ),
587 510 'condition' => [
588 511 'video_type' => 'hosted',
589 512 ],
590 513 ]
@@ -590,41 +513,27 @@
590 513 ]
591 514 );
592 515
593 516 $this->add_control(
594 - 'preload',
517 + 'poster',
595 518 [
596 - 'label' => esc_html__( 'Preload', 'elementor' ),
597 - 'type' => Controls_Manager::SELECT,
598 - 'options' => [
599 - 'metadata' => esc_html__( 'Metadata', 'elementor' ),
600 - 'auto' => esc_html__( 'Auto', 'elementor' ),
601 - 'none' => esc_html__( 'None', 'elementor' ),
519 + 'label' => __( 'Poster', 'elementor' ),
520 + 'type' => Controls_Manager::MEDIA,
521 + 'dynamic' => [
522 + 'active' => true,
602 523 ],
603 - 'description' => sprintf(
604 - '%1$s <a target="_blank" href="https://go.elementor.com/preload-video/">%2$s</a>',
605 - esc_html__( 'Preload attribute lets you specify how the video should be loaded when the page loads.', 'elementor' ),
606 - esc_html__( 'Learn more', 'elementor' ),
607 - ),
608 - 'default' => 'metadata',
609 524 'condition' => [
610 525 'video_type' => 'hosted',
611 - 'autoplay' => '',
612 526 ],
613 527 ]
614 528 );
615 529
616 530 $this->add_control(
617 - 'poster',
531 + 'view',
618 532 [
619 - 'label' => esc_html__( 'Poster', 'elementor' ),
620 - 'type' => Controls_Manager::MEDIA,
621 - 'dynamic' => [
622 - 'active' => true,
623 - ],
624 - 'condition' => [
625 - 'video_type' => 'hosted',
626 - ],
533 + 'label' => __( 'View', 'elementor' ),
534 + 'type' => Controls_Manager::HIDDEN,
535 + 'default' => 'youtube',
627 536 ]
628 537 );
629 538
630 539 $this->end_controls_section();
@@ -631,9 +540,9 @@
631 540
632 541 $this->start_controls_section(
633 542 'section_image_overlay',
634 543 [
635 - 'label' => esc_html__( 'Image Overlay', 'elementor' ),
544 + 'label' => __( 'Image Overlay', 'elementor' ),
636 545 ]
637 546 );
638 547
639 548 $this->add_control(
@@ -638,12 +547,12 @@
638 547
639 548 $this->add_control(
640 549 'show_image_overlay',
641 550 [
642 - 'label' => esc_html__( 'Image Overlay', 'elementor' ),
551 + 'label' => __( 'Image Overlay', 'elementor' ),
643 552 'type' => Controls_Manager::SWITCHER,
644 - 'label_off' => esc_html__( 'Hide', 'elementor' ),
645 - 'label_on' => esc_html__( 'Show', 'elementor' ),
553 + 'label_off' => __( 'Hide', 'elementor' ),
554 + 'label_on' => __( 'Show', 'elementor' ),
646 555 'frontend_available' => true,
647 556 ]
648 557 );
649 558
@@ -649,9 +558,9 @@
649 558
650 559 $this->add_control(
651 560 'image_overlay',
652 561 [
653 - 'label' => esc_html__( 'Choose Image', 'elementor' ),
562 + 'label' => __( 'Choose Image', 'elementor' ),
654 563 'type' => Controls_Manager::MEDIA,
655 564 'default' => [
656 565 'url' => Utils::get_placeholder_image_src(),
657 566 ],
@@ -669,8 +578,9 @@
669 578 Group_Control_Image_Size::get_type(),
670 579 [
671 580 'name' => 'image_overlay', // Usage: `{name}_size` and `{name}_custom_dimension`, in this case `image_overlay_size` and `image_overlay_custom_dimension`.
672 581 'default' => 'full',
582 + 'separator' => 'none',
673 583 'condition' => [
674 584 'show_image_overlay' => 'yes',
675 585 ],
676 586 ]
@@ -678,14 +588,11 @@
678 588
679 589 $this->add_control(
680 590 'show_play_icon',
681 591 [
682 - 'label' => esc_html__( 'Play Icon', 'elementor' ),
592 + 'label' => __( 'Play Icon', 'elementor' ),
683 593 'type' => Controls_Manager::SWITCHER,
684 594 'default' => 'yes',
685 - 'label_off' => esc_html__( 'Hide', 'elementor' ),
686 - 'label_on' => esc_html__( 'Show', 'elementor' ),
687 - 'separator' => 'before',
688 595 'condition' => [
689 596 'show_image_overlay' => 'yes',
690 597 'image_overlay[url]!' => '',
691 598 ],
@@ -692,50 +599,15 @@
692 599 ]
693 600 );
694 601
695 602 $this->add_control(
696 - 'play_icon',
697 - [
698 - 'label' => esc_html__( 'Icon', 'elementor' ),
699 - 'type' => Controls_Manager::ICONS,
700 - 'fa4compatibility' => 'icon',
701 - 'skin' => 'inline',
702 - 'label_block' => false,
703 - 'skin_settings' => [
704 - 'inline' => [
705 - 'none' => [
706 - 'label' => 'Default',
707 - 'icon' => 'eicon-play',
708 - ],
709 - 'icon' => [
710 - 'icon' => 'eicon-star',
711 - ],
712 - ],
713 - ],
714 - 'recommended' => [
715 - 'fa-regular' => [
716 - 'play-circle',
717 - ],
718 - 'fa-solid' => [
719 - 'play',
720 - 'play-circle',
721 - ],
722 - ],
723 - 'condition' => [
724 - 'show_image_overlay' => 'yes',
725 - 'show_play_icon!' => '',
726 - ],
727 - ]
728 - );
729 -
730 - $this->add_control(
731 603 'lightbox',
732 604 [
733 - 'label' => esc_html__( 'Lightbox', 'elementor' ),
605 + 'label' => __( 'Lightbox', 'elementor' ),
734 606 'type' => Controls_Manager::SWITCHER,
735 607 'frontend_available' => true,
736 - 'label_off' => esc_html__( 'Off', 'elementor' ),
737 - 'label_on' => esc_html__( 'On', 'elementor' ),
608 + 'label_off' => __( 'Off', 'elementor' ),
609 + 'label_on' => __( 'On', 'elementor' ),
738 610 'condition' => [
739 611 'show_image_overlay' => 'yes',
740 612 'image_overlay[url]!' => '',
741 613 ],
@@ -747,9 +619,9 @@
747 619
748 620 $this->start_controls_section(
749 621 'section_video_style',
750 622 [
751 - 'label' => esc_html__( 'Video', 'elementor' ),
623 + 'label' => __( 'Video', 'elementor' ),
752 624 'tab' => Controls_Manager::TAB_STYLE,
753 625 ]
754 626 );
755 627
@@ -755,9 +627,9 @@
755 627
756 628 $this->add_control(
757 629 'aspect_ratio',
758 630 [
759 - 'label' => esc_html__( 'Aspect Ratio', 'elementor' ),
631 + 'label' => __( 'Aspect Ratio', 'elementor' ),
760 632 'type' => Controls_Manager::SELECT,
761 633 'options' => [
762 634 '169' => '16:9',
763 635 '219' => '21:9',
@@ -765,20 +637,11 @@
765 637 '32' => '3:2',
766 638 '11' => '1:1',
767 639 '916' => '9:16',
768 640 ],
769 - 'selectors_dictionary' => [
770 - '169' => '1.77777', // 16 / 9
771 - '219' => '2.33333', // 21 / 9
772 - '43' => '1.33333', // 4 / 3
773 - '32' => '1.5', // 3 / 2
774 - '11' => '1', // 1 / 1
775 - '916' => '0.5625', // 9 / 16
776 - ],
777 641 'default' => '169',
778 - 'selectors' => [
779 - '{{WRAPPER}} .elementor-wrapper' => '--video-aspect-ratio: {{VALUE}}',
780 - ],
642 + 'prefix_class' => 'elementor-aspect-ratio-',
643 + 'frontend_available' => true,
781 644 ]
782 645 );
783 646
784 647 $this->add_group_control(
@@ -788,31 +651,18 @@
788 651 'selector' => '{{WRAPPER}} .elementor-wrapper',
789 652 ]
790 653 );
791 654
792 - $this->end_controls_section();
793 -
794 - $this->start_controls_section(
795 - 'section_image_overlay_style',
796 - [
797 - 'label' => esc_html__( 'Image Overlay', 'elementor' ),
798 - 'tab' => Controls_Manager::TAB_STYLE,
799 - 'condition' => [
800 - 'show_image_overlay' => 'yes',
801 - 'show_play_icon' => 'yes',
802 - ],
803 - ]
804 - );
805 -
806 655 $this->add_control(
807 656 'play_icon_title',
808 657 [
809 - 'label' => esc_html__( 'Play Icon', 'elementor' ),
658 + 'label' => __( 'Play Icon', 'elementor' ),
810 659 'type' => Controls_Manager::HEADING,
811 660 'condition' => [
812 661 'show_image_overlay' => 'yes',
813 662 'show_play_icon' => 'yes',
814 663 ],
664 + 'separator' => 'before',
815 665 ]
816 666 );
817 667
818 668 $this->add_control(
@@ -817,13 +667,12 @@
817 667
818 668 $this->add_control(
819 669 'play_icon_color',
820 670 [
821 - 'label' => esc_html__( 'Color', 'elementor' ),
671 + 'label' => __( 'Color', 'elementor' ),
822 672 'type' => Controls_Manager::COLOR,
823 673 'selectors' => [
824 674 '{{WRAPPER}} .elementor-custom-embed-play i' => 'color: {{VALUE}}',
825 - '{{WRAPPER}} .elementor-custom-embed-play svg' => 'fill: {{VALUE}}',
826 675 ],
827 676 'condition' => [
828 677 'show_image_overlay' => 'yes',
829 678 'show_play_icon' => 'yes',
@@ -833,11 +682,10 @@
833 682
834 683 $this->add_responsive_control(
835 684 'play_icon_size',
836 685 [
837 - 'label' => esc_html__( 'Size', 'elementor' ),
686 + 'label' => __( 'Size', 'elementor' ),
838 687 'type' => Controls_Manager::SLIDER,
839 - 'size_units' => [ 'px', 'em', 'rem', 'custom' ],
840 688 'range' => [
841 689 'px' => [
842 690 'min' => 10,
843 691 'max' => 300,
@@ -843,11 +691,9 @@
843 691 'max' => 300,
844 692 ],
845 693 ],
846 694 'selectors' => [
847 - // Not using a CSS vars because the default size value is coming from a global scss file.
848 695 '{{WRAPPER}} .elementor-custom-embed-play i' => 'font-size: {{SIZE}}{{UNIT}}',
849 - '{{WRAPPER}} .elementor-custom-embed-play svg' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
850 696 ],
851 697 'condition' => [
852 698 'show_image_overlay' => 'yes',
853 699 'show_play_icon' => 'yes',
@@ -861,15 +707,14 @@
861 707 'name' => 'play_icon_text_shadow',
862 708 'selector' => '{{WRAPPER}} .elementor-custom-embed-play i',
863 709 'fields_options' => [
864 710 'text_shadow_type' => [
865 - 'label' => esc_html__( 'Shadow', 'elementor' ),
711 + 'label' => _x( 'Shadow', 'Text Shadow Control', 'elementor' ),
866 712 ],
867 713 ],
868 714 'condition' => [
869 715 'show_image_overlay' => 'yes',
870 716 'show_play_icon' => 'yes',
871 - 'play_icon[library]!' => 'svg',
872 717 ],
873 718 ]
874 719 );
875 720
@@ -877,9 +722,9 @@
877 722
878 723 $this->start_controls_section(
879 724 'section_lightbox_style',
880 725 [
881 - 'label' => esc_html__( 'Lightbox', 'elementor' ),
726 + 'label' => __( 'Lightbox', 'elementor' ),
882 727 'tab' => Controls_Manager::TAB_STYLE,
883 728 'condition' => [
884 729 'show_image_overlay' => 'yes',
885 730 'image_overlay[url]!' => '',
@@ -890,9 +735,9 @@
890 735
891 736 $this->add_control(
892 737 'lightbox_color',
893 738 [
894 - 'label' => esc_html__( 'Background Color', 'elementor' ),
739 + 'label' => __( 'Background Color', 'elementor' ),
895 740 'type' => Controls_Manager::COLOR,
896 741 'selectors' => [
897 742 '#elementor-lightbox-{{ID}}' => 'background-color: {{VALUE}};',
898 743 ],
@@ -901,13 +746,12 @@
901 746
902 747 $this->add_control(
903 748 'lightbox_ui_color',
904 749 [
905 - 'label' => esc_html__( 'UI Color', 'elementor' ),
750 + 'label' => __( 'UI Color', 'elementor' ),
906 751 'type' => Controls_Manager::COLOR,
907 752 'selectors' => [
908 753 '#elementor-lightbox-{{ID}} .dialog-lightbox-close-button' => 'color: {{VALUE}}',
909 - '#elementor-lightbox-{{ID}} .dialog-lightbox-close-button svg' => 'fill: {{VALUE}}',
910 754 ],
911 755 ]
912 756 );
913 757
@@ -913,96 +757,67 @@
913 757
914 758 $this->add_control(
915 759 'lightbox_ui_color_hover',
916 760 [
917 - 'label' => esc_html__( 'UI Hover Color', 'elementor' ),
761 + 'label' => __( 'UI Hover Color', 'elementor' ),
918 762 'type' => Controls_Manager::COLOR,
919 763 'selectors' => [
920 764 '#elementor-lightbox-{{ID}} .dialog-lightbox-close-button:hover' => 'color: {{VALUE}}',
921 - '#elementor-lightbox-{{ID}} .dialog-lightbox-close-button:hover svg' => 'fill: {{VALUE}}',
922 765 ],
766 + 'separator' => 'after',
923 767 ]
924 768 );
925 769
926 - $this->add_responsive_control(
927 - 'lightbox_content_animation',
928 - [
929 - 'label' => esc_html__( 'Entrance Animation', 'elementor' ),
930 - 'type' => Controls_Manager::ANIMATION,
931 - 'frontend_available' => true,
932 - 'separator' => 'before',
933 - ]
934 - );
935 -
936 770 $this->add_control(
937 - 'deprecation_warning',
938 - [
939 - 'type' => Controls_Manager::ALERT,
940 - 'alert_type' => 'danger',
941 - 'content' => esc_html__( 'Note: These controls have been deprecated and are only visible if they were previously in use. The video’s width and position are now set based on its aspect ratio.', 'elementor' ),
942 - 'separator' => 'before',
943 - 'condition' => [
944 - 'lightbox_video_width!' => '',
945 - 'lightbox_content_position!' => '',
946 - ],
947 - ]
948 - );
949 -
950 - // Deprecated control. Visible only if it was previously in use.
951 - $this->add_control(
952 771 'lightbox_video_width',
953 772 [
954 - 'label' => esc_html__( 'Content Width', 'elementor' ),
773 + 'label' => __( 'Content Width', 'elementor' ),
955 774 'type' => Controls_Manager::SLIDER,
956 - 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ],
957 775 'default' => [
958 776 'unit' => '%',
959 777 ],
960 - // 'selectors' => [
961 - // '(desktop+)#elementor-lightbox-{{ID}} .elementor-video-container' => 'width: {{SIZE}}{{UNIT}};',
962 - // ],
963 - 'condition' => [
964 - 'lightbox_video_width!' => '',
965 - 'lightbox_content_position!' => '',
778 + 'range' => [
779 + '%' => [
780 + 'min' => 30,
781 + ],
966 782 ],
783 + 'selectors' => [
784 + '(desktop+)#elementor-lightbox-{{ID}} .elementor-video-container' => 'width: {{SIZE}}{{UNIT}};',
785 + ],
967 786 ]
968 787 );
969 788
970 - // Deprecated control. Visible only if it was previously in use.
971 789 $this->add_control(
972 790 'lightbox_content_position',
973 791 [
974 - 'label' => esc_html__( 'Content Position', 'elementor' ),
792 + 'label' => __( 'Content Position', 'elementor' ),
975 793 'type' => Controls_Manager::SELECT,
976 794 'frontend_available' => true,
977 795 'options' => [
978 - '' => esc_html__( 'Center', 'elementor' ),
979 - 'top' => esc_html__( 'Top', 'elementor' ),
796 + '' => __( 'Center', 'elementor' ),
797 + 'top' => __( 'Top', 'elementor' ),
980 798 ],
981 - // 'selectors' => [
982 - // '#elementor-lightbox-{{ID}} .elementor-video-container' => '{{VALUE}}; transform: translateX(-50%);',
983 - // ],
799 + 'selectors' => [
800 + '#elementor-lightbox-{{ID}} .elementor-video-container' => '{{VALUE}}; transform: translateX(-50%);',
801 + ],
984 802 'selectors_dictionary' => [
985 803 'top' => 'top: 60px',
986 804 ],
987 - 'condition' => [
988 - 'lightbox_video_width!' => '',
989 - 'lightbox_content_position!' => '',
990 - ],
991 805 ]
992 806 );
993 807
808 + $this->add_responsive_control(
809 + 'lightbox_content_animation',
810 + [
811 + 'label' => __( 'Entrance Animation', 'elementor' ),
812 + 'type' => Controls_Manager::ANIMATION,
813 + 'frontend_available' => true,
814 + ]
815 + );
816 +
994 817 $this->end_controls_section();
995 818 }
996 819
997 - public function print_a11y_text( $image_overlay ) {
998 - if ( empty( $image_overlay['alt'] ) ) {
999 - echo esc_html__( 'Play Video', 'elementor' );
1000 - } else {
1001 - echo esc_html__( 'Play Video about', 'elementor' ) . ' ' . esc_attr( $image_overlay['alt'] );
1002 - }
1003 - }
1004 -
1005 820 /**
1006 821 * Render video widget output on the frontend.
1007 822 *
1008 823 * Written in PHP and used to generate the final HTML.
@@ -1017,12 +832,8 @@
1017 832
1018 833 if ( 'hosted' === $settings['video_type'] ) {
1019 834 $video_url = $this->get_hosted_video_url();
1020 835 } else {
1021 - if ( 'videopress' === $settings['video_type'] ) {
1022 - $video_url = $this->get_videopress_video_url();
1023 - }
1024 -
1025 836 $embed_params = $this->get_embed_params();
1026 837 $embed_options = $this->get_embed_options();
1027 838 }
1028 839
@@ -1048,9 +859,9 @@
1048 859
1049 860 if ( $is_static_render_mode ) {
1050 861 $video_html = Embed::get_embed_thumbnail_html( $video_url, $post_id );
1051 862 // YouTube API requires a different markup which was set above.
1052 - } elseif ( 'youtube' !== $settings['video_type'] ) {
863 + } else if ( 'youtube' !== $settings['video_type'] ) {
1053 864 $video_html = Embed::get_embed_html( $video_url, $embed_params, $embed_options );
1054 865 }
1055 866 }
1056 867
@@ -1061,14 +872,18 @@
1061 872 }
1062 873
1063 874 $this->add_render_attribute( 'video-wrapper', 'class', 'elementor-wrapper' );
1064 875
876 + if ( ! $settings['lightbox'] ) {
877 + $this->add_render_attribute( 'video-wrapper', 'class', 'elementor-fit-aspect-ratio' );
878 + }
879 +
1065 880 $this->add_render_attribute( 'video-wrapper', 'class', 'elementor-open-' . ( $settings['lightbox'] ? 'lightbox' : 'inline' ) );
1066 881 ?>
1067 - <div <?php $this->print_render_attribute_string( 'video-wrapper' ); ?>>
882 + <div <?php echo $this->get_render_attribute_string( 'video-wrapper' ); ?>>
1068 883 <?php
1069 884 if ( ! $settings['lightbox'] ) {
1070 - Utils::print_unescaped_internal_string( $video_html ); // XSS ok.
885 + echo $video_html; // XSS ok.
1071 886 }
1072 887
1073 888 if ( $this->has_image_overlay() ) {
1074 889 $this->add_render_attribute( 'image-overlay', 'class', 'elementor-custom-embed-image-overlay' );
@@ -1083,15 +898,14 @@
1083 898 $lightbox_options = [
1084 899 'type' => 'video',
1085 900 'videoType' => $settings['video_type'],
1086 901 'url' => $lightbox_url,
1087 - 'autoplay' => $settings['autoplay'],
1088 902 'modalOptions' => [
1089 903 'id' => 'elementor-lightbox-' . $this->get_id(),
1090 904 'entranceAnimation' => $settings['lightbox_content_animation'],
1091 905 'entranceAnimation_tablet' => $settings['lightbox_content_animation_tablet'],
1092 906 'entranceAnimation_mobile' => $settings['lightbox_content_animation_mobile'],
1093 - 'videoAspectRatio' => $settings['aspect_ratio'] ?? '169',
907 + 'videoAspectRatio' => $settings['aspect_ratio'],
1094 908 ],
1095 909 ];
1096 910
1097 911 if ( 'hosted' === $settings['video_type'] ) {
@@ -1100,9 +914,8 @@
1100 914
1101 915 $this->add_render_attribute( 'image-overlay', [
1102 916 'data-elementor-open-lightbox' => 'yes',
1103 917 'data-elementor-lightbox' => wp_json_encode( $lightbox_options ),
1104 - 'data-e-action-hash' => Plugin::instance()->frontend->create_action_hash( 'lightbox', $lightbox_options ),
1105 918 ] );
1106 919
1107 920 if ( Plugin::$instance->editor->is_edit_mode() ) {
1108 921 $this->add_render_attribute( 'image-overlay', [
@@ -1119,23 +932,16 @@
1119 932
1120 933 $this->add_render_attribute( 'image-overlay', 'style', 'background-image: url(' . $image_url . ');' );
1121 934 }
1122 935 ?>
1123 - <div <?php $this->print_render_attribute_string( 'image-overlay' ); ?>>
936 + <div <?php echo $this->get_render_attribute_string( 'image-overlay' ); ?>>
1124 937 <?php if ( $settings['lightbox'] ) : ?>
1125 - <?php Group_Control_Image_Size::print_attachment_image_html( $settings, 'image_overlay' ); ?>
938 + <?php echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'image_overlay' ); ?>
1126 939 <?php endif; ?>
1127 940 <?php if ( 'yes' === $settings['show_play_icon'] ) : ?>
1128 - <div class="elementor-custom-embed-play" role="button" aria-label="<?php $this->print_a11y_text( $settings['image_overlay'] ); ?>" tabindex="0">
1129 - <?php
1130 - if ( empty( $settings['play_icon']['value'] ) ) {
1131 - $settings['play_icon'] = [
1132 - 'library' => 'eicons',
1133 - 'value' => 'eicon-play',
1134 - ];
1135 - }
1136 - Icons_Manager::render_icon( $settings['play_icon'], [ 'aria-hidden' => 'true' ] );
1137 - ?>
941 + <div class="elementor-custom-embed-play" role="button">
942 + <i class="eicon-play" aria-hidden="true"></i>
943 + <span class="elementor-screen-only"><?php echo __( 'Play Video', 'elementor' ); ?></span>
1138 944 </div>
1139 945 <?php endif; ?>
1140 946 </div>
1141 947 <?php } ?>
@@ -1145,9 +951,9 @@
1145 951
1146 952 /**
1147 953 * Render video widget as plain content.
1148 954 *
1149 - * Override the default behavior, by printing the video URL instead of rendering it.
955 + * Override the default behavior, by printing the video URL insted of rendering it.
1150 956 *
1151 957 * @since 1.4.5
1152 958 * @access public
1153 959 */
@@ -1193,9 +999,9 @@
1193 999 'loop',
1194 1000 'controls',
1195 1001 'mute',
1196 1002 'rel',
1197 - 'cc_load_policy',
1003 + 'modestbranding',
1198 1004 ];
1199 1005
1200 1006 if ( $settings['loop'] ) {
1201 1007 $video_properties = Embed::get_video_properties( $settings['youtube_url'] );
@@ -1219,12 +1025,8 @@
1219 1025
1220 1026 $params['color'] = str_replace( '#', '', $settings['color'] );
1221 1027
1222 1028 $params['autopause'] = '0';
1223 -
1224 - if ( ! empty( $settings['yt_privacy'] ) ) {
1225 - $params['dnt'] = 'true';
1226 - }
1227 1029 } elseif ( 'dailymotion' === $settings['video_type'] ) {
1228 1030 $params_dictionary = [
1229 1031 'controls',
1230 1032 'mute',
@@ -1236,12 +1038,8 @@
1236 1038
1237 1039 $params['start'] = $settings['start'];
1238 1040
1239 1041 $params['endscreen-enable'] = '0';
1240 - } elseif ( 'videopress' === $settings['video_type'] ) {
1241 - $params_dictionary = $this->get_params_dictionary_for_videopress();
1242 -
1243 - $params['at'] = $settings['start'];
1244 1042 }
1245 1043
1246 1044 foreach ( $params_dictionary as $key => $param_name ) {
1247 1045 $setting_name = $param_name;
@@ -1308,12 +1106,8 @@
1308 1106 $video_params[ $option_name ] = '';
1309 1107 }
1310 1108 }
1311 1109
1312 - if ( $settings['preload'] ) {
1313 - $video_params['preload'] = $settings['preload'];
1314 - }
1315 -
1316 1110 if ( $settings['mute'] ) {
1317 1111 $video_params['muted'] = 'muted';
1318 1112 }
1319 1113
@@ -1332,8 +1126,9 @@
1332 1126 return $video_params;
1333 1127 }
1334 1128
1335 1129 /**
1130 + * @param bool $from_media
1336 1131 *
1337 1132 * @return string
1338 1133 * @since 2.1.0
1339 1134 * @access private
@@ -1366,39 +1161,9 @@
1366 1161 return $video_url;
1367 1162 }
1368 1163
1369 1164 /**
1370 - * Get the VideoPress video URL from the current selected settings.
1371 1165 *
1372 - * @return string
1373 - */
1374 - private function get_videopress_video_url() {
1375 - $settings = $this->get_settings_for_display();
1376 -
1377 - if ( ! empty( $settings['insert_url'] ) ) {
1378 - return $settings['videopress_url'];
1379 - }
1380 -
1381 - return $settings['hosted_url']['url'];
1382 - }
1383 -
1384 - /**
1385 - * Get the params dictionary for VideoPress videos.
1386 - *
1387 - * @return array
1388 - */
1389 - private function get_params_dictionary_for_videopress() {
1390 - return [
1391 - 'controls',
1392 - 'autoplay' => 'autoPlay',
1393 - 'mute' => 'muted',
1394 - 'loop',
1395 - 'play_on_mobile' => 'playsinline',
1396 - ];
1397 - }
1398 -
1399 - /**
1400 - *
1401 1166 * @since 2.1.0
1402 1167 * @access private
1403 1168 */
1404 1169 private function render_hosted_video() {
@@ -1407,32 +1172,9 @@
1407 1172 return;
1408 1173 }
1409 1174
1410 1175 $video_params = $this->get_hosted_params();
1411 - /* Sometimes the video url is base64, therefore we use `esc_attr` in `src`. */
1412 1176 ?>
1413 - <video class="elementor-video" src="<?php echo esc_attr( $video_url ); ?>" <?php Utils::print_html_attributes( $video_params ); ?>></video>
1177 + <video class="elementor-video" src="<?php echo esc_url( $video_url ); ?>" <?php echo Utils::render_html_attributes( $video_params ); ?>></video>
1414 1178 <?php
1415 - }
1416 -
1417 - public function render_markdown(): string {
1418 - $settings = $this->get_settings_for_display();
1419 - $video_type = $settings['video_type'] ?? 'youtube';
1420 - $url = '';
1421 -
1422 - if ( 'hosted' === $video_type ) {
1423 - if ( ! empty( $settings['insert_url'] ) ) {
1424 - $url = $settings['external_url']['url'] ?? '';
1425 - } else {
1426 - $url = $settings['hosted_url']['url'] ?? '';
1427 - }
1428 - } else {
1429 - $url = $settings[ $video_type . '_url' ] ?? '';
1430 - }
1431 -
1432 - if ( empty( $url ) ) {
1433 - return '';
1434 - }
1435 -
1436 - return '[Video](' . esc_url( $url ) . ')';
1437 1179 }
1438 1180 }