geno/wp-content/plugins/essential-addons-for-elementor-lite/includes/Elements/Countdown.php
2024-02-01 11:54:18 +00:00

1347 lines
53 KiB
PHP

<?php
namespace Essential_Addons_Elementor\Elements;
// If this file is called directly, abort.
if ( !defined( 'ABSPATH' ) ) {
exit;
}
use \Elementor\Controls_Manager;
use \Elementor\Group_Control_Border;
use \Elementor\Group_Control_Box_Shadow;
use \Elementor\Group_Control_Typography;
use \Elementor\Plugin;
use \Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use \Elementor\Widget_Base;
use \Essential_Addons_Elementor\Classes\Helper;
class Countdown extends Widget_Base {
public function get_name() {
return 'eael-countdown';
}
public function get_title() {
return esc_html__( 'Countdown', 'essential-addons-for-elementor-lite' );
}
public function get_icon() {
return 'eaicon-countdown';
}
public function get_categories() {
return ['essential-addons-elementor'];
}
public function get_keywords() {
return [
'countdown',
'ea countdown',
'count down',
'ea count down',
'timer',
'ea timer',
'chronometer',
'stopwatch',
'clock',
'ea',
'essential addons',
];
}
public function get_custom_help_url() {
return 'https://essential-addons.com/elementor/docs/creative-elements/ea-countdown/';
}
protected function register_controls() {
$this->start_controls_section(
'eael_section_countdown_settings_general',
[
'label' => esc_html__( 'Timer Settings', 'essential-addons-for-elementor-lite' ),
]
);
$this->add_control(
'eael_countdown_type',
[
'label' => esc_html__( 'Type', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SELECT,
'options' => [
'due_date' => esc_html__( 'Default', 'essential-addons-for-elementor-lite' ),
'evergreen' => esc_html__( 'Evergreen Timer', 'essential-addons-for-elementor-lite' ),
],
'default' => 'due_date',
]
);
$this->add_control(
'eael_evergreen_counter_hours',
[
'label' => esc_html__( 'Hours', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::NUMBER,
'default' => 11,
'placeholder' => esc_html__( 'Hours', 'essential-addons-for-elementor-lite' ),
'condition' => [
'eael_countdown_type' => 'evergreen',
],
]
);
$this->add_control(
'eael_evergreen_counter_minutes',
[
'label' => esc_html__( 'Minutes', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::NUMBER,
'default' => 59,
'placeholder' => esc_html__( 'Minutes', 'essential-addons-for-elementor-lite' ),
'condition' => [
'eael_countdown_type' => 'evergreen',
],
]
);
$this->add_control(
'eael_evergreen_counter_recurring',
[
'label' => esc_html__( 'Recurring Countdown', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SWITCHER,
'return_value' => 'yes',
'default' => '',
'condition' => [
'eael_countdown_type' => 'evergreen',
],
]
);
$this->add_control(
'eael_evergreen_counter_recurring_restart_after',
[
'label' => esc_html__( 'Restart After (In Hours)', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::NUMBER,
'default' => 0,
'description' => esc_html__( 'Specify how much time it will take to restart the countdown. If you set 0, the countdown will restart immediately.', 'essential-addons-for-elementor-lite' ),
'placeholder' => esc_html__( 'Hours', 'essential-addons-for-elementor-lite' ),
'condition' => [
'eael_countdown_type' => 'evergreen',
'eael_evergreen_counter_recurring' => 'yes',
],
]
);
$this->add_control(
'eael_evergreen_counter_recurring_stop_time',
[
'label' => esc_html__( 'Recurring Countdown End Date', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::DATE_TIME,
'default' => date( "Y-m-d", strtotime( "+ 7 day" ) ),
'description' => esc_html__( 'Set the countdown end time', 'essential-addons-for-elementor-lite' ),
'condition' => [
'eael_countdown_type' => 'evergreen',
'eael_evergreen_counter_recurring' => 'yes',
],
]
);
$this->add_control(
'eael_countdown_due_time',
[
'label' => esc_html__( 'Countdown Due Date', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::DATE_TIME,
'default' => date( "Y-m-d", strtotime( "+ 1 day" ) ),
'description' => esc_html__( 'Set the due date and time', 'essential-addons-for-elementor-lite' ),
'condition' => [
'eael_countdown_type' => 'due_date',
],
]
);
$this->add_responsive_control(
'eael_countdown_label_view',
[
'label' => esc_html__( 'Label Position', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SELECT,
'default' => 'eael-countdown-label-block',
'options' => [
'eael-countdown-label-block' => esc_html__( 'Block', 'essential-addons-for-elementor-lite' ),
'eael-countdown-label-inline' => esc_html__( 'Inline', 'essential-addons-for-elementor-lite' ),
],
]
);
$this->add_responsive_control(
'eael_countdown_label_padding_left',
[
'label' => esc_html__( 'Left spacing for Labels', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SLIDER,
'description' => esc_html__( 'Use when you select inline labels', 'essential-addons-for-elementor-lite' ),
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'selectors' => [
'{{WRAPPER}} .eael-countdown-label' => 'padding-left:{{SIZE}}px;',
],
'condition' => [
'eael_countdown_label_view' => 'eael-countdown-label-inline',
],
]
);
$this->add_responsive_control(
'eael_countdown_alignment',
[
'label' => __( 'Alignment', 'essential-addons-for-elementor-lite' ),
'type' => \Elementor\Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => __( 'Left', 'essential-addons-for-elementor-lite' ),
'icon' => 'eicon-text-align-left',
],
'center' => [
'title' => __( 'Center', 'essential-addons-for-elementor-lite' ),
'icon' => 'eicon-text-align-center',
],
'right' => [
'title' => __( 'Right', 'essential-addons-for-elementor-lite' ),
'icon' => 'eicon-text-align-right',
],
],
'default' => 'center',
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div' => 'text-align: {{VALUE}};',
],
]
);
$this->end_controls_section();
$this->start_controls_section(
'eael_section_countdown_settings_content',
[
'label' => esc_html__( 'Content Settings', 'essential-addons-for-elementor-lite' ),
]
);
$this->add_control(
'eael_section_countdown_layout',
[
'label' => __( 'Layout', 'essential-addons-for-elementor-lite' ),
'type' => \Elementor\Controls_Manager::CHOOSE,
'options' => [
'grid' => [
'title' => __( 'List view', 'essential-addons-for-elementor-lite' ),
'icon' => 'fa fa-th-list',
],
'table-cell' => [
'title' => __( 'Grid View', 'essential-addons-for-elementor-lite' ),
'icon' => 'fa fa-th-large',
],
],
'default' => 'table-cell',
'selectors' => [
'{{WRAPPER}} .eael-countdown-items>li' => 'display: {{VALUE}};',
],
]
);
$this->add_control(
'eael_countdown_days',
[
'label' => esc_html__( 'Display Days', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SWITCHER,
'return_value' => 'yes',
'default' => 'yes',
]
);
$this->add_control(
'eael_countdown_days_label',
[
'label' => esc_html__( 'Custom Label for Days', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
],
'default' => esc_html__( 'Days', 'essential-addons-for-elementor-lite' ),
'description' => esc_html__( 'Leave blank to hide', 'essential-addons-for-elementor-lite' ),
'condition' => [
'eael_countdown_days' => 'yes',
],
'ai' => [
'active' => false,
],
]
);
$this->add_control(
'eael_countdown_hours',
[
'label' => esc_html__( 'Display Hours', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SWITCHER,
'return_value' => 'yes',
'default' => 'yes',
]
);
$this->add_control(
'eael_countdown_hours_label',
[
'label' => esc_html__( 'Custom Label for Hours', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
],
'default' => esc_html__( 'Hours', 'essential-addons-for-elementor-lite' ),
'description' => esc_html__( 'Leave blank to hide', 'essential-addons-for-elementor-lite' ),
'condition' => [
'eael_countdown_hours' => 'yes',
],
'ai' => [
'active' => false,
],
]
);
$this->add_control(
'eael_countdown_minutes',
[
'label' => esc_html__( 'Display Minutes', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SWITCHER,
'return_value' => 'yes',
'default' => 'yes',
]
);
$this->add_control(
'eael_countdown_minutes_label',
[
'label' => esc_html__( 'Custom Label for Minutes', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
],
'default' => esc_html__( 'Minutes', 'essential-addons-for-elementor-lite' ),
'description' => esc_html__( 'Leave blank to hide', 'essential-addons-for-elementor-lite' ),
'condition' => [
'eael_countdown_minutes' => 'yes',
],
'ai' => [
'active' => false,
],
]
);
$this->add_control(
'eael_countdown_seconds',
[
'label' => esc_html__( 'Display Seconds', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SWITCHER,
'return_value' => 'yes',
'default' => 'yes',
]
);
$this->add_control(
'eael_countdown_seconds_label',
[
'label' => esc_html__( 'Custom Label for Seconds', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
],
'default' => esc_html__( 'Seconds', 'essential-addons-for-elementor-lite' ),
'description' => esc_html__( 'Leave blank to hide', 'essential-addons-for-elementor-lite' ),
'condition' => [
'eael_countdown_seconds' => 'yes',
],
'ai' => [
'active' => false,
],
]
);
$this->add_control(
'eael_countdown_separator_heading',
[
'label' => __( 'Countdown Separator', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::HEADING,
]
);
$this->add_control(
'eael_countdown_separator',
[
'label' => esc_html__( 'Display Separator', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SWITCHER,
'return_value' => 'eael-countdown-show-separator',
'default' => '',
]
);
$this->add_control(
'eael_countdown_separator_style',
[
'label' => __( 'Separator Style', 'essential-addons-for-elementor-lite' ),
'type' => \Elementor\Controls_Manager::SELECT,
'default' => 'dotted',
'options' => [
'solid' => __( 'Solid', 'essential-addons-for-elementor-lite' ),
'dotted' => __( 'Dotted', 'essential-addons-for-elementor-lite' ),
],
'condition' => [
'eael_countdown_separator' => 'eael-countdown-show-separator',
],
]
);
$this->add_control(
'eael_countdown_separator_position_top',
[
'label' => __( 'Position Top', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SLIDER,
'size_units' => ['px', '%'],
'range' => [
'px' => [
'min' => 0,
'max' => 1000,
'step' => 5,
],
'%' => [
'min' => 0,
'max' => 100,
],
],
'default' => [
'unit' => '%',
],
'selectors' => [
'{{WRAPPER}} .eael-countdown-digits::after' => 'top: {{SIZE}}{{UNIT}};',
],
]
);
$this->add_control(
'eael_countdown_separator_position_left',
[
'label' => __( 'Position Left', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SLIDER,
'size_units' => ['px', '%'],
'range' => [
'px' => [
'min' => 0,
'max' => 1000,
'step' => 5,
],
'%' => [
'min' => 0,
'max' => 100,
],
],
'default' => [
'unit' => '%',
'size' => 98,
],
'selectors' => [
'{{WRAPPER}} .eael-countdown-digits::after' => 'left: {{SIZE}}{{UNIT}};',
],
]
);
$this->add_control(
'eael_countdown_separator_color',
[
'label' => esc_html__( 'Separator Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'condition' => [
'eael_countdown_separator' => 'eael-countdown-show-separator',
],
'selectors' => [
'{{WRAPPER}} .eael-countdown-digits::after' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'eael_countdown_separator_typography',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_SECONDARY
],
'selector' => '{{WRAPPER}} .eael-countdown-digits::after',
'condition' => [
'eael_countdown_separator' => 'eael-countdown-show-separator',
],
]
);
$this->end_controls_section();
$this->start_controls_section(
'countdown_on_expire_settings',
[
'label' => esc_html__( 'Expire Action', 'essential-addons-for-elementor-lite' ),
]
);
$this->add_control(
'countdown_expire_type',
[
'label' => esc_html__( 'Expire Type', 'essential-addons-for-elementor-lite' ),
'label_block' => false,
'type' => Controls_Manager::SELECT,
'description' => esc_html__( 'Choose whether if you want to set a message or a redirect link', 'essential-addons-for-elementor-lite' ),
'options' => [
'none' => esc_html__( 'None', 'essential-addons-for-elementor-lite' ),
'text' => esc_html__( 'Message', 'essential-addons-for-elementor-lite' ),
'url' => esc_html__( 'Redirection Link', 'essential-addons-for-elementor-lite' ),
'template' => esc_html__( 'Saved Templates', 'essential-addons-for-elementor-lite' ),
],
'default' => 'none',
]
);
$this->add_control(
'countdown_expiry_text_title',
[
'label' => esc_html__( 'On Expiry Title', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::TEXTAREA,
'dynamic' => ['active' => true],
'default' => esc_html__( 'Countdown is finished!', 'essential-addons-for-elementor-lite' ),
'condition' => [
'countdown_expire_type' => 'text',
],
]
);
$this->add_control(
'countdown_expiry_text',
[
'label' => esc_html__( 'On Expiry Content', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::WYSIWYG,
'default' => esc_html__( 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s', 'essential-addons-for-elementor-lite' ),
'condition' => [
'countdown_expire_type' => 'text',
],
]
);
$this->add_control(
'countdown_expiry_redirection',
[
'label' => esc_html__( 'Redirect To (URL)', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::TEXT,
'dynamic' => ['active' => true],
'condition' => [
'countdown_expire_type' => 'url',
],
'default' => '#',
'ai' => [
'active' => false,
],
]
);
$this->add_control(
'countdown_expiry_templates',
[
'label' => __( 'Choose Template', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SELECT,
'options' => Helper::get_elementor_templates(),
'condition' => [
'countdown_expire_type' => 'template',
],
]
);
$this->end_controls_section();
if ( !apply_filters( 'eael/pro_enabled', false ) ) {
$this->start_controls_section(
'eael_section_pro',
[
'label' => __( 'Go Premium for More Features', 'essential-addons-for-elementor-lite' ),
]
);
$this->add_control(
'eael_control_get_pro',
[
'label' => __( 'Unlock more possibilities', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'1' => [
'title' => '',
'icon' => 'fa fa-unlock-alt',
],
],
'default' => '1',
'description' => '<span class="pro-feature"> Get the <a href="https://wpdeveloper.com/upgrade/ea-pro" target="_blank">Pro version</a> for more stunning elements and customization options.</span>',
]
);
$this->end_controls_section();
}
$this->start_controls_section(
'eael_section_countdown_styles_general',
[
'label' => esc_html__( 'Countdown Styles', 'essential-addons-for-elementor-lite' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->add_control(
'eael_countdown_is_gradient',
[
'label' => __( 'Use Gradient Background?', 'essential-addons-for-elementor-lite' ),
'type' => \Elementor\Controls_Manager::SWITCHER,
'label_on' => __( 'Show', 'essential-addons-for-elementor-lite' ),
'label_off' => __( 'Hide', 'essential-addons-for-elementor-lite' ),
'return_value' => 'yes',
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'eael_countdown_background',
'label' => __( 'Box Background Color', 'essential-addons-for-elementor-lite' ),
'types' => ['classic', 'gradient'],
'selector' => '{{WRAPPER}} .eael-countdown-item > div',
'condition' => [
'eael_countdown_is_gradient' => 'yes',
],
]
);
$this->add_control(
'eael_countdown_background',
[
'label' => esc_html__( 'Box Background Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div' => 'background: {{VALUE}};',
],
'condition' => [
'eael_countdown_is_gradient' => '',
],
]
);
$this->add_responsive_control(
'eael_countdown_item_bottom_margin',
[
'label' => esc_html__( 'Space Between Boxes', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => 15,
],
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'selectors' => [
'{{WRAPPER}} .eael-countdown-items>li' => 'margin-bottom:{{SIZE}}px;',
],
'condition' => [
'eael_section_countdown_layout' => 'grid',
],
]
);
$this->add_responsive_control(
'eael_countdown_spacing',
[
'label' => esc_html__( 'Space Between Boxes', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => 15,
],
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div' => 'margin-right:{{SIZE}}px; margin-left:{{SIZE}}px;',
'{{WRAPPER}} .eael-countdown-container' => 'margin-right: -{{SIZE}}px; margin-left: -{{SIZE}}px;',
],
'condition' => [
'eael_section_countdown_layout' => 'table-cell',
],
]
);
$this->add_responsive_control(
'eael_countdown_container_margin_bottom',
[
'label' => esc_html__( 'Space Below Container', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => 0,
],
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'selectors' => [
'{{WRAPPER}} .eael-countdown-container' => 'margin-bottom:{{SIZE}}px;',
],
]
);
$this->add_responsive_control(
'eael_countdown_box_padding',
[
'label' => esc_html__( 'Padding', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => ['px', '%', 'em'],
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_group_control(
Group_Control_Border::get_type(),
[
'name' => 'eael_countdown_box_border',
'label' => esc_html__( 'Border', 'essential-addons-for-elementor-lite' ),
'selector' => '{{WRAPPER}} .eael-countdown-item > div',
]
);
$this->add_control(
'eael_countdown_box_border_radius',
[
'label' => esc_html__( 'Border Radius', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::DIMENSIONS,
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div' => 'border-radius: {{TOP}}px {{RIGHT}}px {{BOTTOM}}px {{LEFT}}px;',
],
]
);
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
[
'name' => 'eael_countdown_box_shadow',
'selector' => '{{WRAPPER}} .eael-countdown-item > div',
]
);
$this->end_controls_section();
$this->start_controls_section(
'eael_section_countdown_styles_content',
[
'label' => esc_html__( 'Color &amp; Typography', 'essential-addons-for-elementor-lite' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->add_control(
'eael_countdown_digits_heading',
[
'label' => __( 'Countdown Digits', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::HEADING,
]
);
$this->add_control(
'eael_countdown_digits_color',
[
'label' => esc_html__( 'Digits Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '#fec503',
'selectors' => [
'{{WRAPPER}} .eael-countdown-digits' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'eael_countdown_digit_typography',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_SECONDARY
],
'selector' => '{{WRAPPER}} .eael-countdown-digits',
]
);
$this->add_control(
'eael_countdown_label_heading',
[
'label' => __( 'Countdown Labels', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::HEADING,
]
);
$this->add_control(
'eael_countdown_label_color',
[
'label' => esc_html__( 'Label Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-label' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'eael_countdown_label_typography',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_SECONDARY
],
'selector' => '{{WRAPPER}} .eael-countdown-label',
]
);
$this->end_controls_section();
$this->start_controls_section(
'eael_section_countdown_styles_individual',
[
'label' => esc_html__( 'Individual Box Styling', 'essential-addons-for-elementor-lite' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->add_control(
'eael_countdown_days_label_heading',
[
'label' => __( 'Days', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::HEADING,
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'eael_countdown_days_background_color',
'label' => __( 'Background Color', 'essential-addons-for-elementor-lite' ),
'types' => ['classic', 'gradient'],
'selector' => '{{WRAPPER}} .eael-countdown-item > div.eael-countdown-days',
'condition' => [
'eael_countdown_is_gradient' => 'yes',
],
]
);
$this->add_control(
'eael_countdown_days_background_color',
[
'label' => esc_html__( 'Background Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div.eael-countdown-days' => 'background-color: {{VALUE}};',
],
'condition' => [
'eael_countdown_is_gradient' => '',
],
]
);
$this->add_control(
'eael_countdown_days_digit_color',
[
'label' => esc_html__( 'Digit Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-days .eael-countdown-digits' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'eael_countdown_days_label_color',
[
'label' => esc_html__( 'Label Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-days .eael-countdown-label' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'eael_countdown_days_border_color',
[
'label' => esc_html__( 'Border Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div.eael-countdown-days' => 'border-color: {{VALUE}};',
],
]
);
$this->add_control(
'eael_countdown_hours_label_heading',
[
'label' => __( 'Hours', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::HEADING,
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'eael_countdown_hours_background_color',
'label' => __( 'Background Color', 'essential-addons-for-elementor-lite' ),
'types' => ['classic', 'gradient'],
'selector' => '{{WRAPPER}} .eael-countdown-item > div.eael-countdown-hours',
'condition' => [
'eael_countdown_is_gradient' => 'yes',
],
]
);
$this->add_control(
'eael_countdown_hours_background_color',
[
'label' => esc_html__( 'Background Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div.eael-countdown-hours' => 'background-color: {{VALUE}};',
],
'condition' => [
'eael_countdown_is_gradient' => '',
],
]
);
$this->add_control(
'eael_countdown_hours_digit_color',
[
'label' => esc_html__( 'Digit Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-hours .eael-countdown-digits' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'eael_countdown_hours_label_color',
[
'label' => esc_html__( 'Label Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-hours .eael-countdown-label' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'eael_countdown_hours_border_color',
[
'label' => esc_html__( 'Border Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div.eael-countdown-hours' => 'border-color: {{VALUE}};',
],
]
);
$this->add_control(
'eael_countdown_minutes_label_heading',
[
'label' => __( 'Minutes', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::HEADING,
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'eael_countdown_minutes_background_color',
'label' => __( 'Background Color', 'essential-addons-for-elementor-lite' ),
'types' => ['classic', 'gradient'],
'selector' => '{{WRAPPER}} .eael-countdown-item > div.eael-countdown-minutes',
'condition' => [
'eael_countdown_is_gradient' => 'yes',
],
]
);
$this->add_control(
'eael_countdown_minutes_background_color',
[
'label' => esc_html__( 'Background Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div.eael-countdown-minutes' => 'background-color: {{VALUE}};',
],
'condition' => [
'eael_countdown_is_gradient' => '',
],
]
);
$this->add_control(
'eael_countdown_minutes_digit_color',
[
'label' => esc_html__( 'Digit Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-minutes .eael-countdown-digits' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'eael_countdown_minutes_label_color',
[
'label' => esc_html__( 'Label Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-minutes .eael-countdown-label' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'eael_countdown_minutes_border_color',
[
'label' => esc_html__( 'Border Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div.eael-countdown-minutes' => 'border-color: {{VALUE}};',
],
]
);
$this->add_control(
'eael_countdown_seconds_label_heading',
[
'label' => __( 'Seconds', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::HEADING,
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'eael_countdown_seconds_background_color',
'label' => __( 'Background Color', 'essential-addons-for-elementor-lite' ),
'types' => ['classic', 'gradient'],
'selector' => '{{WRAPPER}} .eael-countdown-item > div.eael-countdown-seconds',
'condition' => [
'eael_countdown_is_gradient' => 'yes',
],
]
);
$this->add_control(
'eael_countdown_seconds_background_color',
[
'label' => esc_html__( 'Background Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div.eael-countdown-seconds' => 'background-color: {{VALUE}};',
],
'condition' => [
'eael_countdown_is_gradient' => '',
],
]
);
$this->add_control(
'eael_countdown_seconds_digit_color',
[
'label' => esc_html__( 'Digit Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-seconds .eael-countdown-digits' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'eael_countdown_seconds_label_color',
[
'label' => esc_html__( 'Label Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-seconds .eael-countdown-label' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'eael_countdown_seconds_border_color',
[
'label' => esc_html__( 'Border Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-item > div.eael-countdown-seconds' => 'border-color: {{VALUE}};',
],
]
);
$this->end_controls_section();
$this->start_controls_section(
'eael_section_countdown_expire_style',
[
'label' => esc_html__( 'Expire Message', 'essential-addons-for-elementor-lite' ),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => [
'countdown_expire_type' => 'text',
],
]
);
$this->add_responsive_control(
'eael_countdown_expire_message_alignment',
[
'label' => esc_html__( 'Text Alignment', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::CHOOSE,
'label_block' => true,
'options' => [
'left' => [
'title' => esc_html__( 'Left', 'essential-addons-for-elementor-lite' ),
'icon' => 'eicon-text-align-left',
],
'center' => [
'title' => esc_html__( 'Center', 'essential-addons-for-elementor-lite' ),
'icon' => 'eicon-text-align-center',
],
'right' => [
'title' => esc_html__( 'Right', 'essential-addons-for-elementor-lite' ),
'icon' => 'eicon-text-align-right',
],
],
'default' => 'left',
'selectors' => [
'{{WRAPPER}} .eael-countdown-finish-message' => 'text-align: {{VALUE}};',
],
]
);
$this->add_control(
'heading_eael_countdown_expire_title',
[
'label' => __( 'Title Style', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'eael_countdown_expire_title_color',
[
'label' => esc_html__( 'Title Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-finish-message .expiry-title' => 'color: {{VALUE}};',
],
'condition' => [
'countdown_expire_type' => 'text',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'eael_countdown_expire_title_typography',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_SECONDARY
],
'selector' => '{{WRAPPER}} .eael-countdown-finish-message .expiry-title',
'condition' => [
'countdown_expire_type' => 'text',
],
]
);
$this->add_responsive_control(
'eael_expire_title_margin',
[
'label' => esc_html__( 'Margin', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => ['px', 'em'],
'selectors' => [
'{{WRAPPER}} .eael-countdown-finish-message .expiry-title' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'heading_eael_countdown_expire_message',
[
'label' => __( 'Content Style', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'eael_countdown_expire_message_color',
[
'label' => esc_html__( 'Text Color', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .eael-countdown-finish-text' => 'color: {{VALUE}};',
],
'condition' => [
'countdown_expire_type' => 'text',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'eael_countdown_expire_message_typography',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_SECONDARY
],
'selector' => '.eael-countdown-finish-text',
'condition' => [
'countdown_expire_type' => 'text',
],
]
);
$this->add_responsive_control(
'eael_countdown_expire_message_padding',
[
'label' => esc_html__( 'Padding', 'essential-addons-for-elementor-lite' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => ['px', '%', 'em'],
'separator' => 'before',
'selectors' => [
'{{WRAPPER}} .eael-countdown-container' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
'condition' => [
'countdown_expire_type' => 'text',
],
]
);
$this->end_controls_section();
}
protected function render() {
$settings = $this->get_settings_for_display();
$get_due_date = esc_attr( $settings['eael_countdown_due_time'] );
$due_date = date( "M d Y G:i:s", strtotime( $get_due_date ) );
$gmt_offset = str_replace( array( '.25', '.5', '.75' ), array( ':15', ':30', ':45' ), ( get_option( 'gmt_offset' ) < 0 ? '' : '+' ) . get_option( 'gmt_offset' ) );
$this->add_render_attribute( 'eael-countdown', 'class', 'eael-countdown-wrapper' );
$this->add_render_attribute( 'eael-countdown', 'data-countdown-id', esc_attr( $this->get_id() ) );
$this->add_render_attribute( 'eael-countdown', 'data-expire-type', $settings['countdown_expire_type'] );
$this->add_render_attribute( 'eael-countdown', 'data-countdown-type', $settings['eael_countdown_type'] );
if ( $settings['eael_countdown_type'] === 'evergreen' ) {
$hour = absint( $settings['eael_evergreen_counter_hours'] ) * HOUR_IN_SECONDS;
$minute = absint( $settings['eael_evergreen_counter_minutes'] ) * MINUTE_IN_SECONDS;
$this->add_render_attribute( 'eael-countdown', 'data-evergreen-time', absint( $hour + $minute ) );
if ( $settings['eael_evergreen_counter_recurring'] === 'yes' ) {
$this->add_render_attribute( 'eael-countdown', 'data-evergreen-recurring', $settings['eael_evergreen_counter_recurring_restart_after'] ? $settings['eael_evergreen_counter_recurring_restart_after'] : 0 );
$this->add_render_attribute( 'eael-countdown', 'data-evergreen-recurring-stop', date( "M d Y G:i:s", strtotime( $settings['eael_evergreen_counter_recurring_stop_time'] ) ) . " {$gmt_offset}" );
}
}
if ( $settings['countdown_expire_type'] == 'text' ) {
if ( !empty( $settings['countdown_expiry_text'] ) ) {
$this->add_render_attribute( 'eael-countdown', 'data-expiry-text', wp_kses_post( $settings['countdown_expiry_text'] ) );
}
if ( !empty( $settings['countdown_expiry_text_title'] ) ) {
$this->add_render_attribute( 'eael-countdown', 'data-expiry-title', wp_kses_post( $settings['countdown_expiry_text_title'] ) );
}
} elseif ( $settings['countdown_expire_type'] == 'url' ) {
$this->add_render_attribute( 'eael-countdown', 'data-redirect-url', $settings['countdown_expiry_redirection'] );
} elseif ( $settings['countdown_expire_type'] == 'template' ) {
//$this->add_render_attribute( 'eael-countdown', 'data-template', esc_attr( $template ) );
} else {
//do nothing
}
// separator
$separator = '';
if ( $settings['eael_countdown_separator'] === 'eael-countdown-show-separator' ) {
$separator = 'eael-countdown-show-separator eael-countdown-separator-' . $settings['eael_countdown_separator_style'];
}
// label view
$this->add_render_attribute( 'eael-countdown-container', [
'class' => [
'eael-countdown-container',
$settings['eael_countdown_label_view'],
empty( $settings['eael_countdown_label_view_tablet'] ) ? '' : $settings['eael_countdown_label_view_tablet'] . '-tablet',
empty( $settings['eael_countdown_label_view_mobile'] ) ? '' : $settings['eael_countdown_label_view_mobile'] . '-mobile',
$separator,
],
] );
?>
<div <?php echo $this->get_render_attribute_string( 'eael-countdown' ); ?>>
<div <?php echo $this->get_render_attribute_string( 'eael-countdown-container' ); ?>>
<ul id="eael-countdown-<?php echo esc_attr( $this->get_id() ); ?>" class="eael-countdown-items" data-date="<?php echo esc_attr( "{$due_date} {$gmt_offset}" ); ?>">
<?php if ( !empty( $settings['eael_countdown_days'] ) ): ?><li class="eael-countdown-item"><div class="eael-countdown-days"><span data-days class="eael-countdown-digits">00</span><?php if ( !empty( $settings['eael_countdown_days_label'] ) ): ?><span class="eael-countdown-label"><?php echo esc_attr( $settings['eael_countdown_days_label'] ); ?></span><?php endif;?></div></li><?php endif;?>
<?php if ( !empty( $settings['eael_countdown_hours'] ) ): ?><li class="eael-countdown-item"><div class="eael-countdown-hours"><span data-hours class="eael-countdown-digits">00</span><?php if ( !empty( $settings['eael_countdown_hours_label'] ) ): ?><span class="eael-countdown-label"><?php echo esc_attr( $settings['eael_countdown_hours_label'] ); ?></span><?php endif;?></div></li><?php endif;?>
<?php if ( !empty( $settings['eael_countdown_minutes'] ) ): ?><li class="eael-countdown-item"><div class="eael-countdown-minutes"><span data-minutes class="eael-countdown-digits">00</span><?php if ( !empty( $settings['eael_countdown_minutes_label'] ) ): ?><span class="eael-countdown-label"><?php echo esc_attr( $settings['eael_countdown_minutes_label'] ); ?></span><?php endif;?></div></li><?php endif;?>
<?php if ( !empty( $settings['eael_countdown_seconds'] ) ): ?><li class="eael-countdown-item"><div class="eael-countdown-seconds"><span data-seconds class="eael-countdown-digits">00</span><?php if ( !empty( $settings['eael_countdown_seconds_label'] ) ): ?><span class="eael-countdown-label"><?php echo esc_attr( $settings['eael_countdown_seconds_label'] ); ?></span><?php endif;?></div></li><?php endif;?>
</ul>
<div class="eael-countdown-expiry-template" style="display: none;">
<?php
if ( 'template' == $settings['countdown_expire_type'] ) {
if ( ! empty( $settings['countdown_expiry_templates'] ) ) {
// WPML Compatibility
if ( ! is_array( $settings['countdown_expiry_templates'] ) ) {
$settings['countdown_expiry_templates'] = apply_filters( 'wpml_object_id', $settings['countdown_expiry_templates'], 'wp_template', true );
}
echo Plugin::$instance->frontend->get_builder_content( $settings['countdown_expiry_templates'], true );
}
}
?>
</div>
<div class="clearfix"></div>
</div>
</div>
<?php
}
}