PluginProbe
UiCore Elements – Free widgets and templates for Elementor / 1.0.10
UiCore Elements – Free widgets and templates for Elementor v1.0.10
1.3.18 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 All 42 releases
uicore-elements / includes / utils / testimonial-component.php

testimonial-component.php in UiCore Elements – Free widgets and templates for Elementor 1.0.10, at includes/utils/testimonial-component.php

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