PluginProbe
Ultimate Post Kit – Elementor Post Grid, Post Carousel, Post Slider & Blog Layout Widgets / 4.1.0
Ultimate Post Kit – Elementor Post Grid, Post Carousel, Post Slider & Blog Layout Widgets v4.1.0
4.5.4 4.2.1 4.2.2 4.2.3 4.5.0 4.5.2 4.5.3 4.2.0 4.1.18 4.1.17 4.1.16 4.1.15 4.1.14 4.1.13 4.1.12 4.1.11 4.1.10 4.1.9 4.1.8 4.0.9 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 All 146 releases
ultimate-post-kit / modules / author / widgets / author.php

author.php in Ultimate Post Kit – Elementor Post Grid, Post Carousel, Post Slider & Blog Layout Widgets 4.1.0, at modules/author/widgets/author.php

1,468 lines 37.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace UltimatePostKit\Modules\Author\Widgets;
4
5 use UltimatePostKit\Base\Module_Base;
6 use Elementor\Controls_Manager;
7 use Elementor\Group_Control_Border;
8 use Elementor\Group_Control_Box_Shadow;
9 use Elementor\Group_Control_Typography;
10 use Elementor\Group_Control_Text_Shadow;
11 use Elementor\Group_Control_Background;
12 use Elementor\Group_Control_Css_Filter;
13
14 if (!defined('ABSPATH')) {
15 exit;
16 } // Exit if accessed directly
17
18 class Author extends Module_Base {
19 private $_query = null;
20
21 public function get_name() {
22 return 'upk-author';
23 }
24
25 public function get_title() {
26 return BDTUPK . esc_html__('Author', 'ultimate-post-kit');
27 }
28
29 public function get_icon() {
30 return 'upk-widget-icon upk-icon-author';
31 }
32
33 public function get_categories() {
34 return ['ultimate-post-kit'];
35 }
36
37 public function get_keywords() {
38 return ['post', 'grid', 'blog', 'recent', 'news', 'author', 'list'];
39 }
40
41 public function get_style_depends() {
42 if ($this->upk_is_edit_mode()) {
43 return ['upk-all-styles'];
44 } else {
45 return ['upk-font', 'upk-author'];
46 }
47 }
48
49 public function get_custom_help_url() {
50 return 'https://youtu.be/rW8rTtw62ko';
51 }
52
53
54 public function get_query() {
55 return $this->_query;
56 }
57
58 public function has_widget_inner_wrapper(): bool {
59 return ! \Elementor\Plugin::$instance->experiments->is_feature_active( 'e_optimized_markup' );
60 }
61
62
63 protected function register_controls() {
64 $this->start_controls_section(
65 'section_content_layout',
66 [
67 'label' => esc_html__('Layout', 'ultimate-post-kit'),
68 ]
69 );
70
71 $this->add_control(
72 'layout_style',
73 [
74 'label' => esc_html__('Style', 'ultimate-post-kit'),
75 'type' => Controls_Manager::SELECT,
76 'default' => 'grid_1',
77 'options' => [
78 'grid_1' => esc_html__('Grid', 'ultimate-post-kit'),
79 'list' => esc_html__('List', 'ultimate-post-kit'),
80 ],
81 ]
82 );
83
84 $this->add_responsive_control(
85 'grid_columns',
86 [
87 'label' => __('Columns', 'ultimate-post-kit'),
88 'type' => Controls_Manager::SELECT,
89 'default' => '4',
90 'tablet_default' => '2',
91 'mobile_default' => '1',
92 'options' => [
93 '1' => '1',
94 '2' => '2',
95 '3' => '3',
96 '4' => '4',
97 '5' => '5',
98 '6' => '6',
99 ],
100 'selectors' => [
101 '{{WRAPPER}} .upk-author-wrapper.upk-grid_1' => 'grid-template-columns: repeat({{SIZE}}, 1fr);',
102 ],
103 'condition' => [
104 'layout_style' => ['grid_1']
105 ]
106 ]
107 );
108
109 $this->add_responsive_control(
110 'list_columns',
111 [
112 'label' => __('Columns', 'ultimate-post-kit'),
113 'type' => Controls_Manager::SELECT,
114 'default' => '2',
115 'tablet_default' => '2',
116 'mobile_default' => '1',
117 'options' => [
118 '1' => '1',
119 '2' => '2',
120 '3' => '3',
121 ],
122 'selectors' => [
123 '{{WRAPPER}} .upk-author-wrapper.upk-list' => 'grid-template-columns: repeat({{SIZE}}, 1fr);',
124 ],
125 'condition' => [
126 'layout_style' => 'list'
127 ]
128 ]
129 );
130
131 $this->add_responsive_control(
132 'column_gap',
133 [
134 'label' => esc_html__('Column Gap', 'ultimate-post-kit'),
135 'type' => Controls_Manager::SLIDER,
136 'default' => [
137 'size' => 20,
138 ],
139 'selectors' => [
140 '{{WRAPPER}} .upk-author-wrapper' => 'grid-gap: {{SIZE}}{{UNIT}};',
141 ],
142 ]
143 );
144
145 $this->add_responsive_control(
146 'alignment',
147 [
148 'label' => __('Alignment', 'ultimate-post-kit'),
149 'type' => Controls_Manager::CHOOSE,
150 'options' => [
151 'left' => [
152 'title' => __('Left', 'ultimate-post-kit'),
153 'icon' => 'eicon-text-align-left',
154 ],
155 'center' => [
156 'title' => __('Center', 'ultimate-post-kit'),
157 'icon' => 'eicon-text-align-center',
158 ],
159 'right' => [
160 'title' => __('Right', 'ultimate-post-kit'),
161 'icon' => 'eicon-text-align-right',
162 ]
163 ],
164 'selectors' => [
165 '{{WRAPPER}} .upk-author-wrapper .upk-content' => 'text-align: {{VALUE}};',
166 ],
167 ]
168 );
169
170 $this->add_responsive_control(
171 'meta_alignment',
172 [
173 'label' => __('Meta Alignment', 'ultimate-post-kit'),
174 'type' => Controls_Manager::CHOOSE,
175 'options' => [
176 'left' => [
177 'title' => __('Left', 'ultimate-post-kit'),
178 'icon' => 'eicon-text-align-left',
179 ],
180 'center' => [
181 'title' => __('Center', 'ultimate-post-kit'),
182 'icon' => 'eicon-text-align-center',
183 ],
184 'flex-end' => [
185 'title' => __('Right', 'ultimate-post-kit'),
186 'icon' => 'eicon-text-align-right',
187 ]
188 ],
189 'selectors' => [
190 '{{WRAPPER}} .upk-author-wrapper .upk-link' => 'justify-content: {{VALUE}};',
191 ],
192 ]
193 );
194
195 $this->add_control(
196 'hr',
197 [
198 'type' => Controls_Manager::DIVIDER,
199 ]
200 );
201
202 $this->add_control(
203 'show_author_avatar',
204 [
205 'label' => esc_html__('Show Avatar', 'ultimate-post-kit'),
206 'type' => Controls_Manager::SWITCHER,
207 'default' => 'yes',
208 ]
209 );
210
211 $this->add_control(
212 'author_avatar_size',
213 [
214 'label' => __('Avatar Size', 'ultimate-post-kit'),
215 'type' => Controls_Manager::SELECT,
216 'condition' => [
217 'show_author_avatar' => 'yes'
218 ],
219 'options' => [
220 '25' => '25 x 25',
221 '35' => '35 x 35',
222 '45' => '45 x 45',
223 '60' => '60 x 60',
224 '80' => '80 x 80',
225 '100' => '100 x 100',
226 '150' => '150 x 150',
227 '200' => '200 x 200',
228 '250' => '250 x 250',
229 ],
230 'default' => '250',
231 ]
232 );
233
234 $this->add_control(
235 'show_author_name',
236 [
237 'label' => esc_html__('Show Name', 'ultimate-post-kit'),
238 'type' => Controls_Manager::SWITCHER,
239 'default' => 'yes',
240 ]
241 );
242
243 $this->add_control(
244 'show_author_role',
245 [
246 'label' => esc_html__('Show Role', 'ultimate-post-kit'),
247 'type' => Controls_Manager::SWITCHER,
248 'default' => 'yes',
249 ]
250 );
251
252 $this->add_control(
253 'show_author_description',
254 [
255 'label' => esc_html__('Show Description', 'ultimate-post-kit'),
256 'type' => Controls_Manager::SWITCHER,
257 'default' => 'yes',
258 ]
259 );
260
261 $this->add_control(
262 'show_post_count',
263 [
264 'label' => esc_html__('Show Post Count', 'ultimate-post-kit'),
265 'type' => Controls_Manager::SWITCHER,
266 'default' => 'yes',
267 ]
268 );
269
270 $this->add_control(
271 'show_author_link',
272 [
273 'label' => esc_html__('Show Social Link', 'ultimate-post-kit'),
274 'type' => Controls_Manager::SWITCHER,
275 'default' => 'yes',
276 ]
277 );
278
279 $this->add_control(
280 'social_links',
281 [
282 'label' => __('Social Links', 'ultimate-post-kit'),
283 'type' => Controls_Manager::SELECT2,
284 'multiple' => true,
285 'label_block' => false,
286 'default' => ['email', 'url'],
287 'options' => ultimate_post_kit_user_contact_methods([], true),
288 'condition' => [
289 'show_author_link' => 'yes'
290 ]
291 ]
292 );
293
294 $this->end_controls_section();
295
296 $this->start_controls_section(
297 'section_post_grid_query',
298 [
299 'label' => esc_html__('Query', 'ultimate-post-kit'),
300 ]
301 );
302
303 $this->add_control(
304 'item_limit',
305 [
306 'label' => esc_html__('Item Limit', 'ultimate-post-kit'),
307 'type' => Controls_Manager::SLIDER,
308 'range' => [
309 'px' => [
310 'min' => 1,
311 'max' => 20,
312 ],
313 ],
314 'default' => [
315 'size' => 8,
316 ],
317 ]
318 );
319
320 $this->add_control(
321 'role',
322 [
323 'label' => esc_html__('Role', 'ultimate-post-kit'),
324 'type' => Controls_Manager::SELECT2,
325 'multiple' => true,
326 'label_block' => false,
327 'options' => [
328 'subscriber' => esc_html__('Subscriber', 'ultimate-post-kit'),
329 'contributor' => esc_html__('Contributor', 'ultimate-post-kit'),
330 'author' => esc_html__('Author', 'ultimate-post-kit'),
331 'editor' => esc_html__('Editor', 'ultimate-post-kit'),
332 'administrator' => esc_html__('Administrator', 'ultimate-post-kit'),
333 ],
334 ]
335 );
336
337 $this->add_control(
338 'exclude',
339 [
340 'label' => esc_html__('Exclude User by ID', 'ultimate-post-kit'),
341 'type' => Controls_Manager::TEXT,
342 'placeholder' => __('1,2', 'ultimate-post-kit'),
343 ]
344 );
345
346 $this->add_control(
347 'orderby',
348 [
349 'label' => esc_html__('Order By', 'ultimate-post-kit'),
350 'type' => Controls_Manager::SELECT,
351 'default' => 'display_name',
352 'options' => [
353 'display_name' => esc_html__('Nicename', 'ultimate-post-kit'),
354 'post_count' => esc_html__('Post Count', 'ultimate-post-kit'),
355 'registered' => esc_html__('Registered', 'ultimate-post-kit'),
356 'rand' => esc_html__('Random', 'ultimate-post-kit'),
357 ],
358 ]
359 );
360
361 $this->add_control(
362 'order',
363 [
364 'label' => esc_html__('Order', 'ultimate-post-kit'),
365 'type' => Controls_Manager::SELECT,
366 'default' => 'desc',
367 'options' => [
368 'asc' => esc_html__('ASC', 'ultimate-post-kit'),
369 'desc' => esc_html__('DESC', 'ultimate-post-kit'),
370 ],
371 ]
372 );
373
374 $this->end_controls_section();
375
376 //Style
377 $this->start_controls_section(
378 'upk_section_style',
379 [
380 'label' => esc_html__('Item', 'ultimate-post-kit'),
381 'tab' => Controls_Manager::TAB_STYLE,
382 ]
383 );
384
385 $this->add_responsive_control(
386 'content_padding',
387 [
388 'label' => __('Content Padding', 'ultimate-post-kit'),
389 'type' => Controls_Manager::DIMENSIONS,
390 'size_units' => ['px', 'em', '%'],
391 'selectors' => [
392 '{{WRAPPER}} .upk-author-wrapper .upk-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
393 ],
394 ]
395 );
396
397 $this->start_controls_tabs('tabs_item_style');
398
399 $this->start_controls_tab(
400 'tab_item_normal',
401 [
402 'label' => esc_html__('Normal', 'ultimate-post-kit'),
403 ]
404 );
405
406 $this->add_control(
407 'glassmorphism_effect',
408 [
409 'label' => esc_html__('Glassmorphism', 'ultimate-post-kit'),
410 'type' => Controls_Manager::SWITCHER,
411 // translators: %1s: Opening anchor tag with link to MDN backdrop-filter documentation, %2s: Closing anchor tag
412 'description' => sprintf(__('This feature will not work in the Firefox browser untill you enable browser compatibility so please %1s look here %2s', 'ultimate-post-kit'), '<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility" target="_blank">', '</a>'),
413
414 ]
415 );
416
417 $this->add_control(
418 'glassmorphism_blur_level',
419 [
420 'label' => __('Blur Level', 'ultimate-post-kit'),
421 'type' => Controls_Manager::SLIDER,
422 'range' => [
423 'px' => [
424 'min' => 0,
425 'step' => 1,
426 'max' => 50,
427 ]
428 ],
429 'default' => [
430 'size' => 5
431 ],
432 'selectors' => [
433 '{{WRAPPER}} .upk-author-wrapper .upk-item' => 'backdrop-filter: blur({{SIZE}}px); -webkit-backdrop-filter: blur({{SIZE}}px);'
434 ],
435 'condition' => [
436 'glassmorphism_effect' => 'yes',
437 ]
438 ]
439 );
440
441 $this->add_group_control(
442 Group_Control_Background::get_type(),
443 [
444 'name' => 'item_background',
445 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-item',
446 ]
447 );
448
449 $this->add_group_control(
450 Group_Control_Border::get_type(),
451 [
452 'name' => 'item_border',
453 'label' => __('Border', 'ultimate-post-kit'),
454 'fields_options' => [
455 'border' => [
456 'default' => 'solid',
457 ],
458 'width' => [
459 'default' => [
460 'top' => '1',
461 'right' => '1',
462 'bottom' => '1',
463 'left' => '1',
464 'isLinked' => false,
465 ],
466 ],
467 'color' => [
468 'default' => '#e9edf4',
469 ],
470 ],
471 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-item',
472 ]
473 );
474
475 $this->add_responsive_control(
476 'item_border_radius',
477 [
478 'label' => esc_html__('Border Radius', 'ultimate-post-kit'),
479 'type' => Controls_Manager::DIMENSIONS,
480 'size_units' => ['px', '%'],
481 'selectors' => [
482 '{{WRAPPER}} .upk-author-wrapper .upk-item' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
483 ],
484 ]
485 );
486
487 $this->add_responsive_control(
488 'item_padding',
489 [
490 'label' => __('Padding', 'ultimate-post-kit'),
491 'type' => Controls_Manager::DIMENSIONS,
492 'size_units' => ['px', 'em', '%'],
493 'selectors' => [
494 '{{WRAPPER}} .upk-author-wrapper .upk-item' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
495 ],
496 ]
497 );
498
499 $this->add_group_control(
500 Group_Control_Box_Shadow::get_type(),
501 [
502 'name' => 'item_box_shadow',
503 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-item',
504 ]
505 );
506
507 $this->end_controls_tab();
508
509 $this->start_controls_tab(
510 'tab_item_hover',
511 [
512 'label' => esc_html__('Hover', 'ultimate-post-kit'),
513 ]
514 );
515
516 $this->add_group_control(
517 Group_Control_Background::get_type(),
518 [
519 'name' => 'item_hover_background',
520 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-item:hover',
521 ]
522 );
523
524 $this->add_control(
525 'item_border_hover_color',
526 [
527 'label' => esc_html__('Border Color', 'ultimate-post-kit'),
528 'type' => Controls_Manager::COLOR,
529 'selectors' => [
530 '{{WRAPPER}} .upk-author-wrapper .upk-item:hover' => 'border-color: {{VALUE}};',
531 ],
532 'condition' => [
533 'item_border_border!' => '',
534 ]
535 ]
536 );
537
538 $this->add_group_control(
539 Group_Control_Box_Shadow::get_type(),
540 [
541 'name' => 'item_box_shadow_hover',
542 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-item:hover',
543 ]
544 );
545
546 $this->end_controls_tab();
547
548 $this->end_controls_tabs();
549
550 $this->end_controls_section();
551
552 $this->start_controls_section(
553 'section_style_image',
554 [
555 'label' => esc_html__('Avatar', 'ultimate-post-kit'),
556 'tab' => Controls_Manager::TAB_STYLE,
557 'condition' => [
558 'show_author_avatar' => 'yes',
559 ],
560 ]
561 );
562
563 $this->add_control(
564 'image_mask_popover',
565 [
566 'label' => esc_html__('Image Mask', 'ultimate-post-kit'),
567 'type' => Controls_Manager::POPOVER_TOGGLE,
568 'render_type' => 'ui',
569 'return_value' => 'yes',
570 ]
571 );
572
573 $this->start_popover();
574
575 $this->add_control(
576 'image_mask_shape',
577 [
578 'label' => esc_html__('Masking Shape', 'ultimate-post-kit'),
579 'title' => esc_html__('Masking Shape', 'ultimate-post-kit'),
580 'type' => Controls_Manager::CHOOSE,
581 'default' => 'default',
582 'options' => [
583 'default' => [
584 'title' => esc_html__('Default Shapes', 'ultimate-post-kit'),
585 'icon' => 'eicon-star',
586 ],
587 'custom' => [
588 'title' => esc_html__('Custom Shape', 'ultimate-post-kit'),
589 'icon' => 'eicon-image-bold',
590 ],
591 ],
592 'toggle' => false,
593 'condition' => [
594 'image_mask_popover' => 'yes',
595 ],
596 ]
597 );
598
599 $this->add_control(
600 'image_mask_shape_default',
601 [
602 'label' => _x('Default', 'Mask Image', 'ultimate-post-kit'),
603 'label_block' => true,
604 'show_label' => false,
605 'type' => Controls_Manager::SELECT,
606 'default' => 0,
607 'options' => ultimate_post_kit_mask_shapes(),
608 'selectors' => [
609 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => '-webkit-mask-image: url({{VALUE}}); mask-image: url({{VALUE}});',
610 ],
611 'condition' => [
612 'image_mask_popover' => 'yes',
613 'image_mask_shape' => 'default',
614 ],
615 'style_transfer' => true,
616 ]
617 );
618
619 $this->add_control(
620 'image_mask_shape_custom',
621 [
622 'label' => _x('Custom Shape', 'Mask Image', 'ultimate-post-kit'),
623 'type' => Controls_Manager::MEDIA,
624 'dynamic' => ['active' => true],
625 'show_label' => false,
626 'selectors' => [
627 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => '-webkit-mask-image: url({{URL}}); mask-image: url({{URL}});',
628 ],
629 'condition' => [
630 'image_mask_popover' => 'yes',
631 'image_mask_shape' => 'custom',
632 ],
633 ]
634 );
635
636 $this->add_control(
637 'image_mask_shape_position',
638 [
639 'label' => esc_html__('Position', 'ultimate-post-kit'),
640 'type' => Controls_Manager::SELECT,
641 'default' => 'center-center',
642 'options' => [
643 'center-center' => esc_html__('Center Center', 'ultimate-post-kit'),
644 'center-left' => esc_html__('Center Left', 'ultimate-post-kit'),
645 'center-right' => esc_html__('Center Right', 'ultimate-post-kit'),
646 'top-center' => esc_html__('Top Center', 'ultimate-post-kit'),
647 'top-left' => esc_html__('Top Left', 'ultimate-post-kit'),
648 'top-right' => esc_html__('Top Right', 'ultimate-post-kit'),
649 'bottom-center' => esc_html__('Bottom Center', 'ultimate-post-kit'),
650 'bottom-left' => esc_html__('Bottom Left', 'ultimate-post-kit'),
651 'bottom-right' => esc_html__('Bottom Right', 'ultimate-post-kit'),
652 ],
653 'selectors_dictionary' => [
654 'center-center' => 'center center',
655 'center-left' => 'center left',
656 'center-right' => 'center right',
657 'top-center' => 'top center',
658 'top-left' => 'top left',
659 'top-right' => 'top right',
660 'bottom-center' => 'bottom center',
661 'bottom-left' => 'bottom left',
662 'bottom-right' => 'bottom right',
663 ],
664 'selectors' => [
665 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => '-webkit-mask-position: {{VALUE}}; mask-position: {{VALUE}};',
666 ],
667 'condition' => [
668 'image_mask_popover' => 'yes',
669 ],
670 ]
671 );
672
673 $this->add_control(
674 'image_mask_shape_size',
675 [
676 'label' => esc_html__('Size', 'ultimate-post-kit'),
677 'type' => Controls_Manager::SELECT,
678 'default' => 'contain',
679 'options' => [
680 'auto' => esc_html__('Auto', 'ultimate-post-kit'),
681 'cover' => esc_html__('Cover', 'ultimate-post-kit'),
682 'contain' => esc_html__('Contain', 'ultimate-post-kit'),
683 'initial' => esc_html__('Custom', 'ultimate-post-kit'),
684 ],
685 'selectors' => [
686 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => '-webkit-mask-size: {{VALUE}}; mask-size: {{VALUE}};',
687 ],
688 'condition' => [
689 'image_mask_popover' => 'yes',
690 ],
691 ]
692 );
693
694 $this->add_control(
695 'image_mask_shape_custom_size',
696 [
697 'label' => _x('Custom Size', 'Mask Image', 'ultimate-post-kit'),
698 'type' => Controls_Manager::SLIDER,
699 'responsive' => true,
700 'size_units' => ['px', 'em', '%', 'vw'],
701 'range' => [
702 'px' => [
703 'min' => 0,
704 'max' => 1000,
705 ],
706 'em' => [
707 'min' => 0,
708 'max' => 100,
709 ],
710 '%' => [
711 'min' => 0,
712 'max' => 100,
713 ],
714 'vw' => [
715 'min' => 0,
716 'max' => 100,
717 ],
718 ],
719 'default' => [
720 'size' => 100,
721 'unit' => '%',
722 ],
723 'required' => true,
724 'selectors' => [
725 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => '-webkit-mask-size: {{SIZE}}{{UNIT}}; mask-size: {{SIZE}}{{UNIT}};',
726 ],
727 'condition' => [
728 'image_mask_popover' => 'yes',
729 'image_mask_shape_size' => 'initial',
730 ],
731 ]
732 );
733
734 $this->add_control(
735 'image_mask_shape_repeat',
736 [
737 'label' => esc_html__('Repeat', 'ultimate-post-kit'),
738 'type' => Controls_Manager::SELECT,
739 'default' => 'no-repeat',
740 'options' => [
741 'repeat' => esc_html__('Repeat', 'ultimate-post-kit'),
742 'repeat-x' => esc_html__('Repeat-x', 'ultimate-post-kit'),
743 'repeat-y' => esc_html__('Repeat-y', 'ultimate-post-kit'),
744 'space' => esc_html__('Space', 'ultimate-post-kit'),
745 'round' => esc_html__('Round', 'ultimate-post-kit'),
746 'no-repeat' => esc_html__('No-repeat', 'ultimate-post-kit'),
747 'repeat-space' => esc_html__('Repeat Space', 'ultimate-post-kit'),
748 'round-space' => esc_html__('Round Space', 'ultimate-post-kit'),
749 'no-repeat-round' => esc_html__('No-repeat Round', 'ultimate-post-kit'),
750 ],
751 'selectors_dictionary' => [
752 'repeat' => 'repeat',
753 'repeat-x' => 'repeat-x',
754 'repeat-y' => 'repeat-y',
755 'space' => 'space',
756 'round' => 'round',
757 'no-repeat' => 'no-repeat',
758 'repeat-space' => 'repeat space',
759 'round-space' => 'round space',
760 'no-repeat-round' => 'no-repeat round',
761 ],
762 'selectors' => [
763 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => '-webkit-mask-repeat: {{VALUE}}; mask-repeat: {{VALUE}};',
764 ],
765 'condition' => [
766 'image_mask_popover' => 'yes',
767 ],
768 ]
769 );
770
771 $this->end_popover();
772
773 $this->add_group_control(
774 Group_Control_Border::get_type(),
775 [
776 'name' => 'avatar_border',
777 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-image a img',
778 'separator' => 'before'
779 ]
780 );
781
782 $this->add_responsive_control(
783 'avatar_border_radius',
784 [
785 'label' => esc_html__('Border Radius', 'ultimate-post-kit'),
786 'type' => Controls_Manager::DIMENSIONS,
787 'size_units' => ['px', '%'],
788 'selectors' => [
789 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
790 ],
791 ]
792 );
793
794 $this->add_responsive_control(
795 'avatar_padding',
796 [
797 'label' => __('Padding', 'ultimate-post-kit'),
798 'type' => Controls_Manager::DIMENSIONS,
799 'size_units' => ['px', 'em', '%'],
800 'selectors' => [
801 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
802 ],
803 ]
804 );
805
806 $this->add_responsive_control(
807 'avatar_margin',
808 [
809 'label' => __('Margin', 'ultimate-post-kit'),
810 'type' => Controls_Manager::DIMENSIONS,
811 'size_units' => ['px', 'em', '%'],
812 'selectors' => [
813 '{{WRAPPER}} .upk-author-wrapper .upk-image' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
814 ],
815 'condition' => [
816 'layout_style' => ['grid_1']
817 ]
818 ]
819 );
820
821 $this->add_group_control(
822 Group_Control_Box_Shadow::get_type(),
823 [
824 'name' => 'avatar_box_shadow',
825 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-image a img',
826 ]
827 );
828
829 $this->add_responsive_control(
830 'avatar_size',
831 [
832 'label' => esc_html__('Size(px)', 'ultimate-post-kit'),
833 'type' => Controls_Manager::SLIDER,
834 'range' => [
835 'px' => [
836 'min' => 50,
837 'max' => 200,
838 ],
839 ],
840 'selectors' => [
841 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => 'height: {{SIZE}}{{UNIT}}; width: {{SIZE}}{{UNIT}}; min-width: {{SIZE}}{{UNIT}};',
842 ],
843 'condition' => [
844 'layout_style' => ['list']
845 ]
846 ]
847 );
848
849 $this->add_responsive_control(
850 'avatar_spacing',
851 [
852 'label' => esc_html__('Spacing', 'ultimate-post-kit'),
853 'type' => Controls_Manager::SLIDER,
854 'range' => [
855 'px' => [
856 'min' => 0,
857 'max' => 50,
858 ],
859 ],
860 'selectors' => [
861 '{{WRAPPER}} .upk-author-wrapper .upk-image' => 'margin-right: {{SIZE}}{{UNIT}};',
862 ],
863 'condition' => [
864 'layout_style' => 'list'
865 ]
866 ]
867 );
868
869 $this->start_controls_tabs('tabs_avatar_style');
870
871 $this->start_controls_tab(
872 'tab_avatar_normal',
873 [
874 'label' => esc_html__('Normal', 'ultimate-post-kit'),
875 ]
876 );
877
878 $this->add_group_control(
879 Group_Control_Css_Filter::get_type(),
880 [
881 'name' => 'css_filters',
882 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-image a img',
883 ]
884 );
885
886 $this->end_controls_tab();
887
888 $this->start_controls_tab(
889 'tab_avatar_hover',
890 [
891 'label' => esc_html__('Hover', 'ultimate-post-kit'),
892 ]
893 );
894
895 $this->add_group_control(
896 Group_Control_Css_Filter::get_type(),
897 [
898 'name' => 'hover_css_filters',
899 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-item:hover .upk-image a img',
900 ]
901 );
902
903 $this->end_controls_tab();
904
905 $this->end_controls_tabs();
906
907 $this->end_controls_section();
908
909 $this->start_controls_section(
910 'section_style_title',
911 [
912 'label' => esc_html__('Name', 'ultimate-post-kit'),
913 'tab' => Controls_Manager::TAB_STYLE,
914 'condition' => [
915 'show_author_name' => 'yes',
916 ],
917 ]
918 );
919
920 $this->add_control(
921 'name_color',
922 [
923 'label' => esc_html__('Color', 'ultimate-post-kit'),
924 'type' => Controls_Manager::COLOR,
925 'selectors' => [
926 '{{WRAPPER}} .upk-author-wrapper .upk-name a' => 'color: {{VALUE}};',
927 ],
928 ]
929 );
930
931 $this->add_control(
932 'name_hover_color',
933 [
934 'label' => esc_html__('Hover Color', 'ultimate-post-kit'),
935 'type' => Controls_Manager::COLOR,
936 'selectors' => [
937 '{{WRAPPER}} .upk-author-wrapper .upk-name a:hover' => 'color: {{VALUE}};',
938 ],
939 ]
940 );
941
942 $this->add_group_control(
943 Group_Control_Typography::get_type(),
944 [
945 'name' => 'name_typography',
946 'label' => esc_html__('Typography', 'ultimate-post-kit'),
947 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-name a',
948 ]
949 );
950
951 $this->add_group_control(
952 Group_Control_Text_Shadow::get_type(),
953 [
954 'name' => 'name_text_shadow',
955 'label' => __('Text Shadow', 'ultimate-post-kit'),
956 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-name a',
957 ]
958 );
959
960 $this->end_controls_section();
961
962 $this->start_controls_section(
963 'section_style_role',
964 [
965 'label' => esc_html__('Role', 'ultimate-post-kit'),
966 'tab' => Controls_Manager::TAB_STYLE,
967 'condition' => [
968 'show_author_role' => 'yes',
969 ]
970 ]
971 );
972
973 $this->add_control(
974 'role_color',
975 [
976 'label' => esc_html__('Color', 'ultimate-post-kit'),
977 'type' => Controls_Manager::COLOR,
978 'selectors' => [
979 '{{WRAPPER}} .upk-author-wrapper .upk-role' => 'color: {{VALUE}};',
980 ],
981 ]
982 );
983
984 $this->add_group_control(
985 Group_Control_Typography::get_type(),
986 [
987 'name' => 'role_typography',
988 'label' => esc_html__('Typography', 'ultimate-post-kit'),
989 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-role',
990 ]
991 );
992
993 $this->add_responsive_control(
994 'role_spacing',
995 [
996 'label' => esc_html__('Spacing', 'ultimate-post-kit'),
997 'type' => Controls_Manager::SLIDER,
998 'range' => [
999 'px' => [
1000 'min' => 0,
1001 'max' => 50,
1002 ],
1003 ],
1004 'selectors' => [
1005 '{{WRAPPER}} .upk-author-wrapper .upk-role' => 'padding-top: {{SIZE}}{{UNIT}};',
1006 ],
1007 ]
1008 );
1009
1010 $this->end_controls_section();
1011
1012 $this->start_controls_section(
1013 'section_style_description',
1014 [
1015 'label' => esc_html__('Description', 'ultimate-post-kit'),
1016 'tab' => Controls_Manager::TAB_STYLE,
1017 'condition' => [
1018 'show_author_description' => 'yes',
1019 ]
1020 ]
1021 );
1022
1023 $this->add_control(
1024 'description_color',
1025 [
1026 'label' => esc_html__('Color', 'ultimate-post-kit'),
1027 'type' => Controls_Manager::COLOR,
1028 'selectors' => [
1029 '{{WRAPPER}} .upk-author-wrapper .upk-description' => 'color: {{VALUE}};',
1030 ],
1031 ]
1032 );
1033
1034 $this->add_group_control(
1035 Group_Control_Typography::get_type(),
1036 [
1037 'name' => 'description_typography',
1038 'label' => esc_html__('Typography', 'ultimate-post-kit'),
1039 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-description',
1040 ]
1041 );
1042
1043 $this->add_responsive_control(
1044 'description_spacing',
1045 [
1046 'label' => esc_html__('Spacing', 'ultimate-post-kit'),
1047 'type' => Controls_Manager::SLIDER,
1048 'range' => [
1049 'px' => [
1050 'min' => 0,
1051 'max' => 50,
1052 ],
1053 ],
1054 'selectors' => [
1055 '{{WRAPPER}} .upk-author-wrapper .upk-description' => 'padding-top: {{SIZE}}{{UNIT}};',
1056 ],
1057 ]
1058 );
1059
1060 $this->end_controls_section();
1061
1062 $this->start_controls_section(
1063 'section_style_post_count',
1064 [
1065 'label' => esc_html__('Post Count', 'ultimate-post-kit'),
1066 'tab' => Controls_Manager::TAB_STYLE,
1067 'condition' => [
1068 'show_post_count' => 'yes',
1069 ]
1070 ]
1071 );
1072
1073 $this->add_control(
1074 'post_count_color',
1075 [
1076 'label' => esc_html__('Color', 'ultimate-post-kit'),
1077 'type' => Controls_Manager::COLOR,
1078 'selectors' => [
1079 '{{WRAPPER}} .upk-author-wrapper .upk-post-count' => 'color: {{VALUE}};',
1080 ],
1081 ]
1082 );
1083
1084 $this->add_group_control(
1085 Group_Control_Background::get_type(),
1086 [
1087 'name' => 'post_count_background',
1088 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-post-count',
1089 ]
1090 );
1091
1092 $this->add_group_control(
1093 Group_Control_Border::get_type(),
1094 [
1095 'name' => 'post_count_border',
1096 'label' => __('Border', 'ultimate-post-kit'),
1097 'fields_options' => [
1098 'border' => [
1099 'default' => 'solid',
1100 ],
1101 'width' => [
1102 'default' => [
1103 'top' => '1',
1104 'right' => '1',
1105 'bottom' => '1',
1106 'left' => '1',
1107 'isLinked' => false,
1108 ],
1109 ],
1110 // 'color' => [
1111 // 'default' => '#8D99AE',
1112 // ],
1113 ],
1114 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-post-count',
1115 ]
1116 );
1117
1118 $this->add_responsive_control(
1119 'post_count_border_radius',
1120 [
1121 'label' => esc_html__('Border Radius', 'ultimate-post-kit'),
1122 'type' => Controls_Manager::DIMENSIONS,
1123 'size_units' => ['px', '%'],
1124 'selectors' => [
1125 '{{WRAPPER}} .upk-author-wrapper .upk-post-count' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1126 ],
1127 ]
1128 );
1129
1130 $this->add_responsive_control(
1131 'post_count_padding',
1132 [
1133 'label' => esc_html__('Padding', 'ultimate-post-kit'),
1134 'type' => Controls_Manager::DIMENSIONS,
1135 'size_units' => ['px', 'em', '%'],
1136 'selectors' => [
1137 '{{WRAPPER}} .upk-author-wrapper .upk-post-count' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1138 ],
1139 ]
1140 );
1141
1142 $this->add_group_control(
1143 Group_Control_Box_Shadow::get_type(),
1144 [
1145 'name' => 'post_count_shadow',
1146 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-post-count',
1147 ]
1148 );
1149
1150 $this->add_group_control(
1151 Group_Control_Typography::get_type(),
1152 [
1153 'name' => 'post_count_typography',
1154 'label' => esc_html__('Typography', 'ultimate-post-kit'),
1155 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-post-count',
1156 ]
1157 );
1158
1159 $this->add_responsive_control(
1160 'post_count_spacing',
1161 [
1162 'label' => esc_html__('Spacing', 'ultimate-post-kit'),
1163 'type' => Controls_Manager::SLIDER,
1164 'range' => [
1165 'px' => [
1166 'min' => 0,
1167 'max' => 50,
1168 ],
1169 ],
1170 'selectors' => [
1171 '{{WRAPPER}} .upk-author-wrapper .upk-post-count' => 'top: {{SIZE}}{{UNIT}}; right: {{SIZE}}{{UNIT}};',
1172 ],
1173 ]
1174 );
1175
1176 $this->end_controls_section();
1177
1178 $this->start_controls_section(
1179 'section_style_social_link',
1180 [
1181 'label' => esc_html__('Social Link', 'ultimate-post-kit'),
1182 'tab' => Controls_Manager::TAB_STYLE,
1183 'condition' => [
1184 'show_author_link' => 'yes',
1185 ],
1186 ]
1187 );
1188
1189 $this->add_responsive_control(
1190 'social_link_bottom_spacing',
1191 [
1192 'label' => esc_html__('Spacing', 'ultimate-post-kit'),
1193 'type' => Controls_Manager::SLIDER,
1194 'range' => [
1195 'px' => [
1196 'min' => 0,
1197 'max' => 50,
1198 ],
1199 ],
1200 'selectors' => [
1201 '{{WRAPPER}} .upk-author-wrapper .upk-link' => 'padding-top: {{SIZE}}{{UNIT}};',
1202 ],
1203 ]
1204 );
1205
1206 $this->start_controls_tabs('tabs_social_link_style');
1207
1208 $this->start_controls_tab(
1209 'tab_social_link_normal',
1210 [
1211 'label' => esc_html__('Normal', 'ultimate-post-kit'),
1212 ]
1213 );
1214
1215 $this->add_control(
1216 'social_link_color',
1217 [
1218 'label' => esc_html__('Color', 'ultimate-post-kit'),
1219 'type' => Controls_Manager::COLOR,
1220 'selectors' => [
1221 '{{WRAPPER}} .upk-author-wrapper .upk-link a' => 'color: {{VALUE}};',
1222 ],
1223 ]
1224 );
1225
1226 $this->add_group_control(
1227 Group_Control_Background::get_type(),
1228 [
1229 'name' => 'social_link_background',
1230 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-link a',
1231 ]
1232 );
1233
1234 $this->add_group_control(
1235 Group_Control_Border::get_type(),
1236 [
1237 'name' => 'social_link_border',
1238 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-link a',
1239 ]
1240 );
1241
1242 $this->add_responsive_control(
1243 'social_link_border_radius',
1244 [
1245 'label' => esc_html__('Border Radius', 'ultimate-post-kit'),
1246 'type' => Controls_Manager::DIMENSIONS,
1247 'size_units' => ['px', '%'],
1248 'selectors' => [
1249 '{{WRAPPER}} .upk-author-wrapper .upk-link a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1250 ],
1251 ]
1252 );
1253
1254 $this->add_responsive_control(
1255 'social_link_padding',
1256 [
1257 'label' => esc_html__('Padding', 'ultimate-post-kit'),
1258 'type' => Controls_Manager::DIMENSIONS,
1259 'size_units' => ['px', 'em', '%'],
1260 'selectors' => [
1261 '{{WRAPPER}} .upk-author-wrapper .upk-link a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1262 ],
1263 ]
1264 );
1265
1266 $this->add_responsive_control(
1267 'social_link_spacing',
1268 [
1269 'label' => esc_html__('Space Between', 'ultimate-post-kit'),
1270 'type' => Controls_Manager::SLIDER,
1271 'range' => [
1272 'px' => [
1273 'min' => 0,
1274 'max' => 50,
1275 ],
1276 ],
1277 'selectors' => [
1278 '{{WRAPPER}} .upk-author-wrapper .upk-link a+a' => 'margin-left: {{SIZE}}{{UNIT}};',
1279 ],
1280 ]
1281 );
1282
1283 $this->add_group_control(
1284 Group_Control_Box_Shadow::get_type(),
1285 [
1286 'name' => 'social_link_shadow',
1287 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-link a',
1288 ]
1289 );
1290
1291 $this->add_group_control(
1292 Group_Control_Typography::get_type(),
1293 [
1294 'name' => 'social_link_typography',
1295 'label' => esc_html__('Typography', 'ultimate-post-kit'),
1296 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-link a',
1297 ]
1298 );
1299
1300 $this->end_controls_tab();
1301
1302 $this->start_controls_tab(
1303 'tab_social_link_hover',
1304 [
1305 'label' => esc_html__('Hover', 'ultimate-post-kit'),
1306 ]
1307 );
1308
1309 $this->add_control(
1310 'social_link_hover_color',
1311 [
1312 'label' => esc_html__('Color', 'ultimate-post-kit'),
1313 'type' => Controls_Manager::COLOR,
1314 'selectors' => [
1315 '{{WRAPPER}} .upk-author-wrapper .upk-link a:hover' => 'color: {{VALUE}};',
1316 ],
1317 ]
1318 );
1319
1320 $this->add_group_control(
1321 Group_Control_Background::get_type(),
1322 [
1323 'name' => 'social_link_hover_background',
1324 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-link a:hover',
1325 ]
1326 );
1327
1328 $this->add_control(
1329 'social_link_hover_border_color',
1330 [
1331 'label' => esc_html__('Border Color', 'ultimate-post-kit'),
1332 'type' => Controls_Manager::COLOR,
1333 'condition' => [
1334 'social_link_border_border!' => '',
1335 ],
1336 'selectors' => [
1337 '{{WRAPPER}} .upk-author-wrapper .upk-link a:hover' => 'border-color: {{VALUE}};',
1338 ],
1339 ]
1340 );
1341
1342 $this->add_responsive_control(
1343 'social_link_border_radius_hover',
1344 [
1345 'label' => esc_html__('Border Radius', 'ultimate-post-kit'),
1346 'type' => Controls_Manager::DIMENSIONS,
1347 'size_units' => ['px', '%'],
1348 'selectors' => [
1349 '{{WRAPPER}} .upk-author-wrapper .upk-link a:hover' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1350 ],
1351 ]
1352 );
1353
1354 $this->end_controls_tab();
1355
1356 $this->end_controls_tabs();
1357
1358 $this->end_controls_section();
1359 }
1360
1361 public function render() {
1362 $settings = $this->get_settings_for_display();
1363
1364 $users = get_users([
1365 'orderby' => $settings['orderby'],
1366 'order' => $settings['order'],
1367 'role__in' => (!empty($settings['role'])) ? $settings['role'] : null,
1368 'number' => $settings['item_limit']['size'],
1369 'exclude' => explode(',', esc_attr($settings["exclude"])),
1370 ]);
1371
1372 $social_links = $settings['social_links'];
1373
1374 ?>
1375 <div class="upk-author">
1376 <div class="upk-author-wrapper upk-<?php echo esc_html($settings['layout_style']) ?>">
1377 <?php
1378 foreach ($users as $author) {
1379
1380 ?>
1381 <div class="upk-item">
1382 <?php if ($settings['show_author_avatar']) :
1383 $author_posts_url = get_author_posts_url($author->ID);
1384 ?>
1385 <div class="upk-image">
1386 <a href="<?php echo esc_url($author_posts_url); ?>">
1387 <?php echo get_avatar($author->ID, $settings['author_avatar_size']); ?>
1388 </a>
1389 </div>
1390 <?php endif; ?>
1391
1392 <div class="upk-content">
1393 <?php if ($settings['show_author_name']) : ?>
1394 <div class="upk-name">
1395 <a href="<?php echo get_bloginfo('url') . "/?author=" . esc_attr($author->ID); ?>">
1396 <?php echo get_the_author_meta('display_name', $author->ID); ?>
1397 </a>
1398 </div>
1399 <?php endif; ?>
1400
1401 <?php if ($settings['show_author_role']) : ?>
1402 <div class="upk-role">
1403 <?php echo ucwords(get_user_role($author->ID)); ?>
1404 </div>
1405 <?php endif; ?>
1406
1407 <?php if ($settings['show_author_description'] and get_the_author_meta('description', $author->ID)) : ?>
1408 <div class="upk-description">
1409 <?php echo get_the_author_meta('description', $author->ID); ?>
1410 </div>
1411 <?php endif; ?>
1412
1413 <?php if ($settings['show_author_link'] and !empty($social_links)) : ?>
1414
1415 <div class="upk-link">
1416
1417
1418 <?php foreach ($social_links as $link) : ?>
1419
1420 <?php if (get_the_author_meta($link, $author->ID)) : ?>
1421 <?php
1422
1423 $final_url = get_the_author_meta($link, $author->ID);
1424 $alt_title = esc_html__( 'Click here to go ', 'ultimate-post-kit' ) . ucwords( $link );
1425
1426 if ($link == 'email') {
1427 $final_url = 'mailto:' . get_the_author_meta($link, $author->ID);
1428 $alt_title = esc_html__( 'Click here to ', 'ultimate-post-kit' ) . ucwords( $link );
1429 }
1430
1431 ?>
1432
1433 <a href="<?php echo esc_url($final_url); ?>" title="<?php echo esc_html($alt_title); ?>">
1434 <i class="upk-icon-<?php echo esc_attr($link); ?>" aria-hidden="true"></i>
1435 </a>
1436 <?php endif; ?>
1437
1438 <?php endforeach; ?>
1439
1440
1441 </div>
1442 <?php endif; ?>
1443
1444 </div>
1445
1446 <?php if ($settings['show_post_count']) : ?>
1447 <div class="upk-post-count">
1448 <?php
1449
1450 $count = count_user_posts($author->ID);
1451 /* translators: %s: Number of posts. */
1452 $total_count = sprintf(_n('Post: %s', 'Posts: %s', $count, 'ultimate-post-kit'), $count);
1453
1454 echo esc_attr($total_count);
1455
1456 ?>
1457
1458 </div>
1459 <?php endif; ?>
1460
1461 </div>
1462 <?php } ?>
1463 </div>
1464 </div>
1465 <?php
1466 }
1467 }
1468