PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.36
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.36
51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 51.1.46 51.1.47 51.1.49 All 37 releases
king-addons / includes / widgets / Content_Ticker / Content_Ticker.php

Content_Ticker.php in King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder 51.1.36, at includes/widgets/Content_Ticker/Content_Ticker.php

2,181 lines 76.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace King_Addons;
4
5 use Elementor\Controls_Manager;
6 use Elementor\Group_Control_Typography;
7 use Elementor\Group_Control_Image_Size;
8 use Elementor\Group_Control_Box_Shadow;
9 use Elementor\Widget_Base;
10 use Elementor\Icons_Manager;
11 use WP_Query;
12
13 if (!defined('ABSPATH')) {
14 exit;
15 }
16
17 class Content_Ticker extends Widget_Base
18 {
19
20
21
22 public function get_name()
23 {
24 return 'king-addons-content-ticker';
25 }
26
27 public function get_title()
28 {
29 return esc_html__('Content Ticker', 'king-addons');
30 }
31
32 public function get_icon()
33 {
34 return 'king-addons-icon king-addons-content-ticker';
35 }
36
37 public function get_categories()
38 {
39 return ['king-addons'];
40 }
41
42 public function get_keywords()
43 {
44 return ['king addons', 'king', 'addons', 'kingaddons', 'king-addons', 'blog', 'content ticker', 'content', 'ticker',
45 'marquee', 'news', 'post', 'posts', 'news ticker', 'post ticker', 'posts ticker'];
46 }
47
48 public function get_script_depends()
49 {
50 return [KING_ADDONS_ASSETS_UNIQUE_KEY . '-slick-slick',
51 KING_ADDONS_ASSETS_UNIQUE_KEY . '-marquee-marquee',
52 KING_ADDONS_ASSETS_UNIQUE_KEY . '-content-ticker-script',
53 ];
54 }
55
56 public function get_style_depends()
57 {
58 return [
59 KING_ADDONS_ASSETS_UNIQUE_KEY . '-content-ticker-style',
60 KING_ADDONS_ASSETS_UNIQUE_KEY . '-general-general',
61 ];
62 }
63
64 public function get_custom_help_url()
65 {
66 return 'mailto:bug@kingaddons.com?subject=Bug Report - King Addons&body=Please describe the issue';
67 }
68
69 public function add_control_post_type()
70 {
71 $this->add_control(
72 'post_type',
73 [
74 'label' => esc_html__('Select Type', 'king-addons'),
75 'type' => Controls_Manager::SELECT,
76 'default' => 'dynamic',
77 'options' => [
78 'dynamic' => esc_html__('Dynamic', 'king-addons'),
79 'pro-cm' => esc_html__('Custom (Pro)', 'king-addons'),
80 ],
81 ]
82 );
83 }
84
85 public function add_control_slider_effect()
86 {
87 $this->add_control(
88 'slider_effect',
89 [
90 'type' => Controls_Manager::SELECT,
91 'label' => esc_html__('Effect', 'king-addons'),
92 'default' => 'hr-slide',
93 'options' => [
94 'hr-slide' => esc_html__('Horizontal Slide', 'king-addons'),
95 'pro-tp' => esc_html__('Typing (Pro)', 'king-addons'),
96 'pro-fd' => esc_html__('Fade (Pro)', 'king-addons'),
97 'pro-vs' => esc_html__('Vertical Slide (Pro)', 'king-addons'),
98 ],
99 'prefix_class' => 'king-addons-ticker-effect-',
100 'render_type' => 'template',
101 'separator' => 'before',
102 'condition' => [
103 'type_select' => 'slider',
104 ],
105 ]
106 );
107 }
108
109 public function add_control_slider_effect_cursor()
110 {
111 }
112
113 public function add_control_heading_icon_type()
114 {
115 $this->add_control(
116 'heading_icon_type',
117 [
118 'type' => Controls_Manager::SELECT,
119 'label' => esc_html__('Select Type', 'king-addons'),
120 'default' => 'fontawesome',
121 'options' => [
122 'none' => esc_html__('None', 'king-addons'),
123 'fontawesome' => esc_html__('FontAwesome', 'king-addons'),
124 'pro-cc' => esc_html__('Circle (Pro)', 'king-addons'),
125 ],
126 ]
127 );
128 }
129
130 public function add_control_type_select()
131 {
132 $this->add_control(
133 'type_select',
134 [
135 'type' => Controls_Manager::SELECT,
136 'label' => esc_html__('Select Type', 'king-addons'),
137 'default' => 'slider',
138 'options' => [
139 'slider' => esc_html__('Slider', 'king-addons'),
140 'pro-mq' => esc_html__('Marquee (Pro)', 'king-addons'),
141 ],
142 'render_type' => 'template',
143 'separator' => 'before',
144 ]
145 );
146 }
147
148 public function add_control_marquee_direction()
149 {
150 }
151
152 public function add_control_marquee_pause_on_hover()
153 {
154 }
155
156 public function add_control_marquee_effect_duration()
157 {
158 }
159
160 public function add_section_ticker_items()
161 {
162 }
163
164 /** @noinspection PhpMissingFieldTypeInspection */
165 public $post_types;
166
167 public function add_control_query_source()
168 {
169
170 $this->post_types = [];
171 $this->post_types['post'] = esc_html__('Posts', 'king-addons');
172 $this->post_types['page'] = esc_html__('Pages', 'king-addons');
173
174 $custom_post_types = Core::getCustomTypes('post');
175 foreach ($custom_post_types as $slug => $title) {
176 if ('product' === $slug || 'e-landing-page' === $slug) {
177 continue;
178 }
179
180 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
181 $this->post_types['pro-' . substr($slug, 0, 2)] = esc_html($title) . ' (Pro)';
182 } else {
183 $this->post_types[$slug] = esc_html($title);
184 }
185 }
186
187 $this->post_types['pro-pd'] = 'Products (Pro)';
188 $this->post_types['pro-ft'] = 'Featured (Pro)';
189 $this->post_types['pro-sl'] = 'On Sale (Pro)';
190
191 $this->add_control(
192 'query_source',
193 [
194 'label' => esc_html__('Source', 'king-addons'),
195 'type' => Controls_Manager::SELECT,
196 'default' => 'post',
197 'options' => $this->post_types,
198 ]
199 );
200 }
201
202 protected function register_controls()
203 {
204
205
206 $this->start_controls_section(
207 'section_general',
208 [
209 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('General', 'king-addons'),
210 'tab' => Controls_Manager::TAB_CONTENT,
211 ]
212 );
213
214
215 $this->add_control_post_type();
216
217
218 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'content-ticker', 'post_type', ['pro-cm']);
219
220 $this->add_control(
221 'link_type',
222 [
223 'label' => esc_html__('Link Type', 'king-addons'),
224 'type' => Controls_Manager::SELECT,
225 'options' => [
226 'none' => esc_html__('None', 'king-addons'),
227 'title' => esc_html__('Title', 'king-addons'),
228 'image' => esc_html__('Image', 'king-addons'),
229 'image-title' => esc_html__('Image & Title', 'king-addons'),
230 'box' => esc_html__('Box', 'king-addons'),
231 ],
232 'default' => 'image-title',
233 'separator' => 'before',
234 ]
235 );
236
237 $this->end_controls_section();
238
239
240 $this->start_controls_section(
241 'section_ticker_query',
242 [
243 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Query', 'king-addons'),
244 'tab' => Controls_Manager::TAB_CONTENT,
245 'condition' => [
246 'post_type' => 'dynamic',
247 ],
248 ]
249 );
250
251 $this->add_control_query_source();
252
253
254 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'content-ticker', 'query_source', ['pro-pd', 'pro-ft', 'pro-sl']);
255
256 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
257 $this->add_control(
258 'query_source_cpt_pro_notice',
259 [
260 'raw' => 'This option is available<br> in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-grid-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
261 'type' => Controls_Manager::RAW_HTML,
262 'content_classes' => 'king-addons-pro-notice',
263 'condition' => [
264 'query_source!' => ['post', 'page', 'pro-pd', 'pro-ft', 'pro-sl', 'product', 'featured', 'sale'],
265 ]
266 ]
267 );
268 }
269
270
271 $post_taxonomies = Core::getCustomTypes('tax', false);
272
273 $this->add_control(
274 'query_selection',
275 [
276 'label' => esc_html__('Selection', 'king-addons'),
277 'type' => Controls_Manager::SELECT,
278 'default' => 'dynamic',
279 'options' => [
280 'dynamic' => esc_html__('Dynamic', 'king-addons'),
281 'manual' => esc_html__('Manual', 'king-addons'),
282 ],
283 'condition' => [
284 'query_source!' => ['current', 'related'],
285 ],
286 ]
287 );
288
289 $this->add_control(
290 'query_tax_selection',
291 [
292 'label' => esc_html__('Selection Taxonomy', 'king-addons'),
293 'type' => Controls_Manager::SELECT,
294 'default' => 'category',
295 'options' => $post_taxonomies,
296 'condition' => [
297 'query_source' => 'related',
298 ],
299 ]
300 );
301
302 $this->add_control(
303 'query_author',
304 [
305 'label' => esc_html__('Authors', 'king-addons'),
306 'type' => 'king-addons-ajax-select2',
307 'options' => 'ajaxselect2/getUsers',
308 'multiple' => true,
309 'label_block' => true,
310 'separator' => 'before',
311 'condition' => [
312 'query_source!' => ['current', 'related'],
313 'query_selection' => 'dynamic',
314 ],
315 ]
316 );
317
318
319 foreach ($post_taxonomies as $slug => $title) {
320 global $wp_taxonomies;
321 $post_type = '';
322
323 if (isset($wp_taxonomies[$slug]->object_type[0])) {
324 $post_type = $wp_taxonomies[$slug]->object_type[0];
325 }
326
327 $this->add_control(
328 'query_taxonomy_' . $slug,
329 [
330 'label' => $title,
331 'type' => 'king-addons-ajax-select2',
332 'options' => 'ajaxselect2/getTaxonomies',
333 'query_slug' => $slug,
334 'multiple' => true,
335 'label_block' => true,
336 'condition' => [
337 'query_source' => $post_type,
338 'query_selection' => 'dynamic',
339 ],
340 ]
341 );
342 }
343
344
345 foreach ($this->post_types as $slug => $title) {
346 if ('featured' !== $slug && 'sale' !== $slug) {
347 $this->add_control(
348 'query_exclude_' . $slug,
349 [
350 'label' => esc_html__('Exclude ', 'king-addons') . $title,
351 'type' => 'king-addons-ajax-select2',
352 'options' => 'ajaxselect2/getPostsByPostType',
353 'query_slug' => $slug,
354 'multiple' => true,
355 'label_block' => true,
356 'condition' => [
357 'query_source' => $slug,
358 'query_source!' => ['current', 'related'],
359 'query_selection' => 'dynamic',
360 ],
361 ]
362 );
363 }
364 }
365
366
367 foreach ($this->post_types as $slug => $title) {
368 $this->add_control(
369 'query_manual_' . $slug,
370 [
371 'label' => esc_html__('Select ', 'king-addons') . $title,
372 'type' => 'king-addons-ajax-select2',
373 'options' => 'ajaxselect2/getPostsByPostType',
374 'query_slug' => $slug,
375 'multiple' => true,
376 'label_block' => true,
377 'condition' => [
378 'query_source' => $slug,
379 'query_selection' => 'manual',
380 ],
381 'separator' => 'before',
382 ]
383 );
384 }
385
386 $this->add_control(
387 'query_posts_per_page',
388 [
389 'label' => esc_html__('Items Per Page', 'king-addons'),
390 'type' => Controls_Manager::NUMBER,
391 'default' => 10,
392 'min' => 0,
393 'condition' => [
394 'query_selection' => 'dynamic',
395 ]
396 ]
397 );
398
399 $this->add_control(
400 'query_offset',
401 [
402 'label' => esc_html__('Offset', 'king-addons'),
403 'type' => Controls_Manager::NUMBER,
404 'default' => 0,
405 'min' => 0,
406 'condition' => [
407 'query_selection' => 'dynamic',
408 ]
409 ]
410 );
411
412
413 $this->add_control(
414 'post_order',
415 [
416 'label' => esc_html__('Order', 'king-addons'),
417 'type' => Controls_Manager::SELECT,
418 'default' => 'DESC',
419 'options' => [
420 'ASC' => esc_html__('Ascending', 'king-addons'),
421 'DESC' => esc_html__('Descending', 'king-addons'),
422 ],
423 ]
424 );
425
426 $this->add_control(
427 'post_orderby',
428 [
429 'label' => esc_html__('Order By', 'king-addons'),
430 'type' => Controls_Manager::SELECT,
431 'default' => 'date',
432 'options' => [
433 'date' => esc_html__('Date', 'king-addons'),
434 'modified' => esc_html__('Last Modified', 'king-addons'),
435 'rand' => esc_html__('Rand', 'king-addons'),
436 'title' => esc_html__('Title', 'king-addons'),
437 'ID' => esc_html__('Post ID', 'king-addons'),
438 'author' => esc_html__('Post Author', 'king-addons'),
439 'comment_count' => esc_html__('Comment Count', 'king-addons'),
440 ],
441 ]
442 );
443
444 $this->add_control(
445 'element_select_filter',
446 [
447 'type' => Controls_Manager::HIDDEN,
448 'default' => $this->get_related_taxonomies(),
449 ]
450 );
451
452 $this->end_controls_section();
453
454
455 $this->add_section_ticker_items();
456
457
458 $this->start_controls_section(
459 'section_heading',
460 [
461 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Heading', 'king-addons'),
462 'tab' => Controls_Manager::TAB_CONTENT,
463 ]
464 );
465
466 $this->add_control(
467 'heading_text',
468 [
469 'label' => esc_html__('Text', 'king-addons'),
470 'type' => Controls_Manager::TEXT,
471 'dynamic' => [
472 'active' => true,
473 ],
474 'default' => 'Latest News',
475 ]
476 );
477
478 $this->add_responsive_control(
479 'heading_width',
480 [
481 'label' => esc_html__('Width', 'king-addons'),
482 'type' => Controls_Manager::SLIDER,
483 'range' => [
484 '%' => [
485 'min' => 0,
486 'max' => 100,
487 ],
488 'px' => [
489 'min' => 0,
490 'max' => 500,
491 ],
492 ],
493 'size_units' => ['%', 'px'],
494 'default' => [
495 'unit' => 'px',
496 'size' => 120,
497 ],
498 'selectors' => [
499 '{{WRAPPER}} .king-addons-ticker-heading' => 'min-width: {{SIZE}}{{UNIT}};',
500 ],
501 'render_type' => 'template',
502 'separator' => 'before',
503 ]
504 );
505
506 $this->add_control(
507 'heading_position',
508 [
509 'label' => esc_html__('Position', 'king-addons'),
510 'type' => Controls_Manager::CHOOSE,
511 'default' => 'left',
512 'label_block' => false,
513 'options' => [
514 'left' => [
515 'title' => esc_html__('Left', 'king-addons'),
516 'icon' => 'eicon-h-align-left',
517 ],
518 'right' => [
519 'title' => esc_html__('Right', 'king-addons'),
520 'icon' => 'eicon-h-align-right',
521 ],
522 ],
523 'prefix_class' => 'king-addons-ticker-heading-position-',
524 'separator' => 'before',
525 ]
526 );
527
528 $this->add_control(
529 'heading_align',
530 [
531 'label' => esc_html__('Alignment', 'king-addons'),
532 'type' => Controls_Manager::CHOOSE,
533 'default' => 'center',
534 'label_block' => false,
535 'options' => [
536 'left' => [
537 'title' => esc_html__('Left', 'king-addons'),
538 'icon' => 'eicon-text-align-left',
539 ],
540 'center' => [
541 'title' => esc_html__('Center', 'king-addons'),
542 'icon' => 'eicon-text-align-center',
543 ],
544 'right' => [
545 'title' => esc_html__('Right', 'king-addons'),
546 'icon' => 'eicon-text-align-right',
547 ],
548 ],
549 'selectors_dictionary' => [
550 'left' => 'flex-start',
551 'center' => 'center',
552 'right' => 'flex-end'
553 ],
554 'selectors' => [
555 '{{WRAPPER}} .king-addons-ticker-heading' => '-webkit-justify-content: {{VALUE}};justify-content: {{VALUE}};',
556 ],
557 'separator' => 'before',
558 ]
559 );
560
561 $this->add_control(
562 'heading_icon_section',
563 [
564 'label' => esc_html__('Icon', 'king-addons'),
565 'type' => Controls_Manager::HEADING,
566 'separator' => 'before',
567 ]
568 );
569
570 $this->add_control_heading_icon_type();
571
572
573 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'content-ticker', 'heading_icon_type', ['pro-cc']);
574
575 $this->add_control(
576 'heading_icon',
577 [
578 'label' => esc_html__('Select Icon', 'king-addons'),
579 'type' => Controls_Manager::ICONS,
580 'skin' => 'inline',
581 'label_block' => false,
582 'default' => [
583 'value' => 'far fa-star',
584 'library' => 'fa-regular',
585 ],
586 'condition' => [
587 'heading_icon_type' => 'fontawesome',
588 ],
589 ]
590 );
591
592 $this->add_control(
593 'heading_icon_position',
594 [
595 'label' => esc_html__('Position', 'king-addons'),
596 'type' => Controls_Manager::CHOOSE,
597 'label_block' => false,
598 'default' => 'right',
599 'options' => [
600 'left' => [
601 'title' => esc_html__('Left', 'king-addons'),
602 'icon' => 'eicon-h-align-left',
603 ],
604 'right' => [
605 'title' => esc_html__('Right', 'king-addons'),
606 'icon' => 'eicon-h-align-right',
607 ],
608 ],
609 'prefix_class' => 'king-addons-ticker-heading-icon-position-',
610 'condition' => [
611 'heading_icon_type!' => 'none',
612 ],
613 ]
614 );
615
616 $this->add_responsive_control(
617 'heading_icon_size',
618 [
619 'label' => esc_html__('Size', 'king-addons'),
620 'type' => Controls_Manager::SLIDER,
621 'size_units' => ['px'],
622 'range' => [
623 'px' => [
624 'min' => 0,
625 'max' => 100,
626 ],
627 ],
628 'default' => [
629 'unit' => 'px',
630 'size' => 13,
631 ],
632 'selectors' => [
633 '{{WRAPPER}} .king-addons-ticker-heading-icon' => 'font-size: {{SIZE}}{{UNIT}};',
634 '{{WRAPPER}} .king-addons-ticker-heading-icon svg' => 'width: {{SIZE}}{{UNIT}};height: {{SIZE}}{{UNIT}};',
635 '{{WRAPPER}} .king-addons-ticker-icon-circle' => 'height: {{SIZE}}{{UNIT}};width: {{SIZE}}{{UNIT}};',
636 '{{WRAPPER}} .king-addons-ticker-icon-circle:before' => 'height: {{SIZE}}{{UNIT}};width: {{SIZE}}{{UNIT}}; margin-top: calc(-{{SIZE}}{{UNIT}} / 2);margin-left: calc(-{{SIZE}}{{UNIT}} / 2);',
637 '{{WRAPPER}} .king-addons-ticker-icon-circle:after' => 'height: {{SIZE}}{{UNIT}};width: {{SIZE}}{{UNIT}}; margin-top: calc(-{{SIZE}}{{UNIT}} / 2);margin-left: calc(-{{SIZE}}{{UNIT}} / 2);',
638 ],
639 'condition' => [
640 'heading_icon_type!' => 'none',
641 ],
642 ]
643 );
644
645 $this->add_responsive_control(
646 'heading_icon_distance',
647 [
648 'label' => esc_html__('Distance', 'king-addons'),
649 'type' => Controls_Manager::SLIDER,
650 'size_units' => ['px'],
651 'range' => [
652 'px' => [
653 'min' => 0,
654 'max' => 100,
655 ],
656 ],
657 'default' => [
658 'unit' => 'px',
659 'size' => 7,
660 ],
661 'selectors' => [
662 '{{WRAPPER}}.king-addons-ticker-heading-icon-position-left .king-addons-ticker-heading-icon' => 'margin-right: {{SIZE}}{{UNIT}};',
663 '{{WRAPPER}}.king-addons-ticker-heading-icon-position-right .king-addons-ticker-heading-icon' => 'margin-left: {{SIZE}}{{UNIT}};',
664 ],
665 'condition' => [
666 'heading_icon_type!' => 'none',
667 ],
668 ]
669 );
670
671
672 $this->add_control(
673 'heading_triangle',
674 [
675 'label' => esc_html__('Triangle', 'king-addons'),
676 'type' => Controls_Manager::SWITCHER,
677 'default' => 'yes',
678 'separator' => 'before',
679 ]
680 );
681
682 $this->add_control(
683 'heading_triangle_position',
684 [
685 'label' => esc_html__('Vertical Position', 'king-addons'),
686 'type' => Controls_Manager::CHOOSE,
687 'label_block' => false,
688 'default' => 'top',
689 'options' => [
690 'top' => [
691 'title' => esc_html__('Top', 'king-addons'),
692 'icon' => 'eicon-v-align-top',
693 ],
694 'middle' => [
695 'title' => esc_html__('Middle', 'king-addons'),
696 'icon' => 'eicon-v-align-middle',
697 ],
698 'bottom' => [
699 'title' => esc_html__('Bottom', 'king-addons'),
700 'icon' => 'eicon-v-align-bottom',
701 ],
702 ],
703 'prefix_class' => 'king-addons-ticker-heading-triangle-',
704 'render_type' => 'template',
705 'condition' => [
706 'heading_triangle' => 'yes',
707 ],
708 ]
709 );
710
711 $this->add_responsive_control(
712 'heading_triangle_size',
713 [
714 'type' => Controls_Manager::SLIDER,
715 'label' => esc_html__('Size', 'king-addons'),
716 'size_units' => ['px'],
717 'range' => [
718 'px' => [
719 'min' => 0,
720 'max' => 50,
721 ]
722 ],
723 'default' => [
724 'unit' => 'px',
725 'size' => 8,
726 ],
727 'selectors' => [
728 '{{WRAPPER}} .king-addons-ticker-heading:before' => 'border-width: {{SIZE}}{{UNIT}};',
729 '{{WRAPPER}}.king-addons-ticker-heading-position-left .king-addons-ticker-heading:before' => 'right: -{{SIZE}}{{UNIT}};',
730 '{{WRAPPER}}.king-addons-ticker-heading-position-right .king-addons-ticker-heading:before' => 'left: -{{SIZE}}{{UNIT}};',
731 ],
732 'condition' => [
733 'heading_triangle' => 'yes',
734 ],
735 ]
736 );
737
738 $this->add_control(
739 'heading_link',
740 [
741 'label' => esc_html__('Link', 'king-addons'),
742 'type' => Controls_Manager::URL,
743 'dynamic' => [
744 'active' => true,
745 ],
746 'placeholder' => esc_html__('https://example.com', 'king-addons'),
747 'separator' => 'before',
748
749 ]
750 );
751
752 $this->end_controls_section();
753
754
755 $this->start_controls_section(
756 'section_settings',
757 [
758 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Settings', 'king-addons'),
759 'type' => Controls_Manager::SECTION,
760 ]
761 );
762
763 $this->add_control(
764 'image_switcher',
765 [
766 'label' => esc_html__('Show Image', 'king-addons'),
767 'type' => Controls_Manager::SWITCHER,
768 'default' => 'yes',
769 ]
770 );
771
772 $this->add_group_control(
773 Group_Control_Image_Size::get_type(),
774 [
775 'name' => 'image_size',
776 'default' => 'full',
777 'condition' => [
778 'image_switcher' => 'yes',
779 ],
780 ]
781 );
782
783 $this->add_responsive_control(
784 'height',
785 [
786 'type' => Controls_Manager::SLIDER,
787 'label' => esc_html__('Height', 'king-addons'),
788 'size_units' => ['px'],
789 'range' => [
790 'px' => [
791 'min' => 20,
792 'max' => 300,
793 ],
794 ],
795 'default' => [
796 'unit' => 'px',
797 'size' => 30,
798 ],
799 'selectors' => [
800 '{{WRAPPER}} .king-addons-ticker-slider' => 'height: {{SIZE}}{{UNIT}};',
801 '{{WRAPPER}} .king-addons-ticker-item' => 'height: {{SIZE}}{{UNIT}};',
802 ],
803 'render_type' => 'template',
804 'separator' => 'before',
805 ]
806 );
807
808 $this->add_control_type_select();
809
810
811 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'content-ticker', 'type_select', ['pro-mq']);
812
813 $this->add_responsive_control(
814 'slider_amount',
815 [
816 'label' => esc_html__('Number of Slides', 'king-addons'),
817 'type' => Controls_Manager::NUMBER,
818 'label_block' => false,
819 'default' => 4,
820 'widescreen_default' => 4,
821 'laptop_default' => 4,
822 'tablet_extra_default' => 4,
823 'tablet_default' => 3,
824 'mobile_extra_default' => 3,
825 'mobile_default' => 1,
826 'min' => 1,
827 'max' => 10,
828 'prefix_class' => 'king-addons-ticker-slider-columns-%s',
829 'render_type' => 'template',
830 'frontend_available' => true,
831 'separator' => 'before',
832 'condition' => [
833 'slider_effect' => 'hr-slide',
834 'type_select' => 'slider',
835 ],
836 ]
837 );
838
839 $this->add_control(
840 'slides_to_scroll',
841 [
842 'label' => esc_html__('Slides to Scroll', 'king-addons'),
843 'type' => Controls_Manager::NUMBER,
844 'min' => 1,
845 'max' => 10,
846 'frontend_available' => true,
847 'default' => 1,
848 'widescreen_default' => 1,
849 'laptop_default' => 1,
850 'tablet_extra_default' => 1,
851 'tablet_default' => 1,
852 'mobile_extra_default' => 1,
853 'mobile_default' => 1,
854 'prefix_class' => 'king-addons-ticker-slides-to-scroll-',
855 'render_type' => 'template',
856 'condition' => [
857 'slider_effect' => 'hr-slide',
858 'type_select' => 'slider',
859 ],
860 ]
861 );
862
863 $this->add_responsive_control(
864 'slider_gutter',
865 [
866 'type' => Controls_Manager::SLIDER,
867 'label' => esc_html__('Gutter', 'king-addons'),
868 'size_units' => ['px'],
869 'range' => [
870 'px' => [
871 'min' => 0,
872 'max' => 100,
873 ]
874 ],
875 'default' => [
876 'unit' => 'px',
877 'size' => 30,
878 ],
879 'selectors' => [
880 '{{WRAPPER}} .king-addons-ticker-slider .slick-slide' => 'margin-left: {{SIZE}}{{UNIT}};',
881 '{{WRAPPER}} .king-addons-ticker-slider .slick-list' => 'margin-left: -{{SIZE}}{{UNIT}};',
882 '{{WRAPPER}} .king-addons-ticker-marquee .king-addons-ticker-item' => 'margin-right: {{SIZE}}{{UNIT}};',
883 ],
884 'render_type' => 'template',
885 'separator' => 'before',
886 'conditions' => [
887 'relation' => 'or',
888 'terms' => [
889 [
890 'name' => 'type_select',
891 'operator' => '=',
892 'value' => 'marquee',
893 ],
894 [
895 'relation' => 'and',
896 'terms' => [
897 [
898 'name' => 'type_select',
899 'operator' => '=',
900 'value' => 'slider',
901 ],
902 [
903 'name' => 'slider_amount',
904 'operator' => '!=',
905 'value' => '1',
906 ],
907 ],
908 ],
909 ],
910 ],
911 ]
912 );
913
914 $this->add_control(
915 'slider_nav',
916 [
917 'label' => esc_html__('Navigation', 'king-addons'),
918 'type' => Controls_Manager::SWITCHER,
919 'default' => 'yes',
920 'separator' => 'before',
921 'condition' => [
922 'type_select' => 'slider',
923 ],
924 ]
925 );
926
927 $this->add_control(
928 'slider_nav_icon',
929 [
930 'label' => esc_html__('Select Icon', 'king-addons'),
931 'type' => Controls_Manager::SELECT,
932 'default' => 'fas fa-angle-left',
933 'options' => [
934 'fas fa-angle-left' => esc_html__('Angle', 'king-addons'),
935 'fas fa-angle-double-left' => esc_html__('Angle Double', 'king-addons'),
936 'fas fa-arrow-left' => esc_html__('Arrow', 'king-addons'),
937 'fas fa-arrow-alt-circle-left' => esc_html__('Arrow Circle', 'king-addons'),
938 'far fa-arrow-alt-circle-left' => esc_html__('Arrow Circle Alt', 'king-addons'),
939 'fas fa-long-arrow-alt-left' => esc_html__('Long Arrow', 'king-addons'),
940 'fas fa-chevron-left' => esc_html__('Chevron', 'king-addons'),
941 ],
942 'condition' => [
943 'type_select' => 'slider',
944 'slider_nav' => 'yes',
945 ],
946 ]
947 );
948
949 $this->add_control(
950 'slider_nav_style',
951 [
952 'label' => esc_html__('Style', 'king-addons'),
953 'type' => Controls_Manager::SELECT,
954 'default' => 'horizontal',
955 'options' => [
956 'horizontal' => esc_html__('Horizontal', 'king-addons'),
957 'vertical' => esc_html__('Vertical', 'king-addons'),
958 ],
959 'prefix_class' => 'king-addons-ticker-arrow-style-',
960 'condition' => [
961 'type_select' => 'slider',
962 'slider_nav' => 'yes',
963 ],
964 ]
965 );
966
967 $this->add_control(
968 'slider_nav_position',
969 [
970 'label' => esc_html__('Position', 'king-addons'),
971 'type' => Controls_Manager::CHOOSE,
972 'label_block' => false,
973 'default' => 'right',
974 'options' => [
975 'left' => [
976 'title' => esc_html__('Left', 'king-addons'),
977 'icon' => 'eicon-h-align-left',
978 ],
979 'right' => [
980 'title' => esc_html__('Right', 'king-addons'),
981 'icon' => 'eicon-h-align-right',
982 ],
983 ],
984 'prefix_class' => 'king-addons-ticker-arrow-position-',
985 'render_type' => 'template',
986 'condition' => [
987 'type_select' => 'slider',
988 'slider_nav' => 'yes',
989 ],
990 ]
991 );
992
993 $this->add_control(
994 'slider_autoplay',
995 [
996 'label' => esc_html__('Autoplay', 'king-addons'),
997 'type' => Controls_Manager::SWITCHER,
998 'default' => 'yes',
999 'frontend_available' => true,
1000 'separator' => 'before',
1001 'condition' => [
1002 'type_select' => 'slider',
1003 ],
1004 ]
1005 );
1006
1007 $this->add_control(
1008 'slider_autoplay_duration',
1009 [
1010 'label' => esc_html__('Autoplay Speed', 'king-addons'),
1011 'type' => Controls_Manager::NUMBER,
1012 'default' => 3,
1013 'min' => 0,
1014 'max' => 15,
1015 'step' => 0.5,
1016 'frontend_available' => true,
1017 'condition' => [
1018 'type_select' => 'slider',
1019 'slider_autoplay' => 'yes',
1020 ],
1021 ]
1022 );
1023
1024 $this->add_control(
1025 'slider_pause_on_hover',
1026 [
1027 'label' => esc_html__('Pause Slide on Hover', 'king-addons'),
1028 'type' => Controls_Manager::SWITCHER,
1029 'default' => 'yes',
1030 'condition' => [
1031 'slider_autoplay' => 'yes',
1032 'type_select' => 'slider',
1033 ],
1034 ]
1035 );
1036
1037 $this->add_control(
1038 'slider_loop',
1039 [
1040 'label' => esc_html__('Infinite Loop', 'king-addons'),
1041 'type' => Controls_Manager::SWITCHER,
1042 'frontend_available' => true,
1043 'default' => 'yes',
1044 'separator' => 'before',
1045 'condition' => [
1046 'type_select' => 'slider',
1047 ],
1048 ]
1049 );
1050
1051 $this->add_control_slider_effect();
1052
1053
1054 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'content-ticker', 'slider_effect', ['pro-tp', 'pro-fd', 'pro-vs']);
1055
1056 $this->add_control_slider_effect_cursor();
1057
1058 $this->add_control(
1059 'slider_effect_duration',
1060 [
1061 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
1062 'type' => Controls_Manager::NUMBER,
1063 'default' => 1,
1064 'min' => 0,
1065 'max' => 5,
1066 'step' => 0.1,
1067 'condition' => [
1068 'type_select' => 'slider',
1069 ],
1070 ]
1071 );
1072
1073 $this->add_control_marquee_direction();
1074
1075 $this->add_control_marquee_pause_on_hover();
1076
1077 $this->add_control_marquee_effect_duration();
1078
1079 $this->end_controls_section();
1080
1081 Core::renderProFeaturesSection($this, '', Controls_Manager::RAW_HTML, 'content-ticker', [
1082 'Add Custom Ticker Items (Instead of Loading Dynamically)',
1083 'Custom Post Types',
1084 'Marquee Animation - Smooth Animation with Direction Option',
1085 'Slider Animation Options - Typing, Fade & Vertical Slide',
1086 'Heading Icon Type - Animated Circle'
1087 ]);
1088
1089 $this->start_controls_section(
1090 'section_style_button',
1091 [
1092 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Heading', 'king-addons'),
1093 'tab' => Controls_Manager::TAB_STYLE,
1094 ]
1095 );
1096
1097 $this->start_controls_tabs('tabs_heading_colors');
1098
1099 $this->start_controls_tab(
1100 'tab_heading_normal_colors',
1101 [
1102 'label' => esc_html__('Normal', 'king-addons'),
1103 ]
1104 );
1105
1106 $this->add_control(
1107 'heading_color',
1108 [
1109 'label' => esc_html__('Color', 'king-addons'),
1110 'type' => Controls_Manager::COLOR,
1111 'default' => '#ffffff',
1112 'selectors' => [
1113 '{{WRAPPER}} .king-addons-ticker-heading' => 'color: {{VALUE}}',
1114 ],
1115 ]
1116 );
1117
1118 $this->add_control(
1119 'heading_bg_color',
1120 [
1121 'label' => esc_html__('Background Color', 'king-addons'),
1122 'type' => Controls_Manager::COLOR,
1123 'default' => '#5B03FF',
1124 'selectors' => [
1125 '{{WRAPPER}} .king-addons-ticker-heading' => 'background-color: {{VALUE}}',
1126 '{{WRAPPER}} .king-addons-ticker-heading::before' => 'border-right-color: {{VALUE}};background-color: {{VALUE}};',
1127 ],
1128 ]
1129 );
1130
1131 $this->add_control(
1132 'heading_icon_color',
1133 [
1134 'label' => esc_html__('Icon Color', 'king-addons'),
1135 'type' => Controls_Manager::COLOR,
1136 'default' => '#ffffff',
1137 'selectors' => [
1138 '{{WRAPPER}} .king-addons-ticker-heading-icon' => 'color: {{VALUE}}',
1139 '{{WRAPPER}} .king-addons-ticker-heading-icon svg' => 'fill: {{VALUE}}',
1140 '{{WRAPPER}} .king-addons-ticker-icon-circle' => 'background-color: {{VALUE}}',
1141 '{{WRAPPER}} .king-addons-ticker-icon-circle::before' => 'border-color: {{VALUE}}',
1142 '{{WRAPPER}} .king-addons-ticker-icon-circle::after' => 'border-color: {{VALUE}}',
1143 ],
1144 ]
1145 );
1146
1147 $this->add_control(
1148 'heading_border_color',
1149 [
1150 'label' => esc_html__('Border Color', 'king-addons'),
1151 'type' => Controls_Manager::COLOR,
1152 'default' => '#ffffff',
1153 'selectors' => [
1154 '{{WRAPPER}} .king-addons-ticker-heading' => 'border-color: {{VALUE}}',
1155 ],
1156 ]
1157 );
1158
1159 $this->end_controls_tab();
1160
1161 $this->start_controls_tab(
1162 'tab_heading_hover_colors',
1163 [
1164 'label' => esc_html__('Hover', 'king-addons'),
1165 ]
1166 );
1167
1168 $this->add_control(
1169 'heading_hover_color',
1170 [
1171 'label' => esc_html__('Color', 'king-addons'),
1172 'type' => Controls_Manager::COLOR,
1173 'default' => '#ffffff',
1174 'selectors' => [
1175 '{{WRAPPER}} .king-addons-ticker-heading:hover' => 'color: {{VALUE}}',
1176 ],
1177 ]
1178 );
1179
1180 $this->add_control(
1181 'heading_hover_bg_color',
1182 [
1183 'label' => esc_html__('Background Color', 'king-addons'),
1184 'type' => Controls_Manager::COLOR,
1185 'default' => '#5B03FF',
1186 'selectors' => [
1187 '{{WRAPPER}} .king-addons-ticker-heading:hover' => 'background-color: {{VALUE}}',
1188 '{{WRAPPER}} .king-addons-ticker-heading:hover:before' => 'border-right-color: {{VALUE}};background-color: {{VALUE}};',
1189 ],
1190 ]
1191 );
1192
1193 $this->add_control(
1194 'heading_hover_icon_color',
1195 [
1196 'label' => esc_html__('Icon Color', 'king-addons'),
1197 'type' => Controls_Manager::COLOR,
1198 'default' => '#ffffff',
1199 'selectors' => [
1200 '{{WRAPPER}} .king-addons-ticker-heading:hover .king-addons-ticker-heading-icon' => 'color: {{VALUE}}',
1201 '{{WRAPPER}} .king-addons-ticker-heading:hover .king-addons-ticker-heading-icon svg' => 'fill: {{VALUE}}',
1202 '{{WRAPPER}} .king-addons-ticker-heading:hover .king-addons-ticker-icon-circle' => 'background-color: {{VALUE}}',
1203 '{{WRAPPER}} .king-addons-ticker-heading:hover .king-addons-ticker-icon-circle::before' => 'border-color: {{VALUE}}',
1204 '{{WRAPPER}} .king-addons-ticker-heading:hover .king-addons-ticker-icon-circle::after' => 'border-color: {{VALUE}}',
1205 ],
1206 ]
1207 );
1208
1209 $this->add_control(
1210 'heading_hover_border_color',
1211 [
1212 'label' => esc_html__('Border Color', 'king-addons'),
1213 'type' => Controls_Manager::COLOR,
1214 'default' => '#ffffff',
1215 'selectors' => [
1216 '{{WRAPPER}} .king-addons-ticker-heading:hover' => 'border-color: {{VALUE}}',
1217 ],
1218 ]
1219 );
1220
1221 $this->end_controls_tab();
1222
1223 $this->end_controls_tabs();
1224
1225 $this->add_control(
1226 'heading_transition_duration',
1227 [
1228 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
1229 'type' => Controls_Manager::NUMBER,
1230 'default' => 0.1,
1231 'min' => 0,
1232 'max' => 5,
1233 'step' => 0.1,
1234 'selectors' => [
1235 '{{WRAPPER}} .king-addons-ticker-heading' => '-webkit-transition-duration: {{VALUE}}s;transition-duration: {{VALUE}}s',
1236 '{{WRAPPER}} .king-addons-ticker-heading svg' => '-webkit-transition-duration: {{VALUE}}s;transition-duration: {{VALUE}}s',
1237
1238 ],
1239 'separator' => 'before',
1240 ]
1241 );
1242
1243 $this->add_control(
1244 'heading_typography_divider',
1245 [
1246 'type' => Controls_Manager::DIVIDER,
1247 'style' => 'thick',
1248 ]
1249 );
1250
1251 $this->add_group_control(
1252 Group_Control_Typography::get_type(),
1253 [
1254 'name' => 'heading_typography',
1255 'selector' => '{{WRAPPER}} .king-addons-ticker-heading-text',
1256 'separator' => 'before',
1257 ]
1258 );
1259
1260 $this->add_responsive_control(
1261 'heading_padding',
1262 [
1263 'label' => esc_html__('Padding', 'king-addons'),
1264 'type' => Controls_Manager::DIMENSIONS,
1265 'size_units' => ['px',],
1266 'default' => [
1267 'top' => 0,
1268 'right' => 10,
1269 'bottom' => 0,
1270 'left' => 10,
1271 ],
1272 'selectors' => [
1273 '{{WRAPPER}} .king-addons-ticker-heading' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1274 ],
1275 'separator' => 'before',
1276 ]
1277 );
1278
1279 $this->add_control(
1280 'heading_border_type',
1281 [
1282 'label' => esc_html__('Border Type', 'king-addons'),
1283 'type' => Controls_Manager::SELECT,
1284 'options' => [
1285 'none' => esc_html__('None', 'king-addons'),
1286 'solid' => esc_html__('Solid', 'king-addons'),
1287 'double' => esc_html__('Double', 'king-addons'),
1288 'dotted' => esc_html__('Dotted', 'king-addons'),
1289 'dashed' => esc_html__('Dashed', 'king-addons'),
1290 'groove' => esc_html__('Groove', 'king-addons'),
1291 ],
1292 'default' => 'none',
1293 'selectors' => [
1294 '{{WRAPPER}} .king-addons-ticker-heading' => 'border-style: {{VALUE}};',
1295 ],
1296 'separator' => 'before',
1297 ]
1298 );
1299
1300 $this->add_responsive_control(
1301 'heading_border_width',
1302 [
1303 'label' => esc_html__('Border Width', 'king-addons'),
1304 'type' => Controls_Manager::DIMENSIONS,
1305 'size_units' => ['px',],
1306 'default' => [
1307 'top' => 1,
1308 'right' => 1,
1309 'bottom' => 1,
1310 'left' => 1,
1311 ],
1312 'selectors' => [
1313 '{{WRAPPER}} .king-addons-ticker-heading' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1314 ],
1315 'condition' => [
1316 'heading_border_type!' => 'none',
1317 ],
1318 ]
1319 );
1320
1321 $this->add_responsive_control(
1322 'heading_border_radius',
1323 [
1324 'label' => esc_html__('Border Radius', 'king-addons'),
1325 'type' => Controls_Manager::DIMENSIONS,
1326 'size_units' => ['px', '%'],
1327 'default' => [
1328 'top' => 0,
1329 'right' => 0,
1330 'bottom' => 0,
1331 'left' => 0,
1332 ],
1333 'selectors' => [
1334 '{{WRAPPER}} .king-addons-ticker-heading' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1335 ],
1336 'separator' => 'before',
1337 ]
1338 );
1339
1340 $this->end_controls_section();
1341
1342
1343 $this->start_controls_section(
1344 'section_style_input',
1345 [
1346 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Content', 'king-addons'),
1347 'tab' => Controls_Manager::TAB_STYLE,
1348 ]
1349 );
1350
1351 $this->add_control(
1352 'content_bg_color',
1353 [
1354 'label' => esc_html__('Background Color', 'king-addons'),
1355 'type' => Controls_Manager::COLOR,
1356 'default' => '#ffffff',
1357 'selectors' => [
1358 '{{WRAPPER}} .king-addons-content-ticker-inner' => 'background-color: {{VALUE}};',
1359 '{{WRAPPER}} .king-addons-ticker-gradient:after' => 'background-image: linear-gradient(to right,rgba(255,255,255,0),{{VALUE}});',
1360 '{{WRAPPER}} .king-addons-ticker-gradient:before' => 'background-image: linear-gradient(to left,rgba(255,255,255,0),{{VALUE}});',
1361 ],
1362 ]
1363 );
1364
1365 $this->add_group_control(
1366 Group_Control_Box_Shadow::get_type(),
1367 [
1368 'name' => 'content_box_shadow',
1369 'selector' => '{{WRAPPER}} .king-addons-content-ticker',
1370 ]
1371 );
1372
1373 $this->add_control(
1374 'content_gradient_position',
1375 [
1376 'label' => esc_html__('Gradient Position', 'king-addons'),
1377 'type' => Controls_Manager::SELECT,
1378 'default' => 'right',
1379 'options' => [
1380 'none' => esc_html__('None', 'king-addons'),
1381 'left' => esc_html__('Left', 'king-addons'),
1382 'right' => esc_html__('Right', 'king-addons'),
1383 'both' => esc_html__('Both', 'king-addons'),
1384 ],
1385 'prefix_class' => 'king-addons-ticker-gradient-type-',
1386 'render_type' => 'template',
1387 'separator' => 'before',
1388 ]
1389 );
1390
1391 $this->add_responsive_control(
1392 'content_padding',
1393 [
1394 'label' => esc_html__('Padding', 'king-addons'),
1395 'type' => Controls_Manager::DIMENSIONS,
1396 'default' => [
1397 'top' => 5,
1398 'right' => 10,
1399 'bottom' => 5,
1400 'left' => 30,
1401 ],
1402 'size_units' => ['px'],
1403 'selectors' => [
1404 '{{WRAPPER}} .king-addons-content-ticker-inner' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1405 ],
1406 'separator' => 'before',
1407 ]
1408 );
1409
1410 $this->add_control(
1411 'content_border_type',
1412 [
1413 'label' => esc_html__('Border Type', 'king-addons'),
1414 'type' => Controls_Manager::SELECT,
1415 'options' => [
1416 'none' => esc_html__('None', 'king-addons'),
1417 'solid' => esc_html__('Solid', 'king-addons'),
1418 'double' => esc_html__('Double', 'king-addons'),
1419 'dotted' => esc_html__('Dotted', 'king-addons'),
1420 'dashed' => esc_html__('Dashed', 'king-addons'),
1421 'groove' => esc_html__('Groove', 'king-addons'),
1422 ],
1423 'default' => 'solid',
1424 'selectors' => [
1425 '{{WRAPPER}} .king-addons-content-ticker' => 'border-style: {{VALUE}};',
1426 ],
1427 'separator' => 'before',
1428 ]
1429 );
1430
1431 $this->add_control(
1432 'content_border_width',
1433 [
1434 'label' => esc_html__('Border Width', 'king-addons'),
1435 'type' => Controls_Manager::DIMENSIONS,
1436 'default' => [
1437 'top' => 1,
1438 'right' => 1,
1439 'bottom' => 1,
1440 'left' => 1,
1441 ],
1442 'size_units' => ['px'],
1443 'selectors' => [
1444 '{{WRAPPER}} .king-addons-content-ticker' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1445 ],
1446 'condition' => [
1447 'content_border_type!' => 'none',
1448 ],
1449 ]
1450 );
1451
1452 $this->add_control(
1453 'content_border_color',
1454 [
1455 'label' => esc_html__('Border Color', 'king-addons'),
1456 'type' => Controls_Manager::COLOR,
1457 'default' => '#dbdbdb',
1458 'selectors' => [
1459 '{{WRAPPER}} .king-addons-content-ticker' => 'border-color: {{VALUE}};',
1460 ],
1461 'condition' => [
1462 'content_border_type!' => 'none',
1463 ],
1464 ]
1465 );
1466
1467 $this->add_control(
1468 'content_border_radius',
1469 [
1470 'label' => esc_html__('Border Radius', 'king-addons'),
1471 'type' => Controls_Manager::DIMENSIONS,
1472 'default' => [
1473 'top' => 0,
1474 'right' => 0,
1475 'bottom' => 0,
1476 'left' => 0,
1477 ],
1478 'size_units' => ['px', '%'],
1479 'selectors' => [
1480 '{{WRAPPER}} .king-addons-content-ticker' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1481 ],
1482 'separator' => 'before',
1483 ]
1484 );
1485
1486
1487 $this->add_control(
1488 'content_title_section',
1489 [
1490 'label' => esc_html__('Title', 'king-addons'),
1491 'type' => Controls_Manager::HEADING,
1492 'separator' => 'before',
1493 ]
1494 );
1495
1496 $this->add_group_control(
1497 Group_Control_Typography::get_type(),
1498 [
1499 'name' => 'content_title_typography',
1500 'selector' => '{{WRAPPER}} .king-addons-ticker-title',
1501 ]
1502 );
1503
1504 $this->start_controls_tabs('tabs_content_title_colors');
1505
1506 $this->start_controls_tab(
1507 'tab_content_title_normal_colors',
1508 [
1509 'label' => esc_html__('Normal', 'king-addons'),
1510 ]
1511 );
1512
1513
1514 $this->add_control(
1515 'content_title_color',
1516 [
1517 'label' => esc_html__('Title Color', 'king-addons'),
1518 'type' => Controls_Manager::COLOR,
1519 'default' => '#555555',
1520 'selectors' => [
1521 '{{WRAPPER}} .king-addons-ticker-title a' => 'color: {{VALUE}};',
1522 '{{WRAPPER}} .king-addons-ticker-title:after' => 'color: {{VALUE}};',
1523 ],
1524 ]
1525 );
1526
1527 $this->end_controls_tab();
1528
1529 $this->start_controls_tab(
1530 'tab_content_title_hover_colors',
1531 [
1532 'label' => esc_html__('Hover', 'king-addons'),
1533 ]
1534 );
1535
1536 $this->add_control(
1537 'content_hover_title_color',
1538 [
1539 'label' => esc_html__('Title Color', 'king-addons'),
1540 'type' => Controls_Manager::COLOR,
1541 'selectors' => [
1542 '{{WRAPPER}} .king-addons-ticker-title:hover a' => 'color: {{VALUE}};',
1543 '{{WRAPPER}} .king-addons-ticker-title:after' => 'color: {{VALUE}};',
1544 ],
1545 ]
1546 );
1547
1548 $this->end_controls_tab();
1549
1550 $this->end_controls_tabs();
1551
1552
1553 $this->add_control(
1554 'content_image_section',
1555 [
1556 'label' => esc_html__('Image', 'king-addons'),
1557 'type' => Controls_Manager::HEADING,
1558 'separator' => 'before',
1559 ]
1560 );
1561
1562 $this->add_responsive_control(
1563 'content_image_width',
1564 [
1565 'label' => esc_html__('Width', 'king-addons'),
1566 'type' => Controls_Manager::SLIDER,
1567 'range' => [
1568 'px' => [
1569 'min' => 0,
1570 'max' => 200,
1571 ],
1572 ],
1573 'size_units' => ['px'],
1574 'default' => [
1575 'unit' => 'px',
1576 'size' => 50,
1577 ],
1578 'selectors' => [
1579 '{{WRAPPER}} .king-addons-ticker-image' => 'max-width: {{SIZE}}{{UNIT}};',
1580 ],
1581 ]
1582 );
1583
1584 $this->end_controls_section();
1585
1586
1587 $this->start_controls_section(
1588 'section_style_nav',
1589 [
1590 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Navigation', 'king-addons'),
1591 'tab' => Controls_Manager::TAB_STYLE,
1592 'condition' => [
1593 'type_select' => 'slider',
1594 'slider_nav' => 'yes',
1595 ],
1596 ]
1597 );
1598
1599 $this->start_controls_tabs('tabs_nav_style');
1600
1601 $this->start_controls_tab(
1602 'tab_nav_normal',
1603 [
1604 'label' => esc_html__('Normal', 'king-addons'),
1605 ]
1606 );
1607
1608 $this->add_control(
1609 'nav_color',
1610 [
1611 'label' => esc_html__('Color', 'king-addons'),
1612 'type' => Controls_Manager::COLOR,
1613 'default' => '#ffffff',
1614 'selectors' => [
1615 '{{WRAPPER}} .king-addons-ticker-arrow' => 'color: {{VALUE}};',
1616 ],
1617 ]
1618 );
1619
1620 $this->add_control(
1621 'nav_bg_color',
1622 [
1623 'label' => esc_html__('Background Color', 'king-addons'),
1624 'type' => Controls_Manager::COLOR,
1625 'default' => '#5B03FF',
1626 'selectors' => [
1627 '{{WRAPPER}} .king-addons-ticker-arrow' => 'background-color: {{VALUE}};',
1628 ],
1629 ]
1630 );
1631
1632 $this->add_control(
1633 'nav_border_color',
1634 [
1635 'label' => esc_html__('Border Color', 'king-addons'),
1636 'type' => Controls_Manager::COLOR,
1637 'selectors' => [
1638 '{{WRAPPER}} .king-addons-ticker-arrow' => 'border-color: {{VALUE}};',
1639 ],
1640 ]
1641 );
1642 $this->end_controls_tab();
1643
1644 $this->start_controls_tab(
1645 'tab_nav_hover',
1646 [
1647 'label' => esc_html__('Hover', 'king-addons'),
1648 ]
1649 );
1650
1651 $this->add_control(
1652 'nav_hover_color',
1653 [
1654 'label' => esc_html__('Color', 'king-addons'),
1655 'type' => Controls_Manager::COLOR,
1656 'default' => '#ffffff',
1657 'selectors' => [
1658 '{{WRAPPER}} .king-addons-ticker-arrow:hover' => 'color: {{VALUE}};',
1659 ],
1660 ]
1661 );
1662
1663 $this->add_control(
1664 'nav_hover_bg_color',
1665 [
1666 'label' => esc_html__('Background Color', 'king-addons'),
1667 'type' => Controls_Manager::COLOR,
1668 'default' => '#4D02D8',
1669 'selectors' => [
1670 '{{WRAPPER}} .king-addons-ticker-arrow:hover' => 'background-color: {{VALUE}};',
1671 ],
1672 ]
1673 );
1674
1675 $this->add_control(
1676 'nav_hover_border_color',
1677 [
1678 'label' => esc_html__('Border Color', 'king-addons'),
1679 'type' => Controls_Manager::COLOR,
1680 'selectors' => [
1681 '{{WRAPPER}} .king-addons-ticker-arrow:hover' => 'border-color: {{VALUE}};',
1682 ],
1683 ]
1684 );
1685
1686 $this->end_controls_tab();
1687
1688 $this->end_controls_tabs();
1689
1690 $this->add_control(
1691 'nav_transition_duration',
1692 [
1693 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
1694 'type' => Controls_Manager::NUMBER,
1695 'default' => 0.1,
1696 'min' => 0,
1697 'max' => 5,
1698 'step' => 0.1,
1699 'selectors' => [
1700 '{{WRAPPER}} .king-addons-ticker-arrow' => '-webkit-transition-duration: {{VALUE}}s;transition-duration: {{VALUE}}s',
1701 ],
1702 'separator' => 'before',
1703 ]
1704 );
1705
1706 $this->add_responsive_control(
1707 'nav_font_size',
1708 [
1709 'label' => esc_html__('Font Size', 'king-addons'),
1710 'type' => Controls_Manager::SLIDER,
1711 'size_units' => ['px'],
1712 'range' => [
1713 'px' => [
1714 'min' => 10,
1715 'max' => 100,
1716 ],
1717 ],
1718 'default' => [
1719 'unit' => 'px',
1720 'size' => 14,
1721 ],
1722 'selectors' => [
1723 '{{WRAPPER}} .king-addons-ticker-arrow' => 'font-size: {{SIZE}}{{UNIT}};',
1724 ],
1725 'separator' => 'before',
1726 ]
1727 );
1728
1729 $this->add_responsive_control(
1730 'nav_size',
1731 [
1732 'label' => esc_html__('Box Size', 'king-addons'),
1733 'type' => Controls_Manager::SLIDER,
1734 'size_units' => ['px'],
1735 'range' => [
1736 'px' => [
1737 'min' => 10,
1738 'max' => 100,
1739 ],
1740 ],
1741 'default' => [
1742 'unit' => 'px',
1743 'size' => 20,
1744 ],
1745 'selectors' => [
1746 '{{WRAPPER}} .king-addons-ticker-arrow' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}}; line-height: {{SIZE}}{{UNIT}};',
1747 ],
1748 ]
1749 );
1750
1751 $this->add_responsive_control(
1752 'nav_gutter',
1753 [
1754 'type' => Controls_Manager::SLIDER,
1755 'label' => esc_html__('Gutter', 'king-addons'),
1756 'size_units' => ['px'],
1757 'range' => [
1758 'px' => [
1759 'min' => 0,
1760 'max' => 100,
1761 ]
1762 ],
1763 'default' => [
1764 'unit' => 'px',
1765 'size' => 2,
1766 ],
1767 'selectors' => [
1768 '{{WRAPPER}}.king-addons-ticker-arrow-style-vertical .king-addons-ticker-prev-arrow' => 'margin-bottom: {{SIZE}}{{UNIT}};',
1769 '{{WRAPPER}}.king-addons-ticker-arrow-style-horizontal .king-addons-ticker-prev-arrow' => 'margin-right: {{SIZE}}{{UNIT}};',
1770 ],
1771 ]
1772 );
1773
1774 $this->add_control(
1775 'nav_border_type',
1776 [
1777 'label' => esc_html__('Border Type', 'king-addons'),
1778 'type' => Controls_Manager::SELECT,
1779 'options' => [
1780 'none' => esc_html__('None', 'king-addons'),
1781 'solid' => esc_html__('Solid', 'king-addons'),
1782 'double' => esc_html__('Double', 'king-addons'),
1783 'dotted' => esc_html__('Dotted', 'king-addons'),
1784 'dashed' => esc_html__('Dashed', 'king-addons'),
1785 'groove' => esc_html__('Groove', 'king-addons'),
1786 ],
1787 'default' => 'none',
1788 'selectors' => [
1789 '{{WRAPPER}} .king-addons-ticker-arrow' => 'border-style: {{VALUE}};',
1790 ],
1791 'separator' => 'before',
1792 ]
1793 );
1794
1795 $this->add_responsive_control(
1796 'nav_border_width',
1797 [
1798 'label' => esc_html__('Border Width', 'king-addons'),
1799 'type' => Controls_Manager::DIMENSIONS,
1800 'size_units' => ['px',],
1801 'default' => [
1802 'top' => 1,
1803 'right' => 1,
1804 'bottom' => 1,
1805 'left' => 1,
1806 ],
1807 'selectors' => [
1808 '{{WRAPPER}} .king-addons-ticker-arrow' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1809 ],
1810 'condition' => [
1811 'nav_border_type!' => 'none',
1812 ],
1813 ]
1814 );
1815
1816 $this->add_control(
1817 'nav_border_radius',
1818 [
1819 'label' => esc_html__('Border Radius', 'king-addons'),
1820 'type' => Controls_Manager::DIMENSIONS,
1821 'size_units' => ['px', '%'],
1822 'default' => [
1823 'top' => 1,
1824 'right' => 1,
1825 'bottom' => 1,
1826 'left' => 1,
1827 ],
1828 'selectors' => [
1829 '{{WRAPPER}} .king-addons-ticker-arrow' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1830 ],
1831 'separator' => 'before',
1832 ]
1833 );
1834
1835
1836
1837
1838 $this->end_controls_section();
1839
1840
1841 }
1842
1843
1844 public function get_related_taxonomies()
1845 {
1846 // Grab all custom post types once
1847 $this->post_types = Core::getCustomTypes('post', false);
1848
1849 // Build relations array where each slug maps directly to its taxonomies
1850 $relations = [];
1851 foreach ($this->post_types as $slug => $title) {
1852 $relations[$slug] = get_object_taxonomies($slug);
1853 }
1854
1855 return json_encode($relations);
1856 }
1857
1858 public function get_main_query_args()
1859 {
1860 $settings = $this->get_settings();
1861 $author = !empty($settings['query_author'])
1862 ? implode(',', (array)$settings['query_author'])
1863 : '';
1864
1865 // If query_source is one of the pro-* values, default it to 'post'
1866 if (in_array($settings['query_source'], ['pro-pd', 'pro-ft', 'pro-sl'], true)) {
1867 $settings['query_source'] = 'post';
1868 }
1869
1870 // Default query args
1871 $args = [
1872 'post_type' => $settings['query_source'],
1873 'tax_query' => $this->get_tax_query_args(),
1874 'post__not_in' => $settings['query_exclude_' . $settings['query_source']] ?? '',
1875 'posts_per_page' => $settings['query_posts_per_page'],
1876 'orderby' => $settings['post_orderby'],
1877 'order' => $settings['post_order'],
1878 'author' => $author,
1879 'offset' => $settings['query_offset'],
1880 ];
1881
1882 // Manual selection override
1883 if ($settings['query_selection'] === 'manual') {
1884 $post_ids = $settings['query_manual_' . $settings['query_source']] ?? [''];
1885 $args = [
1886 'post_type' => $settings['query_source'],
1887 'post__in' => $post_ids,
1888 'orderby' => $settings['post_orderby'],
1889 'order' => $settings['post_order'],
1890 ];
1891 }
1892
1893 // Current post query override
1894 if ($settings['query_source'] === 'current') {
1895 global $wp_query;
1896 $args = $wp_query->query_vars;
1897 $args['posts_per_page'] = $settings['query_posts_per_page'];
1898 $args['orderby'] = $settings['post_orderby'];
1899 }
1900
1901 // Related posts query override
1902 if ($settings['query_source'] === 'related') {
1903 $args = [
1904 'post_type' => get_post_type(get_the_ID()),
1905 'tax_query' => $this->get_tax_query_args(),
1906 'post__not_in' => [get_the_ID()],
1907 'ignore_sticky_posts' => 1,
1908 'posts_per_page' => $settings['query_posts_per_page'],
1909 'orderby' => $settings['post_orderby'],
1910 'order' => $settings['post_order'],
1911 'offset' => $settings['query_offset'],
1912 ];
1913 }
1914
1915 // Featured products override
1916 if ($settings['query_source'] === 'featured') {
1917 $args['post_type'] = 'product';
1918 $args['tax_query'] = [[
1919 'taxonomy' => 'product_visibility',
1920 'field' => 'name',
1921 'terms' => 'featured',
1922 'operator' => 'IN',
1923 ]];
1924 }
1925
1926 // Sale products override
1927 if ($settings['query_source'] === 'sale') {
1928 $args['post_type'] = 'product';
1929 $args['meta_query'] = [[
1930 'relation' => 'OR',
1931 [
1932 'key' => '_sale_price',
1933 'value' => 0,
1934 'compare' => '>',
1935 'type' => 'numeric',
1936 ],
1937 [
1938 'key' => '_min_variation_sale_price',
1939 'value' => 0,
1940 'compare' => '>',
1941 'type' => 'numeric',
1942 ],
1943 ]];
1944 }
1945
1946 return $args;
1947 }
1948
1949 public function get_tax_query_args()
1950 {
1951 $settings = $this->get_settings();
1952 $tax_query = [];
1953
1954 // Related query uses a special approach
1955 if ($settings['query_source'] === 'related') {
1956 return [[
1957 'taxonomy' => $settings['query_tax_selection'],
1958 'field' => 'term_id',
1959 'terms' => wp_get_object_terms(
1960 get_the_ID(),
1961 $settings['query_tax_selection'],
1962 ['fields' => 'ids']
1963 ),
1964 ]];
1965 }
1966
1967 // Otherwise build from normal taxonomies
1968 foreach (get_object_taxonomies($settings['query_source']) as $tax) {
1969 $field_name = 'query_taxonomy_' . $tax;
1970 if (!empty($settings[$field_name])) {
1971 $tax_query[] = [
1972 'taxonomy' => $tax,
1973 'field' => 'id',
1974 'terms' => $settings[$field_name],
1975 ];
1976 }
1977 }
1978
1979 return $tax_query;
1980 }
1981
1982 public function king_addons_content_ticker_dynamic()
1983 {
1984 $settings = $this->get_settings();
1985 $posts = new WP_Query($this->get_main_query_args());
1986
1987 if ($posts->have_posts()) :
1988 while ($posts->have_posts()) :
1989 $posts->the_post();
1990
1991 $image_id = get_post_thumbnail_id();
1992 $image_src = Group_Control_Image_Size::get_attachment_image_src($image_id, 'image_size', $settings);
1993 $image_alt = wp_get_attachment_caption($image_id) ?: get_the_title();
1994 ?>
1995 <div class="king-addons-ticker-item">
1996 <?php if ($settings['link_type'] === 'box') : ?>
1997 <a class="king-addons-ticker-link" href="<?php echo esc_url(get_the_permalink()); ?>"></a>
1998 <?php endif; ?>
1999
2000 <?php if (has_post_thumbnail()) : ?>
2001 <div class="king-addons-ticker-image">
2002 <?php
2003 if (in_array($settings['link_type'], ['image', 'image-title'], true)) {
2004 echo '<a href="' . esc_url(get_the_permalink()) . '">';
2005 }
2006
2007 if ($settings['image_switcher'] === 'yes' && $image_src) {
2008 echo '<img src="' . esc_url($image_src) . '" alt="' . esc_attr($image_alt) . '">';
2009 }
2010
2011 if (in_array($settings['link_type'], ['image', 'image-title'], true)) {
2012 echo '</a>';
2013 }
2014 ?>
2015 </div>
2016 <?php endif; ?>
2017
2018 <h3 class="king-addons-ticker-title">
2019 <div class="king-addons-ticker-title-inner">
2020 <?php
2021 if (in_array($settings['link_type'], ['title', 'image-title'], true)) {
2022 echo '<a href="' . esc_url(get_the_permalink()) . '">';
2023 }
2024
2025 the_title();
2026
2027 if (in_array($settings['link_type'], ['title', 'image-title'], true)) {
2028 echo '</a>';
2029 }
2030 ?>
2031 </div>
2032 </h3>
2033 </div>
2034 <?php
2035 endwhile;
2036 wp_reset_postdata();
2037 endif;
2038 }
2039
2040 public function king_addons_content_ticker_custom()
2041 {
2042 }
2043
2044 public function king_addons_content_ticker_heading()
2045 {
2046 $settings = $this->get_settings();
2047 $heading_element = 'div';
2048 $heading_link = $settings['heading_link']['url'] ?? '';
2049 $this->add_render_attribute('heading_attribute', 'class', 'king-addons-ticker-heading');
2050
2051 // Turn heading into a link if the URL is set
2052 if ($heading_link !== '') {
2053 $heading_element = 'a';
2054 $this->add_render_attribute('heading_attribute', 'href', esc_url($heading_link));
2055
2056 if (!empty($settings['heading_link']['is_external'])) {
2057 $this->add_render_attribute('heading_attribute', 'target', '_blank');
2058 }
2059 if (!empty($settings['heading_link']['nofollow'])) {
2060 $this->add_render_attribute('heading_attribute', 'rel', 'nofollow');
2061 }
2062 }
2063
2064 // Fallback if the user cannot use certain premium features
2065 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
2066 $settings['heading_icon_type'] = ($settings['heading_icon_type'] === 'pro-cc') ? 'none' : $settings['heading_icon_type'];
2067 }
2068 ?>
2069 <<?php echo esc_html($heading_element) . ' ' . $this->get_render_attribute_string('heading_attribute'); ?>>
2070 <span class="king-addons-ticker-heading-text">
2071 <?php echo esc_html($settings['heading_text']); ?>
2072 </span>
2073 <span class="king-addons-ticker-heading-icon">
2074 <?php if ($settings['heading_icon_type'] === 'fontawesome') : ?>
2075 <?php Icons_Manager::render_icon($settings['heading_icon']); ?>
2076 <?php elseif ($settings['heading_icon_type'] === 'circle') : ?>
2077 <span class="king-addons-ticker-icon-circle"></span>
2078 <?php endif; ?>
2079 </span>
2080 </<?php echo esc_html($heading_element); ?>>
2081 <?php
2082 }
2083
2084 public function king_addons_content_ticker_slider()
2085 {
2086 $settings = $this->get_settings();
2087 $slider_is_rtl = is_rtl();
2088 $slider_direction = $slider_is_rtl ? 'rtl' : 'ltr';
2089
2090 // Fallback for premium code
2091 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
2092 $settings['slider_effect'] = 'hr-slide';
2093 }
2094
2095 // Slider options
2096 $slider_options = [
2097 'arrows' => false,
2098 'autoplay' => ($settings['slider_autoplay'] === 'yes'),
2099 'autoplaySpeed' => absint($settings['slider_autoplay_duration'] * 1000),
2100 'infinite' => ($settings['slider_loop'] === 'yes'),
2101 'pauseOnHover' => $settings['slider_pause_on_hover'],
2102 'rtl' => $slider_is_rtl,
2103 'speed' => absint($settings['slider_effect_duration'] * 1000),
2104 ];
2105
2106 if ($settings['slider_effect'] === 'vr-slide') {
2107 $slider_options['vertical'] = true;
2108 }
2109
2110 if ($settings['slider_nav'] === 'yes') {
2111 $slider_options['arrows'] = true;
2112 $icon = esc_attr($settings['slider_nav_icon']);
2113 $slider_options['prevArrow'] = "<div class=\"king-addons-ticker-prev-arrow king-addons-ticker-arrow\"><i class=\"$icon\"></i></div>";
2114 $slider_options['nextArrow'] = "<div class=\"king-addons-ticker-next-arrow king-addons-ticker-arrow\"><i class=\"$icon\"></i></div>";
2115 }
2116
2117 $this->add_render_attribute('ticker-slider-attribute', [
2118 'class' => 'king-addons-ticker-slider',
2119 'dir' => $slider_direction,
2120 'data-slick' => wp_json_encode($slider_options),
2121 ]);
2122
2123 if ($settings['content_gradient_position'] !== 'none') {
2124 $this->add_render_attribute('ticker-slider-attribute', 'class', 'king-addons-ticker-gradient');
2125 }
2126
2127 // Fallback for premium code
2128 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
2129 $settings['post_type'] = 'dynamic';
2130 }
2131 ?>
2132 <div <?php echo $this->get_render_attribute_string('ticker-slider-attribute'); ?>
2133 data-slide-effect="<?php echo esc_attr($settings['slider_effect']); ?>">
2134 <?php
2135 // Render either dynamic or custom content
2136 if ($settings['post_type'] === 'dynamic') {
2137 $this->king_addons_content_ticker_dynamic();
2138 } else {
2139 $this->king_addons_content_ticker_custom();
2140 }
2141 ?>
2142 </div>
2143
2144 <div class="king-addons-ticker-slider-controls"></div>
2145 <?php
2146 }
2147
2148 public function king_addons_content_ticker_marquee()
2149 {
2150 }
2151
2152 protected function render()
2153 {
2154 $settings = $this->get_settings();
2155 ?>
2156 <div class="king-addons-content-ticker">
2157 <?php
2158 // Heading section (icon/text) if needed
2159 if ($settings['heading_text'] !== '' || $settings['heading_icon_type'] !== 'none') {
2160 $this->king_addons_content_ticker_heading();
2161 }
2162 ?>
2163 <div class="king-addons-content-ticker-inner">
2164 <?php
2165 // Fallback for premium code
2166 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
2167 $settings['type_select'] = 'slider';
2168 }
2169
2170 // Choose between slider or marquee
2171 if ($settings['type_select'] === 'slider') {
2172 $this->king_addons_content_ticker_slider();
2173 } else {
2174 $this->king_addons_content_ticker_marquee();
2175 }
2176 ?>
2177 </div>
2178 </div>
2179 <?php
2180 }
2181 }