PluginProbe
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder / 3.0.2
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder v3.0.2
3.1.4 3.0.8 3.0.9 3.1.0 3.1.2 3.1.3 3.0.7 3.0.5 3.0.4 3.0.3 3.0.2 trunk 1.5.0 1.5.1 1.5.2 1.6.1 1.6.2 1.6.3 1.6.4 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 All 93 releases
ultimate-store-kit / modules / edd-category-carousel / widgets / edd-category-carousel.php

edd-category-carousel.php in Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder 3.0.2, at modules/edd-category-carousel/widgets/edd-category-carousel.php

853 lines 25.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace UltimateStoreKit\Modules\EddCategoryCarousel\Widgets;
4
5 use UltimateStoreKit\Base\Module_Base;
6 use Elementor\Controls_Manager;
7 use Elementor\Utils;
8 use Elementor\Group_Control_Border;
9 use Elementor\Group_Control_Box_Shadow;
10 use Elementor\Group_Control_Image_Size;
11 use Elementor\Group_Control_Background;
12 use Elementor\Group_Control_Typography;
13
14 use UltimateStoreKit\Traits\Global_Terms_Query_Controls;
15 use UltimateStoreKit\traits\Global_Widget_Controls;
16 use UltimateStoreKit\traits\Global_Widget_Template;
17
18 if (!defined('ABSPATH')) {
19 exit; // Exit if accessed directly.
20 }
21
22 class EDD_Category_Carousel extends Module_Base {
23 use Global_Widget_Controls;
24 use Global_Terms_Query_Controls;
25 use Global_Widget_Template;
26 public function get_name() {
27 return 'usk-edd-category-carousel';
28 }
29
30 public function get_title() {
31 return esc_html__('EDD Category Carousel', 'ultimate-store-kit');
32 }
33
34 public function get_icon() {
35 return 'usk-widget-icon usk-icon-edd-category-carousel';
36 }
37
38 public function get_categories() {
39 return ['ultimate-store-kit'];
40 }
41
42 public function get_keywords() {
43 return ['easy', 'digital', 'category', 'downloads', 'eshop', 'estore', 'profile', 'editor'];
44 }
45
46 public function get_style_depends() {
47 if ($this->usk_is_edit_mode()) {
48 return ['swiper', 'usk-all-styles'];
49 } else {
50 return ['swiper', 'usk-font', 'usk-edd-category-carousel'];
51 }
52 }
53
54 public function get_script_depends() {
55 if ($this->usk_is_edit_mode()) {
56 return ['swiper', 'usk-site'];
57 } else {
58 return ['swiper', 'usk-edd-category-carousel'];
59 }
60 }
61
62 public function get_custom_help_url() {
63 return 'https://youtu.be/z6MSJtvbxPQ';
64 }
65
66 public function has_widget_inner_wrapper(): bool {
67 return ! \Elementor\Plugin::$instance->experiments->is_feature_active('e_optimized_markup');
68 }
69 protected function register_controls() {
70
71 $this->start_controls_section(
72 'section_content_layout',
73 [
74 'label' => esc_html__('Layout', 'ultimate-store-kit'),
75 ]
76 );
77
78 $this->add_control(
79 'skin_layout',
80 [
81 'label' => __('Skin', 'ultimate-store-kit'),
82 'type' => Controls_Manager::SELECT,
83 'default' => 'style-1',
84 'options' => [
85 'style-1' => __('Style 1', 'ultimate-store-kit'),
86 'style-2' => __('Style 2', 'ultimate-store-kit'),
87 'style-3' => __('Style 3', 'ultimate-store-kit'),
88 'style-4' => __('Style 4', 'ultimate-store-kit'),
89 'style-5' => __('Style 5', 'ultimate-store-kit'),
90
91 // 'style-6' => __('Style 6', 'ultimate-store-kit'),
92 ],
93 ]
94 );
95 $this->add_responsive_control(
96 'columns',
97 [
98 'label' => __('Columns', 'ultimate-store-kit'),
99 'type' => Controls_Manager::SELECT,
100 'default' => 3,
101 'tablet_default' => 2,
102 'mobile_default' => 1,
103 'options' => [
104 1 => esc_html__('1', 'ultimate-store-kit'),
105 2 => esc_html__('2', 'ultimate-store-kit'),
106 3 => esc_html__('3', 'ultimate-store-kit'),
107 4 => esc_html__('4', 'ultimate-store-kit'),
108 5 => esc_html__('5', 'ultimate-store-kit'),
109 6 => esc_html__('6', 'ultimate-store-kit'),
110 ],
111 ]
112 );
113 $this->add_control(
114 'alignment',
115 [
116 'label' => __('Title', 'ultimate-store-kit'),
117 'type' => Controls_Manager::HIDDEN,
118 'default' => 'traditional',
119 ]
120 );
121
122 $this->add_responsive_control(
123 'items_gap',
124 [
125 'label' => __('Item Gap', 'ultimate-store-kit'),
126 'type' => Controls_Manager::SLIDER,
127 'default' => [
128 'size' => 20,
129 ],
130 ]
131 );
132
133 $this->add_responsive_control(
134 'item_height',
135 [
136 'label' => esc_html__('Item Height(px)', 'ultimate-store-kit'),
137 'type' => Controls_Manager::SLIDER,
138 'range' => [
139 'px' => [
140 'min' => 0,
141 'max' => 1000,
142 ],
143 ],
144 'selectors' => [
145 '{{WRAPPER}} .usk-edd-category-carousel .edd-item' => 'height: {{SIZE}}{{UNIT}};',
146 '{{WRAPPER}} .usk-edd-category-carousel .usk-edd-category-carousel-image' => 'height: {{SIZE}}{{UNIT}};'
147 ],
148 'condition' => [
149 'skin_layout!' => 'style-3'
150 ]
151 ]
152 );
153 $this->add_responsive_control(
154 'item_height_skin_3',
155 [
156 'label' => esc_html__('Item Height(px)', 'ultimate-store-kit'),
157 'type' => Controls_Manager::SLIDER,
158 'range' => [
159 'px' => [
160 'min' => 0,
161 'max' => 1000,
162 ],
163 ],
164 'selectors' => [
165 '{{WRAPPER}} .usk-edd-category-carousel .usk-edd-category-carousel-image' => 'height: {{SIZE}}{{UNIT}};'
166 ],
167 'condition' => [
168 'skin_layout' => 'style-3'
169 ]
170 ]
171 );
172 $this->add_control(
173 'is_use_image',
174 [
175 'label' => esc_html__('Use Static Image', 'ultimate-store-kit'),
176 'type' => Controls_Manager::SWITCHER,
177 'default' => 'yes',
178 'suskarator' => 'before'
179 ]
180 );
181 $this->add_control(
182 'category_image',
183 [
184 'label' => __('Select Image', 'ultimate-store-kit'),
185 'type' => Controls_Manager::MEDIA,
186 'dynamic' => [ 'active' => true ],
187 'default' => [
188 'url' => Utils::get_placeholder_image_src(),
189 ],
190 'condition' => [
191 'is_use_image' => 'yes'
192 ]
193 ]
194 );
195
196 $this->add_group_control(
197 Group_Control_Image_Size::get_type(),
198 [
199 'name' => 'category_thumbnail',
200 'exclude' => ['custom'],
201 'default' => 'medium',
202 'condition' => [
203 'is_use_image' => 'yes'
204 ]
205 ]
206 );
207 $this->add_control(
208 'show_count',
209 [
210 'label' => esc_html__('Show Count', 'ultimate-store-kit'),
211 'type' => Controls_Manager::SWITCHER,
212 'default' => 'yes',
213 // 'suskarator' => 'before'
214 ]
215 );
216 $this->end_controls_section();
217 $this->render_terms_query_controls('download_category');
218 // $this->register_global_controls_additional();
219 $this->register_global_controls_carousel_navigation();
220 $this->register_global_controls_carousel_settings();
221
222 $this->start_controls_section(
223 'section_style_item',
224 [
225 'label' => esc_html__('Item', 'ultimate-store-kit'),
226 'tab' => Controls_Manager::TAB_STYLE,
227 ]
228 );
229 $this->start_controls_tabs(
230 'item_tabs'
231 );
232 $this->start_controls_tab(
233 'item_tab_normal',
234 [
235 'label' => esc_html__('Normal', 'ultimate-store-kit'),
236 ]
237 );
238 $this->add_group_control(
239 Group_Control_Background::get_type(),
240 [
241 'name' => 'items_background',
242 'label' => esc_html__('Backgrund', 'ultimate-store-kit'),
243 'types' => ['classic', 'gradient'],
244 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item',
245 ]
246 );
247 $this->add_control(
248 'item_overlay',
249 [
250 'label' => esc_html__('Overlay Color', 'ultimate-store-kit'),
251 'type' => Controls_Manager::COLOR,
252 'selectors' => [
253 '{{WRAPPER}} .usk-edd-category-carousel .edd-item-overlay' => 'background: {{VALUE}}',
254 ],
255 'condition' => [
256 'skin_layout!' => ['style-3']
257 ]
258 ]
259 );
260 $this->add_control(
261 'item_overlay_blur_effect',
262 [
263 'label' => esc_html__('Glassmorphism', 'ultimate-store-kit'),
264 'type' => Controls_Manager::SWITCHER,
265 // 'description' => sprintf(__('This feature will not work in the Firefox browser untill you enable browser compatibility so please %1s look here %2s', 'ultimate-store-kit'), '<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility" target="_blank">', '</a>'),
266 'description' => sprintf(
267 /* translators: 1: opening anchor tag, 2: closing anchor tag */
268 __('This feature will not work in the Firefox browser until you enable browser compatibility, so please %1$s look here %2$s.', 'ultimate-store-kit'),
269 '<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility" target="_blank">',
270 '</a>'
271 ),
272 'default' => 'yes',
273 'condition' => [
274 'skin_layout' => [
275 'style-5',
276 ]
277 ]
278 ]
279 );
280
281 $this->add_control(
282 'item_overlay_blur_level',
283 [
284 'label' => __('Blur Level', 'ultimate-store-kit'),
285 'type' => Controls_Manager::SLIDER,
286 'range' => [
287 'px' => [
288 'min' => 0,
289 'step' => 1,
290 'max' => 50,
291 ]
292 ],
293 'default' => [
294 'size' => 10
295 ],
296 'selectors' => [
297 '{{WRAPPER}} .usk-edd-category-grid.style-5 .usk-edd-category-grid-image:before' => 'backdrop-filter: blur({{SIZE}}px); -webkit-backdrop-filter: blur({{SIZE}}px);'
298 ],
299 'condition' => [
300 'item_overlay_blur_effect' => 'yes',
301 'skin_layout' => [
302 'style-5'
303 ]
304 ]
305 ]
306 );
307
308 $this->add_group_control(
309 Group_Control_Background::get_type(),
310 [
311 'name' => 'item_background',
312 'selector' => '{{WRAPPER}} .usk-edd-category-grid.style-5 .usk-edd-category-grid-image:before',
313 'condition' => [
314 'skin_layout' => [
315 'style-5'
316 ]
317 ]
318 ]
319 );
320 $this->add_responsive_control(
321 'item_padding',
322 [
323 'label' => esc_html__('Padding', 'ultimate-store-kit'),
324 'type' => Controls_Manager::DIMENSIONS,
325 'size_units' => ['px', '%', 'em'],
326 'selectors' => [
327 '{{WRAPPER}} .usk-edd-category-carousel .edd-item' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
328 ],
329 ]
330 );
331 $this->add_responsive_control(
332 'item_margin',
333 [
334 'label' => esc_html__('Margin', 'ultimate-store-kit'),
335 'type' => Controls_Manager::DIMENSIONS,
336 'size_units' => ['px', '%', 'em'],
337 'selectors' => [
338 '{{WRAPPER}} .usk-edd-category-carousel .edd-item' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
339 ],
340 ]
341 );
342 $this->add_group_control(
343 Group_Control_Border::get_type(),
344 [
345 'name' => 'item_border',
346 'label' => esc_html__('Border', 'ultimate-store-kit'),
347 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item',
348 ]
349 );
350 $this->add_responsive_control(
351 'item_radius',
352 [
353 'label' => esc_html__('Radius', 'ultimate-store-kit'),
354 'type' => Controls_Manager::DIMENSIONS,
355 'size_units' => ['px', '%', 'em'],
356 'selectors' => [
357 '{{WRAPPER}} .usk-edd-category-carousel .edd-item' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
358 ],
359 ]
360 );
361
362 // $this->add_group_control(
363 // Group_Control_Box_Shadow::get_type(),
364 // [
365 // 'name' => 'item_shadow',
366 // 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item',
367 // ]
368 // );
369 $this->end_controls_tab();
370 $this->start_controls_tab(
371 'item_tab_hover',
372 [
373 'label' => esc_html__('Hover', 'ultimate-store-kit'),
374 ]
375 );
376 $this->add_group_control(
377 Group_Control_Background::get_type(),
378 [
379 'name' => 'items_hover_background',
380 'label' => esc_html__('Backgrund', 'ultimate-store-kit'),
381 'types' => ['classic', 'gradient'],
382 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item:hover',
383 'condition' => [
384 'skin_layout!' => 'style-5'
385 ]
386 ]
387 );
388 $this->add_control(
389 'item_overlay_hover',
390 [
391 'label' => esc_html__('Overlay Color', 'ultimate-store-kit'),
392 'type' => Controls_Manager::COLOR,
393 'selectors' => [
394 '{{WRAPPER}} .usk-edd-category-carousel .edd-item:hover .edd-item-overlay' => 'background: {{VALUE}}',
395 ],
396 'condition' => [
397 'skin_layout!' => ['style-3']
398 ]
399 ]
400 );
401 $this->add_control(
402 'item_hover_border_color',
403 [
404 'label' => esc_html__('Border Color', 'ultimate-store-kit'),
405 'type' => Controls_Manager::COLOR,
406 'selectors' => [
407 '{{WRAPPER}} .usk-edd-category-carousel .edd-item:hover' => 'border-color: {{VALUE}}',
408 ],
409 ]
410 );
411 $this->end_controls_tab();
412 $this->end_controls_tabs();
413 $this->end_controls_section();
414 $this->start_controls_section(
415 'section_style_content',
416 [
417 'label' => esc_html__('Content', 'ultimate-store-kit'),
418 'tab' => Controls_Manager::TAB_STYLE,
419 'condition' => [
420 'skin_layout' => [
421 'style-1'
422 ]
423 ]
424 ]
425 );
426 $this->start_controls_tabs(
427 'content_tabs'
428 );
429 $this->start_controls_tab(
430 'content_tab_normal',
431 [
432 'label' => esc_html__('Normal', 'ultimate-store-kit'),
433 ]
434 );
435
436 $this->add_group_control(
437 Group_Control_Background::get_type(),
438 [
439 'name' => 'content_background',
440 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content',
441 'condition' => [
442 'skin_layout' => 'style-1'
443 ]
444 ]
445 );
446
447 $this->add_responsive_control(
448 'content_padding',
449 [
450 'label' => esc_html__('Padding', 'ultimate-store-kit'),
451 'type' => Controls_Manager::DIMENSIONS,
452 'size_units' => ['px', '%', 'em'],
453 'selectors' => [
454 '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
455 ],
456 ]
457 );
458 $this->add_responsive_control(
459 'content_margin',
460 [
461 'label' => esc_html__('Margin', 'ultimate-store-kit'),
462 'type' => Controls_Manager::DIMENSIONS,
463 'size_units' => ['px', '%', 'em'],
464 'selectors' => [
465 '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
466 ],
467 ]
468 );
469 $this->add_group_control(
470 Group_Control_Border::get_type(),
471 [
472 'name' => 'content_border',
473 'label' => esc_html__('Border', 'ultimate-store-kit'),
474 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content',
475 ]
476 );
477 $this->add_responsive_control(
478 'content_radius',
479 [
480 'label' => esc_html__('Radius', 'ultimate-store-kit'),
481 'type' => Controls_Manager::DIMENSIONS,
482 'size_units' => ['px', '%', 'em'],
483 'selectors' => [
484 '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
485 ],
486 ]
487 );
488
489 $this->add_group_control(
490 Group_Control_Box_Shadow::get_type(),
491 [
492 'name' => 'content_shadow',
493 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content',
494 ]
495 );
496 $this->end_controls_tab();
497 $this->start_controls_tab(
498 'content_tab_hover',
499 [
500 'label' => esc_html__('Hover', 'ultimate-store-kit'),
501 ]
502 );
503 $this->add_control(
504 'content_hover_border_color',
505 [
506 'label' => esc_html__('Border Color', 'ultimate-store-kit'),
507 'type' => Controls_Manager::COLOR,
508 'selectors' => [
509 '{{WRAPPER}} .usk-edd-category-carousel .edd-item:hover .edd-content' => 'border-color: {{VALUE}}',
510 ],
511 ]
512 );
513 $this->add_group_control(
514 Group_Control_Box_Shadow::get_type(),
515 [
516 'name' => 'content_hover_shadow',
517 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item:hover .edd-content',
518 ]
519 );
520 $this->end_controls_tab();
521 $this->end_controls_tabs();
522 $this->end_controls_section();
523 $this->start_controls_section(
524 'section_style_category',
525 [
526 'label' => esc_html__('Category', 'ultimate-store-kit'),
527 'tab' => Controls_Manager::TAB_STYLE,
528 ]
529 );
530 $this->start_controls_tabs(
531 'category_tabs'
532 );
533 $this->start_controls_tab(
534 'category_tab_normal',
535 [
536 'label' => esc_html__('Normal', 'ultimate-store-kit'),
537 ]
538 );
539 $this->add_control(
540 'category_color',
541 [
542 'label' => esc_html__('Color', 'ultimate-store-kit'),
543 'type' => Controls_Manager::COLOR,
544 'selectors' => [
545 '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content .title' => 'color: {{VALUE}}',
546 ],
547 ]
548 );
549 $this->add_group_control(
550 Group_Control_Background::get_type(),
551 [
552 'name' => 'style_5_category_bg',
553 'label' => esc_html__('Backgorund', 'ultimate-store-kit'),
554 'types' => ['classic', 'gradient'],
555 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content .title',
556 'condition' => [
557 'skin_layout' => [
558 'style-5'
559 ]
560 ]
561 ]
562 );
563 $this->add_group_control(
564 Group_Control_Background::get_type(),
565 [
566 'name' => 'style_6_category_bg',
567 'label' => esc_html__('Background', 'ultimate-store-kit'),
568 'types' => ['classic', 'gradient'],
569 'selector' => '{{WRAPPER}} .usk-edd-category-carousel.style-5 .usk-edd-category-carousel-image:before',
570 'condition' => [
571 'skin_layout' => [
572 'style-6'
573 ]
574 ]
575 ]
576 );
577 $this->add_responsive_control(
578 'category_margin',
579 [
580 'label' => esc_html__('Margin', 'ultimate-store-kit'),
581 'type' => Controls_Manager::DIMENSIONS,
582 'size_units' => ['px', '%'],
583 'selectors' => [
584 '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content .title' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
585 ],
586 ]
587 );
588 $this->add_responsive_control(
589 'category_padding',
590 [
591 'label' => esc_html__('Padding', 'ultimate-store-kit'),
592 'type' => Controls_Manager::DIMENSIONS,
593 'size_units' => ['px', '%'],
594 'selectors' => [
595 '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content .title' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
596 ],
597 'condition' => [
598 'skin_layout' => [
599 'style-4'
600 ]
601 ]
602 ]
603 );
604
605 $this->add_group_control(
606 Group_Control_Typography::get_type(),
607 [
608 'name' => 'category_typography',
609 'label' => esc_html__('Typography', 'ultimate-store-kit'),
610 'exclude' => ['line_height'],
611 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content .title',
612 ]
613 );
614 $this->end_controls_tab();
615 $this->start_controls_tab(
616 'category_tab_hover',
617 [
618 'label' => esc_html__('Hover', 'ultimate-store-kit'),
619 'condition' => [
620 'skin_layout!' => 'style-5'
621 ]
622 ]
623 );
624 $this->add_control(
625 'hover_category_color',
626 [
627 'label' => esc_html__('Hover Color', 'ultimate-store-kit'),
628 'type' => Controls_Manager::COLOR,
629 'selectors' => [
630 '{{WRAPPER}} .usk-edd-category-carousel .edd-item:hover .edd-content .title' => 'color: {{VALUE}};',
631 ],
632 ]
633 );
634 $this->end_controls_tab();
635 $this->end_controls_tabs();
636 $this->end_controls_section();
637 $this->start_controls_section(
638 'section_style_count',
639 [
640 'label' => esc_html__('Count', 'ultimate-store-kit'),
641 'tab' => Controls_Manager::TAB_STYLE,
642 ]
643 );
644 $this->start_controls_tabs(
645 'count_tabs'
646 );
647 $this->start_controls_tab(
648 'count_tab_normal',
649 [
650 'label' => esc_html__('Normal', 'ultimate-store-kit'),
651 'condition' => [
652 'skin_layout!' => [
653 'style-5'
654 ]
655 ]
656 ]
657 );
658 $this->add_control(
659 'count_color',
660 [
661 'label' => esc_html__('Color', 'ultimate-store-kit'),
662 'type' => Controls_Manager::COLOR,
663 'selectors' => [
664 '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content .edd-category-count > *' => 'color: {{VALUE}};',
665 ],
666 ]
667 );
668 $this->add_group_control(
669 Group_Control_Background::get_type(),
670 [
671 'name' => 'count_background',
672 'label' => esc_html__('Background', 'ultimate-store-kit'),
673 'types' => ['classic', 'gradient'],
674 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content .edd-category-count > *',
675 'condition' => [
676 'skin_layout' => [
677 'style-2'
678 ]
679 ]
680 ]
681 );
682 $this->add_responsive_control(
683 'count_number_size',
684 [
685 'label' => esc_html__('Size', 'ultimate-store-kit'),
686 'type' => Controls_Manager::SLIDER,
687 'size_units' => ['px'],
688 'default' => [
689 'unit' => 'px',
690 'size' => 30,
691 ],
692 'selectors' => [
693 '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content .edd-category-count > *' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}}; line-height: {{SIZE}}{{UNIT}};',
694 ],
695 'condition' => [
696 'skin_layout' => [
697 'style-2'
698 ]
699 ]
700 ]
701 );
702 // $this->add_responsive_control(
703 // 'count_padding',
704 // [
705 // 'label' => __('Padding', 'ultimate-store-kit'),
706 // 'type' => Controls_Manager::DIMENSIONS,
707 // 'size_units' => ['px', 'em', '%'],
708 // 'selectors' => [
709 // '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content .edd-category-count > *' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
710 // ],
711 // ]
712 // );
713 $this->add_group_control(
714 Group_Control_Typography::get_type(),
715 [
716 'name' => 'count_typography',
717 'label' => esc_html__('Typography', 'ultimate-store-kit'),
718 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item .edd-content .edd-category-count > *',
719 ]
720 );
721 $this->end_controls_tab();
722 $this->start_controls_tab(
723 'count_tab_hover',
724 [
725 'label' => esc_html__('Hover', 'ultimate-store-kit'),
726 ]
727 );
728 $this->add_control(
729 'count_color_hover',
730 [
731 'label' => esc_html__('Color', 'ultimate-store-kit'),
732 'type' => Controls_Manager::COLOR,
733 'selectors' => [
734 '{{WRAPPER}} .usk-edd-category-carousel .edd-item:hover .edd-content .edd-category-count > *' => 'color: {{VALUE}};',
735 ],
736 ]
737 );
738 $this->add_group_control(
739 Group_Control_Background::get_type(),
740 [
741 'name' => 'count_hover_background',
742 'label' => esc_html__('Background', 'ultimate-store-kit'),
743 'types' => ['classic', 'gradient'],
744 'selector' => '{{WRAPPER}} .usk-edd-category-carousel .edd-item:hover .edd-content .edd-category-count > *',
745 'condition' => [
746 'skin_layout' => [
747 'style-2'
748 ]
749 ]
750 ]
751 );
752 $this->end_controls_tab();
753 $this->end_controls_tabs();
754 $this->end_controls_section();
755 $this->register_global_controls_navigation_style();
756 }
757 public function render_query() {
758 $settings = $this->get_settings_for_display();
759 $args = [
760 'orderby' => isset($settings['orderby']) ? $settings['orderby'] : 'name',
761 'order' => isset($settings['order']) ? $settings['order'] : 'ASC',
762 'hide_empty' => isset($settings['hide_empty']) && ($settings['hide_empty'] == 'yes') ? 0 : 1,
763 ];
764
765
766 switch ($settings['display_category']) {
767 case 'all':
768 if (isset($settings['cats_include_by_id']) && !empty($settings['cats_include_by_id'])) {
769 $args['include'] = $settings['cats_include_by_id'];
770 }
771 if (isset($settings['cats_exclude_by_id']) && !empty($settings['cats_exclude_by_id'])) {
772 $args['exclude'] = $settings['cats_exclude_by_id'];
773 }
774 break;
775 case 'child':
776 if ($settings['parent_cats'] != 'none' && !empty($settings['parent_cats'])) {
777 $args['child_of'] = $settings['parent_cats'];
778 }
779 break;
780 case 'parents':
781 $args['parent'] = 0;
782 break;
783 }
784 $categories = get_terms('download_category', $args);
785 return $categories;
786 }
787 public function render_image() {
788 $settings = $this->get_settings_for_display();
789 $image_src = Utils::get_placeholder_image_src();
790 ?>
791 <div class="usk-edd-category-carousel-image">
792 <?php if ($settings['is_use_image']) :
793 $thumb_url = Group_Control_Image_Size::get_attachment_image_src($settings['category_image']['id'], 'category_thumbnail', $settings);
794 if (!empty($thumb_url)) {
795 $image_src = $settings['category_image']['url'];
796 }
797 $path_parts = pathinfo( $image_src );
798 $image_alt_text = isset( $path_parts['filename'] ) ? $path_parts['filename'] : '';
799 ?>
800 <img src="<?php echo esc_url($image_src); ?>" alt="<?php echo esc_attr( $image_alt_text ); ?>">
801 <?php endif; ?>
802 </div><?php
803 }
804 public function render_loop_item() {
805 $settings = $this->get_settings_for_display();
806 $categories = $this->render_query();
807 ?>
808 <?php
809 if (!empty($categories)) {
810 foreach ($categories as $index => $category) :
811 $category_thumb_id = get_term_meta($category->term_id, 'download_term_image', true);
812 $img_url = wp_get_attachment_image_url($category_thumb_id, $settings['category_thumbnail_size']);
813 $category_image = $img_url ? $img_url : Utils::get_placeholder_image_src();
814 $image_alt_text = pathinfo( $category_image, PATHINFO_FILENAME );
815
816 $this->add_render_attribute('edd-category-item', 'class', ['edd-item swiper-slide', 'category-link'], true);
817 $this->add_render_attribute('edd-category-item', 'href', get_term_link($category->term_id, 'download_category'), true); ?>
818 <a <?php $this->print_render_attribute_string('edd-category-item'); ?>>
819 <?php if (!$category_thumb_id) {
820 $this->render_image();
821 } else { ?>
822 <div class="usk-edd-category-carousel-image">
823 <img src="<?php echo esc_url($category_image); ?>" alt="<?php echo esc_attr( $image_alt_text ); ?>">
824 </div>
825 <?php } ?>
826 <div class="edd-content">
827 <?php printf('<h3 class="title">%s</h3>', esc_html($category->name)); ?>
828 <?php if ($settings['show_count']) :
829 printf('<p class="edd-category-count"><span class="edd-count-number">%s</span><span class="edd-count-text">products</span></p>', esc_html($category->count));
830 endif;
831 ?>
832 </div>
833 <div class="edd-item-overlay"></div>
834 </a>
835 <?php
836 // if (!empty($settings['item_limit']['size'])) {
837 // if ($index == ($settings['item_limit']['size'] - 1)) break;
838 // }
839 endforeach;
840 } else {
841 printf('<span class="bdt-warning">%s</span>', esc_html__('Opps, Nothing found to display', 'ultimate-store-kit'));
842 }
843 }
844
845 public function render() {
846 $settings = $this->get_settings_for_display();
847 $this->add_render_attribute('usk-carousel-wrapper', 'class', [$settings['skin_layout']]);
848 $this->register_global_template_carousel_header();
849 $this->render_loop_item();
850 $this->usk_register_global_template_carousel_footer();
851 }
852 }
853