<?php
/**
* Class: Jet_Elements_Posts
* Name: Posts
* Slug: jet-posts
*/
namespace Elementor;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Repeater;
use Elementor\Scheme_Color;
use Elementor\Scheme_Typography;
use Elementor\Widget_Base;
use Elementor\Utils;
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
class Jet_Elements_Posts extends Jet_Elements_Base {
public function get_name() {
return 'jet-posts';
}
public function get_title() {
return esc_html__( 'Posts', 'jet-elements' );
}
public function get_icon() {
return 'jet-elements-icon-posts';
}
public function get_jet_help_url() {
return 'https://crocoblock.com/knowledge-base/articles/how-to-create-a-posts-grid-using-jetelements-posts-widget/';
}
public function get_categories() {
return array( 'cherry' );
}
public function _shortcode() {
return jet_elements_shortocdes()->get_shortcode( $this->get_name() );
}
public function is_reload_preview_required() {
return true;
}
public function get_script_depends() {
return array( 'jet-slick' );
}
protected function _register_controls() {
$this->start_controls_section(
'section_general',
array(
'label' => esc_html__( 'General', 'jet-elements' ),
)
);
if ( $this->_shortcode() ) {
$attributes = $this->_shortcode()->get_atts();
foreach ( $attributes as $attr => $settings ) {
if ( empty( $settings['type'] ) ) {
continue;
}
if ( ! empty( $settings['responsive'] ) ) {
$this->add_responsive_control( $attr, $settings );
} elseif ( 'icon' === $settings['type'] ) {
$this->_add_advanced_icon_control( $attr, $settings );
} else {
$this->add_control( $attr, $settings );
}
}
}
$this->end_controls_section();
$css_scheme = apply_filters(
'jet-elements/jet-posts/css-scheme',
array(
'wrap' => '.jet-posts',
'column' => '.jet-posts .jet-posts__item',
'inner-box' => '.jet-posts .jet-posts__inner-box',
'inner-content' => '.jet-posts .jet-posts__inner-content',
'thumb' => '.jet-posts .post-thumbnail',
'title' => '.jet-posts .entry-title',
'meta' => '.jet-posts .post-meta',
'meta-item' => '.jet-posts .post-meta__item',
'excerpt' => '.jet-posts .entry-excerpt',
'button_wrap' => '.jet-posts .jet-more-wrap',
'button' => '.jet-posts .jet-more',
'button_icon' => '.jet-posts .jet-more-icon',
'terms' => '.jet-posts .jet-posts__terms',
'terms_link' => '.jet-posts .jet-posts__terms-link',
)
);
$this->start_controls_section(
'section_carousel',
array(
'label' => esc_html__( 'Carousel', 'jet-elements' ),
)
);
$this->add_control(
'carousel_enabled',
array(
'label' => esc_html__( 'Enable Carousel', 'jet-elements' ),
'type' => Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'jet-elements' ),
'label_off' => esc_html__( 'No', 'jet-elements' ),
'return_value' => 'yes',
'default' => '',
)
);
$this->add_responsive_control(
'slides_min_height',
array(
'label' => esc_html__( 'Slides Minimal Height', 'jet-elements' ),
'type' => Controls_Manager::NUMBER,
'default' => '',
'selectors' => array(
'{{WRAPPER}} ' . $css_scheme['inner-box'] => 'min-height: {{VALUE}}px;',
),
)
);
$this->add_control(
'slides_to_scroll',
array(
'label' => esc_html__( 'Slides to Scroll', 'jet-elements' ),
'type' => Controls_Manager::SELECT,
'default' => '1',
'options' => jet_elements_tools()->get_select_range( 4 ),
'condition' => array(
'columns!' => '1',
),
)
);
$this->add_control(
'arrows',
array(
'label' => esc_html__( 'Show Arrows Navigation', 'jet-elements' ),
'type' => Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'jet-elements' ),
'label_off' => esc_html__( 'No', 'jet-elements' ),
'return_value' => 'true',
'default' => 'true',
)
);
/*$this->add_control(
'prev_arrow',
array(
'label' => esc_html__( 'Prev Arrow Icon', 'jet-elements' ),
'type' => Controls_Manager::SELECT,
'default' => 'fa fa-angle-left',
'options' => jet_elements_tools()->get_available_prev_arrows_list(),
'condition' => array(
'arrows' => 'true',
),
)
);*/
$this->_add_advanced_icon_control(
'prev_arrow',
array(
'label' => esc_html__( 'Prev Arrow Icon', 'jet-elements' ),
'type' => Controls_Manager::ICON,
'label_block' => true,
'file' => '',
'default' => 'fa fa-angle-left',
'fa5_default' => array(
'value' => 'fas fa-angle-left',
'library' => 'fa-solid',
),
'condition' => array(
'arrows' => 'true',
),
)
);
/*$this->add_control(
'next_arrow',
array(
'label' => esc_html__( 'Next Arrow Icon', 'jet-elements' ),
'type' => Controls_Manager::SELECT,
'default' => 'fa fa-angle-right',
'options' => jet_elements_tools()->get_available_next_arrows_list(),
'condition' => array(
'arrows' => 'true',
),
)
);*/
$this->_add_advanced_icon_control(
'next_arrow',
array(
'label' => esc_html__( 'Next Arrow Icon', 'jet-elements' ),
'type' => Controls_Manager::ICON,
'label_block' => true,
'file' => '',
'default' => 'fa fa-angle-right',
'fa5_default' => array(
'value' => 'fas fa-angle-right',
'library' => 'fa-solid',
),
'condition' => array(
'arrows' => 'true',
),
)
);
$this->add_control(
'dots',
array(
'label' => esc_html__( 'Show Dots Navigation', 'jet-elements' ),
'type' => Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'jet-elements' ),
'label_off' => esc_html__( 'No', 'jet-elements' ),
'return_value' => 'true',
'default' => '',
)
);
$this->add_control(
'pause_on_hover',
array(
'label' => esc_html__( 'Pause on Hover', 'jet-elements' ),
'type' => Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'jet-elements' ),
'label_off' => esc_html__( 'No', 'jet-elements' ),
'return_value' => 'true',
'default' => '',
)
);
$this->add_control(
'autoplay',
array(
'label' => esc_html__( 'Autoplay', 'jet-elements' ),
'type' => Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'jet-elements' ),
'label_off' => esc_html__( 'No', 'jet-elements' ),
'return_value' => 'true',
'default' => 'true',
)
);
$this->add_control(
'autoplay_speed',
array(
'label' => esc_html__( 'Autoplay Speed', 'jet-elements' ),
'type' => Controls_Manager::NUMBER,
'default' => 5000,
'condition' => array(
'autoplay' => 'true',
),
)
);
$this->add_control(
'infinite',
array(
'label' => esc_html__( 'Infinite Loop', 'jet-elements' ),
'type' => Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'jet-elements' ),
'label_off' => esc_html__( 'No', 'jet-elements' ),
'return_value' => 'true',
'default' => 'true',
)
);
$this->add_control(
'effect',
array(
'label' => esc_html__( 'Effect', 'jet-elements' ),
'type' => Controls_Manager::SELECT,
'default' => 'slide',
'options' => array(
'slide' => esc_html__( 'Slide', 'jet-elements' ),
'fade' => esc_html__( 'Fade', 'jet-elements' ),
),
'condition' => array(
'columns' => '1',
),
)
);
$this->add_control(
'speed',
array(
'label' => esc_html__( 'Animation Speed', 'jet-elements' ),
'type' => Controls_Manager::NUMBER,
'default' => 500,
)
);
$this->end_controls_section();
$this->start_controls_section(
'section_posts_custom_fields',
array(
'label' => esc_html__( 'Custom Fields', 'jet-elements' ),
)
);
$this->add_meta_controls( 'title_related', esc_html__( 'Before/After Title', 'jet-elements' ) );
$this->add_meta_controls( 'content_related', esc_html__( 'Before/After Content', 'jet-elements' ) );
$this->end_controls_section();
$this->_start_controls_section(
'section_column_style',
array(
'label' => esc_html__( 'Column', 'jet-elements' ),
'tab' => Controls_Manager::TAB_STYLE,
'show_label' => false,
)
);
$this->_add_responsive_control(
'column_padding',
array(
'label' => esc_html__( 'Column Padding', 'jet-elements' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array( 'px' ),
'render_type' => 'template',
'selectors' => array(
'{{WRAPPER}} ' . $css_scheme['column'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
'{{WRAPPER}} ' . $css_scheme['wrap'] => 'margin-right: -{{RIGHT}}{{UNIT}}; margin-left: -{{LEFT}}{{UNIT}};',
),
Loading ...