Last active
May 13, 2020 17:06
-
-
Save getpeace/f2c976c956b25b34815e0173da52e5cb to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| namespace Aepro; | |
| use Elementor\Group_Control_Background; | |
| use Elementor\Group_Control_Box_Shadow; | |
| use Elementor\Widget_Base; | |
| use Elementor\Controls_Manager; | |
| use Elementor\Group_Control_Border; | |
| use Elementor\Scheme_Color; | |
| use Elementor\Group_Control_Typography; | |
| use Elementor\Scheme_Typography; | |
| use Elementor\Utils; | |
| use Elementor\Plugin; | |
| use ElementorPro\Modules\Woocommerce\Widgets\Elements; | |
| use WP_Query; | |
| class Aepro_Post_Blocks extends Widget_Base{ | |
| public function get_name() { | |
| return 'ae-post-blocks'; | |
| } | |
| public function get_title() { | |
| return __( 'AE - Post Blocks', 'ae-pro' ); | |
| } | |
| public function get_icon() { | |
| return 'eicon-post-list'; | |
| } | |
| public function get_categories() { | |
| return [ 'ae-template-elements' ]; | |
| } | |
| public function get_script_depends() { | |
| return [ 'jquery-masonry', 'ae-infinite-scroll', 'ae-swiper' ]; | |
| } | |
| protected function _register_controls() { | |
| $helper = new Helper(); | |
| $ae_post_types = $helper->get_rule_post_types(); | |
| $ae_post_types_options = $ae_post_types; | |
| $ae_post_types_options['current_loop'] = __( 'Current Archive','ae-pro' ); | |
| $ae_post_types_options['ae_by_id'] = __( 'Manual Selection','ae-pro' ); | |
| $ae_post_types_options['related'] = __('Related Posts', 'ae-pro'); | |
| if(class_exists('acf') || is_plugin_active('pods/init.php')){ | |
| $ae_post_types_options['relation'] = __('Relationship', 'ae-pro'); | |
| } | |
| $this->start_controls_section( | |
| 'section_query', | |
| [ | |
| 'label' => __( 'Query', 'ae-pro' ), | |
| ] | |
| ); | |
| $this->add_control( | |
| 'ae_post_type', | |
| [ | |
| 'label' => __('Source','ae-pro'), | |
| 'type' => Controls_Manager::SELECT, | |
| 'options' => $ae_post_types_options, | |
| 'default' => key( $ae_post_types ), | |
| ] | |
| ); | |
| $block_layouts[''] = 'Select Template'; | |
| $block_layouts = $block_layouts + $helper->ae_block_layouts(); | |
| $this->add_control( | |
| 'template', | |
| [ | |
| 'label' => __('Template','ae-pro'), | |
| 'type' => Controls_Manager::SELECT, | |
| 'options' => $block_layouts, | |
| 'description' => __('Know more about templates <a href="http://aedocs.webtechstreet.com/article/9-creating-block-layout-in-anywhere-elementor-pro" target="_blank">Click Here</a>','ae-pro') | |
| ] | |
| ); | |
| if(class_exists('acf') && is_plugin_active('pods/init.php')) { | |
| $this->add_control( | |
| 'relationship_type', | |
| [ | |
| 'label' => __('Relationship Type', 'ae-pro'), | |
| 'type' => Controls_Manager::SELECT, | |
| 'default' => 'acf', | |
| 'options' => [ | |
| 'acf' => __('ACF', 'ae-pro'), | |
| 'pods' => __('Pods', 'ae-pro') | |
| ], | |
| 'condition' => [ | |
| 'ae_post_type' => 'relation' | |
| ] | |
| ] | |
| ); | |
| } | |
| $this->add_control( | |
| 'ae_post_ids', | |
| [ | |
| 'label' => __('Posts','ae-pro'), | |
| 'type' => Controls_Manager::SELECT2, | |
| 'multiple' => true, | |
| 'label_block' => true, | |
| 'placeholder' => __( 'Selects Posts', 'ae-pro' ), | |
| 'default' => __( '', 'ae-pro' ), | |
| 'condition' => [ | |
| 'ae_post_type' => 'ae_by_id', | |
| ], | |
| ] | |
| ); | |
| $this->add_control( | |
| 'related_by', | |
| [ | |
| 'label' => __('Related By', 'ae-pro'), | |
| 'type' => Controls_Manager::SELECT2, | |
| 'multiple' => true, | |
| 'label_block' => true, | |
| 'placeholder' => __('Select Taxonomies', 'ae-pro'), | |
| 'default' => '', | |
| 'options' => $helper->get_rules_taxonomies(), | |
| 'condition' => [ | |
| 'ae_post_type' => 'related' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'related_match_with', | |
| [ | |
| 'label' => __( 'Match With', 'ae-pro' ), | |
| 'type' => Controls_Manager::SELECT, | |
| 'default' => 'OR', | |
| 'options' => [ | |
| 'OR' => __( 'Anyone Term', 'ae-pro' ), | |
| 'AND' => __( 'All Terms', 'ae-pro' ) | |
| ], | |
| 'condition' => [ | |
| 'ae_post_type' => 'related' | |
| ] | |
| ] | |
| ); | |
| if(class_exists('acf') || is_plugin_active('pods/init.php')){ | |
| $this->add_control( | |
| 'acf_relation_field', | |
| [ | |
| 'label' => __('Relationship Field', 'ae-pro'), | |
| 'tyoe' => Controls_Manager::TEXT, | |
| 'description' => __('Key of ACF / Pods Relationship Field', 'ae-pro'), | |
| 'condition' => [ | |
| 'ae_post_type' => 'relation' | |
| ] | |
| ] | |
| ); | |
| } | |
| $this->add_control( | |
| 'author_ae_ids', | |
| [ | |
| 'label' => 'Authors', | |
| 'type' => Controls_Manager::SELECT2, | |
| 'multiple' => true, | |
| 'label_block' => true, | |
| 'placeholder' => __( 'Enter Author ID Separated by Comma', 'ae-pro' ), | |
| 'options' => Post_Helper::instance()->get_authors(), | |
| 'conditions' => [ | |
| 'relation' => 'and', | |
| 'terms' => [ | |
| [ | |
| 'name' => 'ae_post_type', | |
| 'operator' => '!==', | |
| 'value' => 'ae_by_id', | |
| ], [ | |
| 'name' => 'ae_post_type', | |
| 'operator' => '!==', | |
| 'value' => 'current_loop', | |
| ], | |
| [ | |
| 'name' => 'ae_post_type', | |
| 'operator' => '!==', | |
| 'value' => 'related', | |
| ], [ | |
| 'name' => 'ae_post_type', | |
| 'operator' => '!==', | |
| 'value' => 'relation', | |
| ] | |
| ], | |
| ], | |
| ] | |
| ); | |
| $ae_taxonomy_filter_args = [ | |
| 'show_in_nav_menus' => true, | |
| ]; | |
| $ae_taxonomies = get_taxonomies( $ae_taxonomy_filter_args, 'objects' ); | |
| foreach ( $ae_taxonomies as $ae_taxonomy => $object ) { | |
| $this->add_control( | |
| $ae_taxonomy . '_ae_ids', | |
| [ | |
| 'label' => $object->label, | |
| 'type' => Controls_Manager::SELECT2, | |
| 'multiple' => true, | |
| 'label_block' => true, | |
| 'placeholder' => __( 'Enter ' .$object->label. ' ID Separated by Comma', 'ae-pro' ), | |
| 'object_type' => $ae_taxonomy, | |
| 'options' => Post_Helper::instance()->get_taxonomy_terms($ae_taxonomy), | |
| 'condition' => [ | |
| 'ae_post_type' => $object->object_type, | |
| ], | |
| ] | |
| ); | |
| } | |
| $this->add_control( | |
| 'current_post', | |
| [ | |
| 'label' => __( 'Exclude Current Post', 'ae-pro' ), | |
| 'type' => Controls_Manager::SWITCHER, | |
| 'default' => 'yes', | |
| 'label_on' => __( 'Show', 'ae-pro' ), | |
| 'label_off' => __( 'Hide', 'ae-pro' ), | |
| 'return_value' => 'yes', | |
| 'condition' => [ | |
| 'ae_post_type!' => 'current_loop' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'advanced', | |
| [ | |
| 'label' => __( 'Advanced', 'ae-pro' ), | |
| 'type' => Controls_Manager::HEADING, | |
| 'condition' => [ | |
| 'ae_post_type!' => 'current_loop' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'orderby', | |
| [ | |
| 'label' => __( 'Order By', 'ae-pro' ), | |
| 'type' => Controls_Manager::SELECT, | |
| 'default' => 'post_date', | |
| 'options' => [ | |
| 'post_date' => __( 'Date', 'ae-pro' ), | |
| 'post_title' => __( 'Title', 'ae-pro' ), | |
| 'menu_order' => __( 'Menu Order', 'ae-pro' ), | |
| 'rand' => __( 'Random', 'ae-pro' ), | |
| 'meta_value' => __( 'Custom Field', 'ae-pro' ) | |
| ], | |
| 'condition' => [ | |
| 'ae_post_type!' => 'current_loop' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'orderby_metakey_name', | |
| [ | |
| 'label' => __('Meta Key Name', 'ae-pro'), | |
| 'tyoe' => Controls_Manager::TEXT, | |
| 'description' => __('Custom Field Key', 'ae-pro'), | |
| 'condition' => [ | |
| 'orderby' => 'meta_value' | |
| ], | |
| 'condition' => [ | |
| 'ae_post_type!' => 'current_loop' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'order', | |
| [ | |
| 'label' => __( 'Order', 'ae-pro' ), | |
| 'type' => Controls_Manager::SELECT, | |
| 'default' => 'desc', | |
| 'options' => [ | |
| 'asc' => __( 'ASC', 'ae-pro' ), | |
| 'desc' => __( 'DESC', 'ae-pro' ), | |
| ], | |
| 'condition' => [ | |
| 'ae_post_type!' => 'current_loop' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'posts_per_page', | |
| [ | |
| 'label' => __( 'Posts Count', 'ae-pro' ), | |
| 'type' => Controls_Manager::NUMBER, | |
| 'default' => 6, | |
| 'condition' => [ | |
| 'ae_post_type!' => 'current_loop' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'offset', | |
| [ | |
| 'label' => __( 'Offset', 'ae-pro' ), | |
| 'type' => Controls_Manager::NUMBER, | |
| 'default' => 0, | |
| 'condition' => [ | |
| 'ae_post_type!' => ['current_loop', 'ae_by_id'], | |
| ], | |
| 'description' => __( 'Use this setting to skip over posts (e.g. \'2\' to skip over 2 posts).', 'ae-pro' ), | |
| ] | |
| ); | |
| $this->end_controls_section(); | |
| $this->start_controls_section( | |
| 'section_layout', | |
| [ | |
| 'label' => __( 'Layout', 'ae-pro' ), | |
| ] | |
| ); | |
| $this->add_control( | |
| 'layout_mode', | |
| [ | |
| 'label' => __('Layout Mode','ae-pro'), | |
| 'type' => Controls_Manager::SELECT, | |
| 'options' => [ | |
| 'list' => __('List','ae-pro'), | |
| 'grid' => __('Grid', 'ae-pro'), | |
| 'carousel' => __('Carousel', 'ae-pro') | |
| ], | |
| 'default' => 'grid', | |
| 'prefix_class' => 'ae-post-layout-' | |
| ] | |
| ); | |
| $this->add_control( | |
| 'masonry_grid', | |
| [ | |
| 'label' => __( 'Masonry', 'ae-pro' ), | |
| 'type' => Controls_Manager::SWITCHER, | |
| 'default' => '', | |
| 'masonry_on' => __( 'On', 'ae-pro' ), | |
| 'masonry_off' => __( 'Off', 'ae-pro' ), | |
| 'return_value' => 'yes', | |
| 'condition' => [ | |
| 'layout_mode' => 'grid' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'show_infinite_scroll', | |
| [ | |
| 'label' => __('Infinite Scroll', 'ae-pro'), | |
| 'type' => Controls_Manager::SWITCHER, | |
| 'default' => '', | |
| 'label_on' => __( 'Yes', 'ae-pro' ), | |
| 'label_off' => __( 'No', 'ae-pro' ), | |
| 'return_value' => 'yes', | |
| 'condition' => [ | |
| 'layout_mode!' => 'carousel', | |
| 'ae_post_type' => 'current_loop' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'show_pagination', | |
| [ | |
| 'label' => __('Pagination','ae-pro'), | |
| 'type' => Controls_Manager::SELECT, | |
| 'options' => [ | |
| 'yes' => __( 'Yes', 'ae-pro' ), | |
| 'no' => __( 'No', 'ae-pro' ) | |
| ], | |
| 'default' => 'yes', | |
| 'condition' => [ | |
| 'layout_mode' => 'grid', | |
| 'show_infinite_scroll!' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'columns', | |
| [ | |
| 'label' => __('Columns', 'ae-pro'), | |
| 'type' => Controls_Manager::NUMBER, | |
| 'desktop_default' => '3', | |
| 'tablet_default' => '2', | |
| 'mobile_default' => '1', | |
| 'min' => 1, | |
| 'max' => 6, | |
| 'condition' => [ | |
| 'layout_mode' => 'grid' | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-post-list-item' => 'width: calc(100%/{{ value }})', | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'item_col_gap', | |
| [ | |
| 'label' => __('Column Gap', 'ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'range' => [ | |
| 'px' => [ | |
| 'min' => 0, | |
| 'max' => 200, | |
| ] | |
| ], | |
| 'default' => [ | |
| 'unit' => 'px', | |
| 'size' => 10, | |
| ], | |
| 'condition' => [ | |
| 'layout_mode' => 'grid' | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}}.ae-post-layout-grid article.ae-post-list-item' => 'padding-left:{{SIZE}}{{UNIT}}; padding-right:{{SIZE}}{{UNIT}};', | |
| '{{WRAPPER}}.ae-post-layout-grid .ae-pagination-wrapper' => 'padding-right:{{SIZE}}{{UNIT}};', | |
| '{{WRAPPER}} .ae-pagination-wrapper' => 'padding-left:{{SIZE}}{{UNIT}};', | |
| '{{WRAPPER}} .aep-filter-bar' => 'padding-left:{{SIZE}}{{UNIT}}; padding-right:{{SIZE}}{{UNIT}};' | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'item_row_gap', | |
| [ | |
| 'label' => __('Row Gap', 'ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'range' => [ | |
| 'px' => [ | |
| 'min' => 0, | |
| 'max' => 200, | |
| ] | |
| ], | |
| 'default' => [ | |
| 'unit' => 'px', | |
| 'size' => 20, | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} article.ae-post-list-item' => 'margin-bottom:{{SIZE}}{{UNIT}};', | |
| ], | |
| 'condition' => [ | |
| 'layout_mode!' => 'carousel' | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'carousel_item_row_gap', | |
| [ | |
| 'label' => __('Row Gap', 'ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'range' => [ | |
| 'px' => [ | |
| 'min' => 0, | |
| 'max' => 200, | |
| ] | |
| ], | |
| 'default' => [ | |
| 'unit' => 'px', | |
| 'size' => 0, | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-post-list-wrapper' => 'margin-bottom:{{SIZE}}{{UNIT}};', | |
| ], | |
| 'condition' => [ | |
| 'layout_mode' => 'carousel' | |
| ] | |
| ] | |
| ); | |
| $this->end_controls_section(); | |
| $this->pagination_controls(); | |
| $this->start_controls_section( | |
| 'layout_style', | |
| [ | |
| 'label' => __( 'Layout', 'ae-pro' ), | |
| 'tab' => Controls_Manager::TAB_STYLE, | |
| ] | |
| ); | |
| $this->add_group_control( | |
| Group_Control_Background::get_type(), | |
| [ | |
| 'name' => 'item_bg', | |
| 'label' => __( 'Item Background', 'ae-pro' ), | |
| 'types' => [ 'none','classic','gradient' ], | |
| 'selector' => '{{WRAPPER}} .ae-article-inner', | |
| 'default' => '#fff' | |
| ] | |
| ); | |
| $this->add_group_control( | |
| Group_Control_Border::get_type(), | |
| [ | |
| 'name' => 'item_border', | |
| 'label' => __( 'Border', 'ae-pro' ), | |
| 'selector' => '{{WRAPPER}} .ae-article-inner', | |
| ] | |
| ); | |
| $this->add_control( | |
| 'item_border_radius', | |
| [ | |
| 'label' => __( 'Border Radius', 'ae-pro' ), | |
| 'type' => Controls_Manager::DIMENSIONS, | |
| 'size_units' => [ 'px', '%' ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-article-inner' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; overflow:hidden;', | |
| ], | |
| ] | |
| ); | |
| $this->add_group_control( | |
| Group_Control_Box_Shadow::get_type(), | |
| [ | |
| 'name' => 'item_box_shadow', | |
| 'label' => __( 'Item Shadow', 'ae-pro' ), | |
| 'selector' => '{{WRAPPER}} .ae-article-inner', | |
| ] | |
| ); | |
| $this->end_controls_section(); | |
| $this->start_controls_section( | |
| 'carousel_style', | |
| [ | |
| 'label' => __( 'Carousel', 'ae-pro' ), | |
| 'tab' => Controls_Manager::TAB_STYLE, | |
| 'condition' => [ | |
| 'layout_mode' => 'carousel', | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'heading_style_arrow', | |
| [ | |
| 'label' => __('Arrow', 'ae-pro'), | |
| 'type' => Controls_Manager::HEADING, | |
| 'condition' => | |
| [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->start_controls_tabs( 'tabs_arrow_styles' ); | |
| $this->start_controls_tab( | |
| 'tab_arrow_normal', | |
| [ | |
| 'label' => __( 'Normal', 'ae-pro' ), | |
| ] | |
| ); | |
| $this->add_control( | |
| 'arrow_color', | |
| [ | |
| 'label' => __('Color', 'ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-button-prev i' => 'color:{{VAlUE}};', | |
| '{{WRAPPER}} .ae-swiper-button-next i' => 'color:{{VAlUE}};' | |
| ], | |
| 'default' => '#444', | |
| 'condition' => | |
| [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'arrow_bg_color', | |
| [ | |
| 'label' => __(' Background Color', 'ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-button-prev' => 'background-color:{{VAlUE}};', | |
| '{{WRAPPER}} .ae-swiper-button-next' => 'background-color:{{VAlUE}};' | |
| ], | |
| 'condition' => | |
| [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_group_control( | |
| Group_Control_Border::get_type(), | |
| [ | |
| 'name' => 'arrow_border', | |
| 'label' => __( 'Border', 'ae-pro' ), | |
| 'selector' => '{{WRAPPER}} .ae-swiper-container .ae-swiper-button-prev, {{WRAPPER}} .ae-swiper-container .ae-swiper-button-next', | |
| 'condition' => | |
| [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'arrow_border_radius', | |
| [ | |
| 'label' => __( 'Border Radius', 'ae-pro' ), | |
| 'type' => Controls_Manager::DIMENSIONS, | |
| 'size_units' => [ 'px', '%' ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-container .ae-swiper-button-prev' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; overflow:hidden;', | |
| '{{WRAPPER}} .ae-swiper-container .ae-swiper-button-next' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; overflow:hidden;', | |
| ], | |
| 'condition' => | |
| [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->end_controls_tab(); | |
| $this->start_controls_tab( | |
| 'tab_arrow_hover', | |
| [ | |
| 'label' => __( 'Hover', 'ae-pro' ), | |
| ] | |
| ); | |
| $this->add_control( | |
| 'arrow_color_hover', | |
| [ | |
| 'label' => __('Color', 'ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-button-prev:hover i' => 'color:{{VAlUE}};', | |
| '{{WRAPPER}} .ae-swiper-button-next:hover i' => 'color:{{VAlUE}};' | |
| ], | |
| 'condition' => | |
| [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'arrow_bg_color_hover', | |
| [ | |
| 'label' => __(' Background Color', 'ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-button-prev:hover' => 'background-color:{{VAlUE}};', | |
| '{{WRAPPER}} .ae-swiper-button-next:hover' => 'background-color:{{VAlUE}};' | |
| ], | |
| 'condition' => | |
| [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'arrow_border_color_hover', | |
| [ | |
| 'label' => __(' Border Color', 'ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-button-prev:hover' => 'border-color:{{VAlUE}};', | |
| '{{WRAPPER}} .ae-swiper-button-next:hover' => 'border-color:{{VAlUE}};' | |
| ], | |
| 'condition' => | |
| [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'arrow_border_radius_hover', | |
| [ | |
| 'label' => __( 'Border Radius', 'ae-pro' ), | |
| 'type' => Controls_Manager::DIMENSIONS, | |
| 'size_units' => [ 'px', '%' ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-container .ae-swiper-button-prev:hover' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; overflow:hidden;', | |
| '{{WRAPPER}} .ae-swiper-container .ae-swiper-button-next:hover' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; overflow:hidden;', | |
| ], | |
| 'condition' => | |
| [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->end_controls_tab(); | |
| $this->end_controls_tabs(); | |
| $this->add_control( | |
| 'arrow_size', | |
| [ | |
| 'label' => __('Arrow Size', 'ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'default' => | |
| [ | |
| 'size' => 50 | |
| ], | |
| 'range' => | |
| [ | |
| 'min' => 20, | |
| 'max' => 100, | |
| 'step' => 1 | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-button-prev i' => 'font-size:{{SIZE}}px;', | |
| '{{WRAPPER}} .ae-swiper-button-next i' => 'font-size:{{SIZE}}px;', | |
| ], | |
| 'condition' => | |
| [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'arrow_horizontal_position', | |
| [ | |
| 'label' => __( 'Horizontal Position', 'elementor-pro' ), | |
| 'type' => Controls_Manager::CHOOSE, | |
| 'label_block' => false, | |
| 'options' => [ | |
| 'left' => [ | |
| 'title' => __( 'Left', 'elementor-pro' ), | |
| 'icon' => 'eicon-h-align-left', | |
| ], | |
| 'center' => [ | |
| 'title' => __( 'Center', 'elementor-pro' ), | |
| 'icon' => 'eicon-h-align-center', | |
| ], | |
| 'right' => [ | |
| 'title' => __( 'Right', 'elementor-pro' ), | |
| 'icon' => 'eicon-h-align-right', | |
| ], | |
| ], | |
| /*'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-button-wrapper' => '{{VALUE}}', | |
| ], | |
| 'selectors_dictionary' => [ | |
| 'left' => 'position: absolute; height: 100%; top: 0; width: 100px; left: 0;', | |
| 'center' => '', | |
| 'right' => '', | |
| ],*/ | |
| 'default' => 'center', | |
| 'condition' => [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'arrow_vertical_position', | |
| [ | |
| 'label' => __( 'Vertical Position', 'elementor-pro' ), | |
| 'type' => Controls_Manager::CHOOSE, | |
| 'label_block' => false, | |
| 'options' => [ | |
| 'top' => [ | |
| 'title' => __( 'Top', 'elementor-pro' ), | |
| 'icon' => 'eicon-v-align-top', | |
| ], | |
| 'middle' => [ | |
| 'title' => __( 'Middle', 'elementor-pro' ), | |
| 'icon' => 'eicon-v-align-middle', | |
| ], | |
| 'bottom' => [ | |
| 'title' => __( 'Bottom', 'elementor-pro' ), | |
| 'icon' => 'eicon-v-align-bottom', | |
| ], | |
| ], | |
| /*'selectors_dictionary' => [ | |
| 'top' => 'top: 0; bottom: auto; transform: unset;', | |
| 'middle' => 'translate(-50%);', | |
| 'bottom' => 'top: auto; bottom: 0; transform: unset;', | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-button-prev' => '{{VALUE}}', | |
| '{{WRAPPER}} .ae-swiper-button-next' => '{{VALUE}}', | |
| ],*/ | |
| 'default' => 'center', | |
| 'condition' => [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'horizontal_arrow_offset', | |
| [ | |
| 'label' => __('Horizontal Offset', 'ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'size_units' => [ '%', 'px' ], | |
| 'default' => [ | |
| 'unit' => '%', | |
| ], | |
| 'tablet_default' => [ | |
| 'unit' => '%', | |
| ], | |
| 'mobile_default' => [ | |
| 'unit' => '%', | |
| ], | |
| 'range' => | |
| [ | |
| 'min' => 1, | |
| 'max' => 1000, | |
| 'step' => 1 | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-hpos-left .ae-swiper-button-wrapper' => 'left: {{SIZE}}{{UNIT}}', | |
| '{{WRAPPER}} .ae-hpos-right .ae-swiper-button-wrapper' => 'right: {{SIZE}}{{UNIT}}', | |
| '{{WRAPPER}} .ae-hpos-center .ae-swiper-button-prev' => 'left: {{SIZE}}{{UNIT}}', | |
| '{{WRAPPER}} .ae-hpos-center .ae-swiper-button-next' => 'right: {{SIZE}}{{UNIT}}', | |
| ], | |
| 'condition' => [ | |
| 'navigation_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'vertical_arrow_offset', | |
| [ | |
| 'label' => __('Vertical Offset', 'ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'size_units' => [ '%', 'px' ], | |
| 'default' => [ | |
| 'unit' => '%', | |
| ], | |
| 'tablet_default' => [ | |
| 'unit' => '%', | |
| ], | |
| 'mobile_default' => [ | |
| 'unit' => '%', | |
| ], | |
| 'range' => | |
| [ | |
| 'min' => 1, | |
| 'max' => 1000, | |
| 'step' => 1 | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-vpos-top .ae-swiper-button-wrapper' => 'top: {{SIZE}}{{UNIT}}', | |
| '{{WRAPPER}} .ae-vpos-bottom .ae-swiper-button-wrapper' => 'bottom: {{SIZE}}{{UNIT}}', | |
| '{{WRAPPER}} .ae-hpos-middle .ae-swiper-button-prev' => 'top: {{SIZE}}{{UNIT}}', | |
| '{{WRAPPER}} .ae-hpos-middle .ae-swiper-button-next' => 'bottom: {{SIZE}}{{UNIT}}', | |
| ], | |
| 'condition' => [ | |
| 'navigation_button' => 'yes', | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'arrow_padding', | |
| [ | |
| 'label' => __( 'Padding', 'ae-pro' ), | |
| 'type' => Controls_Manager::DIMENSIONS, | |
| 'size_units' => [ 'px', 'em', '%' ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-button-prev' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', | |
| '{{WRAPPER}} .ae-swiper-button-next' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'heading_style_dots', | |
| [ | |
| 'label' => __('Dots', 'ae-pro'), | |
| 'type' => Controls_Manager::HEADING, | |
| 'separator' => 'before', | |
| 'condition' => | |
| [ | |
| 'ptype' => 'bullets' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'dots_size', | |
| [ | |
| 'label' => __('Dots Size', 'ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'default' => | |
| [ | |
| 'size' => 5 | |
| ], | |
| 'range' => | |
| [ | |
| 'min' => 1, | |
| 'max' => 10, | |
| 'step' => 1 | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .swiper-pagination-bullet' => 'width:{{SIZE}}px; height:{{SIZE}}px;', | |
| ], | |
| 'condition' => | |
| [ | |
| 'ptype' => 'bullets' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'dots_color', | |
| [ | |
| 'label' => __('Active Dot Color', 'ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .swiper-pagination-bullet-active' => 'background-color:{{VAlUE}} !important;', | |
| ], | |
| 'condition' => | |
| [ | |
| 'ptype' => 'bullets' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'inactive_dots_color', | |
| [ | |
| 'label' => __('Inactive Dot Color', 'ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .swiper-pagination-bullet' => 'background-color:{{VAlUE}};', | |
| ], | |
| 'condition' => | |
| [ | |
| 'ptype' => 'bullets' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'heading_style_scroll', | |
| [ | |
| 'label' => __('Scrollbar', 'ae-pro'), | |
| 'type' => Controls_Manager::HEADING, | |
| 'separator' => 'before', | |
| 'condition' => | |
| [ | |
| 'scrollbar' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'scroll_size', | |
| [ | |
| 'label' => __('Scrollbar Size', 'ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'default' => | |
| [ | |
| 'size' => 5 | |
| ], | |
| 'range' => | |
| [ | |
| 'min' => 1, | |
| 'max' => 10, | |
| 'step' => 1 | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-scrollbar' => 'height:{{SIZE}}px;', | |
| ], | |
| 'condition' => | |
| [ | |
| 'scrollbar' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'scrollbar_color', | |
| [ | |
| 'label' => __('Scrollbar Color', 'ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .swiper-scrollbar-drag' => 'background-color:{{VAlUE}};', | |
| ], | |
| 'condition' => | |
| [ | |
| 'scrollbar' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'scroll_color', | |
| [ | |
| 'label' => __('Scroll Color', 'ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-swiper-scrollbar' => 'background-color:{{VAlUE}};', | |
| ], | |
| 'condition' => | |
| [ | |
| 'scrollbar' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'heading_style_progress', | |
| [ | |
| 'label' => __('Progress Bar', 'ae-pro'), | |
| 'type' => Controls_Manager::HEADING, | |
| 'separator' => 'before', | |
| 'condition' => | |
| [ | |
| 'ptype' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'progressbar_color', | |
| [ | |
| 'label' => __('Prgress Bar Color', 'ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .swiper-pagination-progressbar' => 'background-color:{{VAlUE}};', | |
| ], | |
| 'condition' => | |
| [ | |
| 'ptype' => 'progress' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'progress_color', | |
| [ | |
| 'label' => __('Prgress Color', 'ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .swiper-pagination-progress' => 'background-color:{{VAlUE}};', | |
| ], | |
| 'condition' => | |
| [ | |
| 'ptype' => 'progress' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'progressbar_size', | |
| [ | |
| 'label' => __('Prgress Bar Size', 'ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'default' => | |
| [ | |
| 'size' => 5 | |
| ], | |
| 'range' => | |
| [ | |
| 'min' => 1, | |
| 'max' => 10, | |
| 'step' => 1 | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .swiper-pagination-progress' => 'height:{{SIZE}}px;', | |
| ], | |
| 'condition' => | |
| [ | |
| 'ptype' => 'progress' | |
| ] | |
| ] | |
| ); | |
| $this->end_controls_section(); | |
| $this->start_controls_section( | |
| 'pagination_style', | |
| [ | |
| 'label' => __( 'Pagination', 'ae-pro' ), | |
| 'tab' => Controls_Manager::TAB_STYLE, | |
| 'condition' => [ | |
| 'layout_mode!' => 'carousel', | |
| 'show_pagination' => 'yes', | |
| 'show_infinite_scroll!' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'item_gap', | |
| [ | |
| 'label' => __('Item Gap','ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'range' => [ | |
| 'px' => [ | |
| 'min' => 0, | |
| 'max' => 50, | |
| ] | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-pagination-wrapper *' => 'margin-left:{{SIZE}}{{UNIT}}; margin-right:{{SIZE}}{{UNIT}};', | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'pi_padding', | |
| [ | |
| 'label' => __( 'Padding', 'ae-pro' ), | |
| 'type' => Controls_Manager::DIMENSIONS, | |
| 'size_units' => [ 'px', 'em', '%' ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-pagination-wrapper *' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', | |
| ], | |
| ] | |
| ); | |
| $this->add_control( | |
| 'pi_color', | |
| [ | |
| 'label' => __('Color','ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-pagination-wrapper *' => 'color:{{VALUE}}' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'pi_bg', | |
| [ | |
| 'label' => __('Backround','ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-pagination-wrapper *' => 'background-color:{{VALUE}}' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'pi_hover_color', | |
| [ | |
| 'label' => __('Hover/Current Color','ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-pagination-wrapper .current' => 'color:{{VALUE}}', | |
| '{{WRAPPER}} .ae-pagination-wrapper span:hover' => 'color:{{VALUE}}', | |
| '{{WRAPPER}} .ae-pagination-wrapper a:hover' => 'color:{{VALUE}}' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'pi_hover_bg', | |
| [ | |
| 'label' => __('Hover/Current Background','ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-pagination-wrapper .current' => 'background-color:{{VALUE}}', | |
| '{{WRAPPER}} .ae-pagination-wrapper span:hover' => 'background-color:{{VALUE}}', | |
| '{{WRAPPER}} .ae-pagination-wrapper a:hover' => 'background-color:{{VALUE}}' | |
| ] | |
| ] | |
| ); | |
| $this->add_group_control( | |
| Group_Control_Border::get_type(), | |
| [ | |
| 'name' => 'pi_border', | |
| 'label' => __( 'Border', 'ae-pro' ), | |
| 'selector' => '{{WRAPPER}} .ae-pagination-wrapper *', | |
| ] | |
| ); | |
| $this->add_control( | |
| 'pi_border_hover_color', | |
| [ | |
| 'label' => __('Border Hover Color','ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-pagination-wrapper *:hover' => 'border-color: {{VALUE}}' | |
| ], | |
| 'condition' => [ | |
| 'pi_border_border!' => '' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'pi_border_radius', | |
| [ | |
| 'label' => __( 'Border Radius', 'ae-pro' ), | |
| 'type' => Controls_Manager::DIMENSIONS, | |
| 'size_units' => [ 'px', '%' ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-pagination-wrapper *' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', | |
| ], | |
| ] | |
| ); | |
| $this->add_control( | |
| 'overlay_style', | |
| [ | |
| 'label' => __( 'Loading Overlay', 'ae-pro' ), | |
| 'type' => Controls_Manager::HEADING, | |
| 'separator' => 'before' | |
| ] | |
| ); | |
| $this->add_group_control( | |
| Group_Control_Background::get_type(), | |
| [ | |
| 'name' => 'overlay_color', | |
| 'label' => __( 'Color', 'elementor' ), | |
| 'types' => [ 'none', 'classic','gradient' ], | |
| 'selector' => '{{WRAPPER}} .ae-post-overlay', | |
| ] | |
| ); | |
| $this->end_controls_section(); | |
| $this->start_controls_section( | |
| 'infinite_scroll_style', | |
| [ | |
| 'label' => __( 'Infinite Scroll', 'ae-pro' ), | |
| 'tab' => Controls_Manager::TAB_STYLE, | |
| 'condition' => [ | |
| 'show_infinite_scroll' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'loadmore_align', | |
| [ | |
| 'label' => __( 'Align', 'ae-pro' ), | |
| 'type' => Controls_Manager::CHOOSE, | |
| 'options' => [ | |
| 'left' => [ | |
| 'title' => __( 'Left', 'ae-pro' ), | |
| 'icon' => 'fa fa-align-left', | |
| ], | |
| 'center' => [ | |
| 'title' => __( 'Center', 'ae-pro' ), | |
| 'icon' => 'fa fa-align-center', | |
| ], | |
| 'right' => [ | |
| 'title' => __( 'Right', 'ae-pro' ), | |
| 'icon' => 'fa fa-align-right', | |
| ] | |
| ], | |
| 'default' => 'center', | |
| 'selectors' => [ | |
| '{{WRAPPER}} .load-more-wrapper' => 'text-align: {{VALUE}};', | |
| '{{WRAPPER}} .infinite-scroll-last' => 'text-align: {{VALUE}}', | |
| '{{WRAPPER}} .infinite-scroll-request' => 'text-align: {{VALUE}}' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'ias_loader_color', | |
| [ | |
| 'label' => __('Loader Color','ae-pro'), | |
| 'type' => Controls_Manager::COLOR, | |
| 'selectors' => [ | |
| '{{WRAPPER}} .loader-ellips__dot' => 'background-color:{{VALUE}}' | |
| ], | |
| 'condition' => [ | |
| 'show_infinite_scroll' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'last_message_heading', | |
| [ | |
| 'label' => __('Last Message', 'ae-pro'), | |
| 'type' => Controls_Manager::HEADING, | |
| 'separator' => 'before' | |
| ] | |
| ); | |
| $this->add_group_control( | |
| Group_Control_Typography::get_type(), | |
| [ | |
| 'name' => 'last_message_typography', | |
| 'label' => __( 'Typography', 'ae-pro' ), | |
| 'scheme' => Scheme_Typography::TYPOGRAPHY_1, | |
| 'selector' => '{{WRAPPER}} .infinite-scroll-last', | |
| ] | |
| ); | |
| $this->add_control( | |
| 'last_message_bg', | |
| [ | |
| 'label' => __( 'Color', 'ae-pro' ), | |
| 'type' => Controls_Manager::COLOR, | |
| 'scheme' => [ | |
| 'type' => Scheme_Color::get_type(), | |
| 'value' => Scheme_Color::COLOR_1, | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .infinite-scroll-last' => 'color: {{VALUE}};', | |
| ], | |
| ] | |
| ); | |
| $this->add_control( | |
| 'load_more_heading', | |
| [ | |
| 'label' => __('Load More', 'ae-pro'), | |
| 'type' => Controls_Manager::HEADING, | |
| 'separator' => 'before' | |
| ] | |
| ); | |
| $this->add_group_control( | |
| Group_Control_Typography::get_type(), | |
| [ | |
| 'name' => 'load_more_typography', | |
| 'label' => __( 'Typography', 'ae-pro' ), | |
| 'scheme' => Scheme_Typography::TYPOGRAPHY_3, | |
| 'selector' => '{{WRAPPER}} .view-more-button', | |
| ] | |
| ); | |
| $this->start_controls_tabs( 'tabs_read_more_styles' ); | |
| $this->start_controls_tab( | |
| 'tab_load_more_normal', | |
| [ | |
| 'label' => __( 'Normal', 'ae-pro' ), | |
| ] | |
| ); | |
| $this->add_control( | |
| 'load_more_color', | |
| [ | |
| 'label' => __( 'Color', 'ae-pro' ), | |
| 'type' => Controls_Manager::COLOR, | |
| 'scheme' => [ | |
| 'type' => Scheme_Color::get_type(), | |
| 'value' => Scheme_Color::COLOR_3, | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .view-more-button' => 'color: {{VALUE}};', | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'load_more_bg', | |
| [ | |
| 'label' => __( 'Background Color', 'ae-pro' ), | |
| 'type' => Controls_Manager::COLOR, | |
| 'scheme' => [ | |
| 'type' => Scheme_Color::get_type(), | |
| 'value' => Scheme_Color::COLOR_1, | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .view-more-button' => 'background-color: {{VALUE}};', | |
| ], | |
| ] | |
| ); | |
| $this->add_group_control( | |
| Group_Control_Border::get_type(), | |
| [ | |
| 'name' => 'load_more_border', | |
| 'label' => __( 'Border', 'ae-pro' ), | |
| 'default' => '1px', | |
| 'selector' => '{{WRAPPER}} .view-more-button', | |
| ] | |
| ); | |
| $this->add_control( | |
| 'load_more_border_radius', | |
| [ | |
| 'label' => __( 'Border Radius', 'ae-pro' ), | |
| 'type' => Controls_Manager::DIMENSIONS, | |
| 'size_units' => [ 'px', '%' ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .view-more-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', | |
| ], | |
| ] | |
| ); | |
| $this->add_control( | |
| 'load_more_text_padding', | |
| [ | |
| 'label' => __( 'Padding', 'ae-pro' ), | |
| 'type' => Controls_Manager::DIMENSIONS, | |
| 'size_units' => [ 'px', 'em', '%' ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .view-more-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', | |
| ], | |
| ] | |
| ); | |
| $this->add_control( | |
| 'load_more_text_margin', | |
| [ | |
| 'label' => __( 'Margin', 'ae-pro' ), | |
| 'type' => Controls_Manager::DIMENSIONS, | |
| 'size_units' => [ 'px', 'em', '%' ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .view-more-button' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', | |
| ], | |
| ] | |
| ); | |
| $this->end_controls_tab(); | |
| $this->start_controls_tab( | |
| 'tab_load_more_hover', | |
| [ | |
| 'label' => __( 'Hover', 'ae-pro' ), | |
| ] | |
| ); | |
| $this->add_control( | |
| 'load_more_color_hover', | |
| [ | |
| 'label' => __( 'Color', 'ae-pro' ), | |
| 'type' => Controls_Manager::COLOR, | |
| 'scheme' => [ | |
| 'type' => Scheme_Color::get_type(), | |
| 'value' => Scheme_Color::COLOR_3, | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .view-more-button:hover' => 'color: {{VALUE}};', | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'load_more_bg_hover', | |
| [ | |
| 'label' => __( 'Background Color', 'ae-pro' ), | |
| 'type' => Controls_Manager::COLOR, | |
| 'scheme' => [ | |
| 'type' => Scheme_Color::get_type(), | |
| 'value' => Scheme_Color::COLOR_1, | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .view-more-button:hover' => 'background-color: {{VALUE}};', | |
| ], | |
| ] | |
| ); | |
| $this->add_control( | |
| 'load_more_border_color_hover', | |
| [ | |
| 'label' => __( 'Border Color', 'ae-pro' ), | |
| 'type' => Controls_Manager::COLOR, | |
| 'scheme' => [ | |
| 'type' => Scheme_Color::get_type(), | |
| 'value' => Scheme_Color::COLOR_3, | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .view-more-button:hover' => 'border-color: {{VALUE}};', | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'load_more_border_radius_hover', | |
| [ | |
| 'label' => __( 'Border Radius', 'ae-pro' ), | |
| 'type' => Controls_Manager::DIMENSIONS, | |
| 'size_units' => [ 'px', '%' ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .view-more-button:hover' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', | |
| ], | |
| ] | |
| ); | |
| $this->end_controls_tab(); | |
| $this->end_controls_tabs(); | |
| $this->end_controls_section(); | |
| $this->infinite_scroll_controls(); | |
| $this->carousel_controls(); | |
| } | |
| protected function render() { | |
| $settings = $this->get_settings(); | |
| if(!isset($settings['template']) || empty($settings['template'])){ | |
| echo __('Please select a template first','ae-pro'); | |
| }else{ | |
| $this->generate_output($settings); | |
| } | |
| } | |
| function generate_output($settings,$with_wrapper = true){ | |
| $helper = new Helper(); | |
| $post_type = $settings['ae_post_type']; | |
| $settings['template'] = apply_filters( 'wpml_object_id', $settings['template'], 'ae_global_templates' ); | |
| list($post_items, $query_args) = $this->get_posts($settings); | |
| if(!isset($query_args) && $post_type != 'current_loop' ){ | |
| return; | |
| } | |
| if($settings['layout_mode'] == 'carousel') { | |
| /*-- Carousel */ | |
| $slide_per_view['desktop'] = $settings['slide_per_view']; | |
| $slide_per_view['tablet'] = $settings['slide_per_view_tablet']; | |
| $slide_per_view['mobile'] = $settings['slide_per_view_mobile']; | |
| //echo '<pre>';print_r($slide_per_view);'</pre>'; | |
| //$direction = $settings['direction']; | |
| $speed = $settings['speed']; | |
| $autoplay = $settings['autoplay']; | |
| $duration = $settings['duration']; | |
| $effect = $settings['effect']; | |
| $space['desktop'] = $settings['space']['size']; | |
| $space['tablet'] = $settings['space_tablet']['size']; | |
| $space['mobile'] = $settings['space_mobile']['size']; | |
| //print_r(json_encode($space)); | |
| $loop = $settings['loop']; | |
| $zoom = 'no'; //$settings['zoom']; | |
| $pagination_type = $settings['ptype']; | |
| $navigation_button = $settings['navigation_button']; | |
| $clickable = $settings['clickable']; | |
| $keyboard = $settings['keyboard']; | |
| $scrollbar = $settings['scrollbar']; | |
| $ptype = $settings['ptype']; | |
| $this->add_render_attribute('outer-wrapper', 'class', 'ae-swiper-outer-wrapper'); | |
| $this->add_render_attribute('outer-wrapper', 'data-speed', $speed['size']); | |
| if ($autoplay == 'yes') { | |
| $this->add_render_attribute('outer-wrapper', 'data-autoplay', $autoplay); | |
| } | |
| if ($autoplay == 'yes') { | |
| $this->add_render_attribute('outer-wrapper', 'data-duration', $duration['size']); | |
| } | |
| $this->add_render_attribute('outer-wrapper', 'data-effect', $effect); | |
| $this->add_render_attribute('outer-wrapper', 'data-space', json_encode($space, JSON_NUMERIC_CHECK)); | |
| if ($loop == 'yes') { | |
| $this->add_render_attribute('outer-wrapper', 'data-loop', $loop); | |
| } else { | |
| autoplayStopOnLast: | |
| true; | |
| } | |
| if ($zoom == 'yes') { | |
| $this->add_render_attribute('outer-wrapper', 'data-zoom', $zoom); | |
| } | |
| if (!empty($slide_per_view)) { | |
| $this->add_render_attribute('outer-wrapper', 'data-slides-per-view', json_encode($slide_per_view, JSON_NUMERIC_CHECK)); | |
| } | |
| if ($ptype != '') { | |
| $this->add_render_attribute('outer-wrapper', 'data-ptype', $ptype); | |
| } | |
| if ($pagination_type == 'bullets' && $clickable == 'yes') { | |
| $this->add_render_attribute('outer-wrapper', 'data-clickable', $clickable); | |
| } | |
| if ($navigation_button == 'yes') { | |
| $this->add_render_attribute('outer-wrapper', 'data-navigation', $navigation_button); | |
| } | |
| if ($keyboard == 'yes') { | |
| $this->add_render_attribute('outer-wrapper', 'data-keyboard', $keyboard); | |
| } | |
| if ($scrollbar == 'yes') { | |
| $this->add_render_attribute('outer-wrapper', 'data-scrollbar', $scrollbar); | |
| } | |
| /*-- Carousel */ | |
| } | |
| $masonry = $settings['masonry_grid']; | |
| $ias = $settings['show_infinite_scroll']; | |
| $ias_load_with_button = $settings['ias_load_with_button']; | |
| $ias_load_offest_page = $settings['ias_load_offest_page']; | |
| $this->add_render_attribute( 'post-list-wrapper', 'class', 'ae-post-list-wrapper' ); | |
| $this->add_render_attribute( 'article-inner', 'class', 'ae-article-inner' ); | |
| $this->add_render_attribute( 'post-widget-wrapper', 'data-pid', get_the_ID() ); | |
| $this->add_render_attribute( 'post-widget-wrapper', 'data-wid', $this->get_id() ); | |
| $this->add_render_attribute( 'post-widget-wrapper', 'data-source', $settings['ae_post_type'] ); | |
| $this->add_render_attribute( 'post-widget-wrapper', 'class', 'ae-post-widget-wrapper' ); | |
| $this->add_render_attribute( 'post-widget-wrapper', 'class', 'ae-ias-load-with-button-'.$ias_load_with_button); | |
| $this->add_render_attribute( 'post-widget-wrapper', 'data-load-offset-page', $ias_load_offest_page); | |
| if($settings['layout_mode'] == 'carousel'){ | |
| $this->add_render_attribute( 'post-widget-wrapper', 'class', 'ae-carousel-yes'); | |
| }else{ | |
| $this->add_render_attribute( 'post-widget-wrapper', 'class', 'ae-masonry-'.$masonry); | |
| $this->add_render_attribute( 'post-widget-wrapper', 'class', 'ae-ias-'.$ias); | |
| } | |
| $this->add_render_attribute('post-widget-wrapper', 'class', 'ae-hpos-' . $settings['arrow_horizontal_position']); | |
| $this->add_render_attribute('post-widget-wrapper', 'class', 'ae-vpos-' . $settings['arrow_vertical_position']); | |
| if($post_type == 'current_loop'){ | |
| $this->add_render_attribute( 'post-widget-wrapper', 'class', 'no-ajax' ); | |
| } | |
| $this->add_render_attribute( 'post-list-item', 'class', 'ae-post-list-item' ); | |
| $with_css = false; | |
| if ( \Elementor\Plugin::instance()->editor->is_edit_mode() ) { | |
| $with_css = true; | |
| } | |
| ?> | |
| <div class="ae-post-overlay"></div> | |
| <?php if($with_wrapper){ ?> | |
| <div <?php echo $this->get_render_attribute_string('post-widget-wrapper'); ?>> | |
| <?php } ?> | |
| <?php if($settings['layout_mode'] == 'carousel'){ ?> | |
| <div <?php echo $this->get_render_attribute_string('outer-wrapper'); ?> > | |
| <?php $this->add_render_attribute('swiper-container', 'class', 'ae-swiper-container'); ?> | |
| <div <?php echo $this->get_render_attribute_string('swiper-container'); ?> > | |
| <?php $this->add_render_attribute('post-list-wrapper', 'class', 'ae-swiper-wrapper'); ?> | |
| <?php $this->add_render_attribute('post-list-item', 'class', 'ae-swiper-slide'); ?> | |
| <?php $this->add_render_attribute('article-inner', 'class', 'ae-swiper-slide-wrapper'); ?> | |
| <?php } ?> | |
| <div <?php echo $this->get_render_attribute_string('post-list-wrapper'); ?>> | |
| <?php while($post_items->have_posts()){ | |
| $post_items->the_post(); | |
| ?> | |
| <article <?php echo $this->get_render_attribute_string('post-list-item'); ?>> | |
| <div <?php echo $this->get_render_attribute_string('article-inner'); ?>> | |
| <div class="ae_data elementor elementor-<?php echo $settings['template']; ?>"> | |
| <?php echo Plugin::instance()->frontend->get_builder_content( $settings['template'],$with_css ); ?> | |
| </div> | |
| </div> | |
| </article> | |
| <?php } | |
| wp_reset_postdata(); ?> | |
| </div> | |
| <?php if($settings['layout_mode'] == 'carousel'){ ?> | |
| <?php if($pagination_type != ''){ ?> | |
| <div class = "ae-swiper-pagination"></div> | |
| <?php } ?> | |
| <?php if($navigation_button == 'yes'){ ?> | |
| <?php if($settings['arrow_horizontal_position'] != 'center'){;?> | |
| <div class="ae-swiper-button-wrapper"> | |
| <?php } ?> | |
| <div class = "ae-swiper-button-prev"><i class="fa fa-angle-left"></i></div> | |
| <div class = "ae-swiper-button-next"><i class="fa fa-angle-right"></i></div> | |
| <?php if($settings['arrow_horizontal_position'] != 'center'){;?> | |
| </div> | |
| <?php } ?> | |
| <?php } ?> | |
| <?php if($scrollbar == 'yes'){ ?> | |
| <div class = "ae-swiper-scrollbar"></div> | |
| <?php } ?> | |
| </div> | |
| </div> | |
| <?php } ?> | |
| <?php if($ias == 'yes' && $settings['ae_post_type'] == 'current_loop'){ | |
| $last_page_text = $settings['ias_last_page_text']; | |
| ?> | |
| <div class="scroller-status"> | |
| <div class="infinite-scroll-request loader-ellips"> | |
| <span class="loader-ellips__dot"></span> | |
| <span class="loader-ellips__dot"></span> | |
| <span class="loader-ellips__dot"></span> | |
| <span class="loader-ellips__dot"></span> | |
| </div> | |
| <p class="infinite-scroll-last"><?php echo $last_page_text; ?></p> | |
| <p class="infinite-scroll-error">No more pages to load</p> | |
| </div> | |
| <?php if($ias_load_with_button == 'yes' && $settings['layout_mode'] != 'carousel') { ?> | |
| <div class="load-more-wrapper"><button class="view-more-button" style="display:none;"> <?php echo $settings['ias_load_more_button_text']; ?> </button ></div> | |
| <?php } ?> | |
| <?php } ?> | |
| <?php if(true){ | |
| $this->add_render_attribute('pagination-wrapper','class','ae-pagination-wrapper'); | |
| ?> | |
| <div <?php echo $this->get_render_attribute_string('pagination-wrapper'); ?>> | |
| <?php | |
| $current = 1; | |
| if(isset($_POST['page_num'])){ | |
| $current = $_POST['page_num']; | |
| } | |
| if(isset($_POST['pid'])){ | |
| $current_post_id = $_POST['pid']; | |
| }else{ | |
| $current_post_id = get_the_ID(); | |
| } | |
| $base_url = get_permalink($current_post_id); | |
| $paginate_args = [ | |
| 'base' => $base_url.'%_%', | |
| 'total' => $post_items->max_num_pages, | |
| 'current' => $current | |
| ]; | |
| if($post_type == 'current_loop'){ | |
| unset($paginate_args['base']); | |
| $current = get_query_var('paged'); | |
| if($current == 0){ | |
| $paginate_args['current'] = 1; | |
| }else{ | |
| $paginate_args['current'] = $current; | |
| } | |
| } | |
| if($settings['show_prev_next'] == 'yes'){ | |
| $paginate_args['prev_next'] = true; | |
| $paginate_args['prev_text'] = $settings['prev_text']; | |
| $paginate_args['next_text'] = $settings['next_text']; | |
| }else{ | |
| $paginate_args['prev_next'] = false; | |
| } | |
| echo $helper->paginate_links($paginate_args); | |
| ?> | |
| </div> | |
| <?php } ?> | |
| <?php if($with_wrapper){ ?> | |
| </div> | |
| <?php } ?> | |
| <?php | |
| } | |
| function infinite_scroll_controls() | |
| { | |
| $this->start_controls_section( | |
| 'infinite_scroll_controls', | |
| [ | |
| 'label' => __('Infinite Scroll', 'ae-pro'), | |
| 'condition' => [ | |
| 'layout_mode!' => 'carousel', | |
| 'show_infinite_scroll' => 'yes', | |
| 'ae_post_type' => 'current_loop' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'ias_last_page_text', | |
| [ | |
| 'label' => __('Last Page Text','ae-pro'), | |
| 'type' => Controls_Manager::TEXT, | |
| 'placeholder' => __('Last Page Text','ae-pro'), | |
| 'default' => __('End of content','ae-pro'), | |
| 'condition' => [ | |
| 'show_infinite_scroll' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'ias_load_with_button', | |
| [ | |
| 'label' => __('Load With Button', 'ae-pro'), | |
| 'type' => Controls_Manager::SWITCHER, | |
| 'default' => '', | |
| 'label_on' => __( 'Yes', 'ae-pro' ), | |
| 'label_off' => __( 'No', 'ae-pro' ), | |
| 'return_value' => 'yes', | |
| 'condition' => [ | |
| 'show_infinite_scroll' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'ias_load_more_button_text', | |
| [ | |
| 'label' => __('Button Text','ae-pro'), | |
| 'type' => Controls_Manager::TEXT, | |
| 'placeholder' => __('Button Text','ae-pro'), | |
| 'default' => __('View More','ae-pro'), | |
| 'condition' => [ | |
| 'ias_load_with_button' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'ias_load_offest_page', | |
| [ | |
| 'label' => __('Offset Page','ae-pro'), | |
| 'type' => Controls_Manager::TEXT, | |
| 'placeholder' => __('Offset Page','ae-pro'), | |
| 'default' => __('2','ae-pro'), | |
| 'condition' => [ | |
| 'ias_load_with_button' => 'yes', | |
| 'show_infinite_scroll' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->end_controls_section(); | |
| } | |
| function pagination_controls(){ | |
| $this->start_controls_section( | |
| 'pagination_contols', | |
| [ | |
| 'label' => __( 'Pagination', 'ae-pro' ), | |
| 'condition' => [ | |
| 'layout_mode!' => 'carousel', | |
| 'show_pagination' => 'yes', | |
| 'show_infinite_scroll!' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'show_prev_next', | |
| [ | |
| 'label' => __('Show Prev/Next','ae-pro'), | |
| 'type' => Controls_Manager::SWITCHER, | |
| 'default' => 'yes', | |
| 'label_on' => __( 'Show', 'ae-pro' ), | |
| 'label_off' => __( 'Hide', 'ae-pro' ), | |
| 'return_value' => 'yes', | |
| 'condition' => [ | |
| 'show_pagination' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'prev_text', | |
| [ | |
| 'label' => __('Previous Text','ae-pro'), | |
| 'type' => Controls_Manager::TEXT, | |
| 'default' => __('« Previous','ae-pro'), | |
| 'condition' => [ | |
| 'show_pagination' => 'yes', | |
| 'show_prev_next' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'next_text', | |
| [ | |
| 'label' => __('Previous Text','ae-pro'), | |
| 'type' => Controls_Manager::TEXT, | |
| 'default' => __('Next »','ae-pro'), | |
| 'condition' => [ | |
| 'show_pagination' => 'yes', | |
| 'show_prev_next' => 'yes' | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'pagination_align', | |
| [ | |
| 'label' => __( 'Alignment', 'ae-pro' ), | |
| 'type' => Controls_Manager::CHOOSE, | |
| 'options' => [ | |
| 'left' => [ | |
| 'title' => __( 'Left', 'ae-pro' ), | |
| 'icon' => 'fa fa-align-left', | |
| ], | |
| 'center' => [ | |
| 'title' => __( 'Center', 'ae-pro' ), | |
| 'icon' => 'fa fa-align-center', | |
| ], | |
| 'right' => [ | |
| 'title' => __( 'Right', 'ae-pro' ), | |
| 'icon' => 'fa fa-align-right', | |
| ], | |
| ], | |
| 'default' => '', | |
| 'condition' => [ | |
| 'show_pagination' => 'yes' | |
| ], | |
| 'selectors' => [ | |
| '{{WRAPPER}} .ae-pagination-wrapper' => 'text-align: {{VALUE}};', | |
| ], | |
| ] | |
| ); | |
| $this->end_controls_section(); | |
| } | |
| function carousel_controls() | |
| { | |
| $this->start_controls_section( | |
| 'carousel_control', | |
| [ | |
| 'label' => __( 'Carousel', 'ae-pro' ), | |
| 'condition' => [ | |
| 'layout_mode' => 'carousel' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'image_carousel', | |
| [ | |
| 'label' => __('Carousel', 'ae-pro'), | |
| 'type' => Controls_Manager::HEADING, | |
| 'separator' => 'before' | |
| ] | |
| ); | |
| // Todo:: different effects management | |
| $this->add_control( | |
| 'effect', | |
| [ | |
| 'label' => __('Effects', 'ae-pro'), | |
| 'type' => Controls_Manager::SELECT, | |
| 'options' => [ | |
| 'fade' => __('Fade', 'ae-pro'), | |
| 'slide' => __('Slide', 'ae-pro'), | |
| //'cube' => __('Cube', 'ae-pro'), | |
| 'coverflow' => __('Coverflow', 'ae-pro'), | |
| 'flip' => __('Flip', 'ae-pro'), | |
| ], | |
| 'default'=>'slide', | |
| 'condition' => [ | |
| 'layout_mode' => 'carousel' | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'slide_per_view', | |
| [ | |
| 'label' => __( 'Slides Per View', 'ae-pro' ), | |
| 'type' => Controls_Manager::TEXT, | |
| /* 'options'=> [ | |
| 1 => __('1','ae-pro'), | |
| 2 => __('2','ae-pro'), | |
| 3 => __('3','ae-pro'), | |
| 4 => __('4','ae-pro'), | |
| ], */ | |
| 'default' => 3, | |
| 'conditions' => [ | |
| 'relation' => 'or', | |
| 'terms' => [ | |
| [ | |
| 'name' => 'effect', | |
| 'operator' => '==', | |
| 'value' => 'slide', | |
| ], [ | |
| 'name' => 'effect', | |
| 'operator' => '==', | |
| 'value' => 'coverflow', | |
| ], | |
| ], | |
| ], | |
| ] | |
| ); | |
| $this->add_control( | |
| 'carousel_settings_heading', | |
| [ | |
| 'label' => __('Setting', 'ae-pro'), | |
| 'type' => Controls_Manager::HEADING, | |
| 'separator' => 'before' | |
| ] | |
| ); | |
| /*$this->add_control( | |
| 'direction', | |
| [ | |
| 'label' => __('Direction', 'ae-pro'), | |
| 'type' => Controls_Manager::SELECT, | |
| 'options' => [ | |
| 'horizontal' => __('Horizontal', 'ae-pro'), | |
| 'vertical' => __('Vertical', 'ae-pro') | |
| ], | |
| 'default'=>'horizontal', | |
| 'condition' => [ | |
| 'layout_mode' => 'carousel' | |
| ] | |
| ] | |
| );*/ | |
| $this->add_control( | |
| 'speed', | |
| [ | |
| 'label' => __('Speed', 'ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'default' => [ | |
| 'size' => 5000, | |
| ], | |
| 'description' => __('Duration of transition between slides (in ms)', 'ae-pro'), | |
| 'range' => [ | |
| 'px' => [ | |
| 'min' => 1000, | |
| 'max' => 10000, | |
| 'step' => 1000 | |
| ] | |
| ], | |
| 'condition' => [ | |
| 'layout_mode' => 'carousel' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'autoplay', | |
| [ | |
| 'label' => __('Autoplay', 'ae-pro'), | |
| 'type' => Controls_Manager::SWITCHER, | |
| 'default' => '', | |
| 'label_on' => __('On', 'ae-pro'), | |
| 'label_off' => __('Off', 'ae-pro'), | |
| 'return_value' => 'yes', | |
| 'condition' => [ | |
| 'layout_mode' => 'carousel' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'duration', | |
| [ | |
| 'label' => __('Duration', 'ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'default' => [ | |
| 'size' => 900, | |
| ], | |
| 'description' => __('Delay between transitions (in ms)', 'ae-pro'), | |
| 'range' => [ | |
| 'px' =>[ | |
| 'min' => 300, | |
| 'max' => 3000, | |
| 'step' => 300, | |
| ] | |
| ], | |
| 'condition' => [ | |
| 'autoplay' => 'yes', | |
| ] | |
| ] | |
| ); | |
| $this->add_responsive_control( | |
| 'space', | |
| [ | |
| 'label' => __('Space Between Slides', 'ae-pro'), | |
| 'type' => Controls_Manager::SLIDER, | |
| 'default' =>[ | |
| 'size' => 15, | |
| ], | |
| 'range' => [ | |
| 'px'=>[ | |
| 'min'=> 0, | |
| 'max'=> 50, | |
| 'step'=> 5, | |
| ] | |
| ], | |
| 'condition' => [ | |
| 'layout_mode' => 'carousel' | |
| ] | |
| ] | |
| ); | |
| $this->add_control( | |
| 'loop', | |
| [ | |
| 'label' => __('Loop', 'ae-pro'), | |
| 'type' => Controls_Manager::SWITCHER, | |
| 'default' => 'yes', | |
| 'label_on' => __('Yes', 'ae-pro'), | |
| 'label_off' => __('No', 'ae-pro'), | |
| 'return_value' => 'yes', | |
| 'condition' => [ | |
| 'layout_mode' => 'carousel' | |
| ] | |
| ] | |
| ); | |
| /*$this->add_control( | |
| 'zoom', | |
| [ | |
| 'label' => __('Zoom', 'ae-pro'), | |
| 'type' => Controls_Manager::SWITCHER, | |
| 'default' => 'yes', | |
| 'label_on' => __('Yes', 'ae-pro'), | |
| 'label_off' => __('No', 'ae-pro'), | |
| 'return_value' => 'yes', | |
| 'condition' => [ | |
| 'layout_mode' => 'carousel' | |
| ] | |
| ] | |
| );*/ | |
| $this->add_control( | |
| 'pagination_heading', | |
| [ | |
| 'label' => __('Pagination', 'ae-pro'), | |
| 'type' => Controls_Manager::HEADING, | |
| 'separator' => 'before' | |
| ] | |
| ); | |
| $this -> add_control( | |
| 'ptype', | |
| [ | |
| 'label' => __(' Pagination Type' , 'ae-pro'), | |
| 'type' => Controls_Manager::SELECT, | |
| 'options' => | |
| [ | |
| '' => __('None', 'ae-pro'), | |
| 'bullets' => __( 'Bullets' , 'ae-pro'), | |
| 'fraction' =>__( 'Fraction' , 'ae-pro'), | |
| 'progress' =>__('Progress' , 'ae-pro'), | |
| ], | |
| 'default'=>'bullets' | |
| ] | |
| ); | |
| $this->add_control( | |
| 'clickable', | |
| [ | |
| 'label' =>__('Clickable' , 'ae-pro'), | |
| 'type' =>Controls_Manager::SWITCHER, | |
| 'default' => 'yes', | |
| 'label_on'=>__('Yes', 'ae-pro'), | |
| 'label_off' =>__('No' , 'ae-pro'), | |
| 'condition'=> [ | |
| 'ptype' => 'bullets' | |
| ], | |
| ] | |
| ); | |
| $this->add_control( | |
| 'navigation_button', | |
| [ | |
| 'label' => __('Previous/Next Button' , 'ae-pro'), | |
| 'type' =>Controls_Manager::SWITCHER, | |
| 'default' => 'yes', | |
| 'label_on' => __('Yes' , 'ae-pro'), | |
| 'label_off' => __('No' , 'ae-pro'), | |
| 'return_value' => 'yes', | |
| ] | |
| ); | |
| $this->add_control( | |
| 'keyboard', | |
| [ | |
| 'label' => __('Keyboard Control' , 'ae-pro'), | |
| 'type' =>Controls_Manager::SWITCHER, | |
| 'default'=> 'yes', | |
| 'label_on'=>__('Yes', 'ae-pro'), | |
| 'label_off' =>__('No' , 'ae-pro'), | |
| 'return_value'=>'yes', | |
| ] | |
| ); | |
| $this->add_control( | |
| 'scrollbar', | |
| [ | |
| 'label' =>__('Scroll bar', 'ae-pro'), | |
| 'type' =>Controls_Manager::SWITCHER, | |
| 'default'=>'yes', | |
| 'label_on' =>__('Yes' , 'ae-pro'), | |
| 'label_off'=>__('No' , 'ae-pro'), | |
| 'return_value' => 'yes', | |
| ] | |
| ); | |
| $this->end_controls_section(); | |
| } | |
| function get_posts($settings){ | |
| $post_items = null; | |
| $helper = new Helper(); | |
| $query_args = array(); | |
| $post_type = $settings['ae_post_type']; | |
| $ae_post_ids = $settings['ae_post_ids']; | |
| if(isset($_POST['pid'])){ | |
| $current_post_id = $_POST['pid']; | |
| }else{ | |
| $current_post_id = get_the_ID(); | |
| } | |
| switch($post_type) | |
| { | |
| case 'current_loop' : if(!Plugin::instance()->editor->is_edit_mode()){ | |
| global $wp_query; | |
| $post_items = new WP_Query( $wp_query->query_vars ); | |
| //echo '<pre>'; print_r($post_items); echo '</pre>'; die(); | |
| }else{ | |
| $render_mode = get_post_meta($current_post_id, 'ae_render_mode', true); | |
| //echo $render_mode; | |
| switch($render_mode){ | |
| case 'author_template': $author_data = $helper->get_preview_author_data(); | |
| $query_args['author'] = $author_data['prev_author_id']; | |
| $query_args['post_type'] = 'any'; | |
| break; | |
| case 'archive_template': $term_data = $helper->get_preview_term_data(); | |
| $query_args['tax_query'] = [ | |
| [ | |
| 'taxonomy' => $term_data['taxonomy'], | |
| 'field' => 'term_id', | |
| 'terms' => $term_data['prev_term_id'] | |
| ] | |
| ]; | |
| $query_args['post_type'] = 'any'; | |
| break; | |
| case 'date_template' : $query_args['post_type'] = 'post'; | |
| break; | |
| default : $query_args['post_type'] = 'post'; | |
| } | |
| } | |
| break; | |
| case 'ae_by_id' : $query_args['post_type'] = 'any'; | |
| $query_args['post__in'] = $ae_post_ids; | |
| if ( empty( $query_args['post__in'] ) ) { | |
| // If no selection - return an empty query | |
| $query_args['post__in'] = [ -1 ]; | |
| } | |
| break; | |
| case 'related' : if(isset($_POST['fetch_mode'])){ | |
| $cpost_id = $_POST['cpid']; | |
| $cpost = get_post($cpost_id); | |
| }else{ | |
| $cpost = $helper->get_demo_post_data(); | |
| $cpost_id = $cpost->ID; | |
| } | |
| $query_args = [ | |
| 'orderby' => $settings['orderby'], | |
| 'order' => $settings['order'], | |
| 'ignore_sticky_posts' => 1, | |
| 'post_status' => 'publish', // Hide drafts/private posts for admins | |
| 'offset' => $settings['offset'], | |
| 'posts_per_page' => $settings['posts_per_page'], | |
| 'post__not_in' => [ $cpost_id], | |
| 'post_type' => 'any' | |
| ]; | |
| if($settings['orderby'] == 'meta_value'){ | |
| $query_args['meta_key'] = $settings['orderby_metakey_name']; | |
| } | |
| if(isset($_POST['page_num'])){ | |
| $query_args['offset'] = ($query_args['posts_per_page'] * ($_POST['page_num']-1)) + $query_args['offset']; | |
| } | |
| $taxonomies = $settings['related_by']; | |
| if($taxonomies) { | |
| foreach ($taxonomies as $taxonomy) { | |
| $terms = get_the_terms($cpost_id, $taxonomy); | |
| if ($terms) { | |
| foreach ($terms as $term) { | |
| $query_args['tax_query'][] = [ | |
| 'taxonomy' => $taxonomy, | |
| 'field' => 'term_id', | |
| 'terms' => $term->term_id, | |
| ]; | |
| } | |
| } | |
| } | |
| $query_args['tax_query']['relation'] = $settings['related_match_with']; | |
| } | |
| break; | |
| case 'relation' : $field = $settings['acf_relation_field']; | |
| if(isset($_POST['fetch_mode'])){ | |
| $cpost_id = $_POST['cpid']; | |
| $cpost = get_post($cpost_id); | |
| }else{ | |
| $cpost = $helper->get_demo_post_data(); | |
| $cpost_id = $cpost->ID; | |
| } | |
| if(is_plugin_active('advanced-custom-fields/acf.php') && is_plugin_active('pods/init.php')){ | |
| if($settings['relationship_type'] == 'pods'){ | |
| $pods = get_post_meta($cpost_id,$field); | |
| foreach($pods as $pod){ | |
| $post_items[] = $pod['ID']; | |
| } | |
| } else{ | |
| $post_items = get_field($field, $cpost_id); | |
| } | |
| }else if(is_plugin_active('pods/init.php')){ | |
| $pods = get_post_meta($cpost_id,$field); | |
| foreach($pods as $pod){ | |
| $post_items[] = $pod['ID']; | |
| } | |
| }else{ | |
| $post_items = get_field($field, $cpost_id); | |
| } | |
| if($post_items){ | |
| $query_args = [ | |
| 'orderby' => $settings['orderby'], | |
| 'order' => $settings['order'], | |
| 'ignore_sticky_posts' => 1, | |
| 'post_status' => 'publish', // Hide drafts/private posts for admins | |
| 'offset' => $settings['offset'], | |
| 'posts_per_page' => $settings['posts_per_page'], | |
| 'post_type' => 'any', | |
| 'post__in' => $post_items, | |
| 'post__not_in' => [ $cpost_id] | |
| ]; | |
| if($settings['orderby'] == 'meta_value'){ | |
| $query_args['meta_key'] = $settings['orderby_metakey_name']; | |
| } | |
| if(isset($_POST['page_num'])){ | |
| $query_args['offset'] = ($query_args['posts_per_page'] * ($_POST['page_num']-1)) + $query_args['offset']; | |
| } | |
| } | |
| break; | |
| default : $query_args = [ | |
| 'orderby' => $settings['orderby'], | |
| 'order' => $settings['order'], | |
| 'ignore_sticky_posts' => 1, | |
| 'post_status' => 'publish', // Hide drafts/private posts for admins | |
| ]; | |
| if($settings['orderby'] == 'meta_value'){ | |
| $query_args['meta_key'] = $settings['orderby_metakey_name']; | |
| } | |
| $query_args['post_type'] = $post_type; | |
| $query_args['offset'] = $settings['offset']; | |
| $query_args['posts_per_page'] = $settings['posts_per_page']; | |
| $query_args['tax_query'] = []; | |
| if(is_singular() && ($settings['current_post']=='yes')){ | |
| $query_args['post__not_in'] = array($current_post_id); | |
| } | |
| $taxonomies = get_object_taxonomies( $post_type, 'objects' ); | |
| foreach ( $taxonomies as $object ) { | |
| if(isset($settings['filter_taxonomy']) && $object->name == $settings['filter_taxonomy'] && isset($_POST['term_id']) && $_POST['term_id'] > 0){ | |
| $query_args['tax_query'][] = [ | |
| 'taxonomy' => $settings['filter_taxonomy'], | |
| 'field' => 'term_id', | |
| 'terms' => $_POST['term_id'], | |
| ]; | |
| }else{ | |
| $setting_key = $object->name . '_ae_ids'; | |
| if ( ! empty( $settings[ $setting_key ] ) ) { | |
| $query_args['tax_query'][] = [ | |
| 'taxonomy' => $object->name, | |
| 'field' => 'term_id', | |
| 'terms' => $settings[ $setting_key ], | |
| ]; | |
| } | |
| } | |
| } | |
| if(isset($_POST['page_num'])){ | |
| $query_args['offset'] = ($query_args['posts_per_page'] * ($_POST['page_num']-1)) + $query_args['offset']; | |
| } | |
| if(is_array($settings['author_ae_ids']) && count($settings['author_ae_ids'])){ | |
| $query_args['author'] = implode(',', $settings['author_ae_ids']); | |
| } | |
| } | |
| if($post_type == 'current_loop' && !Plugin::instance()->editor->is_edit_mode()){ | |
| $query_args = null; | |
| }else{ | |
| if(isset($query_args)){ | |
| $post_items = new WP_Query($query_args); | |
| }else{ | |
| } | |
| } | |
| return [ $post_items, $query_args ]; | |
| } | |
| } | |
| \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Aepro_Post_Blocks() ); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment