check_icon_draw() ? array( 'pa-fontawesome-all', 'pa-tweenmax', 'pa-motionpath', ) : array(); return array_merge( $draw_scripts, array( 'imagesloaded', 'isotope-js', 'pa-slick', 'lottie-js', 'premium-addons', ) ); } /** * Retrieve Widget Support URL. * * @access public * * @return string support URL. */ public function get_custom_help_url() { return 'https://premiumaddons.com/support/'; } /** * Register Smart Post Listing controls. * * @since 1.0.0 * @access protected */ protected function register_controls() { $this->options = apply_filters( 'pa_ticker_options', array( 'layouts' => array( 'layout-1' => __( 'Layout 1', 'premium-addons-for-elementor' ), 'layout-2' => __( 'Layout 2', 'premium-addons-for-elementor' ), 'layout-3' => __( 'Layout 3 (Pro)', 'premium-addons-for-elementor' ), 'layout-4' => __( 'Layout 4 (Pro)', 'premium-addons-for-elementor' ), ), 'layout_condition' => array( 'layout-3', 'layout-4' ), ) ); $this->register_content_tab_controls(); $this->register_style_tab_controls(); } /** * Adds content tab controls. * * @access private * @since 4.9.37 */ private function register_content_tab_controls() { $this->add_general_section_controls(); $this->add_query_section_controls(); $this->add_posts_section_controls(); $papro_activated = apply_filters( 'papro_activated', false ); if ( $papro_activated ) { do_action( 'pa_ticker_stock_controls', $this ); } $this->add_slider_section_controls(); $this->add_helpful_info_section(); } /** * Adds style tab controls. * * @access private * @since 4.9.37 */ private function register_style_tab_controls() { $this->add_ticker_title_style(); $this->add_ticker_date_style(); $this->add_posts_style(); $this->add_posts_container_style(); $this->add_navigation_style(); $this->add_separator_style(); } /** * Adds General controls. * * @access private * @since 4.9.37 */ private function add_general_section_controls() { $draw_icon = $this->check_icon_draw(); $this->start_controls_section( 'pa_ticker_general_section', array( 'label' => __( 'General', 'premium-addons-for-elementor' ), ) ); $this->add_control( 'layout', array( 'label' => __( 'Layout', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT, 'prefix_class' => 'premium-post-ticker__', 'render_type' => 'template', 'label_block' => true, 'options' => $this->options['layouts'], 'default' => 'layout-1', ) ); $papro_activated = apply_filters( 'papro_activated', false ); if ( ! $papro_activated ) { $get_pro = Helper_Functions::get_campaign_link( 'https://premiumaddons.com/pro', 'editor-page', 'wp-editor', 'get-pro' ); $this->add_control( 'ticker_notice', array( 'type' => Controls_Manager::RAW_HTML, 'raw' => __( 'This option is available in Premium Addons Pro. ', 'premium-addons-for-elementor' ) . '' . __( 'Upgrade now!', 'premium-addons-for-elementor' ) . '', 'content_classes' => 'papro-upgrade-notice', 'condition' => array( 'layout' => $this->options['layout_condition'], ), ) ); } $this->add_control( 'ticker_title', array( 'label' => __( 'Ticker Title', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::TEXT, 'label_block' => true, 'default' => __( 'TRENDING', 'premium-addons-for-elementor' ), 'dynamic' => array( 'active' => true ), ) ); $this->add_control( 'ticker_icon_sw', array( 'label' => __( 'Icon', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'render_type' => 'template', 'condition' => array( 'ticker_title!' => '', ), ) ); $this->add_control( 'icon_type', array( 'label' => __( 'Icon Type', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT, 'render_type' => 'template', 'options' => array( 'icon' => __( 'Icon', 'premium-addons-for-elementor' ), 'lottie' => __( 'Lottie Animation', 'premium-addons-for-elementor' ), 'image' => __( 'Image', 'premium-addons-for-elementor' ), 'svg' => __( 'SVG Code', 'premium-addons-for-elementor' ), ), 'default' => 'icon', 'condition' => array( 'ticker_icon_sw' => 'yes', 'ticker_title!' => '', ), ) ); $common_conditions = array( 'ticker_icon_sw' => 'yes', 'ticker_title!' => '', ); $this->add_control( 'pa_ticker_icon', array( 'label' => __( 'Choose Icon', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::ICONS, 'label_block' => false, 'skin' => 'inline', 'default' => array( 'value' => 'fas fa-star', 'library' => 'fa-solid', ), 'condition' => array( 'ticker_icon_sw' => 'yes', 'ticker_title!' => '', 'icon_type' => 'icon', ), ) ); $this->add_control( 'custom_svg', array( 'label' => __( 'SVG Code', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::TEXTAREA, 'description' => 'You can use these sites to create SVGs: Google Fonts and Boxy SVG', 'condition' => array( 'ticker_icon_sw' => 'yes', 'ticker_title!' => '', 'icon_type' => 'svg', ), ) ); $this->add_control( 'image', array( 'label' => __( 'Image', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::MEDIA, 'media_types' => array( 'image' ), 'dynamic' => array( 'active' => true ), 'condition' => array( 'ticker_icon_sw' => 'yes', 'ticker_title!' => '', 'icon_type' => 'image', ), ) ); $this->add_control( 'lottie_url', array( 'label' => __( 'Animation JSON URL', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::TEXT, 'dynamic' => array( 'active' => true ), 'description' => 'Get JSON code URL from here', 'label_block' => true, 'condition' => array( 'ticker_icon_sw' => 'yes', 'ticker_title!' => '', 'icon_type' => 'lottie', ), ) ); $animation_conds = array( 'terms' => array( array( 'name' => 'ticker_icon_sw', 'value' => 'yes', ), array( 'name' => 'ticker_title', 'operator' => '!==', 'value' => '', ), array( 'relation' => 'or', 'terms' => array( array( 'name' => 'icon_type', 'value' => 'lottie', ), array( 'terms' => array( array( 'relation' => 'or', 'terms' => array( array( 'name' => 'icon_type', 'value' => 'icon', ), array( 'name' => 'icon_type', 'value' => 'svg', ), ), ), array( 'name' => 'draw_svg', 'value' => 'yes', ), ), ), ), ), ), ); $this->add_control( 'draw_svg', array( 'label' => __( 'Draw Icon', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'description' => __( 'Enable this option to make the icon drawable. See ', 'premium-addons-for-elementor' ) . 'tutorial', 'classes' => $draw_icon ? '' : 'editor-pa-control-disabled', 'condition' => array_merge( $common_conditions, array( 'icon_type' => array( 'icon', 'svg' ), 'pa_ticker_icon[library]!' => 'svg', ) ), ) ); if ( $draw_icon ) { $this->add_control( 'path_width', array( 'label' => __( 'Path Thickness', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'min' => 0, 'max' => 50, 'step' => 0.1, ), ), 'condition' => array_merge( $common_conditions, array( 'icon_type' => array( 'icon', 'svg' ), ) ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__icon-wrapper:not(.premium-repeater-item) svg *' => 'stroke-width: {{SIZE}}', ), ) ); $this->add_control( 'svg_sync', array( 'label' => __( 'Draw All Paths Together', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'condition' => array_merge( $common_conditions, array( 'icon_type' => array( 'icon', 'svg' ), 'draw_svg' => 'yes', ) ), ) ); $this->add_control( 'frames', array( 'label' => __( 'Speed', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::NUMBER, 'description' => __( 'Larger value means longer animation duration.', 'premium-addons-for-elementor' ), 'default' => 5, 'min' => 1, 'max' => 100, 'condition' => array_merge( $common_conditions, array( 'icon_type' => array( 'icon', 'svg' ), 'draw_svg' => 'yes', ) ), ) ); } else { Helper_Functions::get_draw_svg_notice( $this, 'ticker', array_merge( $common_conditions, array( 'icon_type' => array( 'icon', 'svg' ), 'pa_ticker_icon[library]!' => 'svg', ) ) ); } $this->add_control( 'lottie_loop', array( 'label' => __( 'Loop', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'return_value' => 'true', 'default' => 'true', 'conditions' => $animation_conds, ) ); $this->add_control( 'lottie_reverse', array( 'label' => __( 'Reverse', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'return_value' => 'true', 'conditions' => $animation_conds, ) ); if ( $draw_icon ) { $this->add_control( 'start_point', array( 'label' => __( 'Start Point (%)', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'description' => __( 'Set the point that the SVG should start from.', 'premium-addons-for-elementor' ), 'default' => array( 'unit' => '%', 'size' => 0, ), 'condition' => array( 'icon_type' => array( 'icon', 'svg' ), 'draw_svg' => 'yes', 'lottie_reverse!' => 'true', ), ) ); $this->add_control( 'end_point', array( 'label' => __( 'End Point (%)', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'description' => __( 'Set the point that the SVG should end at.', 'premium-addons-for-elementor' ), 'default' => array( 'unit' => '%', 'size' => 0, ), 'condition' => array( 'icon_type' => array( 'icon', 'svg' ), 'draw_svg' => 'yes', 'lottie_reverse' => 'true', ), ) ); $this->add_control( 'svg_yoyo', array( 'label' => __( 'Yoyo Effect', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'condition' => array( 'icon_type' => array( 'icon', 'svg' ), 'draw_svg' => 'yes', 'lottie_loop' => 'true', ), ) ); } $this->add_control( 'icon_order', array( 'label' => __( 'Icon Order', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::CHOOSE, 'toggle' => false, 'options' => array( '0' => array( 'title' => __( 'Before Title', 'premium-addons-for-elementor' ), 'icon' => 'eicon-order-start', ), '2' => array( 'title' => __( 'After Title', 'premium-addons-for-elementor' ), 'icon' => 'eicon-order-end', ), ), 'separator' => 'before', 'default' => '0', 'condition' => array( 'ticker_icon_sw' => 'yes', 'ticker_title!' => '', ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__icon-wrapper:not(.premium-repeater-item)' => 'order: {{VALUE}}', ), ) ); $this->add_responsive_control( 'icon_size', array( 'label' => __( 'Icon Size (px)', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px' ), 'range' => array( 'px' => array( 'min' => 0, 'max' => 500, ), ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__icon-wrapper:not(.premium-repeater-item) i' => 'font-size: {{SIZE}}px;', '{{WRAPPER}} .premium-post-ticker__icon-wrapper:not(.premium-repeater-item) img' => 'width: {{SIZE}}px', '{{WRAPPER}} .premium-post-ticker__icon-wrapper:not(.premium-repeater-item) > svg, {{WRAPPER}} .premium-post-ticker__icon-wrapper:not(.premium-repeater-item) .premium-lottie-animation, {{WRAPPER}} .premium-post-ticker__icon-wrapper:not(.premium-repeater-item) .premium-drawable-icon' => 'width: {{SIZE}}px; height: {{SIZE}}px; line-height: {{SIZE}}px;', ), 'condition' => array( 'ticker_icon_sw' => 'yes', 'ticker_title!' => '', ), ) ); $this->add_group_control( Group_Control_Image_Size::get_type(), array( 'name' => 'thumbnail', 'default' => 'full', 'condition' => array( 'ticker_icon_sw' => 'yes', 'ticker_title!' => '', 'icon_type' => 'image', ), ) ); $this->add_responsive_control( 'icon_spacing', array( 'label' => __( 'Spacing (px)', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__title-wrapper' => 'column-gap: {{SIZE}}px', ), 'condition' => array( 'ticker_icon_sw' => 'yes', 'ticker_title!' => '', ), ) ); $this->add_control( 'hide_title_on', array( 'label' => __( 'Hide Title On', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT2, 'options' => Helper_Functions::get_all_breakpoints(), 'separator' => 'after', 'multiple' => true, 'label_block' => true, 'default' => array(), 'condition' => array( 'ticker_title!' => '', ), ) ); $this->add_control( 'show_date', array( 'label' => __( 'Show Current Date', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', ) ); $this->add_control( 'ticker_date_pos', array( 'label' => __( 'Position', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::CHOOSE, 'toggle' => false, 'options' => array( 'flex-start' => array( 'title' => __( 'Start', 'premium-addons-for-elementor' ), 'icon' => 'eicon-order-start', ), 'flex-end' => array( 'title' => __( 'End', 'premium-addons-for-elementor' ), 'icon' => 'eicon-order-end', ), ), 'default' => 'flex-start', 'condition' => array( 'show_date' => 'yes', 'layout' => 'layout-1', ), 'selectors' => array( '{{WRAPPER}}.premium-post-ticker__layout-1 .premium-post-ticker__header-wrapper' => 'align-self: {{VALUE}}', ), ) ); $this->add_control( 'ticker_date_order', array( 'label' => __( 'Order', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::CHOOSE, 'toggle' => false, 'options' => array( '0' => array( 'title' => __( 'Before Title', 'premium-addons-for-elementor' ), 'icon' => 'eicon-order-start', ), '1' => array( 'title' => __( 'After Title', 'premium-addons-for-elementor' ), 'icon' => 'eicon-order-end', ), ), 'default' => '0', 'condition' => array( 'show_date' => 'yes', 'layout' => 'layout-4', ), 'selectors' => array( '{{WRAPPER}}.premium-post-ticker__layout-4 .premium-post-ticker__date-wrapper' => 'order: {{VALUE}}', ), ) ); $this->add_control( 'date_format', array( 'label' => __( 'Date Format', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::TEXT, 'label_block' => true, 'description' => __( 'Know more abour date format from ', 'premium-addons-for-elementor' ) . 'here', 'default' => get_option( 'date_format' ), 'condition' => array( 'show_date' => 'yes', ), ) ); $this->add_control( 'hide_date_on', array( 'label' => __( 'Hide Date On', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT2, 'options' => Helper_Functions::get_all_breakpoints(), 'separator' => 'after', 'multiple' => true, 'label_block' => true, 'default' => array(), 'condition' => array( 'show_date' => 'yes', ), ) ); $this->add_control( 'premium_blog_number_of_posts', array( 'label' => __( 'Posts To Load', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::NUMBER, 'min' => 1, 'default' => 4, 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold', 'text' ), ), ) ); $this->add_control( 'additional_heading', array( 'label' => __( 'Additional Settings', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ) ); $this->add_control( 'reverse', array( 'label' => __( 'Reverse Direction', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'prefix_class' => 'premium-reversed-', 'render_type' => 'template', ) ); $this->add_control( 'infinite', array( 'label' => __( 'Marquee Effect', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', ) ); $this->add_control( 'separator', array( 'label' => __( 'Separator', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'condition' => array( 'infinite' => 'yes', 'layout!' => 'layout-4', ), ) ); $this->add_control( 'typing', array( 'label' => __( 'Typing Effect', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'render_type' => 'template', 'prefix_class' => 'premium-typing-', 'description' => __( 'Note: Set the Animaiton Speed option to 0 for better visual.', 'premium-addons-for-elementor' ), 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold' ), 'infinite!' => 'yes', 'layout!' => 'layout-4', ), ) ); $this->add_control( 'cursor', array( 'label' => __( 'Typing Cursor', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::TEXT, 'label_block' => true, 'default' => '_', 'selectors' => array( '{{WRAPPER}} .premium-text-typing::after' => 'content: "{{VALUE}}";', ), 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold' ), 'infinite!' => 'yes', 'typing' => 'yes', 'layout!' => 'layout-4', ), ) ); $this->add_control( 'entrance_animation', array( 'label' => __( 'Entrance Animation', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::ANIMATION, 'render_type' => 'template', 'default' => '', 'label_block' => true, 'condition' => array( 'infinite!' => 'yes', 'layout!' => 'layout-4', 'typing!' => 'yes', ), ) ); $this->add_control( 'ticker_pointer', array( 'label' => __( 'Title Pointer', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'prefix_class' => 'premium-ticker-pointer-', 'condition' => array( 'ticker_title!' => '', 'layout' => array( 'layout-1', 'layout-2' ), ), ) ); $this->add_control( 'ticker_pointer_color', array( 'label' => __( 'Pointer Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'separator' => 'before', 'selectors' => array( '{{WRAPPER}}.premium-ticker-pointer-yes:not(.premium-reversed-yes) .premium-post-ticker__content > div:first-child::after' => 'border-left-color: {{VALUE}};', '{{WRAPPER}}.premium-ticker-pointer-yes.premium-reversed-yes .premium-post-ticker__content > div:first-child::after' => 'border-right-color: {{VALUE}};', ), 'global' => array( 'default' => Global_Colors::COLOR_PRIMARY, ), 'condition' => array( 'ticker_title!' => '', 'ticker_pointer' => 'yes', 'layout' => array( 'layout-1', 'layout-2' ), ), ) ); $this->add_group_control( Group_Control_Background::get_type(), array( 'name' => 'pointer_bg', 'description' => __( 'Pointer Color', 'premium-addons-for-elementor' ), 'types' => array( 'classic', 'gradient' ), 'fields_options' => array( 'background' => array( 'default' => 'classic', ), 'color' => array( 'global' => array( 'default' => Global_Colors::COLOR_TEXT, ), ), ), 'selector' => '{{WRAPPER}}.premium-post-ticker__layout-3 .premium-post-ticker__header-wrapper::after', 'condition' => array( 'layout' => 'layout-3', 'ticker_title' => '', ), ) ); $this->add_responsive_control( 'pointer_width', array( 'label' => __( 'Pointer Width (px)', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px' ), 'selectors' => array( '{{WRAPPER}}.premium-ticker-pointer-yes .premium-post-ticker__content > div:first-child::after' => 'border-top-width: {{SIZE}}px; border-bottom-width: {{SIZE}}px;', ), 'condition' => array( 'ticker_title!' => '', 'ticker_pointer' => 'yes', 'layout' => array( 'layout-1', 'layout-2' ), ), ) ); $this->add_responsive_control( 'pointer_height', array( 'label' => __( 'Pointer Height (px)', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px' ), 'selectors' => array( '{{WRAPPER}}.premium-ticker-pointer-yes:not(.premium-reversed-yes) .premium-post-ticker__content > div:first-child::after' => 'border-left-width: {{SIZE}}px;', '{{WRAPPER}}.premium-ticker-pointer-yes.premium-reversed-yes .premium-post-ticker__content > div:first-child::after' => 'border-right-width: {{SIZE}}px;', ), 'condition' => array( 'ticker_title!' => '', 'ticker_pointer' => 'yes', 'layout' => array( 'layout-1', 'layout-2' ), ), ) ); $this->add_control( 'ticker_title_tag', array( 'label' => __( 'Title HTML Tag', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT, 'default' => 'h4', 'options' => array( 'h1' => 'H1', 'h2' => 'H2', 'h3' => 'H3', 'h4' => 'H4', 'h5' => 'H5', 'h6' => 'H6', 'div' => 'div', 'span' => 'span', 'p' => 'p', ), 'label_block' => true, 'conditions' => array( 'relation' => 'or', 'terms' => array( array( 'name' => 'ticker_title', 'operator' => '!==', 'value' => '', ), array( 'name' => 'post_type_filter', 'value' => 'post', ), ), ), ) ); $this->end_controls_section(); } /** * Adds query controls. * * @access private * @since 4.9.37 */ private function add_query_section_controls() { $this->start_controls_section( 'pa_spl_query_section', array( 'label' => __( 'Query', 'premium-addons-for-elementor' ), ) ); $post_types = Posts_Helper::get_posts_types(); $post_types = array_merge( $post_types, array( 'related' => __( 'Related', 'premium-addons-for-elementor' ), 'stock' => __( 'Stock Prices', 'premium-addons-for-elementor' ), 'gold' => __( 'Gold Prices', 'premium-addons-for-elementor' ), 'text' => __( 'Text Content', 'premium-addons-for-elementor' ), ) ); foreach ( $post_types as $id => $label ) { if ( ! in_array( $id, array( 'post', 'text' ), true ) ) { $post_types[ $id ] .= apply_filters( 'pa_pro_label', __( ' (Pro)', 'premium-addons-for-elementor' ) ); } } $this->add_control( 'post_type_filter', array( 'label' => __( 'Source', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT, 'label_block' => true, 'options' => $post_types, 'default' => 'post', ) ); foreach ( $post_types as $key => $type ) { // Get all the taxonomies associated with the selected post type. $taxonomy = Posts_Helper::get_taxnomies( $key ); if ( ! empty( $taxonomy ) ) { // Get all taxonomy values under the taxonomy. foreach ( $taxonomy as $index => $tax ) { $terms = get_terms( array( 'taxonomy' => $index, 'hide_empty' => false, ) ); $related_tax = array(); if ( ! empty( $terms ) ) { foreach ( $terms as $t_index => $t_obj ) { $related_tax[ $t_obj->slug ] = $t_obj->name; } // Add filter rule for the each taxonomy. $this->add_control( $index . '_' . $key . '_filter_rule', array( /* translators: %s Taxnomy Label */ 'label' => sprintf( __( '%s Filter Rule', 'premium-addons-for-elementor' ), $tax->label ), 'type' => Controls_Manager::SELECT, 'default' => 'IN', 'label_block' => true, 'options' => array( /* translators: %s: Taxnomy Label */ 'IN' => sprintf( __( 'Match %s', 'premium-addons-for-elementor' ), $tax->label ), /* translators: %s: Taxnomy Label */ 'NOT IN' => sprintf( __( 'Exclude %s', 'premium-addons-for-elementor' ), $tax->label ), ), 'condition' => array( 'post_type_filter' => $key, ), ) ); // Add select control for each taxonomy. $this->add_control( 'tax_' . $index . '_' . $key . '_filter', array( /* translators: %s Taxnomy Label */ 'label' => sprintf( __( '%s Filter', 'premium-addons-for-elementor' ), $tax->label ), 'type' => Controls_Manager::SELECT2, 'default' => '', 'multiple' => true, 'label_block' => true, 'options' => $related_tax, 'condition' => array( 'post_type_filter' => $key, ), ) ); } } } } $this->add_control( 'author_filter_rule', array( 'label' => __( 'Filter By Author Rule', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT, 'default' => 'author__in', 'label_block' => true, 'options' => array( 'author__in' => __( 'Match Authors', 'premium-addons-for-elementor' ), 'author__not_in' => __( 'Exclude Authors', 'premium-addons-for-elementor' ), ), 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold', 'text' ), ), ) ); $this->add_control( 'premium_blog_users', array( 'label' => __( 'Authors', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT2, 'label_block' => true, 'multiple' => true, 'options' => Posts_Helper::get_authors(), 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold', 'text' ), ), ) ); $this->add_control( 'posts_filter_rule', array( 'label' => __( 'Filter By Post Rule', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT, 'default' => 'post__not_in', 'label_block' => true, 'options' => array( 'post__in' => __( 'Match Post', 'premium-addons-for-elementor' ), 'post__not_in' => __( 'Exclude Post', 'premium-addons-for-elementor' ), ), 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold', 'related', 'text' ), ), ) ); $this->add_control( 'premium_blog_posts_exclude', array( 'label' => __( 'Posts', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT2, 'label_block' => true, 'multiple' => true, 'options' => Posts_Helper::get_default_posts_list( 'post' ), 'condition' => array( 'post_type_filter' => 'post', ), ) ); $this->add_control( 'custom_posts_filter', array( 'label' => __( 'Posts', 'premium-addons-for-elementor' ), 'type' => Premium_Post_Filter::TYPE, 'render_type' => 'template', 'label_block' => true, 'multiple' => true, 'frontend_available' => true, 'condition' => array( 'post_type_filter!' => array( 'post', 'related', 'stock', 'gold', 'text' ), ), ) ); $this->add_control( 'ignore_sticky_posts', array( 'label' => __( 'Ignore Sticky Posts', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'label_on' => __( 'Yes', 'premium-addons-for-elementor' ), 'label_off' => __( 'No', 'premium-addons-for-elementor' ), 'default' => 'yes', 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold', 'text' ), ), ) ); $this->add_control( 'premium_blog_offset', array( 'label' => __( 'Offset', 'premium-addons-for-elementor' ), 'description' => __( 'This option is used to exclude number of initial posts from being display.', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::NUMBER, 'default' => '0', 'min' => '0', 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold', 'text' ), ), ) ); $this->add_control( 'query_exclude_current', array( 'label' => __( 'Exclude Current Post', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'description' => __( 'This option will remove the current post from the query.', 'premium-addons-for-elementor' ), 'label_on' => __( 'Yes', 'premium-addons-for-elementor' ), 'label_off' => __( 'No', 'premium-addons-for-elementor' ), 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold', 'related', 'text' ), ), ) ); $this->add_control( 'premium_blog_order_by', array( 'label' => __( 'Order By', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT, 'label_block' => true, 'options' => array( 'none' => __( 'None', 'premium-addons-for-elementor' ), 'ID' => __( 'ID', 'premium-addons-for-elementor' ), 'author' => __( 'Author', 'premium-addons-for-elementor' ), 'title' => __( 'Title', 'premium-addons-for-elementor' ), 'name' => __( 'Name', 'premium-addons-for-elementor' ), 'date' => __( 'Date', 'premium-addons-for-elementor' ), 'modified' => __( 'Last Modified', 'premium-addons-for-elementor' ), 'rand' => __( 'Random', 'premium-addons-for-elementor' ), 'comment_count' => __( 'Number of Comments', 'premium-addons-for-elementor' ), ), 'default' => 'date', 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold', 'text' ), ), ) ); $this->add_control( 'premium_blog_order', array( 'label' => __( 'Order', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT, 'label_block' => true, 'options' => array( 'DESC' => __( 'Descending', 'premium-addons-for-elementor' ), 'ASC' => __( 'Ascending', 'premium-addons-for-elementor' ), ), 'default' => 'DESC', 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold', 'text' ), ), ) ); $this->add_control( 'empty_query_text', array( 'label' => __( 'Empty Query Text', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::TEXT, 'label_block' => true, 'dynamic' => array( 'active' => true ), 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold', 'text' ), ), ) ); $this->add_responsive_control( 'txt_align', array( 'label' => __( 'Position', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::CHOOSE, 'options' => array( 'flex-start' => array( 'title' => __( 'Left', 'premium-addons-for-elementor' ), 'icon' => 'eicon-h-align-left', ), 'center' => array( 'title' => __( 'Center', 'premium-addons-for-elementor' ), 'icon' => 'eicon-h-align-center', ), 'flex-end' => array( 'title' => __( 'Right', 'premium-addons-for-elementor' ), 'icon' => 'eicon-h-align-right', ), ), 'default' => 'flex-start', 'toggle' => false, 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__post-wrapper' => 'justify-content: {{VALUE}}', ), 'condition' => array( 'post_type_filter' => 'text', ) ) ); $this->add_control( 'txt_icon_order', array( 'label' => __( 'Icon Order', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::CHOOSE, 'toggle' => false, 'options' => array( '0' => array( 'title' => __( 'After Title', 'premium-addons-for-elementor' ), 'icon' => 'eicon-order-start', ), '2' => array( 'title' => __( 'Before Title', 'premium-addons-for-elementor' ), 'icon' => 'eicon-order-end', ), ), 'condition' => array( 'post_type_filter' => 'text', ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__post-wrapper .premium-post-ticker__post-title' => 'order: {{VALUE}}', ), ) ); $this->add_responsive_control( 'txt_icon_size', array( 'label' => __( 'Icon Size (px)', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px' ), 'range' => array( 'px' => array( 'min' => 0, 'max' => 500, ), ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__icon-wrapper.premium-repeater-item i' => 'font-size: {{SIZE}}px;', '{{WRAPPER}} .premium-post-ticker__icon-wrapper.premium-repeater-item img' => 'width: {{SIZE}}px', '{{WRAPPER}} .premium-post-ticker__icon-wrapper.premium-repeater-item > svg, {{WRAPPER}} .premium-post-ticker__icon-wrapper.premium-repeater-item .premium-lottie-animation, {{WRAPPER}} .premium-post-ticker__icon-wrapper.premium-repeater-item .premium-drawable-icon' => 'width: {{SIZE}}px; height: {{SIZE}}px; line-height: {{SIZE}}px;', ), 'condition' => array( 'post_type_filter' => 'text', ), ) ); // $this->add_group_control( // Group_Control_Image_Size::get_type(), // array( // 'name' => 'txt_thumbnail', // 'default' => 'full', // 'condition' => array( // 'post_type_filter' => 'text', // ), // ) // ); $this->add_responsive_control( 'txt_icon_spacing', array( 'label' => __( 'Spacing (px)', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__post-wrapper' => 'column-gap: {{SIZE}}px', ), 'condition' => array( 'post_type_filter' => 'text', ), ) ); $draw_icon = $this->check_icon_draw(); $text_repeater = new Repeater(); $text_repeater->add_control( 'text', array( 'label' => __( 'Text', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::TEXT, 'dynamic' => array( 'active' => true ), 'label_block' => true, ) ); $text_repeater->add_control( 'item_link', array( 'label' => __( 'Link', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::URL, 'dynamic' => array( 'active' => true ), 'default' => array( 'url' => '#', ), 'placeholder' => 'https://premiumaddons.com/', 'label_block' => true, ) ); $text_repeater->add_control( 'txt_icon_sw', array( 'label' => __( 'Text Icon', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'render_type' => 'template', ) ); $text_repeater->add_control( 'icon_type', array( 'label' => __( 'Icon Type', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT, 'render_type' => 'template', 'options' => array( 'icon' => __( 'Icon', 'premium-addons-for-elementor' ), 'lottie' => __( 'Lottie Animation', 'premium-addons-for-elementor' ), 'image' => __( 'Image', 'premium-addons-for-elementor' ), 'svg' => __( 'SVG Code', 'premium-addons-for-elementor' ), ), 'default' => 'icon', 'condition' => array( 'txt_icon_sw' => 'yes', ), ) ); $common_conditions = array( 'txt_icon_sw' => 'yes', ); $text_repeater->add_control( 'pa_ticker_icon', array( 'label' => __( 'Choose Icon', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::ICONS, 'label_block' => false, 'skin' => 'inline', 'default' => array( 'value' => 'fas fa-star', 'library' => 'fa-solid', ), 'condition' => array( 'txt_icon_sw' => 'yes', 'icon_type' => 'icon', ), ) ); $text_repeater->add_control( 'custom_svg', array( 'label' => __( 'SVG Code', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::TEXTAREA, 'description' => 'You can use these sites to create SVGs: Google Fonts and Boxy SVG', 'condition' => array( 'txt_icon_sw' => 'yes', 'icon_type' => 'svg', ), ) ); $text_repeater->add_control( 'image', array( 'label' => __( 'Image', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::MEDIA, 'media_types' => array( 'image' ), 'dynamic' => array( 'active' => true ), 'condition' => array( 'txt_icon_sw' => 'yes', 'icon_type' => 'image', ), ) ); $text_repeater->add_control( 'lottie_url', array( 'label' => __( 'Animation JSON URL', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::TEXT, 'dynamic' => array( 'active' => true ), 'description' => 'Get JSON code URL from here', 'label_block' => true, 'condition' => array( 'txt_icon_sw' => 'yes', 'icon_type' => 'lottie', ), ) ); $animation_conds = array( 'terms' => array( array( 'name' => 'txt_icon_sw', 'value' => 'yes', ), array( 'relation' => 'or', 'terms' => array( array( 'name' => 'icon_type', 'value' => 'lottie', ), array( 'terms' => array( array( 'relation' => 'or', 'terms' => array( array( 'name' => 'icon_type', 'value' => 'icon', ), array( 'name' => 'icon_type', 'value' => 'svg', ), ), ), array( 'name' => 'draw_svg', 'value' => 'yes', ), ), ), ), ), ), ); $text_repeater->add_control( 'draw_svg', array( 'label' => __( 'Draw Icon', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'description' => __( 'Enable this option to make the icon drawable. See ', 'premium-addons-for-elementor' ) . 'tutorial', 'classes' => $draw_icon ? '' : 'editor-pa-control-disabled', 'condition' => array( 'txt_icon_sw' => 'yes', 'icon_type' => array( 'icon', 'svg' ), 'pa_ticker_icon[library]!' => 'svg', ), ) ); if ( $draw_icon ) { $text_repeater->add_control( 'path_width', array( 'label' => __( 'Path Thickness', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'min' => 0, 'max' => 50, 'step' => 0.1, ), ), 'condition' => array( 'txt_icon_sw' => 'yes', 'icon_type' => array( 'icon', 'svg' ), ), 'selectors' => array( '{{WRAPPER}} {{CURRENT_ITEM}} .premium-post-ticker__icon-wrapper svg *' => 'stroke-width: {{SIZE}}', ), ) ); } else { Helper_Functions::get_draw_svg_notice( $text_repeater, 'ticker', array( 'txt_icon_sw' => 'yes', 'icon_type' => array( 'icon', 'svg' ), 'pa_ticker_icon[library]!' => 'svg', ) ); } $text_repeater->add_control( 'lottie_loop', array( 'label' => __( 'Loop', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'return_value' => 'true', 'default' => 'true', 'conditions' => $animation_conds, ) ); $this->add_control( 'text_content', array( 'label' => __( 'Text', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::REPEATER, 'default' => array( array( 'text' => 'Premium News Ticker', ), array( 'text' => 'Premium Addons For Elementor', ), ), 'fields' => $text_repeater->get_controls(), 'title_field' => '{{{ text }}}', 'prevent_empty' => false, 'condition' => array( 'post_type_filter' => 'text', ), ) ); $papro_activated = apply_filters( 'papro_activated', false ); if ( $papro_activated ) { do_action( 'pa_ticker_stock_query', $this ); } $this->end_controls_section(); } /** * Adds Posts controls. * * @access private * @since 4.9.37 */ private function add_posts_section_controls() { $this->start_controls_section( 'pa_ticker_posts_section', array( 'label' => __( 'Post Options', 'premium-addons-for-elementor' ), 'condition' => array( 'post_type_filter!' => array( 'stock', 'gold', 'text' ), ), ) ); $this->add_control( 'new_tab', array( 'label' => __( 'Open Post Link in New Tab', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', ) ); $this->add_control( 'article_tag_switcher', array( 'label' => __( 'Change Post HTML Tag To Article', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, ) ); $this->add_control( 'content_length', array( 'label' => __( 'Content Length (words)', 'premium-addons-for-elementor' ), 'description' => __( 'Set the number of words of the content, leave it empty to display the full length.', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::NUMBER, 'min' => '0', ) ); $this->add_control( 'post_img', array( 'label' => __( 'Show Post Thumbnail', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, ) ); $this->add_group_control( Group_Control_Image_Size::get_type(), array( 'name' => 'image', 'default' => 'thumbnail', 'condition' => array( 'post_img' => 'yes', ), ) ); $this->add_responsive_control( 'img_width', array( 'label' => __( 'Width (px)', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', 'em' ), 'range' => array( 'px' => array( 'min' => 0, 'max' => 500, ), ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__thumbnail-wrapper img' => 'width: {{SIZE}}{{UNIT}};', ), 'condition' => array( 'post_img' => 'yes', ), ) ); $this->add_control( 'hide_thumb_on', array( 'label' => __( 'Hide Thumbnail On', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT2, 'options' => Helper_Functions::get_all_breakpoints(), 'separator' => 'after', 'multiple' => true, 'label_block' => true, 'default' => array(), 'condition' => array( 'post_img' => 'yes', ), ) ); $this->add_control( 'author_meta', array( 'label' => __( 'Author Meta', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, ) ); $this->add_control( 'hide_author_on', array( 'label' => __( 'Hide Author On', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT2, 'options' => Helper_Functions::get_all_breakpoints(), 'separator' => 'after', 'multiple' => true, 'label_block' => true, 'default' => array(), 'condition' => array( 'author_meta' => 'yes', ), ) ); $this->add_control( 'date_meta', array( 'label' => __( 'Date Meta', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', ) ); $this->add_control( 'post_date_format', array( 'label' => __( 'Date Format', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::TEXT, 'label_block' => true, 'description' => __( 'Know more abour date format from ', 'premium-addons-for-elementor' ) . 'here', 'default' => get_option( 'date_format' ), 'condition' => array( 'date_meta' => 'yes', ), ) ); $this->add_control( 'hide_post_date_on', array( 'label' => __( 'Hide Date On', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SELECT2, 'options' => Helper_Functions::get_all_breakpoints(), 'multiple' => true, 'label_block' => true, 'default' => array(), 'condition' => array( 'date_meta' => 'yes', ), ) ); $this->end_controls_section(); } private function add_slider_section_controls() { $this->start_controls_section( 'slider_section_tab', array( 'label' => __( 'Animation Settings', 'premium-addons-for-elementor' ), ) ); $this->add_control( 'slides_to_show', array( 'label' => __( 'Slides To Show', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::NUMBER, 'default' => 3, 'condition' => array( 'layout' => 'layout-4', ), ) ); $this->add_control( 'vertical', array( 'label' => __( 'Vertical', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'condition' => array( 'fade!' => 'yes', 'layout!' => 'layout-4', ), ) ); $this->add_control( 'fade', array( 'label' => __( 'Fade', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'prefix_class' => 'premium-fade-', 'render_type' => 'template', 'condition' => array( 'layout!' => 'layout-4', 'infinite!' => 'yes', 'typing!' => 'yes', ), ) ); $this->add_control( 'auto_play', array( 'label' => __( 'Autoplay', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'condition' => array( 'infinite!' => 'yes', ), ) ); $this->add_control( 'autoplay_speed', array( 'label' => __( 'Autoplay Speed (ms)', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::NUMBER, 'default' => 5000, 'condition' => array( 'auto_play' => 'yes', 'infinite!' => 'yes', ), ) ); $this->add_control( 'speed', array( 'label' => __( 'Animation Speed (ms)', 'premium-addons-for-elementor' ), 'description' => __( 'Set the speed of the animation in milliseconds (ms)', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::NUMBER, 'default' => 5000, 'render_type' => 'template', ) ); $this->add_control( 'carousel_arrows', array( 'label' => __( 'Navigation Arrows', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'condition' => array( 'infinite!' => 'yes', ), ) ); $this->add_control( 'pause_on_hover', array( 'label' => __( 'Pause On Hover', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'conditions' => array( 'relation' => 'or', 'terms' => array( array( 'name' => 'auto_play', 'value' => 'yes', ), array( 'name' => 'infinite', 'value' => 'yes', ), ), ), ) ); $this->end_controls_section(); } private function add_helpful_info_section() { $this->start_controls_section( 'section_pa_docs', array( 'label' => __( 'Help & Docs', 'premium-addons-for-elementor' ), ) ); $docs = array( 'https://premiumaddons.com/docs/elementor-news-ticker-widget/' => __( 'Getting started ยป', 'premium-addons-for-elementor' ), ); $doc_index = 1; foreach ( $docs as $url => $title ) { $doc_url = Helper_Functions::get_campaign_link( $url, 'editor-page', 'wp-editor', 'get-support' ); $this->add_control( 'doc_' . $doc_index, array( 'type' => Controls_Manager::RAW_HTML, 'raw' => sprintf( '%s', $doc_url, $title ), 'content_classes' => 'editor-pa-doc', ) ); ++$doc_index; } $this->end_controls_section(); } /** Style Controls.*/ /** * Adds posts title style controls. * * @access private * @since 4.9.37 */ private function add_ticker_title_style() { $draw_icon = $this->check_icon_draw(); $this->start_controls_section( 'pa_ticker_title_tab', array( 'label' => __( 'Title', 'premium-addons-for-elementor' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => array( 'ticker_title!' => '', ), ) ); $this->add_group_control( Group_Control_Typography::get_type(), array( 'name' => 'ticker_title_typo', 'selector' => '{{WRAPPER}} .premium-post-ticker__title', ) ); $this->add_control( 'ticker_title_color', array( 'label' => __( 'Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__title' => 'color: {{VALUE}}', ), ) ); $this->add_control( 'title_icon_color', array( 'label' => __( 'Icon Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__icon-wrapper:not(.premium-repeater-item) i' => 'color: {{VALUE}}', '{{WRAPPER}} .premium-post-ticker__icon-wrapper:not(.premium-repeater-item) .premium-drawable-icon *, {{WRAPPER}} .premium-post-ticker__icon-wrapper:not(.premium-repeater-item) svg:not([class*="premium-"])' => 'fill: {{VALUE}};', ), 'condition' => array( 'ticker_icon_sw' => 'yes', 'icon_type' => 'icon', ), ) ); if ( $draw_icon ) { $this->add_control( 'stroke_color', array( 'label' => __( 'Stroke Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'global' => array( 'default' => Global_Colors::COLOR_ACCENT, ), 'condition' => array( 'icon_type' => array( 'icon', 'svg' ), ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__icon-wrapper:not(.premium-repeater-item) .premium-drawable-icon *, {{WRAPPER}} .premium-post-ticker__icon-wrapper:not(.premium-repeater-item) svg:not([class*="premium-"])' => 'stroke: {{VALUE}};', ), ) ); } $this->add_group_control( Group_Control_Text_Shadow::get_type(), array( 'name' => 'ticker_title_text_shadow', 'selector' => '{{WRAPPER}} .premium-post-ticker__title', ) ); $this->add_group_control( Group_Control_Background::get_type(), array( 'name' => 'ticker_title_bg', 'types' => array( 'classic', 'gradient' ), 'fields_options' => array( 'background' => array( 'default' => 'classic', ), 'color' => array( 'global' => array( 'default' => Global_Colors::COLOR_PRIMARY, ), ), ), 'selector' => '{{WRAPPER}} .premium-post-ticker__title-wrapper, {{WRAPPER}}.premium-post-ticker__layout-2 .premium-post-ticker__title-wrapper::after, {{WRAPPER}}.premium-post-ticker__layout-3 .premium-post-ticker__header-wrapper::after', ) ); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'ticker_title_border', 'selector' => '{{WRAPPER}} .premium-post-ticker__title-wrapper', 'condition' => array( 'layout!' => 'layout-3', ), ) ); $this->add_control( 'ticker_title_border_radius', array( 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__title-wrapper' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), 'condition' => array( 'layout!' => 'layout-3', 'title_adv_radius!' => 'yes', ), ) ); $this->add_control( 'title_adv_radius', array( 'label' => __( 'Advanced Border Radius', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SWITCHER, 'description' => __( 'Apply custom radius values. Get the radius value from ', 'premium-addons-for-elementor' ) . 'here' . __('. See ', 'premium-addons-for-elementor') . 'tutorial', ) ); $this->add_control( 'title_adv_radius_value', array( 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::TEXT, 'dynamic' => array( 'active' => true ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__title-wrapper' => 'border-radius: {{VALUE}};', ), 'condition' => array( 'title_adv_radius' => 'yes', ), ) ); $this->add_responsive_control( 'ticker_title_padding', array( 'label' => __( 'Padding', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__title-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), ) ); $this->end_controls_section(); } private function add_ticker_date_style() { $this->start_controls_section( 'pa_ticker_date_tab', array( 'label' => __( 'Date', 'premium-addons-for-elementor' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => array( 'show_date' => 'yes', ), ) ); $this->add_group_control( Group_Control_Typography::get_type(), array( 'name' => 'date_typo', 'selector' => '{{WRAPPER}} .premium-post-ticker__date-wrapper', ) ); $this->add_control( 'date_color', array( 'label' => __( 'Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__date' => 'color: {{VALUE}}', ), ) ); $this->add_group_control( Group_Control_Text_Shadow::get_type(), array( 'name' => 'date_text_shadow', 'selector' => '{{WRAPPER}} .premium-post-ticker__date-wrapper', ) ); $this->add_group_control( Group_Control_Background::get_type(), array( 'name' => 'date_bg', 'types' => array( 'classic', 'gradient' ), 'selector' => '{{WRAPPER}} .premium-post-ticker__date-wrapper', ) ); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'date_border', 'selector' => '{{WRAPPER}} .premium-post-ticker__date-wrapper', 'condition' => array( 'layout!' => 'layout-3', ), ) ); $this->add_control( 'date_border_radius', array( 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__date-wrapper' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), 'condition' => array( 'layout!' => 'layout-3', ), ) ); $this->add_responsive_control( 'date_padding', array( 'label' => __( 'Padding', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__date-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), ) ); $this->add_responsive_control( 'date_margin', array( 'label' => __( 'Margin', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__date-wrapper' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), 'condition' => array( 'layout!' => 'layout-3', ), ) ); $this->end_controls_section(); } private function add_posts_style() { $draw_icon = $this->check_icon_draw(); $this->start_controls_section( 'pa_posts_style', array( 'label' => __( 'Ticker Element', 'premium-addons-for-elementor' ), 'tab' => Controls_Manager::TAB_STYLE, ) ); // content. $this->add_control( 'pa_post_title_heading', array( 'label' => __( 'Content', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => array( 'post_type_filter!' => array( 'gold', 'stock' ), ), ) ); $this->add_group_control( Group_Control_Typography::get_type(), array( 'name' => 'pa_post_title_typo', 'selector' => '{{WRAPPER}} .premium-post-ticker__post-title a', 'condition' => array( 'post_type_filter!' => array( 'gold', 'stock' ), ), ) ); $this->add_control( 'pa_post_title_color', array( 'label' => __( 'Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__post-title a, {{WRAPPER}} .premium-text-typing::after' => 'color: {{VALUE}};', ), 'condition' => array( 'post_type_filter!' => array( 'gold', 'stock' ), ), ) ); $this->add_control( 'pa_post_title_color_hov', array( 'label' => __( 'Hover Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__post-title:hover a, {{WRAPPER}} .premium-text-typing:hover::after' => 'color: {{VALUE}};', ), 'condition' => array( 'post_type_filter!' => array( 'gold', 'stock' ), ), ) ); $this->add_control( 'text_icon_color', array( 'label' => __( 'Icon Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__icon-wrapper.premium-repeater-item i' => 'color: {{VALUE}}', '{{WRAPPER}} .premium-post-ticker__icon-wrapper.premium-repeater-item .premium-drawable-icon *, {{WRAPPER}} .premium-post-ticker__icon-wrapper.premium-repeater-item svg:not([class*="premium-"])' => 'fill: {{VALUE}};', ), 'condition' => array( 'post_type_filter' => 'text', ), ) ); if ( $draw_icon ) { $this->add_control( 'text_stroke_color', array( 'label' => __( 'Stroke Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'global' => array( 'default' => Global_Colors::COLOR_ACCENT, ), 'condition' => array( 'post_type_filter' => 'text', ), 'selectors' => array( '{{WRAPPER}} .premium-drawable-icon *, {{WRAPPER}} svg:not([class*="premium-"])' => 'stroke: {{VALUE}};', ), ) ); } // Date. $this->add_control( 'pa_post_date_heading', array( 'label' => __( 'Date', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => array( 'date_meta' => 'yes', 'post_type_filter!' => array( 'gold', 'stock', 'text' ), ), ) ); $this->add_group_control( Group_Control_Typography::get_type(), array( 'name' => 'pa_post_date_typo', 'global' => array( 'default' => Global_Typography::TYPOGRAPHY_SECONDARY, ), 'selector' => '{{WRAPPER}} .premium-post-ticker__post-date span', 'condition' => array( 'date_meta' => 'yes', 'post_type_filter!' => array( 'gold', 'stock', 'text' ), ), ) ); $this->add_control( 'pa_post_date_color', array( 'label' => __( 'Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__post-date span' => 'color: {{VALUE}};', ), 'condition' => array( 'date_meta' => 'yes', 'post_type_filter!' => array( 'gold', 'stock', 'text' ), ), ) ); // Author. $this->add_control( 'pa_author_heading', array( 'label' => __( 'Author', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => array( 'author_meta' => 'yes', 'post_type_filter!' => array( 'gold', 'stock', 'text' ), ), ) ); $this->add_group_control( Group_Control_Typography::get_type(), array( 'name' => 'pa_author_typo', 'global' => array( 'default' => Global_Typography::TYPOGRAPHY_SECONDARY, ), 'fields_options' => array( 'font_size' => array( 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__post-author a, {{WRAPPER}} .premium-post-ticker__post-author i' => 'font-size: {{SIZE}}{{UNIT}}', ), ), ), 'selector' => '{{WRAPPER}} .premium-post-ticker__post-author a', 'condition' => array( 'author_meta' => 'yes', 'post_type_filter!' => array( 'gold', 'stock', 'text' ), ), ) ); $this->add_control( 'pa_author_color', array( 'label' => __( 'Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__post-author *' => 'color: {{VALUE}};', ), 'condition' => array( 'author_meta' => 'yes', 'post_type_filter!' => array( 'gold', 'stock', 'text' ), ), ) ); $this->add_control( 'pa_author_color_hov', array( 'label' => __( 'Hover Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__post-author:hover *' => 'color: {{VALUE}};', ), 'condition' => array( 'author_meta' => 'yes', 'post_type_filter!' => array( 'gold', 'stock', 'text' ), ), ) ); // featured image. $this->add_control( 'pa_post_img', array( 'label' => __( 'Featured Image', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => array( 'post_img' => 'yes', 'post_type_filter!' => array( 'gold', 'stock', 'text' ), ), ) ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), array( 'name' => 'pa_post_img_shadow', 'selector' => '{{WRAPPER}} .premium-post-ticker__thumbnail-wrapper', 'condition' => array( 'post_img' => 'yes', 'post_type_filter!' => array( 'gold', 'stock', 'text' ), ), ) ); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'pa_post_img_border', 'selector' => '{{WRAPPER}} .premium-post-ticker__thumbnail-wrapper', 'condition' => array( 'post_img' => 'yes', 'post_type_filter!' => array( 'gold', 'stock', 'text' ), ), ) ); $this->add_control( 'pa_post_img_border_radius', array( 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__thumbnail-wrapper, {{WRAPPER}} .premium-post-ticker__thumbnail-wrapper *' => 'border-radius: {{SIZE}}{{UNIT}};', ), 'condition' => array( 'post_img' => 'yes', 'post_type_filter!' => array( 'gold', 'stock', 'text' ), ), ) ); $this->add_responsive_control( 'pa_post_img_margin', array( 'label' => __( 'Margin', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__thumbnail-wrapper' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), 'condition' => array( 'post_img' => 'yes', 'post_type_filter!' => array( 'gold', 'stock', 'text' ), ), ) ); $papro_activated = apply_filters( 'papro_activated', false ); if ( $papro_activated ) { do_action( 'pa_ticker_stock_style', $this ); } // box / container. $this->add_control( 'pa_post_box_heading', array( 'label' => __( 'Container', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ) ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), array( 'name' => 'pa_post_box_shadow', 'selector' => '{{WRAPPER}} .premium-post-ticker__post-wrapper', ) ); $this->add_group_control( Group_Control_Background::get_type(), array( 'name' => 'pa_post_box_bg', 'types' => array( 'classic', 'gradient' ), 'selector' => '{{WRAPPER}} .premium-post-ticker__post-wrapper, {{WRAPPER}}:not(.premium-post-ticker__layout-4) .premium-post-ticker__arrows, {{WRAPPER}}.premium-post-ticker__layout-3 .premium-post-ticker__content', ) ); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'pa_post_box_border', 'selector' => '{{WRAPPER}} .premium-post-ticker__post-wrapper', ) ); $this->add_control( 'pa_post_box_border_radius', array( 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__post-wrapper' => 'border-radius: {{SIZE}}{{UNIT}};', ), ) ); $this->add_responsive_control( 'pa_post_box_padding', array( 'label' => __( 'Padding', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__post-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), ) ); $this->add_responsive_control( 'pa_post_box_magin', array( 'label' => __( 'Margin', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__post-wrapper' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), ) ); $this->end_controls_section(); } private function add_posts_container_style() { $this->start_controls_section( 'posts_container_style', array( 'label' => __( 'Ticker Elements Container', 'premium-addons-for-elementor' ), 'tab' => Controls_Manager::TAB_STYLE, ) ); $this->add_group_control( Group_Control_Background::get_type(), array( 'name' => 'posts_container_background', 'types' => array( 'classic', 'gradient' ), 'selector' => '{{WRAPPER}} .premium-post-ticker__content', ) ); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'posts_container_border', 'selector' => '{{WRAPPER}} .premium-post-ticker__content', ) ); $this->add_control( 'posts_container_border_radius', array( 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', '%', 'em' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__content' => 'border-radius: {{SIZE}}{{UNIT}};', ), ) ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), array( 'name' => 'posts_container_shadow', 'selector' => '{{WRAPPER}} .premium-post-ticker__content', ) ); $this->add_responsive_control( 'posts_container_margin', array( 'label' => __( 'Margin', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__content' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}', ), ) ); $this->add_responsive_control( 'posts_container_padding', array( 'label' => __( 'Padding', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}', ), ) ); $this->end_controls_section(); } /** * Adds pagination style controls. * * @access private * @since 4.9.37 */ private function add_navigation_style() { $this->start_controls_section( 'pa_nav_style', array( 'label' => __( 'Arrows', 'premium-addons-for-elementor' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => array( 'carousel_arrows' => 'yes', ), ) ); $this->add_responsive_control( 'nav_icon_size', array( 'label' => __( 'Icon Size', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', '%', 'em' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__arrows i' => 'font-size: {{SIZE}}{{UNIT}};', '{{WRAPPER}} .premium-post-ticker__arrows a' => 'line-height: {{SIZE}}{{UNIT}};', ), ) ); $this->start_controls_tabs( 'nav_colors' ); $this->start_controls_tab( 'pa_nav_nomral', array( 'label' => __( 'Normal', 'premium-addons-for-elementor' ), ) ); $this->add_control( 'pa_nav_color', array( 'label' => __( 'Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'global' => array( 'default' => Global_Colors::COLOR_SECONDARY, ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__arrows a' => 'color: {{VALUE}};', ), ) ); $this->add_control( 'pa_nav_bg', array( 'label' => __( 'Background Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__arrows a' => 'background-color: {{VALUE}};', ), ) ); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'pa_nav_border', 'selector' => '{{WRAPPER}} .premium-post-ticker__arrows a', ) ); $this->add_control( 'pa_nav_border_radius', array( 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', '%', 'em' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__arrows a' => 'border-radius: {{SIZE}}{{UNIT}};', ), ) ); $this->end_controls_tab(); $this->start_controls_tab( 'premium_blog_pa_nav_hover', array( 'label' => __( 'Hover', 'premium-addons-for-elementor' ), ) ); $this->add_control( 'pa_nav_color_hov', array( 'label' => __( 'Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'global' => array( 'default' => Global_Colors::COLOR_PRIMARY, ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__arrows a:hover' => 'color: {{VALUE}};', ), ) ); $this->add_control( 'pa_nav_bg_hov', array( 'label' => __( 'Background Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'global' => array( 'default' => Global_Colors::COLOR_SECONDARY, ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__arrows a:hover' => 'background-color: {{VALUE}};', ), ) ); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'pa_nav_border_hov', 'selector' => '{{WRAPPER}} .premium-post-ticker__arrows a:hover', ) ); $this->add_control( 'pa_nav_border_radius_hov', array( 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', '%', 'em' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__arrows a:hover' => 'border-radius: {{SIZE}}{{UNIT}};', ), ) ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_responsive_control( 'pa_nav_margin', array( 'label' => __( 'Spacing', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px' ), 'separator' => 'before', 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__arrows' => 'column-gap: {{SIZE}}px;', ), ) ); $this->add_responsive_control( 'pa_nav_padding', array( 'label' => __( 'Padding', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__arrows a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), ) ); $this->add_control( 'arrows_container', array( 'label' => __( 'Outer Container', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ) ); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'arrow_container_border', 'selector' => '{{WRAPPER}} .premium-post-ticker__arrows', ) ); $this->add_control( 'arrow_container_rad', array( 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', '%', 'em' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__arrows' => 'border-radius: {{SIZE}}{{UNIT}};', ), ) ); $this->add_responsive_control( 'arrow_container_padding', array( 'label' => __( 'Padding', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__arrows' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), ) ); $this->add_responsive_control( 'arrow_container_margin', array( 'label' => __( 'Margin', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em', '%' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__arrows' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), ) ); $this->end_controls_section(); } /** * Adds separator style controls. * * @access private * @since 4.9.37 */ private function add_separator_style() { $this->start_controls_section( 'pa_separator_style', array( 'label' => __( 'Separator', 'premium-addons-for-elementor' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => array( 'infinite' => 'yes', 'separator' => 'yes', 'layout!' => 'layout-4', ), ) ); $this->add_responsive_control( 'separator_position', array( 'label' => __( 'Position', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', 'em', '%', 'custom' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__separator' => 'right: {{SIZE}}{{UNIT}}', ), ) ); $this->add_responsive_control( 'separator_width', array( 'label' => __( 'Width', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', 'em', 'custom' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__separator' => 'width: {{SIZE}}{{UNIT}}', ), ) ); $this->add_responsive_control( 'separator_height', array( 'label' => __( 'Height', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', 'em', 'custom' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__separator' => 'height: {{SIZE}}{{UNIT}} !important', ), ) ); $this->add_control( 'separator_color', array( 'label' => __( 'Color', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__separator' => 'background-color: {{VALUE}};', ), ) ); $this->add_control( 'separator_rad', array( 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', '%', 'em' ), 'selectors' => array( '{{WRAPPER}} .premium-post-ticker__separator' => 'border-radius: {{SIZE}}{{UNIT}};', ), ) ); $this->end_controls_section(); } /** * Render post ticker widget output on the frontend. * Written in PHP and used to generate the final HTML. * * @since 1.0.0 * @access protected */ protected function render() { $settings = $this->get_settings_for_display(); $papro_activated = apply_filters( 'papro_activated', false ); if ( ! $papro_activated && ( in_array( $settings['layout'], array( 'layout-3', 'layout-4' ), true ) || ! in_array( $settings['post_type_filter'], array( 'post', 'text' ), true ) ) ) { ?>