PluginProbe
Ultimate Post Kit – Elementor Post Grid, Post Carousel, Post Slider & Blog Layout Widgets / 4.0.9
Ultimate Post Kit – Elementor Post Grid, Post Carousel, Post Slider & Blog Layout Widgets v4.0.9
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.0.9, at modules/author/widgets/author.php

1,467 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 'show_label' => false,
625 'selectors' => [
626 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => '-webkit-mask-image: url({{URL}}); mask-image: url({{URL}});',
627 ],
628 'condition' => [
629 'image_mask_popover' => 'yes',
630 'image_mask_shape' => 'custom',
631 ],
632 ]
633 );
634
635 $this->add_control(
636 'image_mask_shape_position',
637 [
638 'label' => esc_html__('Position', 'ultimate-post-kit'),
639 'type' => Controls_Manager::SELECT,
640 'default' => 'center-center',
641 'options' => [
642 'center-center' => esc_html__('Center Center', 'ultimate-post-kit'),
643 'center-left' => esc_html__('Center Left', 'ultimate-post-kit'),
644 'center-right' => esc_html__('Center Right', 'ultimate-post-kit'),
645 'top-center' => esc_html__('Top Center', 'ultimate-post-kit'),
646 'top-left' => esc_html__('Top Left', 'ultimate-post-kit'),
647 'top-right' => esc_html__('Top Right', 'ultimate-post-kit'),
648 'bottom-center' => esc_html__('Bottom Center', 'ultimate-post-kit'),
649 'bottom-left' => esc_html__('Bottom Left', 'ultimate-post-kit'),
650 'bottom-right' => esc_html__('Bottom Right', 'ultimate-post-kit'),
651 ],
652 'selectors_dictionary' => [
653 'center-center' => 'center center',
654 'center-left' => 'center left',
655 'center-right' => 'center right',
656 'top-center' => 'top center',
657 'top-left' => 'top left',
658 'top-right' => 'top right',
659 'bottom-center' => 'bottom center',
660 'bottom-left' => 'bottom left',
661 'bottom-right' => 'bottom right',
662 ],
663 'selectors' => [
664 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => '-webkit-mask-position: {{VALUE}}; mask-position: {{VALUE}};',
665 ],
666 'condition' => [
667 'image_mask_popover' => 'yes',
668 ],
669 ]
670 );
671
672 $this->add_control(
673 'image_mask_shape_size',
674 [
675 'label' => esc_html__('Size', 'ultimate-post-kit'),
676 'type' => Controls_Manager::SELECT,
677 'default' => 'contain',
678 'options' => [
679 'auto' => esc_html__('Auto', 'ultimate-post-kit'),
680 'cover' => esc_html__('Cover', 'ultimate-post-kit'),
681 'contain' => esc_html__('Contain', 'ultimate-post-kit'),
682 'initial' => esc_html__('Custom', 'ultimate-post-kit'),
683 ],
684 'selectors' => [
685 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => '-webkit-mask-size: {{VALUE}}; mask-size: {{VALUE}};',
686 ],
687 'condition' => [
688 'image_mask_popover' => 'yes',
689 ],
690 ]
691 );
692
693 $this->add_control(
694 'image_mask_shape_custom_size',
695 [
696 'label' => _x('Custom Size', 'Mask Image', 'ultimate-post-kit'),
697 'type' => Controls_Manager::SLIDER,
698 'responsive' => true,
699 'size_units' => ['px', 'em', '%', 'vw'],
700 'range' => [
701 'px' => [
702 'min' => 0,
703 'max' => 1000,
704 ],
705 'em' => [
706 'min' => 0,
707 'max' => 100,
708 ],
709 '%' => [
710 'min' => 0,
711 'max' => 100,
712 ],
713 'vw' => [
714 'min' => 0,
715 'max' => 100,
716 ],
717 ],
718 'default' => [
719 'size' => 100,
720 'unit' => '%',
721 ],
722 'required' => true,
723 'selectors' => [
724 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => '-webkit-mask-size: {{SIZE}}{{UNIT}}; mask-size: {{SIZE}}{{UNIT}};',
725 ],
726 'condition' => [
727 'image_mask_popover' => 'yes',
728 'image_mask_shape_size' => 'initial',
729 ],
730 ]
731 );
732
733 $this->add_control(
734 'image_mask_shape_repeat',
735 [
736 'label' => esc_html__('Repeat', 'ultimate-post-kit'),
737 'type' => Controls_Manager::SELECT,
738 'default' => 'no-repeat',
739 'options' => [
740 'repeat' => esc_html__('Repeat', 'ultimate-post-kit'),
741 'repeat-x' => esc_html__('Repeat-x', 'ultimate-post-kit'),
742 'repeat-y' => esc_html__('Repeat-y', 'ultimate-post-kit'),
743 'space' => esc_html__('Space', 'ultimate-post-kit'),
744 'round' => esc_html__('Round', 'ultimate-post-kit'),
745 'no-repeat' => esc_html__('No-repeat', 'ultimate-post-kit'),
746 'repeat-space' => esc_html__('Repeat Space', 'ultimate-post-kit'),
747 'round-space' => esc_html__('Round Space', 'ultimate-post-kit'),
748 'no-repeat-round' => esc_html__('No-repeat Round', 'ultimate-post-kit'),
749 ],
750 'selectors_dictionary' => [
751 'repeat' => 'repeat',
752 'repeat-x' => 'repeat-x',
753 'repeat-y' => 'repeat-y',
754 'space' => 'space',
755 'round' => 'round',
756 'no-repeat' => 'no-repeat',
757 'repeat-space' => 'repeat space',
758 'round-space' => 'round space',
759 'no-repeat-round' => 'no-repeat round',
760 ],
761 'selectors' => [
762 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => '-webkit-mask-repeat: {{VALUE}}; mask-repeat: {{VALUE}};',
763 ],
764 'condition' => [
765 'image_mask_popover' => 'yes',
766 ],
767 ]
768 );
769
770 $this->end_popover();
771
772 $this->add_group_control(
773 Group_Control_Border::get_type(),
774 [
775 'name' => 'avatar_border',
776 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-image a img',
777 'separator' => 'before'
778 ]
779 );
780
781 $this->add_responsive_control(
782 'avatar_border_radius',
783 [
784 'label' => esc_html__('Border Radius', 'ultimate-post-kit'),
785 'type' => Controls_Manager::DIMENSIONS,
786 'size_units' => ['px', '%'],
787 'selectors' => [
788 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
789 ],
790 ]
791 );
792
793 $this->add_responsive_control(
794 'avatar_padding',
795 [
796 'label' => __('Padding', 'ultimate-post-kit'),
797 'type' => Controls_Manager::DIMENSIONS,
798 'size_units' => ['px', 'em', '%'],
799 'selectors' => [
800 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
801 ],
802 ]
803 );
804
805 $this->add_responsive_control(
806 'avatar_margin',
807 [
808 'label' => __('Margin', 'ultimate-post-kit'),
809 'type' => Controls_Manager::DIMENSIONS,
810 'size_units' => ['px', 'em', '%'],
811 'selectors' => [
812 '{{WRAPPER}} .upk-author-wrapper .upk-image' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
813 ],
814 'condition' => [
815 'layout_style' => ['grid_1']
816 ]
817 ]
818 );
819
820 $this->add_group_control(
821 Group_Control_Box_Shadow::get_type(),
822 [
823 'name' => 'avatar_box_shadow',
824 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-image a img',
825 ]
826 );
827
828 $this->add_responsive_control(
829 'avatar_size',
830 [
831 'label' => esc_html__('Size(px)', 'ultimate-post-kit'),
832 'type' => Controls_Manager::SLIDER,
833 'range' => [
834 'px' => [
835 'min' => 50,
836 'max' => 200,
837 ],
838 ],
839 'selectors' => [
840 '{{WRAPPER}} .upk-author-wrapper .upk-image a img' => 'height: {{SIZE}}{{UNIT}}; width: {{SIZE}}{{UNIT}}; min-width: {{SIZE}}{{UNIT}};',
841 ],
842 'condition' => [
843 'layout_style' => ['list']
844 ]
845 ]
846 );
847
848 $this->add_responsive_control(
849 'avatar_spacing',
850 [
851 'label' => esc_html__('Spacing', 'ultimate-post-kit'),
852 'type' => Controls_Manager::SLIDER,
853 'range' => [
854 'px' => [
855 'min' => 0,
856 'max' => 50,
857 ],
858 ],
859 'selectors' => [
860 '{{WRAPPER}} .upk-author-wrapper .upk-image' => 'margin-right: {{SIZE}}{{UNIT}};',
861 ],
862 'condition' => [
863 'layout_style' => 'list'
864 ]
865 ]
866 );
867
868 $this->start_controls_tabs('tabs_avatar_style');
869
870 $this->start_controls_tab(
871 'tab_avatar_normal',
872 [
873 'label' => esc_html__('Normal', 'ultimate-post-kit'),
874 ]
875 );
876
877 $this->add_group_control(
878 Group_Control_Css_Filter::get_type(),
879 [
880 'name' => 'css_filters',
881 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-image a img',
882 ]
883 );
884
885 $this->end_controls_tab();
886
887 $this->start_controls_tab(
888 'tab_avatar_hover',
889 [
890 'label' => esc_html__('Hover', 'ultimate-post-kit'),
891 ]
892 );
893
894 $this->add_group_control(
895 Group_Control_Css_Filter::get_type(),
896 [
897 'name' => 'hover_css_filters',
898 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-item:hover .upk-image a img',
899 ]
900 );
901
902 $this->end_controls_tab();
903
904 $this->end_controls_tabs();
905
906 $this->end_controls_section();
907
908 $this->start_controls_section(
909 'section_style_title',
910 [
911 'label' => esc_html__('Name', 'ultimate-post-kit'),
912 'tab' => Controls_Manager::TAB_STYLE,
913 'condition' => [
914 'show_author_name' => 'yes',
915 ],
916 ]
917 );
918
919 $this->add_control(
920 'name_color',
921 [
922 'label' => esc_html__('Color', 'ultimate-post-kit'),
923 'type' => Controls_Manager::COLOR,
924 'selectors' => [
925 '{{WRAPPER}} .upk-author-wrapper .upk-name a' => 'color: {{VALUE}};',
926 ],
927 ]
928 );
929
930 $this->add_control(
931 'name_hover_color',
932 [
933 'label' => esc_html__('Hover Color', 'ultimate-post-kit'),
934 'type' => Controls_Manager::COLOR,
935 'selectors' => [
936 '{{WRAPPER}} .upk-author-wrapper .upk-name a:hover' => 'color: {{VALUE}};',
937 ],
938 ]
939 );
940
941 $this->add_group_control(
942 Group_Control_Typography::get_type(),
943 [
944 'name' => 'name_typography',
945 'label' => esc_html__('Typography', 'ultimate-post-kit'),
946 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-name a',
947 ]
948 );
949
950 $this->add_group_control(
951 Group_Control_Text_Shadow::get_type(),
952 [
953 'name' => 'name_text_shadow',
954 'label' => __('Text Shadow', 'ultimate-post-kit'),
955 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-name a',
956 ]
957 );
958
959 $this->end_controls_section();
960
961 $this->start_controls_section(
962 'section_style_role',
963 [
964 'label' => esc_html__('Role', 'ultimate-post-kit'),
965 'tab' => Controls_Manager::TAB_STYLE,
966 'condition' => [
967 'show_author_role' => 'yes',
968 ]
969 ]
970 );
971
972 $this->add_control(
973 'role_color',
974 [
975 'label' => esc_html__('Color', 'ultimate-post-kit'),
976 'type' => Controls_Manager::COLOR,
977 'selectors' => [
978 '{{WRAPPER}} .upk-author-wrapper .upk-role' => 'color: {{VALUE}};',
979 ],
980 ]
981 );
982
983 $this->add_group_control(
984 Group_Control_Typography::get_type(),
985 [
986 'name' => 'role_typography',
987 'label' => esc_html__('Typography', 'ultimate-post-kit'),
988 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-role',
989 ]
990 );
991
992 $this->add_responsive_control(
993 'role_spacing',
994 [
995 'label' => esc_html__('Spacing', 'ultimate-post-kit'),
996 'type' => Controls_Manager::SLIDER,
997 'range' => [
998 'px' => [
999 'min' => 0,
1000 'max' => 50,
1001 ],
1002 ],
1003 'selectors' => [
1004 '{{WRAPPER}} .upk-author-wrapper .upk-role' => 'padding-top: {{SIZE}}{{UNIT}};',
1005 ],
1006 ]
1007 );
1008
1009 $this->end_controls_section();
1010
1011 $this->start_controls_section(
1012 'section_style_description',
1013 [
1014 'label' => esc_html__('Description', 'ultimate-post-kit'),
1015 'tab' => Controls_Manager::TAB_STYLE,
1016 'condition' => [
1017 'show_author_description' => 'yes',
1018 ]
1019 ]
1020 );
1021
1022 $this->add_control(
1023 'description_color',
1024 [
1025 'label' => esc_html__('Color', 'ultimate-post-kit'),
1026 'type' => Controls_Manager::COLOR,
1027 'selectors' => [
1028 '{{WRAPPER}} .upk-author-wrapper .upk-description' => 'color: {{VALUE}};',
1029 ],
1030 ]
1031 );
1032
1033 $this->add_group_control(
1034 Group_Control_Typography::get_type(),
1035 [
1036 'name' => 'description_typography',
1037 'label' => esc_html__('Typography', 'ultimate-post-kit'),
1038 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-description',
1039 ]
1040 );
1041
1042 $this->add_responsive_control(
1043 'description_spacing',
1044 [
1045 'label' => esc_html__('Spacing', 'ultimate-post-kit'),
1046 'type' => Controls_Manager::SLIDER,
1047 'range' => [
1048 'px' => [
1049 'min' => 0,
1050 'max' => 50,
1051 ],
1052 ],
1053 'selectors' => [
1054 '{{WRAPPER}} .upk-author-wrapper .upk-description' => 'padding-top: {{SIZE}}{{UNIT}};',
1055 ],
1056 ]
1057 );
1058
1059 $this->end_controls_section();
1060
1061 $this->start_controls_section(
1062 'section_style_post_count',
1063 [
1064 'label' => esc_html__('Post Count', 'ultimate-post-kit'),
1065 'tab' => Controls_Manager::TAB_STYLE,
1066 'condition' => [
1067 'show_post_count' => 'yes',
1068 ]
1069 ]
1070 );
1071
1072 $this->add_control(
1073 'post_count_color',
1074 [
1075 'label' => esc_html__('Color', 'ultimate-post-kit'),
1076 'type' => Controls_Manager::COLOR,
1077 'selectors' => [
1078 '{{WRAPPER}} .upk-author-wrapper .upk-post-count' => 'color: {{VALUE}};',
1079 ],
1080 ]
1081 );
1082
1083 $this->add_group_control(
1084 Group_Control_Background::get_type(),
1085 [
1086 'name' => 'post_count_background',
1087 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-post-count',
1088 ]
1089 );
1090
1091 $this->add_group_control(
1092 Group_Control_Border::get_type(),
1093 [
1094 'name' => 'post_count_border',
1095 'label' => __('Border', 'ultimate-post-kit'),
1096 'fields_options' => [
1097 'border' => [
1098 'default' => 'solid',
1099 ],
1100 'width' => [
1101 'default' => [
1102 'top' => '1',
1103 'right' => '1',
1104 'bottom' => '1',
1105 'left' => '1',
1106 'isLinked' => false,
1107 ],
1108 ],
1109 // 'color' => [
1110 // 'default' => '#8D99AE',
1111 // ],
1112 ],
1113 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-post-count',
1114 ]
1115 );
1116
1117 $this->add_responsive_control(
1118 'post_count_border_radius',
1119 [
1120 'label' => esc_html__('Border Radius', 'ultimate-post-kit'),
1121 'type' => Controls_Manager::DIMENSIONS,
1122 'size_units' => ['px', '%'],
1123 'selectors' => [
1124 '{{WRAPPER}} .upk-author-wrapper .upk-post-count' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1125 ],
1126 ]
1127 );
1128
1129 $this->add_responsive_control(
1130 'post_count_padding',
1131 [
1132 'label' => esc_html__('Padding', 'ultimate-post-kit'),
1133 'type' => Controls_Manager::DIMENSIONS,
1134 'size_units' => ['px', 'em', '%'],
1135 'selectors' => [
1136 '{{WRAPPER}} .upk-author-wrapper .upk-post-count' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1137 ],
1138 ]
1139 );
1140
1141 $this->add_group_control(
1142 Group_Control_Box_Shadow::get_type(),
1143 [
1144 'name' => 'post_count_shadow',
1145 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-post-count',
1146 ]
1147 );
1148
1149 $this->add_group_control(
1150 Group_Control_Typography::get_type(),
1151 [
1152 'name' => 'post_count_typography',
1153 'label' => esc_html__('Typography', 'ultimate-post-kit'),
1154 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-post-count',
1155 ]
1156 );
1157
1158 $this->add_responsive_control(
1159 'post_count_spacing',
1160 [
1161 'label' => esc_html__('Spacing', 'ultimate-post-kit'),
1162 'type' => Controls_Manager::SLIDER,
1163 'range' => [
1164 'px' => [
1165 'min' => 0,
1166 'max' => 50,
1167 ],
1168 ],
1169 'selectors' => [
1170 '{{WRAPPER}} .upk-author-wrapper .upk-post-count' => 'top: {{SIZE}}{{UNIT}}; right: {{SIZE}}{{UNIT}};',
1171 ],
1172 ]
1173 );
1174
1175 $this->end_controls_section();
1176
1177 $this->start_controls_section(
1178 'section_style_social_link',
1179 [
1180 'label' => esc_html__('Social Link', 'ultimate-post-kit'),
1181 'tab' => Controls_Manager::TAB_STYLE,
1182 'condition' => [
1183 'show_author_link' => 'yes',
1184 ],
1185 ]
1186 );
1187
1188 $this->add_responsive_control(
1189 'social_link_bottom_spacing',
1190 [
1191 'label' => esc_html__('Spacing', 'ultimate-post-kit'),
1192 'type' => Controls_Manager::SLIDER,
1193 'range' => [
1194 'px' => [
1195 'min' => 0,
1196 'max' => 50,
1197 ],
1198 ],
1199 'selectors' => [
1200 '{{WRAPPER}} .upk-author-wrapper .upk-link' => 'padding-top: {{SIZE}}{{UNIT}};',
1201 ],
1202 ]
1203 );
1204
1205 $this->start_controls_tabs('tabs_social_link_style');
1206
1207 $this->start_controls_tab(
1208 'tab_social_link_normal',
1209 [
1210 'label' => esc_html__('Normal', 'ultimate-post-kit'),
1211 ]
1212 );
1213
1214 $this->add_control(
1215 'social_link_color',
1216 [
1217 'label' => esc_html__('Color', 'ultimate-post-kit'),
1218 'type' => Controls_Manager::COLOR,
1219 'selectors' => [
1220 '{{WRAPPER}} .upk-author-wrapper .upk-link a' => 'color: {{VALUE}};',
1221 ],
1222 ]
1223 );
1224
1225 $this->add_group_control(
1226 Group_Control_Background::get_type(),
1227 [
1228 'name' => 'social_link_background',
1229 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-link a',
1230 ]
1231 );
1232
1233 $this->add_group_control(
1234 Group_Control_Border::get_type(),
1235 [
1236 'name' => 'social_link_border',
1237 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-link a',
1238 ]
1239 );
1240
1241 $this->add_responsive_control(
1242 'social_link_border_radius',
1243 [
1244 'label' => esc_html__('Border Radius', 'ultimate-post-kit'),
1245 'type' => Controls_Manager::DIMENSIONS,
1246 'size_units' => ['px', '%'],
1247 'selectors' => [
1248 '{{WRAPPER}} .upk-author-wrapper .upk-link a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1249 ],
1250 ]
1251 );
1252
1253 $this->add_responsive_control(
1254 'social_link_padding',
1255 [
1256 'label' => esc_html__('Padding', 'ultimate-post-kit'),
1257 'type' => Controls_Manager::DIMENSIONS,
1258 'size_units' => ['px', 'em', '%'],
1259 'selectors' => [
1260 '{{WRAPPER}} .upk-author-wrapper .upk-link a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1261 ],
1262 ]
1263 );
1264
1265 $this->add_responsive_control(
1266 'social_link_spacing',
1267 [
1268 'label' => esc_html__('Space Between', 'ultimate-post-kit'),
1269 'type' => Controls_Manager::SLIDER,
1270 'range' => [
1271 'px' => [
1272 'min' => 0,
1273 'max' => 50,
1274 ],
1275 ],
1276 'selectors' => [
1277 '{{WRAPPER}} .upk-author-wrapper .upk-link a+a' => 'margin-left: {{SIZE}}{{UNIT}};',
1278 ],
1279 ]
1280 );
1281
1282 $this->add_group_control(
1283 Group_Control_Box_Shadow::get_type(),
1284 [
1285 'name' => 'social_link_shadow',
1286 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-link a',
1287 ]
1288 );
1289
1290 $this->add_group_control(
1291 Group_Control_Typography::get_type(),
1292 [
1293 'name' => 'social_link_typography',
1294 'label' => esc_html__('Typography', 'ultimate-post-kit'),
1295 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-link a',
1296 ]
1297 );
1298
1299 $this->end_controls_tab();
1300
1301 $this->start_controls_tab(
1302 'tab_social_link_hover',
1303 [
1304 'label' => esc_html__('Hover', 'ultimate-post-kit'),
1305 ]
1306 );
1307
1308 $this->add_control(
1309 'social_link_hover_color',
1310 [
1311 'label' => esc_html__('Color', 'ultimate-post-kit'),
1312 'type' => Controls_Manager::COLOR,
1313 'selectors' => [
1314 '{{WRAPPER}} .upk-author-wrapper .upk-link a:hover' => 'color: {{VALUE}};',
1315 ],
1316 ]
1317 );
1318
1319 $this->add_group_control(
1320 Group_Control_Background::get_type(),
1321 [
1322 'name' => 'social_link_hover_background',
1323 'selector' => '{{WRAPPER}} .upk-author-wrapper .upk-link a:hover',
1324 ]
1325 );
1326
1327 $this->add_control(
1328 'social_link_hover_border_color',
1329 [
1330 'label' => esc_html__('Border Color', 'ultimate-post-kit'),
1331 'type' => Controls_Manager::COLOR,
1332 'condition' => [
1333 'social_link_border_border!' => '',
1334 ],
1335 'selectors' => [
1336 '{{WRAPPER}} .upk-author-wrapper .upk-link a:hover' => 'border-color: {{VALUE}};',
1337 ],
1338 ]
1339 );
1340
1341 $this->add_responsive_control(
1342 'social_link_border_radius_hover',
1343 [
1344 'label' => esc_html__('Border Radius', 'ultimate-post-kit'),
1345 'type' => Controls_Manager::DIMENSIONS,
1346 'size_units' => ['px', '%'],
1347 'selectors' => [
1348 '{{WRAPPER}} .upk-author-wrapper .upk-link a:hover' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1349 ],
1350 ]
1351 );
1352
1353 $this->end_controls_tab();
1354
1355 $this->end_controls_tabs();
1356
1357 $this->end_controls_section();
1358 }
1359
1360 public function render() {
1361 $settings = $this->get_settings_for_display();
1362
1363 $users = get_users([
1364 'orderby' => $settings['orderby'],
1365 'order' => $settings['order'],
1366 'role__in' => (!empty($settings['role'])) ? $settings['role'] : null,
1367 'number' => $settings['item_limit']['size'],
1368 'exclude' => explode(',', esc_attr($settings["exclude"])),
1369 ]);
1370
1371 $social_links = $settings['social_links'];
1372
1373 ?>
1374 <div class="upk-author">
1375 <div class="upk-author-wrapper upk-<?php echo esc_html($settings['layout_style']) ?>">
1376 <?php
1377 foreach ($users as $author) {
1378
1379 ?>
1380 <div class="upk-item">
1381 <?php if ($settings['show_author_avatar']) :
1382 $author_posts_url = get_author_posts_url($author->ID);
1383 ?>
1384 <div class="upk-image">
1385 <a href="<?php echo esc_url($author_posts_url); ?>">
1386 <?php echo get_avatar($author->ID, $settings['author_avatar_size']); ?>
1387 </a>
1388 </div>
1389 <?php endif; ?>
1390
1391 <div class="upk-content">
1392 <?php if ($settings['show_author_name']) : ?>
1393 <div class="upk-name">
1394 <a href="<?php echo get_bloginfo('url') . "/?author=" . esc_attr($author->ID); ?>">
1395 <?php echo get_the_author_meta('display_name', $author->ID); ?>
1396 </a>
1397 </div>
1398 <?php endif; ?>
1399
1400 <?php if ($settings['show_author_role']) : ?>
1401 <div class="upk-role">
1402 <?php echo ucwords(get_user_role($author->ID)); ?>
1403 </div>
1404 <?php endif; ?>
1405
1406 <?php if ($settings['show_author_description'] and get_the_author_meta('description', $author->ID)) : ?>
1407 <div class="upk-description">
1408 <?php echo get_the_author_meta('description', $author->ID); ?>
1409 </div>
1410 <?php endif; ?>
1411
1412 <?php if ($settings['show_author_link'] and !empty($social_links)) : ?>
1413
1414 <div class="upk-link">
1415
1416
1417 <?php foreach ($social_links as $link) : ?>
1418
1419 <?php if (get_the_author_meta($link, $author->ID)) : ?>
1420 <?php
1421
1422 $final_url = get_the_author_meta($link, $author->ID);
1423 $alt_title = esc_html__( 'Click here to go ', 'ultimate-post-kit' ) . ucwords( $link );
1424
1425 if ($link == 'email') {
1426 $final_url = 'mailto:' . get_the_author_meta($link, $author->ID);
1427 $alt_title = esc_html__( 'Click here to ', 'ultimate-post-kit' ) . ucwords( $link );
1428 }
1429
1430 ?>
1431
1432 <a href="<?php echo esc_url($final_url); ?>" title="<?php echo esc_html($alt_title); ?>">
1433 <i class="upk-icon-<?php echo esc_attr($link); ?>" aria-hidden="true"></i>
1434 </a>
1435 <?php endif; ?>
1436
1437 <?php endforeach; ?>
1438
1439
1440 </div>
1441 <?php endif; ?>
1442
1443 </div>
1444
1445 <?php if ($settings['show_post_count']) : ?>
1446 <div class="upk-post-count">
1447 <?php
1448
1449 $count = count_user_posts($author->ID);
1450 /* translators: %s: Number of posts. */
1451 $total_count = sprintf(_n('Post: %s', 'Posts: %s', $count, 'ultimate-post-kit'), $count);
1452
1453 echo esc_attr($total_count);
1454
1455 ?>
1456
1457 </div>
1458 <?php endif; ?>
1459
1460 </div>
1461 <?php } ?>
1462 </div>
1463 </div>
1464 <?php
1465 }
1466 }
1467