PluginProbe
UiCore Elements – Free widgets and templates for Elementor / 1.3.17
UiCore Elements – Free widgets and templates for Elementor v1.3.17
1.3.17 1.3.16 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 All 41 releases
← All changes | includes/utils/testimonial-component.php +918 -852 1.0.41.3.17 View file →
@@ -1,5 +1,6 @@
1 1 <?php
2 +
2 3 namespace UiCoreElements\Utils;
3 4
4 5 use Elementor\Controls_Manager;
5 6 use Elementor\Plugin;
@@ -16,9 +17,10 @@
16 17
17 18
18 19 defined('ABSPATH') || exit();
19 20
20 -trait Testimonial_Trait {
21 +trait Testimonial_Trait
22 +{
21 23
22 24 // Content Controls Functions
23 25 function TRAIT_register_testimonial_repeater_controls($logo)
24 26 {
@@ -24,137 +26,138 @@
24 26 {
25 27 $this->start_controls_section(
26 28 'section_reviewer_content',
27 29 [
28 - 'label' => __($logo, 'uicore-elements'),
30 + /* translators: %s: Control title */
31 + 'label' => esc_html(sprintf('%s', $logo), 'uicore-elements'),
29 32 'tab' => Controls_Manager::TAB_CONTENT,
30 33 ]
31 34 );
32 35
33 - $repeater = new Repeater();
36 + $repeater = new Repeater();
34 37
35 - $repeater->add_control(
36 - 'avatar',
37 - [
38 - 'label' => __('Avatar', 'uicore-elements'),
39 - 'type' => Controls_Manager::MEDIA,
40 - 'render_type' => 'template',
41 - 'dynamic' => [
42 - 'active' => true,
38 + $repeater->add_control(
39 + 'avatar',
40 + [
41 + 'label' => __('Avatar', 'uicore-elements'),
42 + 'type' => Controls_Manager::MEDIA,
43 + 'render_type' => 'template',
44 + 'dynamic' => [
45 + 'active' => true,
46 + ],
47 + 'default' => [
48 + 'url' => Utils::get_placeholder_image_src(),
49 + ],
50 + ]
51 + );
52 + $repeater->add_control(
53 + 'reviewer_name',
54 + [
55 + 'label' => __('Name', 'uicore-elements'),
56 + 'type' => Controls_Manager::TEXT,
57 + 'dynamic' => [
58 + 'active' => true,
59 + ],
60 + 'default' => __('Adam Smith', 'uicore-elements'),
61 + 'placeholder' => __('Enter reviewer name', 'uicore-elements'),
62 + 'label_block' => true,
63 + ]
64 + );
65 + $repeater->add_control(
66 + 'reviewer_job_title',
67 + [
68 + 'label' => __('Job Title', 'uicore-elements'),
69 + 'type' => Controls_Manager::TEXT,
70 + 'dynamic' => [
71 + 'active' => true,
72 + ],
73 + 'default' => __('SEO Expert', 'uicore-elements'),
74 + 'placeholder' => __('Enter reviewer job title', 'uicore-elements'),
75 + 'label_block' => true,
76 + ]
77 + );
78 + $repeater->add_control(
79 + 'rating_number',
80 + [
81 + 'label' => __('Rating', 'uicore-elements'),
82 + 'type' => Controls_Manager::SLIDER,
83 + 'size_units' => ['px'],
84 + 'default' => [
85 + 'size' => 4.5,
86 + ],
87 + 'range' => [
88 + 'px' => [
89 + 'min' => 0,
90 + 'max' => 5,
91 + 'step' => .5,
43 92 ],
44 - 'default' => [
45 - 'url' => Utils::get_placeholder_image_src(),
93 + ],
94 + 'dynamic' => [
95 + 'active' => true,
96 + ],
97 + ]
98 + );
99 + $repeater->add_control(
100 + 'review_text',
101 + [
102 + 'label' => __('Review Text', 'uicore-elements'),
103 + 'type' => Controls_Manager::WYSIWYG,
104 + 'dynamic' => [
105 + 'active' => true,
106 + ],
107 + 'default' => __('Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'uicore-elements'),
108 + 'placeholder' => __('Enter review text', 'uicore-elements'),
109 + ]
110 + );
111 + $repeater->add_control(
112 + 'image',
113 + [
114 + 'label' => __('Secondary Image', 'uicore-elements'),
115 + 'type' => Controls_Manager::MEDIA,
116 + 'render_type' => 'template',
117 + 'dynamic' => [
118 + 'active' => true,
119 + ],
120 + 'default' => [
121 + 'url' => Utils::get_placeholder_image_src(),
122 + ],
123 + ]
124 + );
125 + $this->add_control(
126 + 'review_items',
127 + [
128 + 'show_label' => false,
129 + 'type' => Controls_Manager::REPEATER,
130 + 'fields' => $repeater->get_controls(),
131 + 'title_field' => '{{{ reviewer_name }}}',
132 + 'default' => [
133 + [
134 + 'reviewer_name' => __('Adam', 'uicore-elements'),
135 + 'reviewer_job_title' => __('SEO Expert', 'uicore-elements'),
46 136 ],
47 - ]
48 - );
49 - $repeater->add_control(
50 - 'reviewer_name',
51 - [
52 - 'label' => __('Name', 'uicore-elements'),
53 - 'type' => Controls_Manager::TEXT,
54 - 'dynamic' => [
55 - 'active' => true,
137 + [
138 + 'reviewer_name' => __('Karl', 'uicore-elements'),
139 + 'reviewer_job_title' => __('Designer', 'uicore-elements'),
56 140 ],
57 - 'default' => __('Adam Smith', 'uicore-elements'),
58 - 'placeholder' => __('Enter reviewer name', 'uicore-elements'),
59 - 'label_block' => true,
60 - ]
61 - );
62 - $repeater->add_control(
63 - 'reviewer_job_title',
64 - [
65 - 'label' => __('Job Title', 'uicore-elements'),
66 - 'type' => Controls_Manager::TEXT,
67 - 'dynamic' => [
68 - 'active' => true,
141 + [
142 + 'reviewer_name' => __('Maria', 'uicore-elements'),
143 + 'reviewer_job_title' => __('Developer', 'uicore-elements'),
69 144 ],
70 - 'default' => __('SEO Expert', 'uicore-elements'),
71 - 'placeholder' => __('Enter reviewer job title', 'uicore-elements'),
72 - 'label_block' => true,
73 - ]
74 - );
75 - $repeater->add_control(
76 - 'rating_number',
77 - [
78 - 'label' => __( 'Rating', 'uicore-elements' ),
79 - 'type' => Controls_Manager::SLIDER,
80 - 'size_units' => [ 'px' ],
81 - 'default' => [
82 - 'size' => 4.5,
145 + [
146 + 'reviewer_name' => __('Michael', 'uicore-elements'),
147 + 'reviewer_job_title' => __('Manager', 'uicore-elements'),
83 148 ],
84 - 'range' => [
85 - 'px' => [
86 - 'min' => 0,
87 - 'max' => 5,
88 - 'step' => .5,
89 - ],
149 + [
150 + 'reviewer_name' => __('Lena', 'uicore-elements'),
151 + 'reviewer_job_title' => __('CEO', 'uicore-elements'),
90 152 ],
91 - 'dynamic' => [
92 - 'active' => true,
153 + [
154 + 'reviewer_name' => __('Jennifer', 'uicore-elements'),
155 + 'reviewer_job_title' => __('Consultant', 'uicore-elements'),
93 156 ],
94 157 ]
95 - );
96 - $repeater->add_control(
97 - 'review_text',
98 - [
99 - 'label' => __('Review Text', 'uicore-elements'),
100 - 'type' => Controls_Manager::WYSIWYG,
101 - 'dynamic' => [
102 - 'active' => true,
103 - ],
104 - 'default' => __('Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'uicore-elements'),
105 - 'placeholder' => __('Enter review text', 'uicore-elements'),
106 - ]
107 - );
108 - $repeater->add_control(
109 - 'image',
110 - [
111 - 'label' => __('Secondary Image', 'uicore-elements'),
112 - 'type' => Controls_Manager::MEDIA,
113 - 'render_type' => 'template',
114 - 'dynamic' => [
115 - 'active' => true,
116 - ],
117 - 'default' => [
118 - 'url' => Utils::get_placeholder_image_src(),
119 - ],
120 - ]
121 - );
122 - $this->add_control(
123 - 'review_items',
124 - [
125 - 'show_label' => false,
126 - 'type' => Controls_Manager::REPEATER,
127 - 'fields' => $repeater->get_controls(),
128 - 'title_field' => '{{{ reviewer_name }}}',
129 - 'default' => [
130 - [
131 - 'reviewer_name' => __( 'Adam', 'uicore-elements' ),
132 - 'reviewer_job_title' => __( 'SEO Expert', 'uicore-elements' ),
133 - ],
134 - [
135 - 'reviewer_name' => __( 'Karl', 'uicore-elements' ),
136 - 'reviewer_job_title' => __( 'Designer', 'uicore-elements' ),
137 - ],
138 - [
139 - 'reviewer_name' => __( 'Maria', 'uicore-elements' ),
140 - 'reviewer_job_title' => __( 'Developer', 'uicore-elements' ),
141 - ],
142 - [
143 - 'reviewer_name' => __( 'Michael', 'uicore-elements' ),
144 - 'reviewer_job_title' => __( 'Manager', 'uicore-elements' ),
145 - ],
146 - [
147 - 'reviewer_name' => __( 'Lena', 'uicore-elements' ),
148 - 'reviewer_job_title' => __( 'CEO', 'uicore-elements' ),
149 - ],
150 - [
151 - 'reviewer_name' => __( 'Jennifer', 'uicore-elements' ),
152 - 'reviewer_job_title' => __( 'Consultant', 'uicore-elements' ),
153 - ],
154 - ]
155 - ]
156 - );
158 + ]
159 + );
157 160
158 161 $this->end_controls_section();
159 162 }
160 163 function TRAIT_register_testimonial_additional_controls()
@@ -172,9 +175,9 @@
172 175 'review_name_tag',
173 176 [
174 177 'label' => __('Name HTML Tag', 'uicore-elements'),
175 178 'type' => Controls_Manager::SELECT,
176 - 'default' => 'h3',
179 + 'default' => 'h4',
177 180 'options' => Helper::get_title_tags(),
178 181 'condition' => [
179 182 'show_reviewer_name' => 'yes',
180 183 ]
@@ -200,14 +203,14 @@
200 203 );
201 204 $this->add_control(
202 205 'rating_type',
203 206 [
204 - 'label' => __( 'Rating Type', 'uicore-elements' ),
207 + 'label' => __('Rating Type', 'uicore-elements'),
205 208 'type' => Controls_Manager::SELECT,
206 209 'default' => 'star',
207 210 'options' => [
208 - 'star' => __( 'Star', 'uicore-elements' ),
209 - 'number' => __( 'Number', 'uicore-elements' ),
211 + 'star' => __('Star', 'uicore-elements'),
212 + 'number' => __('Number', 'uicore-elements'),
210 213 ],
211 214 'condition' => [
212 215 'show_reviewer_rating' => 'yes'
213 216 ]
@@ -284,17 +287,17 @@
284 287 'default' => 'flex-start',
285 288 'toggle' => false,
286 289 'options' => [
287 290 'flex-start' => [
288 - 'title' => __( 'Top', 'uicore-elements' ),
291 + 'title' => __('Top', 'uicore-elements'),
289 292 'icon' => 'eicon-v-align-top',
290 293 ],
291 294 'center' => [
292 - 'title' => __( 'Center', 'uicore-elements' ),
295 + 'title' => __('Center', 'uicore-elements'),
293 296 'icon' => 'eicon-v-align-middle',
294 297 ],
295 298 'flex-end' => [
296 - 'title' => __( 'Bottom', 'uicore-elements' ),
299 + 'title' => __('Bottom', 'uicore-elements'),
297 300 'icon' => 'eicon-v-align-bottom',
298 301 ],
299 302 ],
300 303 'selectors' => [
@@ -339,8 +342,9 @@
339 342 'title' => __('Justified', 'uicore-elements'),
340 343 'icon' => 'eicon-text-align-justify',
341 344 ],
342 345 ],
346 + 'default' => is_rtl() ? 'right' : 'left',
343 347 'prefix_class' => 'ui-e-h-align-',
344 348 'selectors' => [
345 349 '{{WRAPPER}} .ui-e-item' => 'text-align: {{VALUE}};',
346 350 ],
@@ -346,8 +350,38 @@
346 350 ],
347 351 'separator' => 'before'
348 352 ]
349 353 );
354 + $this->add_responsive_control(
355 + 'content_v_alignment',
356 + [
357 + 'label' => __('Vertical Alignment', 'uicore-elements'),
358 + 'type' => Controls_Manager::CHOOSE,
359 + 'default' => 'center',
360 + 'options' => [
361 + 'start' => [
362 + 'title' => __('Top', 'uicore-elements'),
363 + 'icon' => 'eicon-align-start-v',
364 + ],
365 + 'center' => [
366 + 'title' => __('Center', 'uicore-elements'),
367 + 'icon' => 'eicon-align-center-v',
368 + ],
369 + 'space-between' => [
370 + 'title' => __('Space Between', 'uicore-elements'),
371 + 'icon' => 'eicon-justify-space-between-v',
372 + ],
373 + 'end' => [
374 + 'title' => __('Bottom', 'uicore-elements'),
375 + 'icon' => 'eicon-align-end-v',
376 + ],
377 + ],
378 + 'prefix_class' => 'ui-e-v-align-',
379 + 'selectors' => [
380 + '{{WRAPPER}} .ui-e-item' => '--ui-e-content-v-alignment: {{VALUE}};',
381 + ]
382 + ]
383 + );
350 384 }
351 385
352 386 // Style Controls Functions}
353 387 function register_testimonial_image_controls()
@@ -362,175 +396,182 @@
362 396 ]
363 397 ]
364 398 );
365 399
366 - $this->add_group_control(
367 - Group_Control_Border::get_type(),
368 - [
369 - 'name' => 'avatar_border',
370 - 'selector' => '{{WRAPPER}} .ui-e-testimonial-avatar img'
371 - ]
372 - );
373 - $this->add_control(
374 - 'avatar_radius',
375 - [
376 - 'label' => esc_html__('Border Radius', 'uicore-elements'),
377 - 'type' => Controls_Manager::DIMENSIONS,
378 - 'size_units' => ['px', 'em', '%'],
379 - 'selectors' => [
380 - '{{WRAPPER}} .ui-e-testimonial-avatar img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
400 + $this->add_group_control(
401 + Group_Control_Border::get_type(),
402 + [
403 + 'name' => 'avatar_border',
404 + 'selector' => '{{WRAPPER}} .ui-e-testimonial-avatar img'
405 + ]
406 + );
407 + $this->add_control(
408 + 'avatar_radius',
409 + [
410 + 'label' => esc_html__('Border Radius', 'uicore-elements'),
411 + 'type' => Controls_Manager::DIMENSIONS,
412 + 'size_units' => ['px', 'em', '%'],
413 + 'selectors' => [
414 + '{{WRAPPER}} .ui-e-testimonial-avatar img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
415 + ],
416 + ]
417 + );
418 + $this->add_responsive_control(
419 + 'avatar_padding',
420 + [
421 + 'label' => __('Padding', 'uicore-elements'),
422 + 'type' => Controls_Manager::DIMENSIONS,
423 + 'size_units' => ['px', 'em', '%'],
424 + 'selectors' => [
425 + '{{WRAPPER}} .ui-e-testimonial-avatar img' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
426 + ],
427 + ]
428 + );
429 + $this->add_responsive_control(
430 + 'avatar_size',
431 + [
432 + 'label' => __('Size', 'uicore-elements'),
433 + 'type' => Controls_Manager::SLIDER,
434 + 'size_units' => ['px', '%'],
435 + 'default' => [
436 + 'size' => 120,
437 + 'unit' => 'px'
438 + ],
439 + 'range' => [
440 + '%' => [
441 + 'min' => 1,
442 + 'max' => 100,
381 443 ],
382 - ]
383 - );
384 - $this->add_control(
385 - 'avatar_padding',
386 - [
387 - 'label' => __('Padding', 'uicore-elements'),
388 - 'type' => Controls_Manager::DIMENSIONS,
389 - 'size_units' => ['px', 'em', '%'],
390 - 'selectors' => [
391 - '{{WRAPPER}} .ui-e-testimonial-avatar img' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
392 - ],
393 - ]
394 - );
395 - $this->add_responsive_control(
396 - 'avatar_size',
397 - [
398 - 'label' => __('Size', 'uicore-elements'),
399 - 'type' => Controls_Manager::SLIDER,
400 - 'default' => [
401 - 'size' => 40,
402 - 'unit' => '%'
403 - ],
404 - 'range' => [
405 - '%' => [
406 - 'min' => 1,
407 - 'max' => 100,
408 - ],
409 - ],
410 - 'selectors' => [
411 - '{{WRAPPER}}' => '--ui-e-avatar-size: {{SIZE}}%;',
412 - ],
413 - 'condition' => [
414 - 'layout!' => 'layout_5',
444 + 'px' => [
445 + 'min' => 10,
446 + 'max' => 500,
415 447 ]
448 + ],
449 + 'description' => __('Using `%` might make image height fits the available space, depending on layout and inline options, cutting the image. Using `px` althougt adjust the image.', 'uicore-elements'),
450 + 'selectors' => [
451 + '{{WRAPPER}}' => '--ui-e-avatar-size: {{SIZE}}{{UNIT}};',
452 + ],
453 + 'render_type' => 'template',
454 + 'condition' => [
455 + 'layout!' => 'layout_5',
416 456 ]
417 - );
418 - $this->add_control(
419 - 'avatar_size_px',
420 - [
421 - 'label' => __('Size', 'uicore-elements'),
422 - 'type' => Controls_Manager::SLIDER,
423 - 'default' => [
424 - 'size' => 80,
425 - 'unit' => 'px'
457 + ]
458 + );
459 + $this->add_responsive_control(
460 + 'avatar_size_px',
461 + [
462 + 'label' => __('Size', 'uicore-elements'),
463 + 'type' => Controls_Manager::SLIDER,
464 + 'default' => [
465 + 'size' => 80,
466 + 'unit' => 'px'
467 + ],
468 + 'range' => [
469 + 'px' => [
470 + 'min' => 1,
471 + 'max' => 250,
426 472 ],
427 - 'range' => [
428 - 'px' => [
429 - 'min' => 1,
430 - 'max' => 250,
431 - ],
432 - ],
433 - 'selectors' => [
434 - '{{WRAPPER}}' => '--ui-e-avatar-size: {{SIZE}}{{UNIT}};',
435 - ],
436 - 'condition' => [
437 - 'layout' => 'layout_5',
438 - ]
473 + ],
474 + 'selectors' => [
475 + '{{WRAPPER}}' => '--ui-e-avatar-size: {{SIZE}}{{UNIT}};',
476 + ],
477 + 'condition' => [
478 + 'layout' => 'layout_5',
439 479 ]
440 - );
441 - $this->add_control(
442 - 'avatar_spacing',
443 - [
444 - 'label' => __('Spacing', 'uicore-elements'),
445 - 'type' => Controls_Manager::SLIDER,
446 - 'default' => [
447 - 'size' => 15,
480 + ]
481 + );
482 + $this->add_responsive_control(
483 + 'avatar_spacing',
484 + [
485 + 'label' => __('Spacing', 'uicore-elements'),
486 + 'type' => Controls_Manager::SLIDER,
487 + 'default' => [
488 + 'size' => 15,
489 + ],
490 + 'selectors' => [
491 + '{{WRAPPER}}' => '--ui-e-avatar-spacing: {{SIZE}}{{UNIT}}'
492 + ],
493 + ]
494 + );
495 + $this->add_group_control(
496 + Group_Control_Box_Shadow::get_type(),
497 + [
498 + 'name' => 'avatar_shadow',
499 + 'selector' => '{{WRAPPER}} .ui-e-testimonial-avatar img'
500 + ]
501 + );
502 + $this->add_control(
503 + 'avatar_offset_toggle',
504 + [
505 + 'label' => __('Offset', 'uicore-elements'),
506 + 'type' => Controls_Manager::POPOVER_TOGGLE,
507 + 'label_off' => __('None', 'uicore-elements'),
508 + 'label_on' => __('Custom', 'uicore-elements'),
509 + 'return_value' => 'yes',
510 + ]
511 + );
512 + $this->start_popover();
513 +
514 + $this->add_responsive_control(
515 + 'avatar_horizontal_offset',
516 + [
517 + 'label' => __('Horizontal', 'uicore-elements'),
518 + 'type' => Controls_Manager::SLIDER,
519 + 'default' => [
520 + 'size' => 0,
521 + ],
522 + 'tablet_default' => [
523 + 'size' => 0,
524 + ],
525 + 'mobile_default' => [
526 + 'size' => 0,
527 + ],
528 + 'range' => [
529 + 'px' => [
530 + 'min' => -200,
531 + 'max' => 200,
448 532 ],
449 - 'selectors' => [
450 - '{{WRAPPER}}' => '--ui-e-avatar-spacing: {{SIZE}}{{UNIT}}'
533 + ],
534 + 'condition' => [
535 + 'avatar_offset_toggle' => 'yes'
536 + ],
537 + 'render_type' => 'ui',
538 + 'selectors' => [
539 + '{{WRAPPER}}' => '--ui-e-avatar-h-offset: {{SIZE}}px;'
540 + ],
541 + ]
542 + );
543 + $this->add_responsive_control(
544 + 'avatar_vertical_offset',
545 + [
546 + 'label' => __('Vertical', 'uicore-elements'),
547 + 'type' => Controls_Manager::SLIDER,
548 + 'default' => [
549 + 'size' => 0,
550 + ],
551 + 'tablet_default' => [
552 + 'size' => 0,
553 + ],
554 + 'mobile_default' => [
555 + 'size' => 0,
556 + ],
557 + 'range' => [
558 + 'px' => [
559 + 'min' => -200,
560 + 'max' => 200,
451 561 ],
452 - ]
453 - );
454 - $this->add_group_control(
455 - Group_Control_Box_Shadow::get_type(),
456 - [
457 - 'name' => 'avatar_shadow',
458 - 'selector' => '{{WRAPPER}} .ui-e-testimonial-avatar img'
459 - ]
460 - );
461 - $this->add_control(
462 - 'avatar_offset_toggle',
463 - [
464 - 'label' => __('Offset', 'uicore-elements'),
465 - 'type' => Controls_Manager::POPOVER_TOGGLE,
466 - 'label_off' => __('None', 'uicore-elements'),
467 - 'label_on' => __('Custom', 'uicore-elements'),
468 - 'return_value' => 'yes',
469 - ]
470 - );
471 - $this->start_popover();
562 + ],
563 + 'condition' => [
564 + 'avatar_offset_toggle' => 'yes'
565 + ],
566 + 'render_type' => 'ui',
567 + 'selectors' => [
568 + '{{WRAPPER}}' => '--ui-e-avatar-v-offset: {{SIZE}}px;'
569 + ],
570 + ]
571 + );
572 + $this->end_popover();
472 573
473 - $this->add_responsive_control(
474 - 'avatar_horizontal_offset',
475 - [
476 - 'label' => __('Horizontal', 'uicore-elements'),
477 - 'type' => Controls_Manager::SLIDER,
478 - 'default' => [
479 - 'size' => 0,
480 - ],
481 - 'tablet_default' => [
482 - 'size' => 0,
483 - ],
484 - 'mobile_default' => [
485 - 'size' => 0,
486 - ],
487 - 'range' => [
488 - 'px' => [
489 - 'min' => -200,
490 - 'max' => 200,
491 - ],
492 - ],
493 - 'condition' => [
494 - 'avatar_offset_toggle' => 'yes'
495 - ],
496 - 'render_type' => 'ui',
497 - 'selectors' => [
498 - '{{WRAPPER}}' => '--ui-e-avatar-h-offset: {{SIZE}}px;'
499 - ],
500 - ]
501 - );
502 - $this->add_responsive_control(
503 - 'avatar_vertical_offset',
504 - [
505 - 'label' => __('Vertical', 'uicore-elements'),
506 - 'type' => Controls_Manager::SLIDER,
507 - 'default' => [
508 - 'size' => 0,
509 - ],
510 - 'tablet_default' => [
511 - 'size' => 0,
512 - ],
513 - 'mobile_default' => [
514 - 'size' => 0,
515 - ],
516 - 'range' => [
517 - 'px' => [
518 - 'min' => -200,
519 - 'max' => 200,
520 - ],
521 - ],
522 - 'condition' => [
523 - 'avatar_offset_toggle' => 'yes'
524 - ],
525 - 'render_type' => 'ui',
526 - 'selectors' => [
527 - '{{WRAPPER}}' => '--ui-e-avatar-v-offset: {{SIZE}}px;'
528 - ],
529 - ]
530 - );
531 - $this->end_popover();
532 -
533 574 $this->end_controls_section();
534 575 $this->start_controls_section(
535 576 'section_style_image',
536 577 [
@@ -540,115 +581,115 @@
540 581 'show_reviewer_image' => 'yes'
541 582 ]
542 583 ]
543 584 );
544 - $this->add_control(
545 - 'image_size',
546 - [
547 - 'label' => __('Size', 'uicore-elements'),
548 - 'type' => Controls_Manager::SLIDER,
549 - 'default' => [
550 - 'size' => 40,
551 - 'unit' => 'px'
585 + $this->add_responsive_control(
586 + 'image_size',
587 + [
588 + 'label' => __('Size', 'uicore-elements'),
589 + 'type' => Controls_Manager::SLIDER,
590 + 'default' => [
591 + 'size' => 40,
592 + 'unit' => 'px'
593 + ],
594 + 'range' => [
595 + 'px' => [
596 + 'min' => 10,
597 + 'max' => 500,
552 598 ],
553 - 'range' => [
554 - 'px' => [
555 - 'min' => 10,
556 - 'max' => 500,
557 - ],
558 - ],
559 - 'selectors' => [
560 - '{{WRAPPER}}' => '--ui-e-image-size: {{SIZE}}{{UNIT}};',
561 - ],
599 + ],
600 + 'selectors' => [
601 + '{{WRAPPER}}' => '--ui-e-image-size: {{SIZE}}{{UNIT}};',
602 + ],
603 + ]
604 + );
605 + $this->add_responsive_control(
606 + 'image_spacing',
607 + [
608 + 'label' => __('Spacing', 'uicore-elements'),
609 + 'type' => Controls_Manager::SLIDER,
610 + 'default' => [
611 + 'size' => 15,
612 + ],
613 + 'selectors' => [
614 + '{{WRAPPER}}' => '--ui-e-img-spacing: {{SIZE}}{{UNIT}}'
615 + ],
616 + 'condition' => [
617 + 'layout!' => ['layout_2', 'layout_4', 'layout_6'],
562 618 ]
563 - );
564 - $this->add_control(
565 - 'image_spacing',
566 - [
567 - 'label' => __('Spacing', 'uicore-elements'),
568 - 'type' => Controls_Manager::SLIDER,
569 - 'default' => [
570 - 'size' => 15,
619 + ]
620 + );
621 + $this->add_control(
622 + 'image_offset_toggle',
623 + [
624 + 'label' => __('Offset', 'uicore-elements'),
625 + 'type' => Controls_Manager::POPOVER_TOGGLE,
626 + 'label_off' => __('None', 'uicore-elements'),
627 + 'label_on' => __('Custom', 'uicore-elements'),
628 + 'return_value' => 'yes',
629 + ]
630 + );
631 + $this->start_popover();
632 +
633 + $this->add_responsive_control(
634 + 'image_horizontal_offset',
635 + [
636 + 'label' => __('Horizontal', 'uicore-elements'),
637 + 'type' => Controls_Manager::SLIDER,
638 + 'default' => [
639 + 'size' => 0,
640 + ],
641 + 'tablet_default' => [
642 + 'size' => 0,
643 + ],
644 + 'mobile_default' => [
645 + 'size' => 0,
646 + ],
647 + 'range' => [
648 + 'px' => [
649 + 'min' => -200,
650 + 'max' => 200,
571 651 ],
572 - 'selectors' => [
573 - '{{WRAPPER}}' => '--ui-e-img-spacing: {{SIZE}}{{UNIT}}'
652 + ],
653 + 'condition' => [
654 + 'image_offset_toggle' => 'yes'
655 + ],
656 + 'render_type' => 'ui',
657 + 'selectors' => [
658 + '{{WRAPPER}}' => '--ui-e-img-h-offset: {{SIZE}}px;'
659 + ],
660 + ]
661 + );
662 + $this->add_responsive_control(
663 + 'image_vertical_offset',
664 + [
665 + 'label' => __('Vertical', 'uicore-elements'),
666 + 'type' => Controls_Manager::SLIDER,
667 + 'default' => [
668 + 'size' => 0,
669 + ],
670 + 'tablet_default' => [
671 + 'size' => 0,
672 + ],
673 + 'mobile_default' => [
674 + 'size' => 0,
675 + ],
676 + 'range' => [
677 + 'px' => [
678 + 'min' => -200,
679 + 'max' => 200,
574 680 ],
575 - 'condition' => [
576 - 'layout!' => ['layout_2', 'layout_4', 'layout_6'],
577 - ]
578 - ]
579 - );
580 - $this->add_control(
581 - 'image_offset_toggle',
582 - [
583 - 'label' => __('Offset', 'uicore-elements'),
584 - 'type' => Controls_Manager::POPOVER_TOGGLE,
585 - 'label_off' => __('None', 'uicore-elements'),
586 - 'label_on' => __('Custom', 'uicore-elements'),
587 - 'return_value' => 'yes',
588 - ]
589 - );
590 - $this->start_popover();
591 -
592 - $this->add_responsive_control(
593 - 'image_horizontal_offset',
594 - [
595 - 'label' => __('Horizontal', 'uicore-elements'),
596 - 'type' => Controls_Manager::SLIDER,
597 - 'default' => [
598 - 'size' => 0,
599 - ],
600 - 'tablet_default' => [
601 - 'size' => 0,
602 - ],
603 - 'mobile_default' => [
604 - 'size' => 0,
605 - ],
606 - 'range' => [
607 - 'px' => [
608 - 'min' => -200,
609 - 'max' => 200,
610 - ],
611 - ],
612 - 'condition' => [
613 - 'image_offset_toggle' => 'yes'
614 - ],
615 - 'render_type' => 'ui',
616 - 'selectors' => [
617 - '{{WRAPPER}}' => '--ui-e-img-h-offset: {{SIZE}}px;'
618 - ],
619 - ]
620 - );
621 - $this->add_responsive_control(
622 - 'image_vertical_offset',
623 - [
624 - 'label' => __('Vertical', 'uicore-elements'),
625 - 'type' => Controls_Manager::SLIDER,
626 - 'default' => [
627 - 'size' => 0,
628 - ],
629 - 'tablet_default' => [
630 - 'size' => 0,
631 - ],
632 - 'mobile_default' => [
633 - 'size' => 0,
634 - ],
635 - 'range' => [
636 - 'px' => [
637 - 'min' => -200,
638 - 'max' => 200,
639 - ],
640 - ],
641 - 'condition' => [
642 - 'image_offset_toggle' => 'yes'
643 - ],
644 - 'render_type' => 'ui',
645 - 'selectors' => [
646 - '{{WRAPPER}}' => '--ui-e-img-v-offset: {{SIZE}}px;'
647 - ],
648 - ]
649 - );
650 - $this->end_popover();
681 + ],
682 + 'condition' => [
683 + 'image_offset_toggle' => 'yes'
684 + ],
685 + 'render_type' => 'ui',
686 + 'selectors' => [
687 + '{{WRAPPER}}' => '--ui-e-img-v-offset: {{SIZE}}px;'
688 + ],
689 + ]
690 + );
691 + $this->end_popover();
651 692 $this->end_controls_section();
652 693 }
653 694 function register_testimonial_name_controls()
654 695 {
@@ -662,59 +703,59 @@
662 703 ]
663 704 ]
664 705 );
665 706
666 - $this->add_control(
667 - 'name_color',
668 - [
669 - 'label' => __('Color', 'uicore-elements'),
670 - 'type' => Controls_Manager::COLOR,
671 - 'selectors' => [
672 - '{{WRAPPER}} .ui-e-testimonial-name' => 'color: {{VALUE}};',
707 + $this->add_control(
708 + 'name_color',
709 + [
710 + 'label' => __('Color', 'uicore-elements'),
711 + 'type' => Controls_Manager::COLOR,
712 + 'selectors' => [
713 + '{{WRAPPER}} .ui-e-testimonial-name' => 'color: {{VALUE}};',
714 + ],
715 + ]
716 + );
717 + $this->add_control(
718 + 'name_hover_color',
719 + [
720 + 'label' => __('Hover Color', 'uicore-elements'),
721 + 'type' => Controls_Manager::COLOR,
722 + 'selectors' => [
723 + '{{WRAPPER}} .ui-e-item:hover .ui-e-testimonial-name' => 'color: {{VALUE}};',
724 + ],
725 + ]
726 + );
727 + $this->add_responsive_control(
728 + 'name_bottom_space',
729 + [
730 + 'label' => __('Spacing', 'uicore-elements'),
731 + 'type' => Controls_Manager::SLIDER,
732 + 'range' => [
733 + 'px' => [
734 + 'min' => 0,
735 + 'max' => 100,
673 736 ],
674 - ]
675 - );
676 - $this->add_control(
677 - 'name_hover_color',
678 - [
679 - 'label' => __('Hover Color', 'uicore-elements'),
680 - 'type' => Controls_Manager::COLOR,
681 - 'selectors' => [
682 - '{{WRAPPER}} .ui-e-item:hover .ui-e-testimonial-name' => 'color: {{VALUE}};',
683 - ],
684 - ]
685 - );
686 - $this->add_control(
687 - 'name_bottom_space',
688 - [
689 - 'label' => __('Spacing', 'uicore-elements'),
690 - 'type' => Controls_Manager::SLIDER,
691 - 'range' => [
692 - 'px' => [
693 - 'min' => 0,
694 - 'max' => 100,
695 - ],
696 - ],
697 - 'selectors' => [
698 - '{{WRAPPER}} .ui-e-testimonial-name' => 'padding-bottom: {{SIZE}}{{UNIT}};',
699 - ],
700 - ]
701 - );
702 - $this->add_group_control(
703 - Group_Control_Typography::get_type(),
704 - [
705 - 'name' => 'name_typography',
706 - 'selector' => '{{WRAPPER}} .ui-e-testimonial-name',
707 - ]
708 - );
709 - $this->add_group_control(
710 - Group_Control_Text_Shadow::get_type(),
711 - [
712 - 'name' => 'name_shadow',
713 - 'label' => __( 'Text Shadow', 'uicore-elements' ),
714 - 'selector' => '{{WRAPPER}} .ui-e-testimonial-name',
715 - ]
716 - );
737 + ],
738 + 'selectors' => [
739 + '{{WRAPPER}} .ui-e-testimonial-name' => 'padding-bottom: {{SIZE}}{{UNIT}};',
740 + ],
741 + ]
742 + );
743 + $this->add_group_control(
744 + Group_Control_Typography::get_type(),
745 + [
746 + 'name' => 'name_typography',
747 + 'selector' => '{{WRAPPER}} .ui-e-testimonial-name',
748 + ]
749 + );
750 + $this->add_group_control(
751 + Group_Control_Text_Shadow::get_type(),
752 + [
753 + 'name' => 'name_shadow',
754 + 'label' => __('Text Shadow', 'uicore-elements'),
755 + 'selector' => '{{WRAPPER}} .ui-e-testimonial-name',
756 + ]
757 + );
717 758
718 759 $this->end_controls_section();
719 760 }
720 761 function register_testimonial_job_controls()
@@ -729,55 +770,55 @@
729 770 ]
730 771 ]
731 772 );
732 773
733 - $this->add_control(
734 - 'job_title_color',
735 - [
736 - 'label' => __('Color', 'uicore-elements'),
737 - 'type' => Controls_Manager::COLOR,
738 - 'selectors' => [
739 - '{{WRAPPER}} .ui-e-testimonial-job-title' => 'color: {{VALUE}};',
774 + $this->add_control(
775 + 'job_title_color',
776 + [
777 + 'label' => __('Color', 'uicore-elements'),
778 + 'type' => Controls_Manager::COLOR,
779 + 'selectors' => [
780 + '{{WRAPPER}} .ui-e-testimonial-job-title' => 'color: {{VALUE}};',
781 + ],
782 + ]
783 + );
784 + $this->add_control(
785 + 'job_title_hover_color',
786 + [
787 + 'label' => __('Hover Color', 'uicore-elements'),
788 + 'type' => Controls_Manager::COLOR,
789 + 'selectors' => [
790 + '{{WRAPPER}} .ui-e-item:hover .ui-e-testimonial-job-title' => 'color: {{VALUE}};',
791 + ],
792 + ]
793 + );
794 + $this->add_responsive_control(
795 + 'job_title_bottom_space',
796 + [
797 + 'label' => __('Spacing', 'uicore-elements'),
798 + 'type' => Controls_Manager::SLIDER,
799 + 'range' => [
800 + 'px' => [
801 + 'min' => 0,
802 + 'max' => 100,
740 803 ],
741 - ]
742 - );
743 - $this->add_control(
744 - 'job_title_hover_color',
745 - [
746 - 'label' => __('Hover Color', 'uicore-elements'),
747 - 'type' => Controls_Manager::COLOR,
748 - 'selectors' => [
749 - '{{WRAPPER}} .ui-e-item:hover .ui-e-testimonial-job-title' => 'color: {{VALUE}};',
750 - ],
751 - ]
752 - );
753 - $this->add_control(
754 - 'job_title_bottom_space',
755 - [
756 - 'label' => __('Spacing', 'uicore-elements'),
757 - 'type' => Controls_Manager::SLIDER,
758 - 'range' => [
759 - 'px' => [
760 - 'min' => 0,
761 - 'max' => 100,
762 - ],
763 - ],
764 - 'default' => [
765 - 'size' => 10,
766 - 'unit' => 'px'
767 - ],
768 - 'selectors' => [
769 - '{{WRAPPER}} .ui-e-testimonial-job-title' => 'padding-bottom: {{SIZE}}{{UNIT}};',
770 - ],
771 - ]
772 - );
773 - $this->add_group_control(
774 - Group_Control_Typography::get_type(),
775 - [
776 - 'name' => 'job_title_typography',
777 - 'selector' => '{{WRAPPER}} .ui-e-testimonial-job-title',
778 - ]
779 - );
804 + ],
805 + 'default' => [
806 + 'size' => 10,
807 + 'unit' => 'px'
808 + ],
809 + 'selectors' => [
810 + '{{WRAPPER}} .ui-e-testimonial-job-title' => 'padding-bottom: {{SIZE}}{{UNIT}};',
811 + ],
812 + ]
813 + );
814 + $this->add_group_control(
815 + Group_Control_Typography::get_type(),
816 + [
817 + 'name' => 'job_title_typography',
818 + 'selector' => '{{WRAPPER}} .ui-e-testimonial-job-title',
819 + ]
820 + );
780 821
781 822 $this->end_controls_section();
782 823 }
783 824 function register_testimonial_text_controls()
@@ -792,55 +833,55 @@
792 833 ]
793 834 ]
794 835 );
795 836
796 - $this->add_control(
797 - 'text_color',
798 - [
799 - 'label' => __('Color', 'uicore-elements'),
800 - 'type' => Controls_Manager::COLOR,
801 - 'selectors' => [
802 - '{{WRAPPER}} .ui-e-testimonial-text' => 'color: {{VALUE}};',
837 + $this->add_control(
838 + 'text_color',
839 + [
840 + 'label' => __('Color', 'uicore-elements'),
841 + 'type' => Controls_Manager::COLOR,
842 + 'selectors' => [
843 + '{{WRAPPER}} .ui-e-testimonial-text' => 'color: {{VALUE}};',
844 + ],
845 + ]
846 + );
847 + $this->add_control(
848 + 'text_hover_color',
849 + [
850 + 'label' => __('Hover Color', 'uicore-elements'),
851 + 'type' => Controls_Manager::COLOR,
852 + 'selectors' => [
853 + '{{WRAPPER}} .ui-e-item:hover .ui-e-testimonial-text' => 'color: {{VALUE}};',
854 + ],
855 + ]
856 + );
857 + $this->add_group_control(
858 + Group_Control_Typography::get_type(),
859 + [
860 + 'name' => 'text_typography',
861 + 'selector' => '{{WRAPPER}} .ui-e-testimonial-text',
862 + ]
863 + );
864 + $this->add_responsive_control(
865 + 'text_bottom_space',
866 + [
867 + 'label' => __('Spacing', 'uicore-elements'),
868 + 'type' => Controls_Manager::SLIDER,
869 + 'range' => [
870 + 'px' => [
871 + 'min' => 0,
872 + 'max' => 100,
803 873 ],
804 - ]
805 - );
806 - $this->add_control(
807 - 'text_hover_color',
808 - [
809 - 'label' => __('Hover Color', 'uicore-elements'),
810 - 'type' => Controls_Manager::COLOR,
811 - 'selectors' => [
812 - '{{WRAPPER}} .ui-e-item:hover .ui-e-testimonial-text' => 'color: {{VALUE}};',
813 - ],
814 - ]
815 - );
816 - $this->add_group_control(
817 - Group_Control_Typography::get_type(),
818 - [
819 - 'name' => 'text_typography',
820 - 'selector' => '{{WRAPPER}} .ui-e-testimonial-text',
821 - ]
822 - );
823 - $this->add_control(
824 - 'text_bottom_space',
825 - [
826 - 'label' => __('Spacing', 'uicore-elements'),
827 - 'type' => Controls_Manager::SLIDER,
828 - 'range' => [
829 - 'px' => [
830 - 'min' => 0,
831 - 'max' => 100,
832 - ],
833 - ],
834 - 'default' => [
835 - 'size' => 15,
836 - 'unit' => 'px'
837 - ],
838 - 'selectors' => [
839 - '{{WRAPPER}} .ui-e-testimonial-text' => 'padding-bottom: {{SIZE}}{{UNIT}};',
840 - ],
841 - ]
842 - );
874 + ],
875 + 'default' => [
876 + 'size' => 15,
877 + 'unit' => 'px'
878 + ],
879 + 'selectors' => [
880 + '{{WRAPPER}} .ui-e-testimonial-text' => 'padding-bottom: {{SIZE}}{{UNIT}};',
881 + ],
882 + ]
883 + );
843 884
844 885 $this->end_controls_section();
845 886 }
846 887 function register_testimonial_rating_controls()
@@ -855,75 +896,34 @@
855 896 ],
856 897 ]
857 898 );
858 899
859 - // If SVG inline, we only need one color control because the semi-star bg color hack is not enabled with this experiment
860 - if(Plugin::$instance->experiments->is_feature_active('e_font_icon_svg')) {
861 - $this->add_control(
862 - 'active_rating_color',
863 - [
864 - 'label' => esc_html__('Color', 'uicore-elements'),
865 - 'type' => Controls_Manager::COLOR,
866 - 'default' => '#ffab1a',
867 - 'selectors' => [
868 - '{{WRAPPER}} .ui-e-testimonial-rating svg' => 'fill: {{VALUE}};',
869 - ],
870 - 'condition' => [
871 - 'rating_type' => 'star',
872 - ],
873 - ]
874 - );
875 - // Without the experiment, two colors are usefull because <i> elements can be cut and printed as decimal-stars
876 - } else {
877 - $this->add_control(
878 - 'active_rating_color',
879 - [
880 - 'label' => esc_html__('Active Color', 'uicore-elements'),
881 - 'type' => Controls_Manager::COLOR,
882 - 'default' => '#ffab1a',
883 - 'selectors' => [
884 - '{{WRAPPER}} .ui-e-testimonial-rating .ui-e-marked i' => 'color: {{VALUE}};',
885 - ],
886 - 'condition' => [
887 - 'rating_type' => 'star',
888 - ],
889 - ]
890 - );
891 - $this->add_control(
892 - 'rating_color',
893 - [
894 - 'label' => esc_html__('Color', 'uicore-elements'),
895 - 'type' => Controls_Manager::COLOR,
896 - 'default' => '#ccd6df',
897 - 'selectors' => [
898 - '{{WRAPPER}} .ui-e-testimonial-rating .ui-e-unmarked i' => 'color: {{VALUE}};',
899 - ],
900 - 'condition' => [
901 - 'rating_type' => 'star',
902 - ],
903 - ]
904 - );
905 - }
900 + // If SVG inline, we only need one color control because the semi-star bg color hack is not enabled with this experiment
901 + if (Plugin::$instance->experiments->is_feature_active('e_font_icon_svg')) {
906 902 $this->add_control(
907 - 'rating_number_color',
903 + 'active_rating_color',
908 904 [
909 905 'label' => esc_html__('Color', 'uicore-elements'),
910 906 'type' => Controls_Manager::COLOR,
907 + 'default' => '#ffab1a',
911 908 'selectors' => [
912 - '{{WRAPPER}} .ui-e-testimonial-rating' => 'color: {{VALUE}};',
909 + '{{WRAPPER}} .ui-e-testimonial-rating svg' => 'fill: {{VALUE}};',
913 910 ],
914 911 'condition' => [
915 - 'rating_type' => 'number',
912 + 'rating_type' => 'star',
916 913 ],
917 914 ]
918 915 );
916 + // Without the experiment, two colors are usefull because <i> elements can be cut and printed as decimal-stars
917 + } else {
919 918 $this->add_control(
920 - 'rating_background',
919 + 'active_rating_color',
921 920 [
922 - 'label' => __( 'Background Color', 'uicore-elements' ),
923 - 'type' => Controls_Manager::COLOR,
921 + 'label' => esc_html__('Active Color', 'uicore-elements'),
922 + 'type' => Controls_Manager::COLOR,
923 + 'default' => '#ffab1a',
924 924 'selectors' => [
925 - '{{WRAPPER}} .ui-e-testimonial-rating' => 'background-color: {{VALUE}};',
925 + '{{WRAPPER}} .ui-e-testimonial-rating .ui-e-marked i' => 'color: {{VALUE}};',
926 926 ],
927 927 'condition' => [
928 928 'rating_type' => 'star',
929 929 ],
@@ -929,99 +929,139 @@
929 929 ],
930 930 ]
931 931 );
932 932 $this->add_control(
933 - 'rating_number_background',
933 + 'rating_color',
934 934 [
935 - 'label' => __( 'Background Color', 'uicore-elements' ),
936 - 'type' => Controls_Manager::COLOR,
935 + 'label' => esc_html__('Color', 'uicore-elements'),
936 + 'type' => Controls_Manager::COLOR,
937 + 'default' => '#ccd6df',
937 938 'selectors' => [
938 - '{{WRAPPER}} .ui-e-testimonial-rating' => 'background-color: {{VALUE}};',
939 + '{{WRAPPER}} .ui-e-testimonial-rating .ui-e-unmarked i' => 'color: {{VALUE}};',
939 940 ],
940 - 'global' => [
941 - 'default' => Global_Colors::COLOR_PRIMARY,
942 - ],
943 941 'condition' => [
944 - 'rating_type' => 'number',
942 + 'rating_type' => 'star',
945 943 ],
946 944 ]
947 945 );
946 + }
947 + $this->add_control(
948 + 'rating_number_color',
949 + [
950 + 'label' => esc_html__('Color', 'uicore-elements'),
951 + 'type' => Controls_Manager::COLOR,
952 + 'selectors' => [
953 + '{{WRAPPER}} .ui-e-testimonial-rating' => 'color: {{VALUE}};',
954 + ],
955 + 'condition' => [
956 + 'rating_type' => 'number',
957 + ],
958 + ]
959 + );
960 + $this->add_control(
961 + 'rating_background',
962 + [
963 + 'label' => __('Background Color', 'uicore-elements'),
964 + 'type' => Controls_Manager::COLOR,
965 + 'selectors' => [
966 + '{{WRAPPER}} .ui-e-testimonial-rating' => 'background-color: {{VALUE}};',
967 + ],
968 + 'condition' => [
969 + 'rating_type' => 'star',
970 + ],
971 + ]
972 + );
973 + $this->add_control(
974 + 'rating_number_background',
975 + [
976 + 'label' => __('Background Color', 'uicore-elements'),
977 + 'type' => Controls_Manager::COLOR,
978 + 'selectors' => [
979 + '{{WRAPPER}} .ui-e-testimonial-rating' => 'background-color: {{VALUE}};',
980 + ],
981 + 'default' => 'var(--e-global-color-uicore_primary)',
948 982
949 - $this->add_group_control(
950 - Group_Control_Border::get_type(),
951 - [
952 - 'name' => 'rating_border',
953 - 'selector' => '{{WRAPPER}} .ui-e-testimonial-rating',
954 - ]
955 - );
956 - $this->add_control(
957 - 'rating_border_radius',
958 - [
959 - 'label' => __( 'Border Radius', 'uicore-elements' ),
960 - 'type' => Controls_Manager::DIMENSIONS,
961 - 'size_units' => [ 'px', 'em', '%' ],
962 - 'selectors' => [
963 - '{{WRAPPER}} .ui-e-testimonial-rating' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
983 + 'condition' => [
984 + 'rating_type' => 'number',
985 + ],
986 + ]
987 + );
988 +
989 + $this->add_group_control(
990 + Group_Control_Border::get_type(),
991 + [
992 + 'name' => 'rating_border',
993 + 'selector' => '{{WRAPPER}} .ui-e-testimonial-rating',
994 + ]
995 + );
996 + $this->add_control(
997 + 'rating_border_radius',
998 + [
999 + 'label' => __('Border Radius', 'uicore-elements'),
1000 + 'type' => Controls_Manager::DIMENSIONS,
1001 + 'size_units' => ['px', 'em', '%'],
1002 + 'selectors' => [
1003 + '{{WRAPPER}} .ui-e-testimonial-rating' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1004 + ],
1005 + ]
1006 + );
1007 + $this->add_control(
1008 + 'rating_padding',
1009 + [
1010 + 'label' => esc_html__('Padding', 'uicore-elements'),
1011 + 'type' => Controls_Manager::DIMENSIONS,
1012 + 'size_units' => ['px', 'em', '%'],
1013 + 'selectors' => [
1014 + '{{WRAPPER}} .ui-e-testimonial-rating' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1015 + ],
1016 + ]
1017 + );
1018 + $this->add_control(
1019 + 'rating_margin',
1020 + [
1021 + 'label' => esc_html__('Margin', 'uicore-elements'),
1022 + 'type' => Controls_Manager::DIMENSIONS,
1023 + 'size_units' => ['px', '%'],
1024 + 'selectors' => [
1025 + '{{WRAPPER}} .ui-e-testimonial-rating' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1026 + ],
1027 + ]
1028 + );
1029 + $this->add_control(
1030 + 'rating_size',
1031 + [
1032 + 'label' => esc_html__('Size', 'uicore-elements'),
1033 + 'type' => Controls_Manager::SLIDER,
1034 + 'default' => [
1035 + 'size' => 14,
1036 + 'unit' => 'px'
1037 + ],
1038 + 'selectors' => [
1039 + '{{WRAPPER}} .ui-e-testimonial-rating' => 'font-size: {{SIZE}}{{UNIT}};',
1040 + '{{WRAPPER}} .ui-e-testimonial-rating svg' => 'width: {{SIZE}}{{UNIT}};',
1041 + ],
1042 + ]
1043 + );
1044 + $this->add_control(
1045 + 'rating_space_between',
1046 + [
1047 + 'label' => esc_html__('Space Between', 'uicore-elements'),
1048 + 'type' => Controls_Manager::SLIDER,
1049 + 'range' => [
1050 + 'px' => [
1051 + 'min' => 0,
1052 + 'max' => 10,
964 1053 ],
965 - ]
966 - );
967 - $this->add_control(
968 - 'rating_padding',
969 - [
970 - 'label' => esc_html__('Padding', 'uicore-elements'),
971 - 'type' => Controls_Manager::DIMENSIONS,
972 - 'size_units' => ['px', 'em', '%'],
973 - 'selectors' => [
974 - '{{WRAPPER}} .ui-e-testimonial-rating' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
975 - ],
976 - ]
977 - );
978 - $this->add_control(
979 - 'rating_margin',
980 - [
981 - 'label' => esc_html__('Margin', 'uicore-elements'),
982 - 'type' => Controls_Manager::DIMENSIONS,
983 - 'size_units' => ['px', '%'],
984 - 'selectors' => [
985 - '{{WRAPPER}} .ui-e-testimonial-rating' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
986 - ],
987 - ]
988 - );
989 - $this->add_control(
990 - 'rating_size',
991 - [
992 - 'label' => esc_html__('Size', 'uicore-elements'),
993 - 'type' => Controls_Manager::SLIDER,
994 - 'default' => [
995 - 'size' => 14,
996 - 'unit' => 'px'
997 - ],
998 - 'selectors' => [
999 - '{{WRAPPER}} .ui-e-testimonial-rating' => 'font-size: {{SIZE}}{{UNIT}};',
1000 - '{{WRAPPER}} .ui-e-testimonial-rating svg' => 'width: {{SIZE}}{{UNIT}};',
1001 - ],
1002 - ]
1003 - );
1004 - $this->add_control(
1005 - 'rating_space_between',
1006 - [
1007 - 'label' => esc_html__('Space Between', 'uicore-elements'),
1008 - 'type' => Controls_Manager::SLIDER,
1009 - 'range' => [
1010 - 'px' => [
1011 - 'min' => 0,
1012 - 'max' => 10,
1013 - ],
1014 - ],
1015 - 'selectors' => [
1016 - '{{WRAPPER}} .ui-e-testimonial-rating .ui-e-icon + .ui-e-icon' => 'margin-left: {{SIZE}}{{UNIT}};', // star type
1017 - '{{WRAPPER}} .ui-e-testimonial-rating span' => 'margin-right: {{SIZE}}{{UNIT}};', // number type
1018 - ],
1019 - 'condition' => [
1020 - 'rating_type' => 'star',
1021 - ],
1022 - ]
1023 - );
1054 + ],
1055 + 'selectors' => [
1056 + '{{WRAPPER}} .ui-e-testimonial-rating .ui-e-icon + .ui-e-icon' => 'margin-left: {{SIZE}}{{UNIT}};', // star type
1057 + '{{WRAPPER}} .ui-e-testimonial-rating span' => 'margin-right: {{SIZE}}{{UNIT}};', // number type
1058 + ],
1059 + 'condition' => [
1060 + 'rating_type' => 'star',
1061 + ],
1062 + ]
1063 + );
1024 1064
1025 1065 $this->end_controls_section();
1026 1066 }
1027 1067 function register_testimonial_divider_controls()
@@ -1037,32 +1077,32 @@
1037 1077 ]
1038 1078 ]
1039 1079 );
1040 1080
1041 - $this->add_control(
1042 - 'divider_color',
1043 - [
1044 - 'label' => __('Color', 'uicore-elements'),
1045 - 'type' => Controls_Manager::COLOR,
1046 - 'selectors' => [
1047 - '{{WRAPPER}} .ui-e-testimonial-divider' => 'border-color: {{VALUE}};',
1048 - ],
1049 - ]
1050 - );
1051 - $this->add_control(
1052 - 'divider_spacing',
1053 - [
1054 - 'label' => __('Spacing', 'uicore-elements'),
1055 - 'type' => Controls_Manager::SLIDER,
1056 - 'default' => [
1057 - 'size' => 20,
1058 - 'unit' => 'px'
1059 - ],
1060 - 'selectors' => [
1061 - '{{WRAPPER}} .ui-e-testimonial-divider' => 'margin-bottom: {{SIZE}}{{UNIT}};',
1062 - ],
1063 - ]
1064 - );
1081 + $this->add_control(
1082 + 'divider_color',
1083 + [
1084 + 'label' => __('Color', 'uicore-elements'),
1085 + 'type' => Controls_Manager::COLOR,
1086 + 'selectors' => [
1087 + '{{WRAPPER}} .ui-e-testimonial-divider' => 'border-color: {{VALUE}};',
1088 + ],
1089 + ]
1090 + );
1091 + $this->add_responsive_control(
1092 + 'divider_spacing',
1093 + [
1094 + 'label' => __('Spacing', 'uicore-elements'),
1095 + 'type' => Controls_Manager::SLIDER,
1096 + 'default' => [
1097 + 'size' => 20,
1098 + 'unit' => 'px'
1099 + ],
1100 + 'selectors' => [
1101 + '{{WRAPPER}} .ui-e-testimonial-divider' => 'margin-bottom: {{SIZE}}{{UNIT}};',
1102 + ],
1103 + ]
1104 + );
1065 1105
1066 1106 $this->end_controls_section();
1067 1107 }
1068 1108
@@ -1079,9 +1119,9 @@
1079 1119 // Register all Animation Controls at once
1080 1120 function TRAIT_register_testimonial_animation_controls()
1081 1121 {
1082 1122 $this->TRAIT_register_entrance_animations_controls(); // animate each item
1083 - // Hover Animations
1123 + // Hover Animations -- IMPORTANT: any new animation added here must also be added on condition list to the animation wrapper at TRAIT_render_review_item()
1084 1124 $this->TRAIT_register_hover_animation_control(
1085 1125 'Item Hover Animation',
1086 1126 [],
1087 1127 ['underline']
@@ -1120,23 +1160,23 @@
1120 1160 // Register specific Controls that can't be called in blocks because are positioned differently on widgets, or used only by specific testimonial types, such as grid or carousel
1121 1161 function TRAIT_register_specific_testimonial_controls($arg)
1122 1162 {
1123 1163
1124 - switch ($arg){
1125 - case 'layout' :
1164 + switch ($arg) {
1165 + case 'layout':
1126 1166 $this->add_control(
1127 1167 'layout',
1128 1168 [
1129 - 'label' => esc_html__( 'Layout', 'uicore-elements' ),
1169 + 'label' => esc_html__('Layout', 'uicore-elements'),
1130 1170 'type' => Controls_Manager::SELECT,
1131 1171 'default' => 'layout_1',
1132 1172 'options' => [
1133 - 'layout_1' => esc_html__( 'Layout 1', 'uicore-elements' ),
1134 - 'layout_2' => esc_html__( 'Layout 2', 'uicore-elements' ),
1135 - 'layout_3' => esc_html__( 'Layout 3', 'uicore-elements' ),
1136 - 'layout_4' => esc_html__( 'Layout 4', 'uicore-elements' ),
1137 - 'layout_5' => esc_html__( 'Layout 5', 'uicore-elements' ),
1138 - 'layout_6' => esc_html__( 'Layout 6', 'uicore-elements' ),
1173 + 'layout_1' => esc_html__('Layout 1', 'uicore-elements'),
1174 + 'layout_2' => esc_html__('Layout 2', 'uicore-elements'),
1175 + 'layout_3' => esc_html__('Layout 3', 'uicore-elements'),
1176 + 'layout_4' => esc_html__('Layout 4', 'uicore-elements'),
1177 + 'layout_5' => esc_html__('Layout 5', 'uicore-elements'),
1178 + 'layout_6' => esc_html__('Layout 6', 'uicore-elements'),
1139 1179 ],
1140 1180 'render_type' => 'template',
1141 1181 'prefix_class' => 'ui-e-',
1142 1182 'frontend_available' => true
@@ -1143,13 +1183,13 @@
1143 1183 ]
1144 1184 );
1145 1185 break;
1146 1186
1147 - case 'item_animations' :
1187 + case 'item_animations':
1148 1188 $this->add_control(
1149 1189 'item_hover_animation',
1150 1190 [
1151 - 'label' => esc_html__( 'Item Hover Animation', 'uicore-elements' ),
1191 + 'label' => esc_html__('Item Hover Animation', 'uicore-elements'),
1152 1192 'type' => Controls_Manager::SELECT,
1153 1193 'default' => '',
1154 1194 'label_block' => true,
1155 1195 'options' => $this->get_animations(),
@@ -1156,9 +1196,8 @@
1156 1196 ]
1157 1197 );
1158 1198 break;
1159 1199 }
1160 -
1161 1200 }
1162 1201
1163 1202 // HTML Rendering Functions
1164 1203 function render_reviewer_avatar($item)
@@ -1163,19 +1202,22 @@
1163 1202 // HTML Rendering Functions
1164 1203 function render_reviewer_avatar($item)
1165 1204 {
1166 1205 $settings = $this->get_settings_for_display();
1206 + $fit_avatar = ($this->is_option('avatar_size') && $settings['avatar_size']['unit'] === 'px')
1207 + ? 'ui-avatar-fit'
1208 + : '';
1167 1209
1168 - if ( ! $settings['show_reviewer_avatar'] ) {
1169 - return;
1170 - }
1210 + if (! $settings['show_reviewer_avatar']) {
1211 + return;
1212 + }
1171 1213
1172 - ?>
1173 - <div class="ui-e-testimonial-avatar <?php esc_attr_e($settings['avatar_animations']);?>">
1214 +?>
1215 + <div class="ui-e-testimonial-avatar <?php echo esc_attr($settings['avatar_animations']); ?> <?php echo esc_attr($fit_avatar); ?>">
1174 1216 <?php
1175 1217 $avatar_url = Group_Control_Image_Size::get_attachment_image_src($item['avatar']['id'], 'avatar_media_size', $settings);
1176 1218 if (!$avatar_url) {
1177 - printf('<img src="%1$s" alt="%2$s">', $item['avatar']['url'], esc_html($item['reviewer_name']));
1219 + printf('<img src="%1$s" alt="%2$s">', esc_url($item['avatar']['url']), esc_html($item['reviewer_name']));
1178 1220 } else {
1179 1221 print(wp_get_attachment_image(
1180 1222 $item['avatar']['id'],
1181 1223 $settings['avatar_media_size_size'],
@@ -1186,9 +1228,9 @@
1186 1228 ));
1187 1229 }
1188 1230 ?>
1189 1231 </div>
1190 - <?php
1232 + <?php
1191 1233 }
1192 1234 function render_reviewer_secondary_image($item)
1193 1235 {
1194 1236 $settings = $this->get_settings_for_display();
@@ -1194,14 +1236,14 @@
1194 1236 $settings = $this->get_settings_for_display();
1195 1237
1196 1238 $thumb_url = Group_Control_Image_Size::get_attachment_image_src($item['image']['id'], 'image_media_size', $settings);
1197 1239
1198 - if ( ! $settings['show_reviewer_image'] || !$thumb_url ) {
1199 - return;
1200 - }
1240 + if (! $settings['show_reviewer_image'] || !$thumb_url) {
1241 + return;
1242 + }
1201 1243
1202 - ?>
1203 - <div class="ui-e-testimonial-image <?php esc_attr_e($settings['image_animations']);?>">
1244 + ?>
1245 + <div class="ui-e-testimonial-image <?php echo esc_attr($settings['image_animations']); ?>">
1204 1246 <?php
1205 1247 if ($thumb_url) {
1206 1248 print(wp_get_attachment_image(
1207 1249 $item['image']['id'],
@@ -1211,54 +1253,54 @@
1211 1253 ));
1212 1254 }
1213 1255 ?>
1214 1256 </div>
1215 - <?php
1257 + <?php
1216 1258 }
1217 1259 function render_reviewer_name($item)
1218 1260 {
1219 1261 $settings = $this->get_settings_for_display();
1220 1262
1221 - if ( ! $settings['show_reviewer_name'] ) {
1222 - return;
1223 - }
1263 + if (! $settings['show_reviewer_name']) {
1264 + return;
1265 + }
1224 1266
1225 - ?>
1226 - <?php if ( $item['reviewer_name'] ) : ?>
1227 - <<?php esc_html_e($settings['review_name_tag']); ?> class="ui-e-testimonial-name <?php esc_attr_e($settings['name_animations']);?>">
1228 - <span><?php echo wp_kses_post($item['reviewer_name']);?></span>
1229 - </<?php esc_html_e($settings['review_name_tag']); ?>>
1267 + ?>
1268 + <?php if ($item['reviewer_name']) : ?>
1269 + <<?php echo Helper::esc_tag($settings['review_name_tag']); ?> class="ui-e-testimonial-name <?php echo esc_attr($settings['name_animations']); ?>">
1270 + <span><?php echo wp_kses_post($item['reviewer_name']); ?></span>
1271 + </<?php echo Helper::esc_tag($settings['review_name_tag']); ?>>
1230 1272 <?php endif; ?>
1231 - <?php
1273 + <?php
1232 1274 }
1233 1275 function render_reviewer_job_title($item)
1234 1276 {
1235 1277 $settings = $this->get_settings_for_display();
1236 1278
1237 - if ( ! $settings['show_reviewer_job_title'] ) {
1238 - return;
1239 - }
1279 + if (! $settings['show_reviewer_job_title']) {
1280 + return;
1281 + }
1240 1282
1241 - ?>
1242 - <?php if ( $item['reviewer_job_title'] ) : ?>
1243 - <div class="ui-e-testimonial-job-title <?php esc_attr_e($settings['job_animations']);?>">
1244 - <span><?php esc_html_e($item['reviewer_job_title']); ?></span>
1283 + ?>
1284 + <?php if ($item['reviewer_job_title']) : ?>
1285 + <div class="ui-e-testimonial-job-title <?php echo esc_attr($settings['job_animations']); ?>">
1286 + <span><?php echo esc_html($item['reviewer_job_title']); ?></span>
1245 1287 </div>
1246 1288 <?php endif; ?>
1247 - <?php
1289 + <?php
1248 1290 }
1249 1291 function render_review_text($item)
1250 1292 {
1251 1293 $settings = $this->get_settings_for_display();
1252 1294
1253 - if ( ! $settings['show_reviewer_text'] ) {
1254 - return;
1255 - }
1295 + if (! $settings['show_reviewer_text']) {
1296 + return;
1297 + }
1256 1298
1257 - ?>
1258 - <?php if ( $item['review_text'] ) : ?>
1259 - <div class="ui-e-testimonial-text <?php esc_attr_e($settings['text_animations']);?>">
1260 - <?php echo wp_kses_post( $item['review_text'] ); ?>
1299 + ?>
1300 + <?php if ($item['review_text']) : ?>
1301 + <div class="ui-e-testimonial-text <?php echo esc_attr($settings['text_animations']); ?>">
1302 + <?php echo wp_kses_post($this->parse_text_editor($item['review_text'])); ?>
1261 1303 </div>
1262 1304 <?php endif; ?>
1263 1305 <?php
1264 1306 }
@@ -1267,9 +1309,9 @@
1267 1309
1268 1310 $settings = $this->get_settings_for_display();
1269 1311
1270 1312 $ID = $item['_id'];
1271 - if ( !$settings['show_reviewer_rating'] ) {
1313 + if (!$settings['show_reviewer_rating']) {
1272 1314 return;
1273 1315 }
1274 1316
1275 1317 $rating_value = $item['rating_number']['size']; // get rating value
@@ -1275,79 +1317,81 @@
1275 1317 $rating_value = $item['rating_number']['size']; // get rating value
1276 1318
1277 1319 if ($settings['rating_type'] == 'star') {
1278 1320
1279 - ?>
1280 - <div class="ui-e-testimonial-rating <?php esc_attr_e($settings['rating_animations']);?>">
1321 + ?>
1322 + <div class="ui-e-testimonial-rating <?php echo esc_attr($settings['rating_animations']); ?>">
1281 1323 <?php
1282 1324
1283 1325 $rating_scale = 5;
1284 1326
1285 - if ( '' === $rating_value ) {
1327 + if ('' === $rating_value) {
1286 1328 $rating_value = $rating_scale;
1287 1329 }
1288 1330
1289 - $rating_value = floatval( $rating_value );
1290 - $rating_value = round( $rating_value, 2 );
1331 + $rating_value = floatval($rating_value);
1332 + $rating_value = round($rating_value, 2);
1291 1333
1292 - for ( $index = 1; $index <= $rating_scale; $index++ ) {
1334 + for ($index = 1; $index <= $rating_scale; $index++) {
1293 1335
1294 1336 // SVG Method (uses font-awesome library for it's half-star icon, and can prints full and half-star)
1295 - if (Plugin::$instance->experiments->is_feature_active('e_font_icon_svg')){
1296 - ?>
1337 + if (Plugin::$instance->experiments->is_feature_active('e_font_icon_svg')) {
1338 + ?>
1297 1339 <div class="ui-e-icon">
1298 1340 <?php
1299 - if ( $rating_value >= $index ) {
1300 - echo Icons_Manager::try_get_icon_html( ['value' => 'fas fa-star', 'library' => 'fa-solid'], [ 'aria-hidden' => 'true' ] );
1301 - } elseif ( intval( ceil( $rating_value ) ) === $index ) {
1302 - echo Icons_Manager::try_get_icon_html( ['value' => 'fas fa-star-half', 'library' => 'fa-solid'], ['aria-hidden' => 'true'] );
1303 - }
1341 + if ($rating_value >= $index) {
1342 + echo Icons_Manager::try_get_icon_html(['value' => 'fas fa-star', 'library' => 'fa-solid'], ['aria-hidden' => 'true']); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1343 + } elseif (intval(ceil($rating_value)) === $index) {
1344 + echo Icons_Manager::try_get_icon_html(['value' => 'fas fa-star-half', 'library' => 'fa-solid'], ['aria-hidden' => 'true']); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1345 + }
1304 1346 ?>
1305 1347 </div>
1306 - <?php
1307 - // Font Icon Method (uses elementor library and can print decimal specific stars)
1348 + <?php
1349 + // Font Icon Method (uses elementor library and can print decimal specific stars)
1308 1350 } else {
1309 1351
1310 - if ( $rating_value >= $index ) {
1352 + if ($rating_value >= $index) {
1311 1353 $width = '100%'; // Full star if rate superior to current loop
1312 - } elseif ( intval( ceil( $rating_value ) ) === $index ) {
1313 - $width = ( $rating_value - ( $index - 1 ) ) * 100 . '%'; // Semi-star, calculating the width based on the decimal value
1354 + } elseif (intval(ceil($rating_value)) === $index) {
1355 + $width = ($rating_value - ($index - 1)) * 100 . '%'; // Semi-star, calculating the width based on the decimal value
1314 1356 } else {
1315 1357 $width = '0%'; // No star if rate inferior to current loop
1316 1358 }
1317 1359
1318 1360 // Creates the atts
1319 - $this->add_render_attribute( "icon_marked_$ID" . "_$index", [
1361 + $this->add_render_attribute("icon_marked_$ID" . "_$index", [
1320 1362 'class' => 'ui-e-marked',
1321 - ] );
1322 - if ( '100%' !== $width ) {
1323 - $this->add_render_attribute( "icon_marked_$ID" . "_$index", [
1363 + ]);
1364 + if ('100%' !== $width) {
1365 + $this->add_render_attribute("icon_marked_$ID" . "_$index", [
1324 1366 'style' => '--ui-e-rate-width: ' . $width . ';',
1325 - ] );
1367 + ]);
1326 1368 }
1327 1369
1328 - ?>
1329 - <div class="ui-e-icon">
1330 - <div <?php $this->print_render_attribute_string( "icon_marked_$ID" . "_$index",); ?>>
1331 - <?php echo Icons_Manager::try_get_icon_html( ['value' => 'eicon-star','library' => 'eicons'], [ 'aria-hidden' => 'true' ] );?>
1332 - </div>
1333 - <div class="ui-e-unmarked">
1334 - <?php echo Icons_Manager::try_get_icon_html( ['value' => 'eicon-star','library' => 'eicons'], [ 'aria-hidden' => 'true' ] );?>
1335 - </div>
1370 + ?>
1371 + <div class="ui-e-icon">
1372 + <div <?php $this->print_render_attribute_string("icon_marked_$ID" . "_$index",); ?>>
1373 + <?php echo Icons_Manager::try_get_icon_html(['value' => 'eicon-star', 'library' => 'eicons'], ['aria-hidden' => 'true']); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1374 + ?>
1336 1375 </div>
1337 - <?php
1376 + <div class="ui-e-unmarked">
1377 + <?php echo Icons_Manager::try_get_icon_html(['value' => 'eicon-star', 'library' => 'eicons'], ['aria-hidden' => 'true']); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1378 + ?>
1379 + </div>
1380 + </div>
1381 + <?php
1338 1382 }
1339 1383 }
1340 1384 ?>
1341 1385 </div>
1342 - <?php
1386 + <?php
1343 1387
1344 1388 } else { // number type rating
1345 - ?>
1346 - <div class="ui-e-testimonial-rating number">
1347 - <span><?php esc_html_e($rating_value);?></span>
1348 - </div>
1349 - <?php
1389 + ?>
1390 + <div class="ui-e-testimonial-rating number">
1391 + <span><?php echo esc_html($rating_value); ?></span>
1392 + </div>
1393 + <?php
1350 1394 }
1351 1395 }
1352 1396 function render_review_divider()
1353 1397 {
@@ -1352,15 +1396,15 @@
1352 1396 function render_review_divider()
1353 1397 {
1354 1398 $settings = $this->get_settings_for_display();
1355 1399
1356 - if ( !$settings['show_reviewer_divider'] ) {
1400 + if (!$settings['show_reviewer_divider']) {
1357 1401 return;
1358 1402 }
1359 1403
1360 1404 ?>
1361 - <span class="ui-e-testimonial-divider"></span>
1362 - <?php
1405 + <span class="ui-e-testimonial-divider"></span>
1406 + <?php
1363 1407 }
1364 1408 function TRAIT_render_review_item($item, $layout)
1365 1409 {
1366 1410 $settings = $this->get_settings_for_display();
@@ -1366,49 +1410,71 @@
1366 1410 $settings = $this->get_settings_for_display();
1367 1411
1368 1412 // Atts used by some layouts
1369 1413 $atts = [
1370 - 'inline' => $settings['image_inline'] == 'yes' ? true : false,
1414 + 'inline' => $this->is_option('image_inline', 'yes') ? true : false,
1371 1415 ];
1372 1416
1373 - // Checks for animations
1374 - $entrance = (isset($settings['animate_items']) && $settings['animate_items'] == 'ui-e-grid-animate') ? 'elementor-invisible' : '';
1375 - $hover = isset($settings['item_hover_animation']) ? $settings['item_hover_animation'] : null;
1417 + // Get entrance and item hover animation classes
1418 + $entrance = $this->is_option('animate_items', 'ui-e-grid-animate') ? 'elementor-invisible' : '';
1419 + $hover = isset($settings['item_hover_animation']) ? $settings['item_hover_animation'] : null;
1376 1420 $animations = sprintf('%s %s', $entrance, $hover);
1377 1421
1378 - ?>
1422 + // Get all elements animation control options (triggered by .ui-e-animations-wrp:hover)
1423 + $animation_options = [
1424 + $settings['image_animations'],
1425 + $settings['avatar_animations'],
1426 + $settings['text_animations'],
1427 + $settings['name_animations'],
1428 + $settings['job_animations'],
1429 + $settings['rating_animations']
1430 + ];
1431 + // get item animation only if is not slider,
1432 + if (!str_contains($this->get_name(), 'slider')) {
1433 + $animation_options[] = $settings['item_hover_animation'];
1434 + }
1435 + // check if any of the animation are set
1436 + $has_animation = array_filter($animation_options, function ($value) {
1437 + return $value !== '';
1438 + });
1439 + // and also check if entrance is set
1440 + $has_animation = $entrance !== '' ? true : $has_animation;
1379 1441
1442 + ?>
1443 +
1380 1444 <div class="ui-e-wrp swiper-slide">
1381 - <div class="ui-e-animations-wrp <?php echo esc_attr($animations);?>">
1382 - <div class="ui-e-item-wrp">
1383 - <div class="ui-e-item">
1384 - <?php
1385 - switch($layout){
1386 - case 'layout_2' :
1387 - $this->render_layout_2($item, $atts);
1388 - break;
1389 - case 'layout_3' :
1390 - $this->render_layout_3($item, $atts);
1391 - break;
1392 - case 'layout_4' :
1393 - $this->render_layout_4($item);
1394 - break;
1395 - case 'layout_5' :
1396 - $this->render_layout_5($item);
1397 - break;
1398 - case 'layout_6' :
1399 - $this->render_layout_6($item);
1400 - break;
1401 - default:
1402 - $this->render_layout_1($item, $atts);
1403 - break;
1404 - }
1405 - ?>
1406 - </div>
1407 - </div>
1408 - </div>
1445 + <?php if (!empty($has_animation)) : ?>
1446 + <div class="ui-e-animations-wrp <?php echo esc_attr($animations); ?>">
1447 + <?php endif; ?>
1448 + <div class="ui-e-item">
1449 + <?php
1450 + switch ($layout) {
1451 + case 'layout_2':
1452 + $this->render_layout_2($item, $atts);
1453 + break;
1454 + case 'layout_3':
1455 + $this->render_layout_3($item, $atts);
1456 + break;
1457 + case 'layout_4':
1458 + $this->render_layout_4($item);
1459 + break;
1460 + case 'layout_5':
1461 + $this->render_layout_5($item);
1462 + break;
1463 + case 'layout_6':
1464 + $this->render_layout_6($item);
1465 + break;
1466 + default:
1467 + $this->render_layout_1($item, $atts);
1468 + break;
1469 + }
1470 + ?>
1471 + </div>
1472 + <?php if (!empty($has_animation)) : ?>
1473 + </div>
1474 + <?php endif; ?>
1409 1475 </div>
1410 - <?php
1476 + <?php
1411 1477 }
1412 1478
1413 1479 // Layouts
1414 1480 function render_layout_1($item, $atts)
@@ -1414,9 +1480,9 @@
1414 1480 function render_layout_1($item, $atts)
1415 1481 {
1416 1482
1417 1483 $this->render_reviewer_secondary_image($item);
1418 - ?>
1484 + ?>
1419 1485 <div class="ui-e-content">
1420 1486
1421 1487 <?php $this->render_review_text($item); ?>
1422 1488
@@ -1425,11 +1491,11 @@
1425 1491 <div class="ui-e-testimonial-flex">
1426 1492 <?php $this->render_reviewer_avatar($item); ?>
1427 1493 <div class="ui-e-inner-content">
1428 1494 <?php
1429 - $this->render_reviewer_name($item);
1430 - $this->render_reviewer_job_title($item);
1431 - $this->render_review_rating($item);
1495 + $this->render_reviewer_name($item);
1496 + $this->render_reviewer_job_title($item);
1497 + $this->render_review_rating($item);
1432 1498 ?>
1433 1499 </div>
1434 1500 </div>
1435 1501
@@ -1439,14 +1505,14 @@
1439 1505 $this->render_reviewer_job_title($item);
1440 1506 $this->render_review_rating($item);
1441 1507 endif; ?>
1442 1508
1443 - </div>
1444 - <?php
1509 + </div>
1510 + <?php
1445 1511 }
1446 1512 function render_layout_2($item, $atts)
1447 1513 {
1448 - ?>
1514 + ?>
1449 1515 <div class="ui-e-content">
1450 1516
1451 1517 <?php if ($atts['inline']) : ?>
1452 1518 <div class="ui-e-testimonial-flex">
@@ -1452,11 +1518,11 @@
1452 1518 <div class="ui-e-testimonial-flex">
1453 1519 <?php $this->render_reviewer_avatar($item); ?>
1454 1520 <div class="ui-e-inner-content">
1455 1521 <?php
1456 - $this->render_reviewer_name($item);
1457 - $this->render_reviewer_job_title($item);
1458 - $this->render_review_rating($item);
1522 + $this->render_reviewer_name($item);
1523 + $this->render_reviewer_job_title($item);
1524 + $this->render_review_rating($item);
1459 1525 ?>
1460 1526 </div>
1461 1527 </div>
1462 1528
@@ -1469,24 +1535,24 @@
1469 1535
1470 1536 <?php $this->render_review_text($item); ?>
1471 1537 </div>
1472 1538
1473 - <?php
1539 + <?php
1474 1540 $this->render_reviewer_secondary_image($item);
1475 1541 }
1476 1542 function render_layout_3($item, $atts)
1477 1543 {
1478 1544 $this->render_reviewer_secondary_image($item);
1479 - ?>
1545 + ?>
1480 1546 <div class="ui-e-content">
1481 1547
1482 1548 <?php
1483 - $this->render_review_rating($item);
1484 - $this->render_review_text($item);
1485 - $this->render_review_divider();
1549 + $this->render_review_rating($item);
1550 + $this->render_review_text($item);
1551 + $this->render_review_divider();
1486 1552 ?>
1487 1553
1488 - <?php if ($atts['inline']) :?>
1554 + <?php if ($atts['inline']) : ?>
1489 1555
1490 1556 <div class="ui-e-testimonial-flex">
1491 1557 <?php $this->render_reviewer_avatar($item); ?>
1492 1558 <div class="ui-e-inner-content">
@@ -1500,13 +1566,13 @@
1500 1566 $this->render_reviewer_name($item);
1501 1567 $this->render_reviewer_job_title($item);
1502 1568 endif; ?>
1503 1569 </div>
1504 - <?php
1570 + <?php
1505 1571 }
1506 1572 function render_layout_4($item)
1507 1573 {
1508 - ?>
1574 + ?>
1509 1575 <div class="ui-e-testimonial-flex">
1510 1576 <?php $this->render_reviewer_avatar($item); ?>
1511 1577 <?php $this->render_reviewer_secondary_image($item); ?>
1512 1578 </div>
@@ -1512,37 +1578,37 @@
1512 1578 </div>
1513 1579
1514 1580 <div class="ui-e-content">
1515 1581 <?php
1516 - $this->render_review_text($item);
1517 - $this->render_reviewer_name($item);
1518 - $this->render_reviewer_job_title($item);
1519 - $this->render_review_rating($item);
1582 + $this->render_review_text($item);
1583 + $this->render_reviewer_name($item);
1584 + $this->render_reviewer_job_title($item);
1585 + $this->render_review_rating($item);
1520 1586 ?>
1521 1587 </div>
1522 - <?php
1588 + <?php
1523 1589 }
1524 1590 function render_layout_5($item)
1525 1591 {
1526 - ?>
1592 + ?>
1527 1593 <div class="ui-e-testimonial-flex">
1528 1594 <div class="ui-e-content">
1529 1595
1530 1596 <?php
1531 - $this->render_reviewer_secondary_image($item);
1532 - $this->render_review_text($item);
1533 - $this->render_review_rating($item);
1534 - $this->render_reviewer_name($item);
1535 - $this->render_reviewer_job_title($item);
1597 + $this->render_reviewer_secondary_image($item);
1598 + $this->render_review_text($item);
1599 + $this->render_review_rating($item);
1600 + $this->render_reviewer_name($item);
1601 + $this->render_reviewer_job_title($item);
1536 1602 ?>
1537 1603 </div>
1538 1604 <?php $this->render_reviewer_avatar($item); ?>
1539 1605 </div>
1540 - <?php
1606 + <?php
1541 1607 }
1542 1608 function render_layout_6($item)
1543 1609 {
1544 - ?>
1610 + ?>
1545 1611 <div class="ui-e-testimonial-flex">
1546 1612
1547 1613 <?php $this->render_reviewer_avatar($item); ?>
1548 1614
@@ -1547,15 +1613,15 @@
1547 1613 <?php $this->render_reviewer_avatar($item); ?>
1548 1614
1549 1615 <div class="ui-e-content">
1550 1616 <?php
1551 - $this->render_reviewer_name($item);
1552 - $this->render_reviewer_job_title($item);
1553 - $this->render_review_rating($item);
1554 - $this->render_review_text($item);
1555 - $this->render_reviewer_secondary_image($item);
1617 + $this->render_reviewer_name($item);
1618 + $this->render_reviewer_job_title($item);
1619 + $this->render_review_rating($item);
1620 + $this->render_review_text($item);
1621 + $this->render_reviewer_secondary_image($item);
1556 1622 ?>
1557 1623 </div>
1558 1624 </div>
1559 - <?php
1625 +<?php
1560 1626 }
1561 -}
1627 +}