Copy <?php
/**
* Premium Blog.
*/
namespace PremiumAddons\Widgets;
// Elementor Classes.
use Elementor\Plugin;
use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Image_Size;
use Elementor\Repeater;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Typography;
use Elementor\Group_Control_Css_Filter;
use Elementor\Group_Control_Box_Shadow;
// PremiumAddons Classes.
use PremiumAddons\Includes\Premium_Template_Tags_Custom as Blog_Helper;
use PremiumAddons\Includes\Helper_Functions;
use PremiumAddons\Includes\Controls\Premium_Background;
use PremiumAddons\Includes\Controls\Premium_Post_Filter;
use PremiumAddons\Includes\Controls\Premium_Tax_Filter;
if (! defined('ABSPATH')) {
exit; // If this file is called directly, abort.
}
/**
* Class Premium_Blog
*/
class Premium_Blog_Custom extends Widget_Base
{
/**
* Retrieve Widget Name.
*
* @since 1.0.0
* @access public
*/
public function get_name()
{
return 'premium-addon-blog';
}
/**
* Retrieve Widget Title.
*
* @since 1.0.0
* @access public
*/
public function get_title()
{
return __('Blog gggggg1', 'premium-addons-for-elementor');
}
/**
* Widget preview refresh button.
*
* @since 1.0.0
* @access public
*/
public function is_reload_preview_required()
{
return true;
}
/**
* Retrieve Widget Dependent CSS.
*
* @since 1.0.0
* @access public
*
* @return array CSS style handles.
*/
public function get_style_depends()
{
return array(
'font-awesome-5-all',
'pa-slick',
'premium-addons',
);
}
/**
* Retrieve Widget Dependent JS.
*
* @since 1.0.0
* @access public
*
* @return array JS script handles.
*/
public function get_script_depends()
{
$is_edit = Helper_Functions::is_edit_mode();
$scripts = array('imagesloaded');
if ($is_edit) {
$scripts = array_merge($scripts, array('isotope-js', 'pa-slick', 'pa-tweenmax', 'pa-draggable'));
} else {
$settings = $this->get_settings_for_display();
if ('masonry' === $settings['premium_blog_layout']) {
$scripts[] = 'isotope-js';
} elseif ('marquee' === $settings['premium_blog_layout']) {
if ('yes' === $settings['marquee_draggable']) {
$scripts[] = 'pa-draggable';
}
$scripts[] = 'pa-tweenmax';
}
if ('yes' === $settings['premium_blog_carousel']) {
$scripts[] = 'pa-slick';
}
}
$scripts[] = 'premium-addons';
return $scripts;
}
/**
* Retrieve Widget Icon.
*
* @since 1.0.0
* @access public
*
* @return string widget icon.
*/
public function get_icon()
{
return 'pa-blog';
}
/**
* Retrieve Widget Keywords.
*
* @since 1.0.0
* @access public
*
* @return string Widget keywords.
*/
public function get_keywords()
{
return array('pa', 'premium', 'premium blog', 'posts', 'grid', 'item', 'loop', 'query', 'portfolio', 'cpt', 'custom');
}
/**
* Retrieve Widget Categories.
*
* @since 1.5.1
* @access public
*
* @return array Widget categories.
*/
public function get_categories()
{
return array('premium-elements');
}
/**
* Retrieve Widget Support URL.
*
* @access public
*
* @return string support URL.
*/
public function get_custom_help_url()
{
return 'https://premiumaddons.com/support/';
}
public function has_widget_inner_wrapper(): bool
{
return ! Helper_Functions::check_elementor_experiment('e_optimized_markup');
}
/**
* Register Blog controls.
*
* @since 1.0.0
* @access protected
*/
protected function register_controls()
{ // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
$this->start_controls_section(
'general_settings_section',
array(
'label' => __('General', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'premium_blog_skin',
array(
'label' => __('Skin', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'options' => array(
'classic' => __('Classic', 'premium-addons-for-elementor'),
'modern' => __('Modern', 'premium-addons-for-elementor'),
'cards' => __('Cards', 'premium-addons-for-elementor'),
'side' => __('On Side', 'premium-addons-for-elementor'),
'banner' => __('Banner', 'premium-addons-for-elementor'),
),
'default' => 'classic',
'label_block' => true,
)
);
$this->add_control(
'banner_skin_notice',
array(
'raw' => __('If content height is larger than image height, then you may need to increase image height from Featured Image tab', 'premium-addons-for-elementor'),
'type' => Controls_Manager::RAW_HTML,
'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
'condition' => array(
'premium_blog_skin' => 'banner',
),
)
);
$this->add_responsive_control(
'content_offset',
array(
'label' => __('Content Offset', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'range' => array(
'px' => array(
'min' => -100,
'max' => 100,
),
),
'condition' => array(
'premium_blog_skin' => 'modern',
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-skin-modern .premium-blog-content-wrapper' => 'top: {{SIZE}}{{UNIT}}',
),
)
);
$this->add_control(
'premium_blog_grid',
array(
'label' => __('Grid', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'frontend_available' => true,
)
);
$this->add_control(
'premium_blog_layout',
array(
'label' => __('Layout', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'options' => array(
'even' => __('Even', 'premium-addons-for-elementor'),
'masonry' => __('Masonry', 'premium-addons-for-elementor'),
'marquee' => __('Marquee', 'premium-addons-for-elementor'),
),
'default' => 'even',
'condition' => array(
'premium_blog_grid' => 'yes',
),
'frontend_available' => true,
)
);
$this->add_responsive_control(
'marquee_post_width',
array(
'label' => __('Post Width', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'render_type' => 'template',
'range' => array(
'px' => array(
'min' => 100,
'max' => 800,
),
),
'label_block' => true,
'condition' => array(
'premium_blog_grid' => 'yes',
'premium_blog_layout' => 'marquee',
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-outer-container' => 'width: {{SIZE}}{{UNIT}}',
),
)
);
$this->add_control(
'force_height',
array(
'label' => __('Equal Height', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'return_value' => 'true',
'condition' => array(
'premium_blog_grid' => 'yes',
'premium_blog_layout!' => 'masonry',
),
'frontend_available' => true,
)
);
$this->add_control(
'force_height_notice',
array(
'raw' => __('Equal Height option uses JS to force all content boxes to take the same height, so you will need to make sure all featured images are the same height. You can set that from Featured Image tab.', 'premium-addons-for-elementor'),
'type' => Controls_Manager::RAW_HTML,
'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
'condition' => array(
'premium_blog_grid' => 'yes',
'premium_blog_layout' => 'even',
'force_height' => 'true',
),
)
);
$this->add_responsive_control(
'premium_blog_columns_number',
array(
'label' => __('Number of Columns', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'options' => array(
'100%' => __('1 Column', 'premium-addons-for-elementor'),
'50%' => __('2 Columns', 'premium-addons-for-elementor'),
'33.33%' => __('3 Columns', 'premium-addons-for-elementor'),
'25%' => __('4 Columns', 'premium-addons-for-elementor'),
'20%' => __('5 Columns', 'premium-addons-for-elementor'),
'16.66%' => __('6 Columns', 'premium-addons-for-elementor'),
),
'default' => '50%',
'tablet_default' => '50%',
'mobile_default' => '100%',
'render_type' => 'template',
'label_block' => true,
'condition' => array(
'premium_blog_grid' => 'yes',
'premium_blog_layout!' => 'marquee',
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-outer-container' => 'width: {{VALUE}}',
),
'frontend_available' => true,
)
);
$this->add_control(
'premium_blog_number_of_posts',
array(
'label' => __('Posts Per Page', 'premium-addons-for-elementor'),
'description' => __('Set the number of posts per page', 'premium-addons-for-elementor'),
'type' => Controls_Manager::NUMBER,
'min' => 1,
'default' => 4,
)
);
$this->end_controls_section();
$this->start_controls_section(
'section_query_options',
array(
'label' => __('Query', 'premium-addons-for-elementor'),
)
);
$post_types = Blog_Helper::get_posts_types();
$post_types['main'] = __('Main Query', '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',
'separator' => 'after',
)
);
foreach ($post_types as $key => $type) {
// Get all the taxanomies associated with the selected post type.
$taxonomy = Blog_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 Taxonomy 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: Taxonomy Label */
'IN' => sprintf(__('Match %s', 'premium-addons-for-elementor'), $tax->label),
/* translators: %s: Taxonomy 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 Taxonomy 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,
),
'separator' => 'after',
)
);
}
}
}
}
$this->add_control(
'author_filter_rule',
array(
'label' => __('Filter By Author Rule', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'default' => 'author__in',
'separator' => 'before',
'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!' => 'main',
),
)
);
$this->add_control(
'premium_blog_users',
array(
'label' => __('Authors', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT2,
'label_block' => true,
'multiple' => true,
'options' => Blog_Helper::get_authors(),
'condition' => array(
'post_type_filter!' => 'main',
),
)
);
$this->add_control(
'posts_filter_rule',
array(
'label' => __('Filter By Post Rule', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'default' => 'post__not_in',
'separator' => 'before',
'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!' => 'main',
),
)
);
$this->add_control(
'premium_blog_posts_exclude',
array(
'label' => __('Posts', 'premium-addons-for-elementor'),
'type' => Premium_Post_Filter::TYPE,
'label_block' => true,
'multiple' => true,
'source' => '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', 'main'),
),
)
);
$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!' => 'main',
),
)
);
$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!' => 'main',
),
)
);
$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!' => 'main',
),
)
);
$this->add_control(
'premium_blog_order_by',
array(
'label' => __('Order By', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'separator' => 'before',
'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'),
'menu_order' => __('Menu Order', 'premium-addons-for-elementor'),
'comment_count' => __('Number of Comments', 'premium-addons-for-elementor'),
'meta_value' => __('Meta Value', 'premium-addons-for-elementor'),
),
'default' => 'date',
'condition' => array(
'post_type_filter!' => 'main',
),
)
);
$this->add_control(
'premium_blog_meta_key',
array(
'label' => __('Meta Value', 'premium-addons-for-elementor'),
'type' => Controls_Manager::TEXT,
'label_block' => true,
'condition' => array(
'post_type_filter!' => 'main',
'premium_blog_order_by' => 'meta_value',
),
)
);
$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!' => 'main',
),
)
);
$this->add_control(
'empty_query_text',
array(
'label' => __('Empty Query Text', 'premium-addons-for-elementor'),
'type' => Controls_Manager::TEXT,
'label_block' => true,
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_general_settings',
array(
'label' => __('Featured Image', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'show_featured_image',
array(
'label' => __('Show Featured Image', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'condition' => array(
'premium_blog_skin!' => 'banner',
),
)
);
$featured_image_conditions = array(
'show_featured_image' => 'yes',
);
$this->add_responsive_control(
'premium_blog_thumb_min_height',
array(
'label' => __('Height', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', 'custom'),
'range' => array(
'px' => array(
'min' => 0,
'max' => 600,
),
'em' => array(
'min' => 1,
'max' => 60,
),
),
'condition' => array_merge($featured_image_conditions),
'selectors' => array(
'{{WRAPPER}} .premium-blog-thumbnail-container img' => 'height: {{SIZE}}{{UNIT}};',
),
)
);
$this->add_group_control(
Group_Control_Image_Size::get_type(),
array(
'name' => 'featured_image',
'default' => 'full',
'condition' => $featured_image_conditions,
)
);
$this->add_control(
'premium_blog_hover_color_effect',
array(
'label' => __('Overlay Effect', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'description' => __('Choose an overlay color effect', 'premium-addons-for-elementor'),
'options' => array(
'none' => __('None', 'premium-addons-for-elementor'),
'framed' => __('Framed', 'premium-addons-for-elementor'),
'diagonal' => __('Diagonal', 'premium-addons-for-elementor'),
'bordered' => __('Bordered', 'premium-addons-for-elementor'),
'squares' => __('Squares', 'premium-addons-for-elementor'),
),
'default' => 'framed',
'label_block' => true,
'condition' => array_merge(
$featured_image_conditions,
array(
'premium_blog_skin' => array('modern', 'cards'),
)
),
)
);
$this->add_control(
'premium_blog_hover_image_effect',
array(
'label' => __('Hover Effect', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'description' => __('Choose a hover effect for the image', 'premium-addons-for-elementor'),
'options' => array(
'none' => __('None', 'premium-addons-for-elementor'),
'zoomin' => __('Zoom In', 'premium-addons-for-elementor'),
'zoomout' => __('Zoom Out', 'premium-addons-for-elementor'),
'scale' => __('Scale', 'premium-addons-for-elementor'),
'gray' => __('Grayscale', 'premium-addons-for-elementor'),
'blur' => __('Blur', 'premium-addons-for-elementor'),
'bright' => __('Bright', 'premium-addons-for-elementor'),
'sepia' => __('Sepia', 'premium-addons-for-elementor'),
'trans' => __('Translate', 'premium-addons-for-elementor'),
),
'default' => 'zoomin',
'label_block' => true,
'condition' => $featured_image_conditions,
)
);
$this->add_responsive_control(
'thumb_width',
array(
'label' => __('Width (%)', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'default' => array(
'size' => '25',
),
'condition' => array_merge(
$featured_image_conditions,
array(
'premium_blog_skin' => 'side',
)
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-thumb-effect-wrapper' => 'flex-basis: {{SIZE}}%',
),
)
);
$this->add_responsive_control(
'premium_blog_thumbnail_fit',
array(
'label' => __('Thumbnail Fit', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'options' => array(
'cover' => __('Cover', 'premium-addons-for-elementor'),
'fill' => __('Fill', 'premium-addons-for-elementor'),
'contain' => __('Contain', 'premium-addons-for-elementor'),
),
'default' => 'cover',
'selectors' => array(
'{{WRAPPER}} .premium-blog-thumbnail-container img' => 'object-fit: {{VALUE}}',
),
'condition' => array_merge($featured_image_conditions),
)
);
$this->add_control(
'shape_divider',
array(
'label' => __('Shape Divider', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'options' => array(
'none' => __('None', 'premium-addons-for-elementor'),
'arrow' => __('Arrow', 'premium-addons-for-elementor'),
'book' => __('Book', 'premium-addons-for-elementor'),
'cloud' => __('Clouds', 'premium-addons-for-elementor'),
'curve' => __('Curve', 'premium-addons-for-elementor'),
'curve-asymmetric' => __('Curve Asymmetric', 'premium-addons-for-elementor'),
'drops' => __('Drop', 'premium-addons-for-elementor'),
'fan' => __('Fan', 'premium-addons-for-elementor'),
'mountain' => __('Mountains', 'premium-addons-for-elementor'),
'pyramids' => __('Pyramids', 'premium-addons-for-elementor'),
'split' => __('Split', 'premium-addons-for-elementor'),
'triangle' => __('Triangle', 'premium-addons-for-elementor'),
'tri_asymmetric' => __('Asymmetric Triangle', 'premium-addons-for-elementor'),
'tilt' => __('Tilt', 'premium-addons-for-elementor'),
'tilt-opacity' => __('Tilt Opacity', 'premium-addons-for-elementor'),
'waves' => __('Wave', 'premium-addons-for-elementor'),
'waves-brush' => __('Waves Brush', 'premium-addons-for-elementor'),
'waves-pattern' => __('Waves Pattern', 'premium-addons-for-elementor'),
'zigzag' => __('Zigzag', 'premium-addons-for-elementor'),
),
'default' => 'none',
'label_block' => true,
'condition' => array(
'show_featured_image' => 'yes',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_content_settings',
array(
'label' => __('Display Options', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'premium_blog_title_tag',
array(
'label' => __('Title HTML Tag', 'premium-addons-for-elementor'),
'description' => __('Select a heading tag for the post title.', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'options' => array(
'h1' => 'H1',
'h2' => 'H2',
'h3' => 'H3',
'h4' => 'H4',
'h5' => 'H5',
'h6' => 'H6',
'div' => 'div',
'span' => 'span',
'p' => 'p',
),
'default' => 'h2',
'label_block' => true,
)
);
$this->add_control(
'premium_blog_author_img_switcher',
array(
'label' => __('Show Author Image', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'condition' => array(
'premium_blog_skin' => 'cards',
),
)
);
$this->add_responsive_control(
'premium_blog_posts_columns_spacing',
array(
'label' => __('Rows Spacing', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', '%', 'em'),
'range' => array(
'px' => array(
'min' => 1,
'max' => 200,
),
),
'default' => array(
'size' => 5,
'unit' => 'px',
),
'render_type' => 'template',
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-outer-container' => 'margin-bottom: {{SIZE}}{{UNIT}}',
),
'condition' => array(
'premium_blog_layout!' => 'marquee',
),
)
);
$this->add_responsive_control(
'premium_blog_posts_spacing',
array(
'label' => __('Columns Spacing', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'default' => array(
'size' => 5,
),
'range' => array(
'px' => array(
'min' => 0,
'max' => 50,
),
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-wrap:not(.premium-blog-marquee) .premium-blog-post-outer-container' => 'padding-inline: calc( {{SIZE}}{{UNIT}}/2 );',
'{{WRAPPER}} .premium-blog-wrap:not(.premium-blog-marquee)' => 'margin-inline: calc( -{{SIZE}}{{UNIT}}/2 );',
'{{WRAPPER}} .premium-marquee-wrapper' => '--pa-marquee-spacing: {{SIZE}}{{UNIT}}',
),
'render_type' => 'template',
'condition' => array(
'premium_blog_grid' => 'yes',
),
)
);
$this->add_responsive_control(
'premium_flip_text_align',
array(
'label' => __('Alignment', 'premium-addons-for-elementor'),
'type' => Controls_Manager::CHOOSE,
'options' => array(
'left' => array(
'title' => __('Start', 'premium-addons-for-elementor'),
'icon' => is_rtl() ? 'eicon-text-align-right' : 'eicon-text-align-left',
),
'center' => array(
'title' => __('Center', 'premium-addons-for-elementor'),
'icon' => 'eicon-text-align-center',
),
'right' => array(
'title' => __('End', 'premium-addons-for-elementor'),
'icon' => is_rtl() ? 'eicon-text-align-left' : 'eicon-text-align-right',
),
'justify' => array(
'title' => __('Justify', 'premium-addons-for-elementor'),
'icon' => 'eicon-text-align-justify',
),
),
'toggle' => false,
'default' => 'left',
'prefix_class' => 'premium-blog-align-',
'selectors_dictionary' => array(
'left' => 'start',
'right' => 'end',
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-content-wrapper' => 'text-align: {{VALUE}};',
'{{WRAPPER}} .post-categories , {{WRAPPER}} .premium-blog-post-tags-container ' => 'justify-content: {{VALUE}};',
),
)
);
$this->add_responsive_control(
'content_vertical_alignment',
array(
'label' => __('Vertical Alignment', 'premium-addons-for-elementor'),
'type' => Controls_Manager::CHOOSE,
'options' => array(
'flex-start' => array(
'title' => __('Top', 'premium-addons-for-elementor'),
'icon' => 'eicon-arrow-up',
),
'center' => array(
'title' => __('Center', 'premium-addons-for-elementor'),
'icon' => 'eicon-text-align-justify',
),
'flex-end' => array(
'title' => __('Bottom', 'premium-addons-for-elementor'),
'icon' => 'eicon-arrow-down',
),
),
'default' => 'flex-end',
'toggle' => false,
'condition' => array(
'premium_blog_skin' => 'banner',
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-content-wrapper' => 'justify-content: {{VALUE}};',
),
)
);
$this->add_control(
'scroll_to_offset',
array(
'label' => __('Scroll After Pagination/Filter', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'description' => __('Enable this option to scroll to top offset of the widget after click pagination or filter tabs.', 'premium-addons-for-elementor'),
'default' => 'yes',
'conditions' => array(
'relation' => 'or',
'terms' => array(
array(
'name' => 'premium_blog_cat_tabs',
'value' => 'yes',
),
array(
'name' => 'premium_blog_paging',
'value' => 'yes',
),
),
),
'frontend_available' => true,
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_posts_options',
array(
'label' => __('Post Options', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'premium_blog_excerpt',
array(
'label' => __('Show Post Content', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
)
);
$this->add_control(
'content_source',
array(
'label' => __('Get Content From', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'options' => array(
'excerpt' => __('Post Excerpt', 'premium-addons-for-elementor'),
'full' => __('Post Full Content', 'premium-addons-for-elementor'),
),
'default' => 'excerpt',
'label_block' => true,
'condition' => array(
'premium_blog_excerpt' => 'yes',
),
)
);
$this->add_control(
'premium_blog_excerpt_length',
array(
'label' => __('Excerpt Length', 'premium-addons-for-elementor'),
'type' => Controls_Manager::NUMBER,
'default' => 22,
'condition' => array(
'premium_blog_excerpt' => 'yes',
'content_source' => 'excerpt',
),
)
);
$this->add_control(
'excerpt_length_apply',
array(
'label' => __('Apply On Posts With Excerpt Set', 'premium-addons-for-elementor'),
'description' => __('Enable this option if you want the excerpt length to be also applied on posts with the Excerpt field set.', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'condition' => array(
'premium_blog_excerpt' => 'yes',
'content_source' => 'excerpt',
),
)
);
$this->add_control(
'premium_blog_excerpt_type',
array(
'label' => __('Excerpt Type', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'options' => array(
'dots' => __('Dots', 'premium-addons-for-elementor'),
'link' => __('Read More', 'premium-addons-for-elementor'),
),
'default' => 'dots',
'label_block' => true,
'condition' => array(
'premium_blog_excerpt' => 'yes',
),
)
);
$this->add_control(
'read_more_full_width',
array(
'label' => __('Full Width', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'prefix_class' => 'premium-blog-cta-full-',
'condition' => array(
'premium_blog_excerpt' => 'yes',
'premium_blog_excerpt_type' => 'link',
),
)
);
$this->add_control(
'premium_blog_excerpt_text',
array(
'label' => __('Read More Text', 'premium-addons-for-elementor'),
'type' => Controls_Manager::TEXT,
'default' => __('Read More »', 'premium-addons-for-elementor'),
'condition' => array(
'premium_blog_excerpt' => 'yes',
'premium_blog_excerpt_type' => 'link',
),
)
);
$this->add_control(
'premium_blog_author_meta',
array(
'label' => __('Author Meta', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
)
);
$this->add_control(
'premium_blog_date_meta',
array(
'label' => __('Date Meta', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
)
);
$this->add_control(
'premium_blog_categories_meta',
array(
'label' => __('Categories Meta', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'description' => __('Display or hide categories meta', 'premium-addons-for-elementor'),
'default' => 'yes',
)
);
$this->add_control(
'premium_blog_comments_meta',
array(
'label' => __('Comments Meta', 'premium-addons-for-elementor'),
'description' => __('Display or hide comments meta', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
)
);
$this->add_control(
'premium_blog_tags_meta',
array(
'label' => __('Tags Meta', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'description' => __('Display or hide post tags', 'premium-addons-for-elementor'),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_advanced_settings',
array(
'label' => __('Advanced Settings', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'premium_blog_infinite_scroll',
array(
'label' => __('Load More Posts On Scroll', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'condition' => array(
'premium_blog_carousel!' => 'yes',
'premium_blog_paging!' => 'yes',
'premium_blog_layout!' => 'marquee',
),
'frontend_available' => true,
)
);
$this->add_control(
'premium_blog_cat_tabs',
array(
'label' => __('Filter Tabs', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'condition' => array(
'premium_blog_carousel!' => 'yes',
'premium_blog_layout!' => 'marquee',
),
)
);
$this->add_control(
'premium_blog_article_tag_switcher',
array(
'label' => __('Change Post Html Tag To Article', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
)
);
$this->add_control(
'filter_tabs_type',
array(
'label' => __('Get Tabs From', 'premium-addons-for-elementor'),
'type' => Premium_Tax_Filter::TYPE,
'default' => 'category',
'condition' => array(
'premium_blog_cat_tabs' => 'yes',
'premium_blog_carousel!' => 'yes',
'premium_blog_layout!' => 'marquee',
),
)
);
$this->add_control(
'filter_tabs_notice',
array(
'raw' => __('Please make sure to select the categories/tags you need to show from Query tab.', 'premium-addons-for-elementor'),
'type' => Controls_Manager::RAW_HTML,
'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
'condition' => array(
'premium_blog_cat_tabs' => 'yes',
'premium_blog_carousel!' => 'yes',
'premium_blog_layout!' => 'marquee',
),
)
);
$this->add_control(
'premium_blog_tab_label',
array(
'label' => __('First Tab Label', 'premium-addons-for-elementor'),
'type' => Controls_Manager::TEXT,
'default' => __('All', 'premium-addons-for-elementor'),
'condition' => array(
'premium_blog_cat_tabs' => 'yes',
'premium_blog_carousel!' => 'yes',
'premium_blog_layout!' => 'marquee',
),
)
);
$this->add_responsive_control(
'premium_blog_filter_align',
array(
'label' => __('Alignment', 'premium-addons-for-elementor'),
'type' => Controls_Manager::CHOOSE,
'options' => array(
'flex-start' => array(
'title' => __('Start', 'premium-addons-for-elementor'),
'icon' => is_rtl() ? 'eicon-text-align-right' : 'eicon-text-align-left',
),
'center' => array(
'title' => __('Center', 'premium-addons-for-elementor'),
'icon' => 'eicon-text-align-center',
),
'flex-end' => array(
'title' => __('End', 'premium-addons-for-elementor'),
'icon' => is_rtl() ? 'eicon-text-align-left' : 'eicon-text-align-right',
),
),
'default' => 'center',
'toggle' => false,
'condition' => array(
'premium_blog_cat_tabs' => 'yes',
'premium_blog_carousel!' => 'yes',
'premium_blog_layout!' => 'marquee',
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-filter' => 'justify-content: {{VALUE}};',
),
)
);
$this->add_control(
'filter_flag',
array(
'label' => __('URL Flag', 'premium-addons-for-elementor'),
'type' => Controls_Manager::TEXT,
'description' => __('This is used to activate specific filter tab using links on other pages. For example: your-domain.com/?cat=2', 'premium-addons-for-elementor'),
'default' => 'cat',
'label_block' => true,
'frontend_available' => true,
'condition' => array(
'premium_blog_cat_tabs' => 'yes',
'premium_blog_carousel!' => 'yes',
'premium_blog_layout!' => 'marquee',
),
)
);
$this->add_control(
'premium_blog_new_tab',
array(
'label' => __('Links in New Tab', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'description' => __('Enable links to be opened in a new tab', 'premium-addons-for-elementor'),
'default' => 'yes',
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_carousel_settings',
array(
'label' => __('Carousel', 'premium-addons-for-elementor'),
'condition' => array(
'premium_blog_infinite_scroll!' => 'yes',
'premium_blog_paging!' => 'yes',
'premium_blog_layout!' => 'marquee',
),
)
);
$this->add_control(
'premium_blog_carousel',
array(
'label' => __('Enable Carousel', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'prefix_class' => 'premium-blog__carousel-',
'render_type' => 'template',
'frontend_available' => true,
)
);
$this->add_control(
'overflow_slides',
array(
'label' => __('Overflow Slides', 'premium-addons-for-elementor'),
'render_type' => 'template',
'type' => Controls_Manager::SWITCHER,
'selectors' => array(
'{{WRAPPER}} .slick-list' => 'overflow: visible;',
'body' => 'overflow-x: hidden;',
),
'condition' => array(
'premium_blog_carousel' => 'yes',
),
'frontend_available' => true,
)
);
$this->add_control(
'premium_blog_carousel_fade',
array(
'label' => __('Fade', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'condition' => array(
'premium_blog_carousel' => 'yes',
'premium_blog_columns_number' => '100%',
'overflow_slides!' => 'yes',
),
'frontend_available' => true,
)
);
$this->add_control(
'premium_blog_carousel_play',
array(
'label' => __('Autoplay Slides', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'condition' => array(
'premium_blog_carousel' => 'yes',
),
'frontend_available' => true,
)
);
$this->add_control(
'slides_to_scroll',
array(
'label' => __('Slides To Scroll', 'premium-addons-for-elementor'),
'type' => Controls_Manager::NUMBER,
'condition' => array(
'premium_blog_carousel' => 'yes',
),
'frontend_available' => true,
)
);
$this->add_control(
'premium_blog_carousel_autoplay_speed',
array(
'label' => __('Autoplay Speed', 'premium-addons-for-elementor'),
'description' => __('Autoplay Speed means at which time the next slide should come. Set a value in milliseconds (ms)', 'premium-addons-for-elementor'),
'type' => Controls_Manager::NUMBER,
'default' => 5000,
'condition' => array(
'premium_blog_carousel' => 'yes',
'premium_blog_carousel_play' => 'yes',
),
'frontend_available' => true,
)
);
$this->add_control(
'carousel_speed',
array(
'label' => __('Transition Speed (ms)', 'premium-addons-for-elementor'),
'description' => __('Set the speed of the carousel animation in milliseconds (ms)', 'premium-addons-for-elementor'),
'type' => Controls_Manager::NUMBER,
'default' => 300,
'render_type' => 'template',
'selectors' => array(
'{{WRAPPER}} .premium-blog-wrap .slick-slide' => 'transition: all {{VALUE}}ms !important',
),
'condition' => array(
'premium_blog_carousel' => 'yes',
),
'frontend_available' => true,
)
);
$this->add_control(
'premium_blog_carousel_center',
array(
'label' => __('Center Mode', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'condition' => array(
'premium_blog_carousel' => 'yes',
'overflow_slides!' => 'yes',
),
'frontend_available' => true,
)
);
$this->add_control(
'premium_blog_carousel_spacing',
array(
'label' => __('Slides\' Spacing', 'premium-addons-for-elementor'),
'description' => __('Set a spacing value in pixels (px)', 'premium-addons-for-elementor'),
'type' => Controls_Manager::NUMBER,
'default' => '15',
'condition' => array(
'premium_blog_carousel' => 'yes',
'overflow_slides!' => 'yes',
),
'frontend_available' => true,
)
);
$this->add_control(
'premium_blog_carousel_dots',
array(
'label' => __('Navigation Dots', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'condition' => array(
'premium_blog_carousel' => 'yes',
),
'frontend_available' => true,
)
);
$this->add_control(
'premium_blog_carousel_arrows',
array(
'label' => __('Navigation Arrows', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'condition' => array(
'premium_blog_carousel' => 'yes',
),
'frontend_available' => true,
)
);
$this->add_control(
'arrows_position',
array(
'label' => __('Position', 'premium-addons-for-elementor'),
'type' => Controls_Manager::CHOOSE,
'options' => array(
'above' => array(
'title' => __('Above Slide', 'premium-addons-for-elementor'),
'icon' => 'eicon-v-align-top',
),
'default' => array(
'title' => __('Center', 'premium-addons-for-elementor'),
'icon' => 'eicon-h-align-center',
),
'below' => array(
'title' => __('Below Slides', 'premium-addons-for-elementor'),
'icon' => 'eicon-v-align-bottom',
),
),
'default' => 'default',
'toggle' => false,
'condition' => array(
'premium_blog_carousel' => 'yes',
'premium_blog_carousel_arrows' => 'yes',
),
'frontend_available' => true,
)
);
$this->add_control(
'arrows_alignment',
array(
'label' => __('Alignment', 'premium-addons-for-elementor'),
'type' => Controls_Manager::CHOOSE,
'options' => array(
'start' => array(
'title' => __('Start', 'premium-addons-for-elementor'),
'icon' => 'eicon-h-align-left',
),
'center' => array(
'title' => __('Center', 'premium-addons-for-elementor'),
'icon' => 'eicon-v-align-middle',
),
'end' => array(
'title' => __('End', 'premium-addons-for-elementor'),
'icon' => 'eicon-h-align-right',
),
),
'default' => 'start',
'toggle' => false,
'condition' => array(
'premium_blog_carousel' => 'yes',
'premium_blog_carousel_arrows' => 'yes',
'arrows_position!' => 'default',
),
'selectors' => array(
'{{WRAPPER}} .premium-carousel-arrows-wrapper' => 'justify-content: {{VALUE}}',
),
)
);
$this->add_responsive_control(
'arrows_gap',
array(
'label' => __('Spacing', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%', 'custom'),
'selectors' => array(
'{{WRAPPER}} .premium-carousel-arrows-wrapper' => 'gap: {{SIZE}}{{UNIT}}',
),
'condition' => array(
'premium_blog_carousel' => 'yes',
'premium_blog_carousel_arrows' => 'yes',
'arrows_position!' => 'default',
),
)
);
$this->add_responsive_control(
'arrows_margin',
array(
'label' => __('Margin', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%', 'custom'),
'selectors' => array(
'{{WRAPPER}} .premium-carousel-arrows-wrapper' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
'condition' => array(
'premium_blog_carousel' => 'yes',
'premium_blog_carousel_arrows' => 'yes',
'arrows_position!' => 'default',
),
)
);
$this->add_responsive_control(
'premium_blog_carousel_arrows_pos',
array(
'label' => __('Arrows Position', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em'),
'range' => array(
'px' => array(
'min' => -100,
'max' => 100,
),
'em' => array(
'min' => -10,
'max' => 10,
),
),
'condition' => array(
'premium_blog_carousel' => 'yes',
'premium_blog_carousel_arrows' => 'yes',
'arrows_position' => 'default',
),
'selectors' => array(
'{{WRAPPER}}.premium-blog__carousel-yes a.carousel-arrow.carousel-next' => 'right: {{SIZE}}{{UNIT}};',
'{{WRAPPER}}.premium-blog__carousel-yes a.carousel-arrow.carousel-prev' => 'left: {{SIZE}}{{UNIT}};',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_pagination_section',
array(
'label' => __('Pagination', 'premium-addons-for-elementor'),
'condition' => array(
'premium_blog_carousel!' => 'yes',
'premium_blog_layout!' => 'marquee',
'premium_blog_infinite_scroll!' => 'yes',
),
)
);
$this->add_control(
'premium_blog_paging',
array(
'label' => __('Enable Pagination', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'description' => __('Pagination is the process of dividing the posts into discrete pages', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'max_pages',
array(
'label' => __('Page Limit', 'premium-addons-for-elementor'),
'type' => Controls_Manager::NUMBER,
'default' => 5,
'condition' => array(
'premium_blog_paging' => 'yes',
),
)
);
$this->add_control(
'pagination_strings',
array(
'label' => __('Enable Pagination Next/Prev Strings', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'condition' => array(
'premium_blog_paging' => 'yes',
),
)
);
$this->add_control(
'premium_blog_prev_text',
array(
'label' => __('Previous Page String', 'premium-addons-for-elementor'),
'type' => Controls_Manager::TEXT,
'default' => __('Previous', 'premium-addons-for-elementor'),
'condition' => array(
'premium_blog_paging' => 'yes',
'pagination_strings' => 'yes',
),
)
);
$this->add_control(
'premium_blog_next_text',
array(
'label' => __('Next Page String', 'premium-addons-for-elementor'),
'type' => Controls_Manager::TEXT,
'default' => __('Next', 'premium-addons-for-elementor'),
'condition' => array(
'premium_blog_paging' => 'yes',
'pagination_strings' => 'yes',
),
)
);
$this->add_responsive_control(
'premium_blog_pagination_align',
array(
'label' => __('Alignment', 'premium-addons-for-elementor'),
'type' => Controls_Manager::CHOOSE,
'options' => array(
'left' => array(
'title' => __('Start', 'premium-addons-for-elementor'),
'icon' => is_rtl() ? 'eicon-text-align-right' : 'eicon-text-align-left',
),
'center' => array(
'title' => __('Center', 'premium-addons-for-elementor'),
'icon' => 'eicon-text-align-center',
),
'right' => array(
'title' => __('End', 'premium-addons-for-elementor'),
'icon' => is_rtl() ? 'eicon-text-align-left' : 'eicon-text-align-right',
),
),
'default' => 'right',
'toggle' => false,
'condition' => array(
'premium_blog_paging' => 'yes',
),
'selectors_dictionary' => array(
'left' => 'start',
'right' => 'end',
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container' => 'text-align: {{VALUE}}',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'marquee_section',
array(
'label' => __('Marquee Settings', 'premium-addons-for-elementor'),
'condition' => array(
'premium_blog_layout' => 'marquee',
),
)
);
$this->add_control(
'marquee_direction',
array(
'label' => __('Animation Direction', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SELECT,
'default' => 'normal',
'options' => array(
'normal' => __('Normal', 'premium-addons-for-elementor'),
'reverse' => __('Reverse', 'premium-addons-for-elementor'),
),
'render_type' => 'template',
'frontend_available' => true,
)
);
$this->add_control(
'marquee_speed',
array(
'label' => __('Speed', 'premium-addons-for-elementor'),
'type' => Controls_Manager::NUMBER,
'description' => __('The smaller the value, the faster the animation.', 'premium-addons-for-elementor'),
'default' => 50,
'render_type' => 'template',
'frontend_available' => true,
)
);
$this->add_control(
'marquee_draggable',
array(
'label' => __('Make it Draggable', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'frontend_available' => true,
)
);
$this->add_control(
'marquee_draggable_notice',
array(
'raw' => __('Draggable option works on the frontend only.', 'premium-addons-for-elementor'),
'type' => Controls_Manager::RAW_HTML,
'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
'condition' => array(
'marquee_draggable' => 'yes',
),
)
);
$this->add_control(
'fading_color',
array(
'label' => __('Fading Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-blog-marquee:after' => 'background:linear-gradient(to right, {{VALUE}}, #F291D800 10%, #F291D800 90%, {{VALUE}}) !important',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'section_pa_docs',
array(
'label' => __('Help & Docs', 'premium-addons-for-elementor'),
)
);
$docs = array(
'https://premiumaddons.com/docs/elementor-blog-widget-tutorial/' => __('Getting started »', 'premium-addons-for-elementor'),
// 'https://premiumaddons.com/docs/link-filter-tabs-elementor-blog-widget/' => __( 'How to link filter tabs in Blog widget »', 'premium-addons-for-elementor' ),
);
$doc_index = 1;
foreach ($docs as $url => $title) {
$doc_url = Helper_Functions::get_campaign_link($url, 'blog-widget', 'wp-editor', 'get-support');
$this->add_control(
'doc_' . $doc_index,
array(
'type' => Controls_Manager::RAW_HTML,
'raw' => sprintf('<a href="%s" target="_blank">%s</a>', $doc_url, $title),
'content_classes' => 'editor-pa-doc',
)
);
++$doc_index;
}
Helper_Functions::register_element_feedback_controls($this);
$this->end_controls_section();
Helper_Functions::register_papro_promotion_controls($this, 'blog');
$this->start_controls_section(
'premium_blog_filter_style',
array(
'label' => __('Filter', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => array(
'premium_blog_cat_tabs' => 'yes',
'premium_blog_carousel!' => 'yes',
'premium_blog_layout!' => 'marquee',
),
)
);
$this->add_group_control(
Group_Control_Typography::get_type(),
array(
'name' => 'premium_blog_filter_typo',
'global' => array(
'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
),
'selector' => '{{WRAPPER}} .premium-blog-filters-container li a.category',
)
);
$this->start_controls_tabs('tabs_filter');
$this->start_controls_tab(
'tab_filter_normal',
array(
'label' => __('Normal', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'premium_blog_filter_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-filters-container li a.category' => 'color: {{VALUE}};',
),
)
);
$this->add_control(
'premium_blog_background_color',
array(
'label' => __('Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_PRIMARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-filters-container li a.category' => 'background-color: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'premium_blog_filter_border',
'selector' => '{{WRAPPER}} .premium-blog-filters-container li a.category',
)
);
$this->add_control(
'premium_blog_filter_border_radius',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-filters-container li a.category' => 'border-radius: {{SIZE}}{{UNIT}};',
),
'separator' => 'after',
)
);
$this->end_controls_tab();
$this->start_controls_tab(
'tab_filter_active',
array(
'label' => __('Active', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'premium_blog_filter_active_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_PRIMARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-filters-container li a.active' => 'color: {{VALUE}};',
),
)
);
$this->add_control(
'premium_blog_background_active_color',
array(
'label' => __('Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-filters-container li a.active' => 'background-color: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'filter_active_border',
'selector' => '{{WRAPPER}} .premium-blog-filters-container li a.active',
)
);
$this->add_control(
'filter_active_border_radius',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-filters-container li a.active' => 'border-radius: {{SIZE}}{{UNIT}}',
),
'separator' => 'after',
)
);
$this->end_controls_tab();
$this->end_controls_tabs();
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
array(
'name' => 'premium_blog_filter_shadow',
'selector' => '{{WRAPPER}} .premium-blog-filters-container li a.category',
)
);
$this->add_responsive_control(
'premium_blog_filter_margin',
array(
'label' => __('Margin', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-filters-container li a.category' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->add_responsive_control(
'premium_blog_filter_padding',
array(
'label' => __('Padding', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-filters-container li a.category' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_image_style_section',
array(
'label' => __('Image', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => $featured_image_conditions,
)
);
$this->add_control(
'premium_blog_plus_color',
array(
'label' => __('Plus Sign Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-blog-thumbnail-container:before, {{WRAPPER}} .premium-blog-thumbnail-container:after' => 'background-color: {{VALUE}} !important',
),
'condition' => array(
'premium_blog_skin' => array('modern', 'cards'),
),
)
);
$this->add_control(
'premium_blog_overlay_color',
array(
'label' => __('Overlay Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-blog-framed-effect, {{WRAPPER}} .premium-blog-bordered-effect, {{WRAPPER}} .premium-blog-squares-effect:before, {{WRAPPER}} .premium-blog-squares-effect:after, {{WRAPPER}} .premium-blog-squares-square-container:before, {{WRAPPER}} .premium-blog-squares-square-container:after, {{WRAPPER}} .premium-blog-thumbnail-overlay' => 'background-color: {{VALUE}};',
),
)
);
$this->add_control(
'premium_blog_border_effect_color',
array(
'label' => __('Border Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'condition' => array(
'premium_blog_hover_color_effect' => 'bordered',
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-link:before, {{WRAPPER}} .premium-blog-post-link:after' => 'border-color: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Css_Filter::get_type(),
array(
'name' => 'css_filters',
'selector' => '{{WRAPPER}} .premium-blog-thumbnail-container img',
)
);
$this->add_group_control(
Group_Control_Css_Filter::get_type(),
array(
'name' => 'hover_css_filters',
'label' => __('Hover CSS Filters', 'premium-addons-for-elementor'),
'selector' => '{{WRAPPER}} .premium-blog-post-container:hover .premium-blog-thumbnail-container img',
)
);
$this->add_control(
'divider_heading',
array(
'label' => __('Shape Divider', 'premium-addons-for-elementor'),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
'condition' => array(
'show_featured_image' => 'yes',
'shape_divider!' => 'none',
),
)
);
$this->add_control(
'divider_fill_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-blog-masked .premium-blog-thumbnail-container svg' => 'fill: {{VALUE}}',
),
'condition' => array(
'show_featured_image' => 'yes',
'shape_divider!' => 'none',
),
)
);
$this->add_responsive_control(
'divider_width',
array(
'label' => __('Width', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%'),
'range' => array(
'px' => array(
'min' => 0,
'max' => 1000,
),
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-masked .premium-blog-thumbnail-container svg' => 'width: {{SIZE}}{{UNIT}}',
),
'condition' => array(
'show_featured_image' => 'yes',
'shape_divider!' => 'none',
),
)
);
$this->add_responsive_control(
'divider_height',
array(
'label' => __('Height', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%'),
'range' => array(
'px' => array(
'min' => 0,
'max' => 300,
),
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-masked .premium-blog-thumbnail-container svg' => 'height: {{SIZE}}{{UNIT}}',
),
'condition' => array(
'show_featured_image' => 'yes',
'shape_divider!' => 'none',
),
)
);
$is_rtl = is_rtl() ? 'right' : 'left';
$this->add_responsive_control(
'divider_horizontal',
array(
'label' => __('Horizontal Postion', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%'),
'range' => array(
'px' => array(
'min' => 0,
'max' => 300,
),
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-masked .premium-blog-thumbnail-container svg' => $is_rtl . ': {{SIZE}}{{UNIT}}',
),
'condition' => array(
'show_featured_image' => 'yes',
'shape_divider!' => 'none',
),
)
);
$this->add_responsive_control(
'divider_vertical',
array(
'label' => __('Vertical Postion', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%'),
'range' => array(
'px' => array(
'min' => -50,
'max' => 300,
),
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-masked .premium-blog-thumbnail-container svg' => 'bottom: {{SIZE}}{{UNIT}}',
),
'condition' => array(
'show_featured_image' => 'yes',
'shape_divider!' => 'none',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'author_image_style_section',
array(
'label' => __('Author Image', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => array(
'premium_blog_skin' => 'cards',
'premium_blog_author_img_switcher' => 'yes',
),
)
);
$this->add_control(
'author_img_size',
array(
'label' => __('Author Image Size', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'selectors' => array(
'{{WRAPPER}} .premium-blog-author-thumbnail img' => 'width: {{SIZE}}px',
),
),
);
$this->add_responsive_control(
'author_img_position',
array(
'label' => __('Author Image Position', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'range' => array(
'px' => array(
'min' => -100,
'max' => 100,
),
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-author-thumbnail' => 'top: {{SIZE}}px',
),
),
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'author_image_border',
'selector' => '{{WRAPPER}} .premium-blog-author-thumbnail img',
)
);
$this->add_control(
'author_image_border_radius',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-author-thumbnail img' => 'border-radius: {{SIZE}}{{UNIT}};',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_title_style_section',
array(
'label' => __('Title', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
)
);
$this->add_group_control(
Group_Control_Typography::get_type(),
array(
'name' => 'premium_blog_title_typo',
'global' => array(
'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
),
'selector' => '{{WRAPPER}} .premium-blog-entry-title, {{WRAPPER}} .premium-blog-entry-title a',
)
);
$this->add_control(
'premium_blog_title_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-entry-title a' => 'color: {{VALUE}};',
),
)
);
$this->add_control(
'premium_blog_title_hover_color',
array(
'label' => __('Hover Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_PRIMARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-entry-title:hover a' => 'color: {{VALUE}};',
),
)
);
$this->add_responsive_control(
'title_spacing',
array(
'label' => __('Bottom Spacing', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-entry-title' => 'margin-bottom: {{SIZE}}{{UNIT}}',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'post_categories_style_section',
array(
'label' => __('Categories', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => array(
'premium_blog_skin' => array('side', 'banner'),
'premium_blog_categories_meta' => 'yes',
),
)
);
$this->add_group_control(
Group_Control_Typography::get_type(),
array(
'name' => 'category_typography',
'global' => array(
'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
),
'selector' => '{{WRAPPER}} .premium-blog-cats-container a',
)
);
$repeater = new REPEATER();
$repeater->add_control(
'category_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} {{CURRENT_ITEM}}' => 'color: {{VALUE}}',
),
)
);
$repeater->add_control(
'category_hover_color',
array(
'label' => __('Hover Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} {{CURRENT_ITEM}}:hover' => 'color: {{VALUE}}',
),
)
);
$repeater->add_control(
'category_background_color',
array(
'label' => __('Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} {{CURRENT_ITEM}}' => 'background-color: {{VALUE}}',
),
)
);
$repeater->add_control(
'category_hover_background_color',
array(
'label' => __('Hover Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} {{CURRENT_ITEM}}:hover' => 'background-color: {{VALUE}}',
),
)
);
$repeater->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'category_border',
'selector' => '{{WRAPPER}} {{CURRENT_ITEM}}',
)
);
$repeater->add_control(
'category_border_radius',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} {{CURRENT_ITEM}}' => 'border-radius: {{SIZE}}{{UNIT}};',
),
)
);
$this->add_control(
'categories_repeater',
array(
'label' => __('Categories', 'premium-addons-for-elementor'),
'type' => Controls_Manager::REPEATER,
'fields' => $repeater->get_controls(),
'default' => array(
array(
'category_background_color' => '',
),
),
'render_type' => 'ui',
'condition' => array(
'premium_blog_skin' => array('side', 'banner'),
'premium_blog_categories_meta' => 'yes',
),
)
);
$this->add_responsive_control(
'categories_margin',
array(
'label' => __('Margin', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-cats-container a' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->add_responsive_control(
'categories_padding',
array(
'label' => __('Padding', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-cats-container a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_meta_style_section',
array(
'label' => __('Metadata', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
)
);
$this->add_group_control(
Group_Control_Typography::get_type(),
array(
'name' => 'premium_blog_meta_typo',
'global' => array(
'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
),
'selector' => '{{WRAPPER}} .premium-blog-meta-data',
)
);
$this->add_control(
'premium_blog_meta_color',
array(
'label' => __('Metadata Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-blog-meta-data > *' => 'color: {{VALUE}}',
),
)
);
$this->add_control(
'premium_blog_meta_hover_color',
array(
'label' => __('Links Hover Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-blog-meta-data:not(.premium-blog-post-time):hover > *' => 'color: {{VALUE}}',
),
)
);
$this->add_control(
'separator_color',
array(
'label' => __('Separator Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'separator' => 'before',
'selectors' => array(
'{{WRAPPER}} .premium-blog-meta-separator' => 'color: {{VALUE}}',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_content_style_section',
array(
'label' => __('Content Box', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
)
);
$this->add_group_control(
Group_Control_Typography::get_type(),
array(
'name' => 'premium_blog_content_typo',
'selector' => '{{WRAPPER}} .premium-blog-post-content',
'condition' => array(
'content_source' => 'excerpt',
),
)
);
$this->add_control(
'premium_blog_post_content_color',
array(
'label' => __('Text Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_TEXT,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-content' => 'color: {{VALUE}};',
),
'condition' => array(
'content_source' => 'excerpt',
),
)
);
$this->add_responsive_control(
'excerpt_text_margin',
array(
'label' => __('Text Margin', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-content' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
'condition' => array(
'content_source' => 'excerpt',
),
)
);
$this->add_control(
'premium_blog_content_background_color',
array(
'label' => __('Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'separator' => 'before',
'selectors' => array(
'{{WRAPPER}} .premium-blog-content-wrapper' => 'background-color: {{VALUE}};',
),
'condition' => array(
'premium_blog_skin!' => 'banner',
),
)
);
$this->add_group_control(
Premium_Background::get_type(),
array(
'name' => 'premium_blog_content_background_color',
'types' => array('classic', 'gradient'),
'selector' => '{{WRAPPER}} .premium-blog-content-wrapper',
'condition' => array(
'premium_blog_skin' => 'banner',
),
)
);
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
array(
'name' => 'premium_blog_box_shadow',
'selector' => '{{WRAPPER}} .premium-blog-content-wrapper',
)
);
$this->add_responsive_control(
'prmeium_blog_content_margin',
array(
'label' => __('Margin', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-content-wrapper' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->add_responsive_control(
'prmeium_blog_content_padding',
array(
'label' => __('Padding', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-content-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_read_more_style',
array(
'label' => __('Button', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => array(
'premium_blog_excerpt' => 'yes',
'premium_blog_excerpt_type' => 'link',
),
)
);
$this->add_group_control(
Group_Control_Typography::get_type(),
array(
'name' => 'premium_blog_read_more_typo',
'selector' => '{{WRAPPER}} .premium-blog-excerpt-link',
)
);
$this->add_responsive_control(
'read_more_spacing',
array(
'label' => __('Spacing', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'selectors' => array(
'{{WRAPPER}} .premium-blog-excerpt-link' => 'margin-top: {{SIZE}}px',
),
)
);
$this->start_controls_tabs('read_more_style_tabs');
$this->start_controls_tab(
'read_more_tab_normal',
array(
'label' => __('Normal', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'premium_blog_read_more_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-blog-excerpt-link' => 'color: {{VALUE}};',
),
)
);
$this->add_control(
'read_more_background_color',
array(
'label' => __('Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-blog-excerpt-link' => 'background-color: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'read_more_border',
'selector' => '{{WRAPPER}} .premium-blog-excerpt-link',
)
);
$this->add_control(
'read_more_border_radius',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-excerpt-link' => 'border-radius: {{SIZE}}{{UNIT}};',
),
)
);
$this->end_controls_tab();
$this->start_controls_tab(
'read_more_tab_hover',
array(
'label' => __('Hover', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'premium_blog_read_more_hover_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-blog-excerpt-link:hover' => 'color: {{VALUE}};',
),
)
);
$this->add_control(
'read_more_hover_background_color',
array(
'label' => __('Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-blog-excerpt-link:hover' => 'background-color: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'read_more_hover_border',
'selector' => '{{WRAPPER}} .premium-blog-excerpt-link:hover',
)
);
$this->add_control(
'read_more_hover_border_radius',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-excerpt-link:hover' => 'border-radius: {{SIZE}}{{UNIT}};',
),
)
);
$this->end_controls_tab();
$this->end_controls_tabs();
$this->add_responsive_control(
'read_more_padding',
array(
'label' => __('Padding', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%'),
'separator' => 'before',
'selectors' => array(
'{{WRAPPER}} .premium-blog-excerpt-link' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_tags_style_section',
array(
'label' => __('Tags', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => array(
'premium_blog_tags_meta' => 'yes',
),
)
);
$this->add_group_control(
Group_Control_Typography::get_type(),
array(
'name' => 'premium_blog_tags_typo',
'global' => array(
'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
),
'selector' => '{{WRAPPER}} .premium-blog-post-tags-container',
)
);
$this->add_control(
'premium_blog_tags_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-tags-container' => 'color: {{VALUE}}',
),
)
);
$this->add_control(
'premium_blog_tags_hoer_color',
array(
'label' => __('Hover Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-tags-container a:hover' => 'color: {{VALUE}}',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_box_style_section',
array(
'label' => __('Box', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
)
);
$this->add_control(
'premium_blog_box_background_color',
array(
'label' => __('Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'default' => '#f5f5f5',
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-container' => 'background-color: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'box_border',
'selector' => '{{WRAPPER}} .premium-blog-post-container',
)
);
$this->add_control(
'box_border_radius',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-container' => 'border-radius: {{SIZE}}{{UNIT}};',
),
'condition' => array(
'box_adv_radius!' => 'yes',
),
)
);
$this->add_control(
'box_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') . '<a href="https://9elements.github.io/fancy-border-radius/" target="_blank">here</a>' . __('. See ', 'premium-addons-for-elementor') . '<a href="https://www.youtube.com/watch?v=S0BJazLHV-M" target="_blank">tutorial</a>',
)
);
$this->add_control(
'box_adv_radius_value',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::TEXT,
'dynamic' => array('active' => true),
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-container' => 'border-radius: {{VALUE}};',
),
'condition' => array(
'box_adv_radius' => 'yes',
),
)
);
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
array(
'name' => 'outer_box_shadow',
'selector' => '{{WRAPPER}} .premium-blog-post-container',
)
);
$this->add_responsive_control(
'prmeium_blog_box_padding',
array(
'label' => __('Spacing', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-outer-container' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->add_responsive_control(
'prmeium_blog_inner_box_padding',
array(
'label' => __('Padding', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-post-container' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_blog_pagination_Style',
array(
'label' => __('Pagination', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => array(
'premium_blog_paging' => 'yes',
),
)
);
$this->add_group_control(
Group_Control_Typography::get_type(),
array(
'name' => 'premium_blog_pagination_typo',
'selector' => '{{WRAPPER}} .premium-blog-pagination-container > .page-numbers',
)
);
$this->start_controls_tabs('premium_blog_pagination_colors');
$this->start_controls_tab(
'premium_blog_pagination_nomral',
array(
'label' => __('Normal', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'prmeium_blog_pagination_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container .page-numbers' => 'color: {{VALUE}};',
),
)
);
$this->add_control(
'prmeium_blog_pagination_back_color',
array(
'label' => __('Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_PRIMARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container .page-numbers' => 'background-color: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'navigation_border',
'separator' => 'before',
'selector' => '{{WRAPPER}} .premium-blog-pagination-container .page-numbers',
)
);
$this->add_control(
'navigation_border_radius',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', '%', 'em'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container .page-numbers' => 'border-radius: {{SIZE}}{{UNIT}};',
),
'condition' => array(
'navigation_adv_radius!' => 'yes',
),
)
);
$this->add_control(
'navigation_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') . '<a href="https://9elements.github.io/fancy-border-radius/" target="_blank">here</a>' . __('. See ', 'premium-addons-for-elementor') . '<a href="https://www.youtube.com/watch?v=S0BJazLHV-M" target="_blank">tutorial</a>',
)
);
$this->add_control(
'navigation_adv_radius_value',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::TEXT,
'dynamic' => array('active' => true),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container .page-numbers' => 'border-radius: {{VALUE}};',
),
'condition' => array(
'navigation_adv_radius' => 'yes',
),
)
);
$this->end_controls_tab();
$this->start_controls_tab(
'premium_blog_pagination_hover',
array(
'label' => __('Hover', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'prmeium_blog_pagination_hover_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_PRIMARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container .page-numbers:hover' => 'color: {{VALUE}};',
),
)
);
$this->add_control(
'prmeium_blog_pagination_back_hover_color',
array(
'label' => __('Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container .page-numbers:hover' => 'background-color: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'hover_navigation_border',
'separator' => 'before',
'selector' => '{{WRAPPER}} .premium-blog-pagination-container .page-numbers:hover',
)
);
$this->add_control(
'hover_navigation_border_radius',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', '%', 'em'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container .page-numbers:hover' => 'border-radius: {{SIZE}}{{UNIT}};',
),
'condition' => array(
'hover_navigation_adv_radius!' => 'yes',
),
)
);
$this->add_control(
'hover_navigation_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') . '<a href="https://9elements.github.io/fancy-border-radius/" target="_blank">here</a>' . __('. See ', 'premium-addons-for-elementor') . '<a href="https://www.youtube.com/watch?v=S0BJazLHV-M" target="_blank">tutorial</a>',
)
);
$this->add_control(
'hover_navigation_adv_radius_value',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::TEXT,
'dynamic' => array('active' => true),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container .page-numbers:hover' => 'border-radius: {{VALUE}};',
),
'condition' => array(
'hover_navigation_adv_radius' => 'yes',
),
)
);
$this->end_controls_tab();
$this->start_controls_tab(
'premium_blog_pagination_active',
array(
'label' => __('Active', 'premium-addons-for-elementor'),
)
);
$this->add_control(
'prmeium_blog_pagination_active_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_PRIMARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container span.current' => 'color: {{VALUE}};',
),
)
);
$this->add_control(
'prmeium_blog_pagination_back_active_color',
array(
'label' => __('Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container span.current' => 'background-color: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'active_navigation_border',
'separator' => 'before',
'selector' => '{{WRAPPER}} .premium-blog-pagination-container span.current',
)
);
$this->add_control(
'active_navigation_border_radius',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', '%', 'em'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container span.current' => 'border-radius: {{SIZE}}{{UNIT}};',
),
'condition' => array(
'active_navigation_adv_radius!' => 'yes',
),
)
);
$this->add_control(
'active_navigation_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') . '<a href="https://9elements.github.io/fancy-border-radius/" target="_blank">here</a>' . __('. See ', 'premium-addons-for-elementor') . '<a href="https://www.youtube.com/watch?v=S0BJazLHV-M" target="_blank">tutorial</a>',
)
);
$this->add_control(
'active_navigation_adv_radius_value',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::TEXT,
'dynamic' => array('active' => true),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container span.current' => 'border-radius: {{VALUE}};',
),
'condition' => array(
'active_navigation_adv_radius' => 'yes',
),
)
);
$this->end_controls_tab();
$this->end_controls_tabs();
$this->add_responsive_control(
'prmeium_blog_pagination_margin',
array(
'label' => __('Margin', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%'),
'separator' => 'before',
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container .page-numbers' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->add_responsive_control(
'prmeium_blog_pagination_padding',
array(
'label' => __('Padding', 'premium-addons-for-elementor'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array('px', 'em', '%'),
'selectors' => array(
'{{WRAPPER}} .premium-blog-pagination-container .page-numbers' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->add_control(
'pagination_overlay_color',
array(
'label' => __('Overlay Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'separator' => 'before',
'selectors' => array(
'{{WRAPPER}} .premium-loading-feed' => 'background-color: {{VALUE}}',
),
)
);
$this->add_control(
'spinner_color',
array(
'label' => __('Spinner Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-loader' => 'border-color: {{VALUE}}',
),
)
);
$this->add_control(
'spinner_fill_color',
array(
'label' => __('Fill Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-loader' => 'border-top-color: {{VALUE}}',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'carousel_dots_style',
array(
'label' => __('Carousel Dots', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => array(
'premium_blog_carousel' => 'yes',
'premium_blog_carousel_dots' => 'yes',
'premium_blog_layout!' => 'marquee',
),
)
);
$this->add_control(
'carousel_dot_navigation_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}} ul.slick-dots li' => 'color: {{VALUE}}',
),
)
);
$this->add_control(
'carousel_dot_navigation_active_color',
array(
'label' => __('Active Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_PRIMARY,
),
'selectors' => array(
'{{WRAPPER}} ul.slick-dots li.slick-active' => 'color: {{VALUE}}',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'carousel_arrows_style',
array(
'label' => __('Carousel Arrows', 'premium-addons-for-elementor'),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => array(
'premium_blog_carousel' => 'yes',
'premium_blog_carousel_arrows' => 'yes',
'premium_blog_layout!' => 'marquee',
),
)
);
$this->add_control(
'arrow_color',
array(
'label' => __('Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_PRIMARY,
),
'selectors' => array(
'{{WRAPPER}}.premium-blog__carousel-yes .slick-arrow' => 'color: {{VALUE}};',
),
)
);
$this->add_control(
'disabled_arrow_color',
array(
'label' => __('Disabled Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}}.premium-blog__carousel-yes .slick-arrow.slick-disabled' => 'color: {{VALUE}};',
'{{WRAPPER}}.premium-blog__carousel-yes .slick-arrow.slick-disabled svg' => 'fill: {{VALUE}};',
),
'condition' => array(
'overflow_slides' => 'yes',
),
)
);
$this->add_responsive_control(
'premium_blog_carousel_arrow_size',
array(
'label' => __('Size', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', '%', 'em'),
'selectors' => array(
'{{WRAPPER}}.premium-blog__carousel-yes .slick-arrow i' => 'font-size: {{SIZE}}{{UNIT}};',
),
)
);
$this->add_control(
'premium_blog_carousel_arrow_background',
array(
'label' => __('Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}}.premium-blog__carousel-yes .slick-arrow' => 'background-color: {{VALUE}};',
),
)
);
$this->add_control(
'disabled_arrow_background',
array(
'label' => __('Disabled Background Color', 'premium-addons-for-elementor'),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}}.premium-blog__carousel-yes .slick-arrow.slick-disabled' => 'background-color: {{VALUE}};',
),
'condition' => array(
'overflow_slides' => 'yes',
),
)
);
$this->add_control(
'premium_blog_carousel_border_radius',
array(
'label' => __('Border Radius', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', '%', 'em'),
'selectors' => array(
'{{WRAPPER}}.premium-blog__carousel-yes .slick-arrow' => 'border-radius: {{SIZE}}{{UNIT}};',
),
)
);
$this->add_control(
'premium_blog_carousel_arrow_padding',
array(
'label' => __('Padding', 'premium-addons-for-elementor'),
'type' => Controls_Manager::SLIDER,
'size_units' => array('px', '%', 'em'),
'selectors' => array(
'{{WRAPPER}}.premium-blog__carousel-yes .slick-arrow' => 'padding: {{SIZE}}{{UNIT}};',
),
)
);
$this->end_controls_section();
}
/**
* Get Filter Array.
*
* Returns an array of filters
*
* @since 3.20.8
* @access protected
*
* @param string $filter filter rule.
*
* @return array
*/
public function get_filter_array($filter)
{
$settings = $this->get_settings();
$current_language = apply_filters('wpml_current_language', '-');
$post_type = $settings['post_type_filter'];
if ('tag' === $filter) {
$filter = 'post_tag';
}
$filter_rule = isset($settings[$filter . '_' . $post_type . '_filter_rule']) ? $settings[$filter . '_' . $post_type . '_filter_rule'] : '';
// Fix: Make sure there is a value set for the current tax control.
if (empty($filter_rule)) {
return;
}
$filters = $settings['tax_' . $filter . '_' . $post_type . '_filter'];
// Get the categories based on filter source.
$taxs = get_terms($filter);
$tabs_array = array();
if (is_wp_error($taxs)) {
return array();
}
if (empty($filters) || '' === $filters) {
$tabs_array = $taxs;
} else {
foreach ($taxs as $key => $value) {
$slug = str_replace('-' . $current_language, '', $value->slug);
$if_empty = empty(array_intersect(array($slug, $value->slug), $filters));
if ('IN' === $filter_rule) {
if (! $if_empty) {
$tabs_array[] = $value;
}
} elseif ($if_empty) {
$tabs_array[] = $value;
}
}
}
return $tabs_array;
}
/**
* Get Filter Tabs Markup
*
* @since 3.11.2
* @access protected
*/
protected function get_filter_tabs_markup($filters)
{
$settings = $this->get_settings();
if (empty($filters)) {
return;
}
?>
<div class="premium-blog-filter">
<ul class="premium-blog-filters-container">
<?php if (! empty($settings['premium_blog_tab_label'])) : ?>
<li>
<a href="javascript:;" class="category active" data-filter="*">
<?php echo esc_html($settings['premium_blog_tab_label']); ?>
</a>
</li>
<?php endif; ?>
<?php
foreach ($filters as $index => $filter) {
$key = 'blog_category_' . $index;
$this->add_render_attribute($key, 'class', 'category');
if (empty($settings['premium_blog_tab_label']) && 0 === $index) {
$this->add_render_attribute($key, 'class', 'active');
}
?>
<li>
<a href="javascript:;" <?php echo wp_kses_post($this->get_render_attribute_string($key)); ?> data-filter="<?php echo esc_attr($filter->slug); ?>">
<?php echo wp_kses_post($filter->name); ?>
</a>
</li>
<?php } ?>
</ul>
</div>
<?php
}
/**
* Render Blog output on the frontend.
*
* Written in PHP and used to generate the final HTML.
*
* @since 0.0.1
* @access protected
*/
protected function render()
{
$settings = $this->get_settings();
$settings['widget_type'] = 'premium-addon-blog';
$settings['widget_id'] = $this->get_id();
$settings['active_cat'] = '';
$blog_helper = Blog_Helper::getInstance();
if ('yes' === $settings['premium_blog_cat_tabs'] && 'yes' !== $settings['premium_blog_carousel'] && 'marquee' !== $settings['premium_blog_layout']) {
$filter_rule = $settings['filter_tabs_type'];
$filters = $this->get_filter_array($filter_rule);
if (empty($settings['premium_blog_tab_label'])) {
$settings['active_cat'] = $filters[0]->slug;
}
}
$blog_helper->set_widget_settings($settings, $settings['active_cat']);
$query = $blog_helper->get_query_posts();
if (! $query->have_posts()) {
$query_notice = $settings['empty_query_text'];
Helper_Functions::render_empty_query_message($query_notice);
return;
}
if ('yes' === $settings['premium_blog_paging']) {
$total_pages = $query->max_num_pages;
if (! empty($settings['max_pages'])) {
$total_pages = min($settings['max_pages'], $total_pages);
}
}
$masked = 'none' !== $settings['shape_divider'] ? 'premium-blog-masked' : '';
$this->add_render_attribute('blog', 'class', array('premium-blog-wrap', $masked));
if ('yes' === $settings['premium_blog_grid']) {
$this->add_render_attribute('blog', 'class', 'premium-blog-' . $settings['premium_blog_layout']);
} else {
$this->add_render_attribute('blog', 'class', 'premium-blog-list');
}
$carousel = 'yes' === $settings['premium_blog_carousel'];
if ($carousel || ('yes' === $settings['premium_blog_grid'] && 'marquee' === $settings['premium_blog_layout'])) {
$this->add_render_attribute('blog', 'class', 'premium-carousel-hidden');
}
if ($carousel) {
$arrows = 'yes' === $settings['premium_blog_carousel_arrows'];
$arrows_custom_pos = $arrows && 'default' !== $settings['arrows_position'];
if ($arrows && $arrows_custom_pos) {
$this->add_render_attribute('blog', 'class', 'pa-has-custom-pos');
}
}
// Add page ID to be used later to get posts by AJAX.
$page_id = '';
if (null !== Plugin::$instance->documents->get_current()) {
$page_id = Plugin::$instance->documents->get_current()->get_main_id();
}
$this->add_render_attribute('blog', 'data-page', $page_id);
if ('yes' === $settings['premium_blog_paging'] && $total_pages > 1) {
$this->add_render_attribute('blog', 'data-pagination', 'true');
}
?>
<?php if ('yes' === $settings['premium_blog_cat_tabs'] && 'yes' !== $settings['premium_blog_carousel'] && 'marquee' !== $settings['premium_blog_layout']) : ?>
<?php $this->get_filter_tabs_markup($filters); ?>
<?php endif; ?>
<?php if ($carousel && $arrows && 'above' === $settings['arrows_position']) { ?>
<div class="premium-carousel-arrows-wrapper"></div>
<?php } ?>
<div <?php echo wp_kses_post($this->get_render_attribute_string('blog')); ?>>
<?php if ('yes' === $settings['premium_blog_grid'] && 'marquee' === $settings['premium_blog_layout']) : ?>
<div class="premium-marquee-wrapper">
<?php endif; ?>
<?php
$id = $this->get_id();
$blog_helper->render_posts();
?>
<?php if ('yes' === $settings['premium_blog_grid'] && 'marquee' === $settings['premium_blog_layout']) : ?>
</div>
<?php endif; ?>
</div>
<?php if ('yes' === $settings['premium_blog_paging'] && 'marquee' !== $settings['premium_blog_layout'] && $total_pages > 1) : ?>
<div class="premium-blog-footer">
<?php $blog_helper->render_pagination(); ?>
</div>
<?php endif; ?>
<?php if ($carousel && $arrows && 'below' === $settings['arrows_position']) { ?>
<div class="premium-carousel-arrows-wrapper"></div>
<?php } ?>
<?php
if (Plugin::instance()->editor->is_edit_mode()) {
if ('yes' === $settings['premium_blog_grid']) {
if ('masonry' === $settings['premium_blog_layout'] && 'yes' !== $settings['premium_blog_carousel']) {
$this->render_editor_script();
}
}
}
}
/**
* Render Editor Masonry Script.
*
* @since 3.12.3
* @access protected
*/
protected function render_editor_script()
{
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('.premium-blog-wrap').each(function() {
var $node_id = '<?php echo esc_attr($this->get_id()); ?>',
scope = $('[data-id="' + $node_id + '"]'),
selector = $(this);
if (selector.closest(scope).length < 1) {
return;
}
var masonryArgs = {
itemSelector: '.premium-blog-post-outer-container',
percentPosition: true,
layoutMode: 'masonry',
};
var $isotopeObj = {};
selector.imagesLoaded(function() {
$isotopeObj = selector.isotope(masonryArgs);
$isotopeObj.imagesLoaded().progress(function() {
$isotopeObj.isotope("layout");
});
selector.find('.premium-blog-post-outer-container').resize(function() {
$isotopeObj.isotope('layout');
});
});
});
});
</script>
<?php
}
}