4938 lines
188 KiB
PHP
4938 lines
188 KiB
PHP
<?php
|
|
|
|
namespace Essential_Addons_Elementor\Pro\Traits;
|
|
use Elementor\Icons_Manager;
|
|
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
} // Exit if accessed directly
|
|
|
|
use \Elementor\Controls_Manager;
|
|
use \Elementor\Core\Kits\Documents\Tabs\Global_Typography;
|
|
use \Elementor\Group_Control_Background;
|
|
use \Elementor\Group_Control_Border;
|
|
use \Elementor\Group_Control_Box_Shadow;
|
|
use \Elementor\Group_Control_Typography;
|
|
use \Elementor\Repeater;
|
|
use \Elementor\Utils;
|
|
use \Essential_Addons_Elementor\Elements\Login_Register;
|
|
use \Essential_Addons_Elementor\Pro\Classes\Helper;
|
|
use \Google_Client;
|
|
use \mysqli;
|
|
|
|
trait Extender
|
|
{
|
|
public function add_progressbar_pro_layouts($options)
|
|
{
|
|
$options['layouts']['line_rainbow'] = __('Line Rainbow', 'essential-addons-elementor');
|
|
$options['layouts']['circle_fill'] = __('Circle Fill', 'essential-addons-elementor');
|
|
$options['layouts']['half_circle_fill'] = __('Half Circle Fill', 'essential-addons-elementor');
|
|
$options['layouts']['box'] = __('Box', 'essential-addons-elementor');
|
|
$options['conditions'] = [];
|
|
|
|
return $options;
|
|
}
|
|
|
|
public function fancy_text_style_types($options)
|
|
{
|
|
$options['styles']['style-2'] = __('Style 2', 'essential-addons-elementor');
|
|
$options['conditions'] = [];
|
|
|
|
return $options;
|
|
}
|
|
|
|
public function ticker_options($options)
|
|
{
|
|
$options['options']['custom'] = __('Custom', 'essential-addons-elementor');
|
|
$options['conditions'] = [];
|
|
|
|
return $options;
|
|
}
|
|
|
|
public function data_table_sorting($obj)
|
|
{
|
|
$obj->add_control('eael_section_data_table_enabled', [
|
|
'label' => __('Enable Table Sorting', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'label_on' => esc_html__('Yes', 'essential-addons-elementor'),
|
|
'label_off' => esc_html__('No', 'essential-addons-elementor'),
|
|
'return_value' => 'true',
|
|
]);
|
|
}
|
|
|
|
public function ticker_custom_contents($obj)
|
|
{
|
|
/**
|
|
* Content Ticker Custom Content Settings
|
|
*/
|
|
$obj->start_controls_section('eael_section_ticker_custom_content_settings', [
|
|
'label' => __('Custom Content Settings', 'essential-addons-elementor'),
|
|
'condition' => [
|
|
'eael_ticker_type' => 'custom',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_ticker_custom_contents', [
|
|
'type' => Controls_Manager::REPEATER,
|
|
'seperator' => 'before',
|
|
'default' => [
|
|
['eael_ticker_custom_content' => 'Ticker Custom Content'],
|
|
],
|
|
'fields' => [
|
|
[
|
|
'name' => 'eael_ticker_custom_content',
|
|
'label' => esc_html__('Content', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'label_block' => true,
|
|
'default' => esc_html__('Ticker custom content', 'essential-addons-elementor'),
|
|
],
|
|
[
|
|
'name' => 'eael_ticker_custom_content_link',
|
|
'label' => esc_html__('Button Link', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::URL,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'label_block' => true,
|
|
'default' => [
|
|
'url' => '#',
|
|
'is_external' => '',
|
|
],
|
|
'show_external' => true,
|
|
],
|
|
],
|
|
'title_field' => '{{eael_ticker_custom_content}}',
|
|
]);
|
|
|
|
$obj->end_controls_section();
|
|
}
|
|
|
|
public function progress_bar_rainbow_class(array $wrap_classes, array $settings)
|
|
{
|
|
if ($settings['progress_bar_layout'] == 'line_rainbow') {
|
|
$wrap_classes[] = 'eael-progressbar-line-rainbow';
|
|
}
|
|
|
|
return $wrap_classes;
|
|
}
|
|
|
|
public function progress_bar_circle_fill_class(array $wrap_classes, array $settings)
|
|
{
|
|
if ($settings['progress_bar_layout'] == 'circle_fill') {
|
|
$wrap_classes[] = 'eael-progressbar-circle-fill';
|
|
}
|
|
|
|
return $wrap_classes;
|
|
}
|
|
|
|
public function progressbar_half_circle_wrap_class(array $wrap_classes, array $settings)
|
|
{
|
|
if ($settings['progress_bar_layout'] == 'half_circle_fill') {
|
|
$wrap_classes[] = 'eael-progressbar-half-circle-fill';
|
|
}
|
|
|
|
return $wrap_classes;
|
|
}
|
|
|
|
public function progress_bar_box_control($obj)
|
|
{
|
|
/**
|
|
* Style Tab: General(Box)
|
|
*/
|
|
$obj->start_controls_section('progress_bar_section_style_general_box', [
|
|
'label' => __('General', 'essential-addons-elementor'),
|
|
'tab' => Controls_Manager::TAB_STYLE,
|
|
'condition' => [
|
|
'progress_bar_layout' => 'box',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('progress_bar_box_alignment', [
|
|
'label' => __('Alignment', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::CHOOSE,
|
|
'options' => [
|
|
'left' => [
|
|
'title' => __('Left', 'essential-addons-elementor'),
|
|
'icon' => 'eicon-text-align-left',
|
|
],
|
|
'center' => [
|
|
'title' => __('Center', 'essential-addons-elementor'),
|
|
'icon' => 'eicon-text-align-center',
|
|
],
|
|
'right' => [
|
|
'title' => __('Right', 'essential-addons-elementor'),
|
|
'icon' => 'eicon-text-align-right',
|
|
],
|
|
],
|
|
'default' => 'center',
|
|
]);
|
|
|
|
$obj->add_control('progress_bar_box_width', [
|
|
'label' => __('Width', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => ['px'],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 100,
|
|
'max' => 500,
|
|
'step' => 1,
|
|
],
|
|
],
|
|
'default' => [
|
|
'unit' => 'px',
|
|
'size' => 140,
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-progressbar-box' => 'width: {{SIZE}}{{UNIT}};',
|
|
],
|
|
'separator' => 'before',
|
|
]);
|
|
|
|
$obj->add_control('progress_bar_box_height', [
|
|
'label' => __('Height', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => ['px'],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 100,
|
|
'max' => 500,
|
|
'step' => 1,
|
|
],
|
|
],
|
|
'default' => [
|
|
'unit' => 'px',
|
|
'size' => 200,
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-progressbar-box' => 'height: {{SIZE}}{{UNIT}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('progress_bar_box_bg_color', [
|
|
'label' => __('Background Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#fff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-progressbar-box' => 'background-color: {{VALUE}}',
|
|
],
|
|
'separator' => 'before',
|
|
]);
|
|
|
|
$obj->add_control('progress_bar_box_fill_color', [
|
|
'label' => __('Fill Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#000',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-progressbar-box-fill' => 'background-color: {{VALUE}}',
|
|
],
|
|
'separator' => 'before',
|
|
]);
|
|
|
|
$obj->add_control('progress_bar_box_stroke_width', [
|
|
'label' => __('Stroke Width', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => ['px'],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
'step' => 1,
|
|
],
|
|
],
|
|
'default' => [
|
|
'unit' => 'px',
|
|
'size' => 1,
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-progressbar-box' => 'border-width: {{SIZE}}{{UNIT}}',
|
|
],
|
|
'separator' => 'before',
|
|
]);
|
|
|
|
$obj->add_control('progress_bar_box_stroke_color', [
|
|
'label' => __('Stroke Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#eee',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-progressbar-box' => 'border-color: {{VALUE}}',
|
|
],
|
|
]);
|
|
|
|
$obj->end_controls_section();
|
|
}
|
|
|
|
public function add_box_progress_bar_block(array $settings, $obj, array $wrap_classes)
|
|
{
|
|
if ($settings['progress_bar_layout'] == 'box') {
|
|
$wrap_classes[] = 'eael-progressbar-box';
|
|
|
|
$obj->add_render_attribute('eael-progressbar-box', [
|
|
'class' => $wrap_classes,
|
|
'data-layout' => $settings['progress_bar_layout'],
|
|
'data-count' => $settings['progress_bar_value_type'] == 'static' ? $settings['progress_bar_value']['size'] : $settings['progress_bar_value_dynamic'],
|
|
'data-duration' => $settings['progress_bar_animation_duration']['size'],
|
|
]);
|
|
|
|
$obj->add_render_attribute('eael-progressbar-box-fill', [
|
|
'class' => 'eael-progressbar-box-fill',
|
|
'style' => '-webkit-transition-duration:' . $settings['progress_bar_animation_duration']['size'] . 'ms;-o-transition-duration:' . $settings['progress_bar_animation_duration']['size'] . 'ms;transition-duration:' . $settings['progress_bar_animation_duration']['size'] . 'ms;',
|
|
]);
|
|
|
|
echo '<div class="eael-progressbar-box-container ' . esc_attr( $settings['progress_bar_box_alignment'] ) . '">';
|
|
?>
|
|
<div <?php $obj->print_render_attribute_string('eael-progressbar-box'); ?> >
|
|
<?php
|
|
$html = '<div class="eael-progressbar-box-inner-content">
|
|
' . ($settings['progress_bar_title'] ? sprintf('<%1$s class="%2$s">', Helper::eael_validate_html_tag( $settings['progress_bar_title_html_tag'] ), 'eael-progressbar-title') . esc_html($settings['progress_bar_title']) . sprintf('</%1$s>', esc_html($settings['progress_bar_title_html_tag'])) : '') . '
|
|
' . ($settings['progress_bar_show_count'] === 'yes' ? '<span class="eael-progressbar-count-wrap"><span class="eael-progressbar-count">0</span><span class="postfix">' . esc_html__('%', 'essential-addons-for-elementor') . '</span></span>' : '') . '
|
|
</div>';
|
|
echo wp_kses( $html, Helper::eael_allowed_tags() );
|
|
?>
|
|
<div <?php $obj->print_render_attribute_string('eael-progressbar-box-fill'); ?> ></div>
|
|
<?php
|
|
echo '</div>
|
|
</div>';
|
|
}
|
|
}
|
|
|
|
public function progressbar_general_style_condition($conditions)
|
|
{
|
|
return array_merge($conditions, [
|
|
'line_rainbow',
|
|
]);
|
|
}
|
|
|
|
public function progressbar_line_fill_stripe_condition($conditions)
|
|
{
|
|
return array_merge($conditions, ['progress_bar_layout' => 'line']);
|
|
}
|
|
|
|
public function circle_style_general_condition($conditions)
|
|
{
|
|
return array_merge($conditions, [
|
|
'circle_fill',
|
|
'half_circle_fill',
|
|
]);
|
|
}
|
|
|
|
public function add_pricing_table_styles($options)
|
|
{
|
|
$options['styles']['style-3'] = esc_html__('Pricing Style 3', 'essential-addons-elementor');
|
|
$options['styles']['style-4'] = esc_html__('Pricing Style 4', 'essential-addons-elementor');
|
|
$options['styles']['style-5'] = esc_html__('Pricing Style 5', 'essential-addons-elementor');
|
|
$options['conditions'] = [];
|
|
|
|
return $options;
|
|
}
|
|
|
|
public function add_creative_button_controls($obj)
|
|
{
|
|
// Content Controls
|
|
$obj->start_controls_section('eael_section_creative_button_content', [
|
|
'label' => esc_html__('Button Content', 'essential-addons-elementor'),
|
|
]);
|
|
|
|
$obj->start_controls_tabs('eael_creative_button_content_separation');
|
|
|
|
$obj->start_controls_tab('button_primary_settings', [
|
|
'label' => __('Primary', 'essential-addons-elementor'),
|
|
]);
|
|
|
|
$obj->add_control('creative_button_text', [
|
|
'label' => __('Button Text', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'label_block' => true,
|
|
'default' => 'Click Me!',
|
|
'placeholder' => __('Enter button text', 'essential-addons-elementor'),
|
|
'title' => __('Enter button text here', 'essential-addons-elementor'),
|
|
]);
|
|
|
|
$obj->add_control('eael_creative_button_icon_new', [
|
|
'label' => esc_html__('Icon', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::ICONS,
|
|
'fa4compatibility' => 'eael_creative_button_icon',
|
|
'condition' => [
|
|
'creative_button_effect!' => ['eael-creative-button--tamaya'],
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_creative_button_icon_alignment', [
|
|
'label' => esc_html__('Icon Position', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SELECT,
|
|
'default' => 'left',
|
|
'options' => [
|
|
'left' => esc_html__('Before', 'essential-addons-elementor'),
|
|
'right' => esc_html__('After', 'essential-addons-elementor'),
|
|
],
|
|
'condition' => [
|
|
'creative_button_effect!' => ['eael-creative-button--tamaya'],
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_creative_button_icon_indent', [
|
|
'label' => esc_html__('Icon Spacing', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'range' => [
|
|
'px' => [
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button-icon-right' => 'margin-left: {{SIZE}}px;',
|
|
'{{WRAPPER}} .eael-creative-button-icon-left' => 'margin-right: {{SIZE}}px;',
|
|
'{{WRAPPER}} .eael-creative-button--shikoba i' => 'left: {{SIZE}}%;',
|
|
],
|
|
'condition' => [
|
|
'creative_button_effect!' => ['eael-creative-button--tamaya'],
|
|
],
|
|
]);
|
|
|
|
$obj->end_controls_tab();
|
|
|
|
$obj->start_controls_tab('button_secondary_settings', [
|
|
'label' => __('Secondary', 'essential-addons-elementor'),
|
|
]);
|
|
|
|
$obj->add_control('creative_button_secondary_text', [
|
|
'label' => __('Button Secondary Text', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'label_block' => true,
|
|
'default' => 'Go!',
|
|
'placeholder' => __('Enter button secondary text', 'essential-addons-elementor'),
|
|
'title' => __('Enter button secondary text here', 'essential-addons-elementor'),
|
|
]);
|
|
|
|
$obj->end_controls_tab();
|
|
|
|
$obj->end_controls_tabs();
|
|
|
|
$obj->add_control('creative_button_link_url', [
|
|
'label' => esc_html__('Link URL', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::URL,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'label_block' => true,
|
|
'default' => [
|
|
'url' => '#',
|
|
'is_external' => '',
|
|
],
|
|
'show_external' => true,
|
|
]);
|
|
|
|
$obj->end_controls_section();
|
|
}
|
|
|
|
public function add_creative_button_style_pro_controls($obj)
|
|
{
|
|
$obj->add_control('creative_button_effect', [
|
|
'label' => esc_html__('Set Button Effect', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SELECT,
|
|
'default' => 'eael-creative-button--default',
|
|
'options' => [
|
|
'eael-creative-button--default' => esc_html__('Default', 'essential-addons-elementor'),
|
|
'eael-creative-button--winona' => esc_html__('Winona', 'essential-addons-elementor'),
|
|
'eael-creative-button--ujarak' => esc_html__('Ujarak', 'essential-addons-elementor'),
|
|
'eael-creative-button--wayra' => esc_html__('Wayra', 'essential-addons-elementor'),
|
|
'eael-creative-button--tamaya' => esc_html__('Tamaya', 'essential-addons-elementor'),
|
|
'eael-creative-button--rayen' => esc_html__('Rayen', 'essential-addons-elementor'),
|
|
'eael-creative-button--pipaluk' => esc_html__('Pipaluk', 'essential-addons-elementor'),
|
|
'eael-creative-button--moema' => esc_html__('Moema', 'essential-addons-elementor'),
|
|
'eael-creative-button--wave' => esc_html__('Wave', 'essential-addons-elementor'),
|
|
'eael-creative-button--aylen' => esc_html__('Aylen', 'essential-addons-elementor'),
|
|
'eael-creative-button--saqui' => esc_html__('Saqui', 'essential-addons-elementor'),
|
|
'eael-creative-button--wapasha' => esc_html__('Wapasha', 'essential-addons-elementor'),
|
|
'eael-creative-button--nuka' => esc_html__('Nuka', 'essential-addons-elementor'),
|
|
'eael-creative-button--antiman' => esc_html__('Antiman', 'essential-addons-elementor'),
|
|
'eael-creative-button--quidel' => esc_html__('Quidel', 'essential-addons-elementor'),
|
|
'eael-creative-button--shikoba' => esc_html__('Shikoba', 'essential-addons-elementor'),
|
|
],
|
|
]);
|
|
|
|
$obj->start_controls_tabs('eael_creative_button_typography_separation');
|
|
|
|
$obj->start_controls_tab('button_primary_typography', [
|
|
'label' => __('Primary', 'essential-addons-elementor'),
|
|
]);
|
|
|
|
$obj->add_group_control(Group_Control_Typography::get_type(), [
|
|
'name' => 'eael_creative_button_typography',
|
|
'global' => [
|
|
'default' => Global_Typography::TYPOGRAPHY_PRIMARY
|
|
],
|
|
'selector' => '{{WRAPPER}} .eael-creative-button .cretive-button-text',
|
|
]);
|
|
|
|
$obj->add_responsive_control('eael_creative_button_icon_size', [
|
|
'label' => esc_html__('Icon Size', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'default' => [
|
|
'size' => 30,
|
|
'unit' => 'px',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 500,
|
|
'step' => 1,
|
|
],
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button i' => 'font-size: {{SIZE}}{{UNIT}};',
|
|
'{{WRAPPER}} .eael-creative-button svg' => 'height: {{SIZE}}{{UNIT}};width: {{SIZE}}{{UNIT}};',
|
|
],
|
|
]);
|
|
|
|
$obj->end_controls_tab();
|
|
|
|
$obj->start_controls_tab('button_secondary_typography', [
|
|
'label' => __('Secondary', 'essential-addons-elementor'),
|
|
]);
|
|
|
|
$obj->add_group_control(Group_Control_Typography::get_type(), [
|
|
'name' => 'eael_creative_button_secondary_typography',
|
|
'global' => [
|
|
'default' => Global_Typography::TYPOGRAPHY_PRIMARY
|
|
],
|
|
'selector' => '{{WRAPPER}} .eael-creative-button--rayen::before,
|
|
{{WRAPPER}} .eael-creative-button--winona::after,
|
|
{{WRAPPER}} .eael-creative-button--tamaya .eael-creative-button--tamaya-secondary span,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--saqui::after',
|
|
]);
|
|
|
|
$obj->end_controls_tab();
|
|
|
|
$obj->end_controls_tabs();
|
|
|
|
$obj->add_responsive_control('eael_creative_button_alignment', [
|
|
'label' => esc_html__('Button Alignment', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::CHOOSE,
|
|
'label_block' => true,
|
|
'options' => [
|
|
'flex-start' => [
|
|
'title' => esc_html__('Left', 'essential-addons-elementor'),
|
|
'icon' => 'eicon-text-align-left',
|
|
],
|
|
'center' => [
|
|
'title' => esc_html__('Center', 'essential-addons-elementor'),
|
|
'icon' => 'eicon-text-align-center',
|
|
],
|
|
'flex-end' => [
|
|
'title' => esc_html__('Right', 'essential-addons-elementor'),
|
|
'icon' => 'eicon-text-align-right',
|
|
],
|
|
],
|
|
'default' => '',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button-wrapper' => 'justify-content: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_responsive_control('eael_creative_button_width', [
|
|
'label' => esc_html__('Width', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 500,
|
|
'step' => 1,
|
|
],
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button' => 'width: {{SIZE}}{{UNIT}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_responsive_control('eael_creative_button_padding', [
|
|
'label' => esc_html__('Button Padding', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--winona::after' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--winona > .creative-button-inner' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--tamaya::before' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--rayen::before' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--rayen > .creative-button-inner' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--saqui::after' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('use_gradient_background', [
|
|
'label' => __('Use Gradient Background', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'label_on' => __('Show', 'essential-addons-for-elementor'),
|
|
'label_off' => __('Hide', 'essential-addons-for-elementor'),
|
|
'return_value' => 'yes',
|
|
'default' => '',
|
|
]);
|
|
|
|
$obj->start_controls_tabs('eael_creative_button_tabs');
|
|
|
|
$obj->start_controls_tab('normal', ['label' => esc_html__('Normal', 'essential-addons-elementor')]);
|
|
|
|
$obj->add_control('eael_creative_button_icon_color', [
|
|
'label' => esc_html__('Icon Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#ffffff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button i' => 'color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button .creative-button-inner svg' => 'fill: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_creative_button_text_color', [
|
|
'label' => esc_html__('Text Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#ffffff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button' => 'color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button svg' => 'fill: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--tamaya::before' => 'color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--tamaya::after' => 'color: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_group_control(Group_Control_Background::get_type(), [
|
|
'name' => 'eael_creative_button_gradient_background',
|
|
'types' => [
|
|
'gradient',
|
|
'classic',
|
|
],
|
|
'selector' => '
|
|
{{WRAPPER}} .eael-creative-button,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--ujarak:hover,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--wayra:hover,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--tamaya::before,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--tamaya::after,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--rayen:hover,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--pipaluk::after,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--wave:hover,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--nuka::before,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--nuka::after,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--antiman::after,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--quidel::after
|
|
',
|
|
'condition' => [
|
|
'use_gradient_background' => 'yes',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_creative_button_background_color', [
|
|
'label' => esc_html__('Background Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#333333',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--ujarak:hover' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--wayra:hover' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--tamaya::before' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--tamaya::after' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--rayen:hover' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--pipaluk::after' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--wave:hover' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--aylen::before' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--nuka::before' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--nuka::after' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--antiman::after' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--quidel::after' => 'background-color: {{VALUE}};',
|
|
],
|
|
'condition' => [
|
|
'use_gradient_background' => '',
|
|
],
|
|
]);
|
|
|
|
$obj->add_group_control(Group_Control_Border::get_type(), [
|
|
'name' => 'eael_creative_button_border',
|
|
'selector' => '{{WRAPPER}} .eael-creative-button',
|
|
'condition' => [
|
|
'creative_button_effect!' => 'eael-creative-button--nuka'
|
|
]
|
|
]);
|
|
|
|
$obj->add_control('eael_creative_button_border_radius', [
|
|
'label' => esc_html__('Border Radius', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'range' => [
|
|
'px' => [
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button' => 'border-radius: {{SIZE}}px;',
|
|
'{{WRAPPER}} .eael-creative-button::before' => 'border-radius: {{SIZE}}px;',
|
|
'{{WRAPPER}} .eael-creative-button::after' => 'border-radius: {{SIZE}}px;',
|
|
],
|
|
]);
|
|
|
|
$obj->end_controls_tab();
|
|
|
|
$obj->start_controls_tab('eael_creative_button_hover', ['label' => esc_html__('Hover', 'essential-addons-elementor')]);
|
|
|
|
$obj->add_control('eael_creative_button_hover_icon_color', [
|
|
'label' => esc_html__('Icon Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#ffffff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button:hover i' => 'color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button:hover .creative-button-inner svg' => 'fill: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_creative_button_hover_text_color', [
|
|
'label' => esc_html__('Text Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#ffffff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button:hover' => 'color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button:hover svg' => 'fill: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--winona::after' => 'color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--saqui::after' => 'color: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_group_control(Group_Control_Background::get_type(), [
|
|
'name' => 'eael_creative_button_hover_gradient_background',
|
|
'types' => [
|
|
'gradient',
|
|
'classic',
|
|
],
|
|
'selector' => '
|
|
{{WRAPPER}} .eael-creative-button:hover,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--ujarak::before,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--wayra:hover::before,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--tamaya:hover,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--rayen::before,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--wave::before,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--wave:hover::before,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--aylen::after,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--saqui:hover,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--nuka:hover::after,
|
|
{{WRAPPER}} .eael-creative-button.eael-creative-button--quidel:hover::after
|
|
',
|
|
'condition' => [
|
|
'use_gradient_background' => 'yes',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_creative_button_hover_background_color', [
|
|
'label' => esc_html__('Background Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#f54',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button:hover' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--ujarak::before' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--wayra:hover::before' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--tamaya:hover' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--rayen::before' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--wave::before' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--wave:hover::before' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--aylen::after' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--saqui:hover' => 'color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--nuka:hover::after' => 'background-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--quidel:hover::after' => 'background-color: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_creative_button_hover_border_color', [
|
|
'label' => esc_html__('Border Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-creative-button:hover' => 'border-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--wapasha::before' => 'border-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--antiman::before' => 'border-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--pipaluk::before' => 'border-color: {{VALUE}};',
|
|
'{{WRAPPER}} .eael-creative-button.eael-creative-button--quidel::before' => 'background-color: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->end_controls_tab();
|
|
|
|
$obj->end_controls_tabs();
|
|
}
|
|
|
|
public function pricing_table_subtitle_field($options)
|
|
{
|
|
return array_merge($options, [
|
|
'style-3',
|
|
'style-4',
|
|
'style-5',
|
|
]);
|
|
}
|
|
|
|
public function pricing_table_icon_support($options)
|
|
{
|
|
return array_merge($options, ['style-5']);
|
|
}
|
|
|
|
public function pricing_table_header_radius_support($options)
|
|
{
|
|
return array_merge($options, ['style-5']);
|
|
}
|
|
|
|
public function pricing_table_header_background_support($options)
|
|
{
|
|
return array_merge($options, ['style-5']);
|
|
}
|
|
|
|
public function pricing_table_header_image_control($obj)
|
|
{
|
|
/**
|
|
* Condition: 'eael_pricing_table_style' => 'style-4'
|
|
*/
|
|
$obj->add_control('eael_pricing_table_style_4_image', [
|
|
'label' => esc_html__('Header Image', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::MEDIA,
|
|
'default' => [
|
|
'url' => Utils::get_placeholder_image_src(),
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-pricing-image' => 'background-image: url({{URL}});',
|
|
],
|
|
'condition' => [
|
|
'eael_pricing_table_style' => 'style-4',
|
|
],
|
|
'ai' => [
|
|
'active' => false,
|
|
],
|
|
]);
|
|
}
|
|
|
|
public function pricing_table_style_2_currency_position($obj)
|
|
{
|
|
/**
|
|
* Condition: 'eael_pricing_table_style' => 'style-3'
|
|
*/
|
|
$obj->add_control('eael_pricing_table_style_3_price_position', [
|
|
'label' => esc_html__('Pricing Position', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SELECT,
|
|
'default' => 'bottom',
|
|
'label_block' => false,
|
|
'options' => [
|
|
'top' => esc_html__('On Top', 'essential-addons-elementor'),
|
|
'bottom' => esc_html__('At Bottom', 'essential-addons-elementor'),
|
|
],
|
|
'condition' => [
|
|
'eael_pricing_table_style' => 'style-3',
|
|
],
|
|
]);
|
|
}
|
|
|
|
public function pricing_table_style_five_settings_control($obj)
|
|
{
|
|
$obj->add_control('eael_pricing_table_style_five_icon_and_title_style', [
|
|
'label' => esc_html__('Icon Beside Title', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'label_on' => __('Yes', 'essential-addons-elementor'),
|
|
'label_off' => __('No', 'essential-addons-elementor'),
|
|
'return_value' => 'yes',
|
|
'condition' => [
|
|
'eael_pricing_table_style' => 'style-5',
|
|
],
|
|
]);
|
|
$obj->add_control('eael_pricing_table_style_five_header_layout', [
|
|
'label' => esc_html__('Header Layout', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SELECT,
|
|
'default' => 'one',
|
|
'options' => [
|
|
'one' => __('Layout 1', 'essential-addons-elementor'),
|
|
'two' => __('Layout 2', 'essential-addons-elementor'),
|
|
],
|
|
'condition' => [
|
|
'eael_pricing_table_style' => 'style-5',
|
|
],
|
|
]);
|
|
}
|
|
|
|
public function pricing_table_style_header_layout_two($obj)
|
|
{
|
|
$obj->start_controls_section('eael_pricing_table_style_five_section', [
|
|
'label' => __('Header Layout Two', 'essential-addons-elementor'),
|
|
'tab' => Controls_Manager::TAB_STYLE,
|
|
'condition' => [
|
|
'eael_pricing_table_style_five_header_layout' => 'two',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_pricing_table_style_five_price_style_padding', [
|
|
'label' => __('Padding', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
'em',
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-pricing.style-5 .eael-pricing-item .eael-pricing-image' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
'eael_pricing_table_style' => 'style-5',
|
|
],
|
|
]);
|
|
$obj->add_group_control(Group_Control_Background::get_type(), [
|
|
'name' => 'eael_pricing_table_style_five_price_style_background',
|
|
'label' => __('Background', 'essential-addons-elementor'),
|
|
'types' => [
|
|
'classic',
|
|
'gradient',
|
|
],
|
|
'selector' => '{{WRAPPER}} .eael-pricing.style-5 .eael-pricing-item .eael-pricing-image',
|
|
'condition' => [
|
|
'eael_pricing_table_style' => 'style-5',
|
|
],
|
|
]);
|
|
$obj->end_controls_section();
|
|
}
|
|
|
|
public function add_pricing_table_pro_styles($settings, $obj, $pricing, $button_link, $nofollow, $featured_class)
|
|
{
|
|
$settings = $obj->get_settings();
|
|
$widget_id = $obj->get_id();
|
|
$inline_style = ($settings['eael_pricing_table_featured_styles'] === 'ribbon-4' && 'yes' === $settings['eael_pricing_table_featured'] ? true : false);
|
|
$obj->add_render_attribute('eael_pricing_button_' . $widget_id, [ 'class' => [ 'eael-pricing-button' ] ]);
|
|
|
|
if ( ! empty( $settings['eael_pricing_table_btn_link']['url'] ) ) {
|
|
$obj->add_link_attributes( 'eael_pricing_button_' . $widget_id, $settings['eael_pricing_table_btn_link'] );
|
|
}
|
|
|
|
if ('style-3' === $settings['eael_pricing_table_style']): ?>
|
|
<div class="eael-pricing style-3" <?php echo $inline_style ? ' style="overflow: hidden;"' : ''; ?>>
|
|
<div class="eael-pricing-item <?php echo esc_attr($featured_class); ?>">
|
|
<?php if ('top' === $settings['eael_pricing_table_style_3_price_position']): ?>
|
|
<div class="eael-pricing-tag on-top">
|
|
<?php
|
|
$html = '<span class="price-tag">' . $pricing . '</span>';
|
|
$html .= '<span class="price-period">' . $settings['eael_pricing_table_period_separator'] . $settings['eael_pricing_table_price_period'] . '</span>';
|
|
echo wp_kses( $html, Helper::eael_allowed_tags() );
|
|
?>
|
|
</div>
|
|
<?php endif;?>
|
|
<div class="header">
|
|
<h2 class="title"><?php echo esc_html( $settings['eael_pricing_table_title'] ); ?></h2>
|
|
<span class="subtitle"><?php echo esc_html( $settings['eael_pricing_table_sub_title'] ); ?></span>
|
|
</div>
|
|
<div class="body">
|
|
<?php $obj->render_feature_list($settings, $obj);?>
|
|
</div>
|
|
<?php if ('bottom' === $settings['eael_pricing_table_style_3_price_position']): ?>
|
|
<div class="eael-pricing-tag">
|
|
<?php
|
|
$html = '<span class="price-tag">' . $pricing . '</span>';
|
|
$html .= '<span class="price-period">' . $settings['eael_pricing_table_period_separator'] . $settings['eael_pricing_table_price_period'] . '</span>';
|
|
echo wp_kses( $html, Helper::eael_allowed_tags() );
|
|
?>
|
|
</div>
|
|
<?php endif;?>
|
|
|
|
<?php if( isset( $settings['eael_pricing_table_button_show'] ) && 'yes' === $settings['eael_pricing_table_button_show'] ): ?>
|
|
<div class="footer">
|
|
<a <?php echo $obj->get_render_attribute_string('eael_pricing_button_'. esc_attr( $widget_id ) ); ?>>
|
|
<?php if ('left' == $settings['eael_pricing_table_button_icon_alignment']): ?>
|
|
<?php
|
|
if (empty($settings['eael_pricing_table_button_icon']) || isset($settings['__fa4_migrated']['eael_pricing_table_button_icon_new'])) {
|
|
Icons_Manager::render_icon( $settings['eael_pricing_table_button_icon_new'], [ 'class' => 'fa-icon-left'] );
|
|
} else {?>
|
|
<i class="<?php echo esc_attr($settings['eael_pricing_table_button_icon']); ?> fa-icon-left"></i>
|
|
<?php }?>
|
|
<?php echo esc_html( $settings['eael_pricing_table_btn'] ); ?>
|
|
<?php elseif ('right' == $settings['eael_pricing_table_button_icon_alignment']): ?>
|
|
<?php echo esc_html( $settings['eael_pricing_table_btn'] ); ?>
|
|
<?php
|
|
if (empty($settings['eael_pricing_table_button_icon']) || isset($settings['__fa4_migrated']['eael_pricing_table_button_icon_new'])) {
|
|
Icons_Manager::render_icon( $settings['eael_pricing_table_button_icon_new'], [ 'class' => 'fa-icon-right'] );
|
|
} else {?>
|
|
<i class="<?php echo esc_attr($obj->get_settings('eael_pricing_table_button_icon')); ?> fa-icon-right"></i>
|
|
<?php }?>
|
|
<?php endif;?>
|
|
</a>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
</div>
|
|
</div>
|
|
<?php endif;
|
|
if ('style-4' === $settings['eael_pricing_table_style']): ?>
|
|
<div class="eael-pricing style-4"<?php echo $inline_style ? ' style="overflow: hidden;"' : ''; ?>>
|
|
<div class="eael-pricing-item <?php echo esc_attr($featured_class); ?>">
|
|
<div class="eael-pricing-image">
|
|
<div class="eael-pricing-tag">
|
|
<?php
|
|
$html = '<span class="price-tag">' . $pricing . '</span>';
|
|
$html .= '<span class="price-period">' . $settings['eael_pricing_table_period_separator'] . $settings['eael_pricing_table_price_period'] . '</span>';
|
|
echo wp_kses( $html, Helper::eael_allowed_tags() );
|
|
?>
|
|
</div>
|
|
</div>
|
|
<div class="header">
|
|
<h2 class="title"><?php echo esc_html( $settings['eael_pricing_table_title'] ); ?></h2>
|
|
<span class="subtitle"><?php echo esc_html( $settings['eael_pricing_table_sub_title'] ); ?></span>
|
|
</div>
|
|
<div class="body">
|
|
<?php $obj->render_feature_list($settings, $obj);?>
|
|
</div>
|
|
|
|
<?php if( isset( $settings['eael_pricing_table_button_show'] ) && 'yes' === $settings['eael_pricing_table_button_show'] ): ?>
|
|
<div class="footer">
|
|
<a <?php echo $obj->get_render_attribute_string('eael_pricing_button_'.esc_attr( $widget_id )); ?> >
|
|
<?php if ('left' == $settings['eael_pricing_table_button_icon_alignment']): ?>
|
|
<?php
|
|
if (empty($settings['eael_pricing_table_button_icon']) || isset($settings['__fa4_migrated']['eael_pricing_table_button_icon_new'])) {
|
|
Icons_Manager::render_icon( $settings['eael_pricing_table_button_icon_new'], [ 'class' => 'fa-icon-left'] );
|
|
} else {?>
|
|
<i class="<?php echo esc_attr($settings['eael_pricing_table_button_icon']); ?> fa-icon-left"></i>
|
|
<?php }?>
|
|
<?php echo esc_html( $settings['eael_pricing_table_btn'] ); ?>
|
|
<?php elseif ('right' == $settings['eael_pricing_table_button_icon_alignment']): ?>
|
|
<?php echo esc_html( $settings['eael_pricing_table_btn'] ); ?>
|
|
<?php
|
|
if (empty($settings['eael_pricing_table_button_icon']) || isset($settings['__fa4_migrated']['eael_pricing_table_button_icon_new'])) {
|
|
Icons_Manager::render_icon( $settings['eael_pricing_table_button_icon_new'], [ 'class' => 'fa-icon-right'] );
|
|
} else {?>
|
|
<i class="<?php echo esc_attr($settings['eael_pricing_table_button_icon']); ?> fa-icon-right"></i>
|
|
<?php }?>
|
|
<?php endif;?>
|
|
</a>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
</div>
|
|
</div>
|
|
<?php endif;
|
|
if ('style-5' === $settings['eael_pricing_table_style']): ?>
|
|
<div class="eael-pricing style-5" <?php echo $inline_style ? ' style="overflow: hidden;"' : ''; ?>>
|
|
<div class="eael-pricing-item <?php echo ($settings['eael_pricing_table_style_five_header_layout'] !== 'two' ? esc_attr($featured_class) : ''); ?>">
|
|
<div class="header">
|
|
<?php if (!empty($settings['eael_pricing_table_style_2_icon_new']['value'])): ?>
|
|
<div class="eael-pricing-icon<?php print($settings['eael_pricing_table_style_five_icon_and_title_style'] === 'yes' ? ' inline' : '');?>">
|
|
<span class="icon"
|
|
style="background:<?php if ('yes' != $settings['eael_pricing_table_icon_bg_show']): echo 'none';endif;?>;">
|
|
<?php
|
|
if (empty($settings['eael_pricing_table_style_2_icon']) || isset($settings['__fa4_migrated']['eael_pricing_table_style_2_icon_new'])) {
|
|
Icons_Manager::render_icon( $settings['eael_pricing_table_style_2_icon_new'] );
|
|
} else {?>
|
|
<i class="<?php echo esc_attr($settings['eael_pricing_table_style_2_icon']); ?>"></i>
|
|
<?php }?>
|
|
</span>
|
|
</div>
|
|
<?php
|
|
endif; // icon
|
|
if (!empty($settings['eael_pricing_table_title'])):
|
|
?>
|
|
<h2 class="title <?php print($settings['eael_pricing_table_style_five_icon_and_title_style'] === 'yes' ? ' inline' : '');?>"><?php echo esc_html( $settings['eael_pricing_table_title'] ); ?></h2>
|
|
<?php
|
|
endif; // title
|
|
if (!empty($settings['eael_pricing_table_sub_title'])):
|
|
?>
|
|
<span class="subtitle"><?php echo esc_html( $settings['eael_pricing_table_sub_title'] ); ?></span>
|
|
<?php
|
|
endif;
|
|
if ($settings['eael_pricing_table_style_five_header_layout'] == 'one'):
|
|
?>
|
|
<div class="eael-pricing-image">
|
|
<div class="eael-pricing-tag">
|
|
<?php
|
|
$html = '<span class="price-tag">' . $pricing . '</span>';
|
|
$html .= '<span class="price-period">' . $settings['eael_pricing_table_period_separator'] . $settings['eael_pricing_table_price_period'] . '</span>';
|
|
echo wp_kses( $html, Helper::eael_allowed_tags() );
|
|
?>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
endif;
|
|
?>
|
|
</div>
|
|
<?php
|
|
if ($settings['eael_pricing_table_style_five_header_layout'] == 'two'):
|
|
?>
|
|
<div class="eael-pricing-image <?php echo esc_attr($featured_class); ?>" <?php echo $inline_style ? ' style="overflow: hidden;"' : ''; ?>>
|
|
<div class="eael-pricing-tag">
|
|
<?php
|
|
$html = '<span class="price-tag">' . $pricing . '</span>';
|
|
$html .= '<span class="price-period">' . $settings['eael_pricing_table_period_separator'] . $settings['eael_pricing_table_price_period'] . '</span>';
|
|
echo wp_kses( $html, Helper::eael_allowed_tags() );
|
|
?>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
endif;
|
|
?>
|
|
<div class="body">
|
|
<?php $obj->render_feature_list($settings, $obj);?>
|
|
</div>
|
|
|
|
<?php if( isset( $settings['eael_pricing_table_button_show'] ) && 'yes' === $settings['eael_pricing_table_button_show'] ): ?>
|
|
<div class="footer">
|
|
<a <?php echo $obj->get_render_attribute_string('eael_pricing_button_'. esc_attr( $widget_id ) ); ?>>
|
|
<?php if ('left' == $settings['eael_pricing_table_button_icon_alignment']): ?>
|
|
<?php
|
|
if (empty($settings['eael_pricing_table_button_icon']) || isset($settings['__fa4_migrated']['eael_pricing_table_button_icon_new'])) {
|
|
Icons_Manager::render_icon( $settings['eael_pricing_table_button_icon_new'], [ 'class' => 'fa-icon-left' ] );
|
|
} else {?>
|
|
<i class="<?php echo esc_attr($settings['eael_pricing_table_button_icon']); ?> fa-icon-left"></i>
|
|
<?php }?>
|
|
<?php echo esc_html( $settings['eael_pricing_table_btn'] ); ?>
|
|
<?php elseif ('right' == $settings['eael_pricing_table_button_icon_alignment']): ?>
|
|
<?php echo esc_html( $settings['eael_pricing_table_btn'] ); ?>
|
|
<?php if (empty($settings['eael_pricing_table_button_icon']) || isset($settings['__fa4_migrated']['eael_pricing_table_button_icon_new'])) {
|
|
Icons_Manager::render_icon( $settings['eael_pricing_table_button_icon_new'], [ 'class' => 'fa-icon-right' ] );
|
|
} else {?>
|
|
<i class="<?php echo esc_attr($settings['eael_pricing_table_button_icon']); ?> fa-icon-right"></i>
|
|
<?php }?>
|
|
<?php endif;?>
|
|
</a>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
</div>
|
|
</div>
|
|
<?php endif;
|
|
}
|
|
|
|
public function add_admin_licnes_markup_html()
|
|
{
|
|
do_action('eael_licensing');
|
|
}
|
|
|
|
public function add_eael_premium_support_link()
|
|
{
|
|
?>
|
|
<p><?php echo esc_html__('Stuck with something? Get help from live chat or support ticket.', 'essential-addons-elementor'); ?></p>
|
|
<a href="https://wpdeveloper.com"
|
|
class="ea-button"
|
|
target="_blank"><?php echo esc_html__('Initiate a Chat', 'essential-addons-elementor'); ?></a>
|
|
<?php
|
|
}
|
|
|
|
public function add_eael_additional_support_links()
|
|
{
|
|
?>
|
|
<div class="eael-admin-block eael-admin-block-community">
|
|
<header class="eael-admin-block-header">
|
|
<div class="eael-admin-block-header-icon">
|
|
<img src="<?php echo esc_url( EAEL_PRO_PLUGIN_URL . 'assets/admin/images/icon-join-community.svg' ); ?>"
|
|
alt="join-essential-addons-community">
|
|
</div>
|
|
<h4 class="eael-admin-title">
|
|
Join the Community</h4>
|
|
</header>
|
|
<div class="eael-admin-block-content">
|
|
<p><?php echo esc_html__('Join the Facebook community and discuss with fellow developers and users. Best way to connect with people and get feedback on your projects.', 'essential-addons-elementor'); ?></p>
|
|
|
|
<a href="https://www.facebook.com/groups/essentialaddons"
|
|
class="review-flexia ea-button"
|
|
target="_blank"><?php echo esc_html__('Join Facebook Community', 'essential-addons-elementor'); ?></a>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
public function add_manage_linces_action_link()
|
|
{
|
|
$link_text = __('Manage License', 'essential-addons-elementor');
|
|
printf('<a class="eael-button button__themeColor" href="https://wpdeveloper.com/account" target="_blank">%s</a>', esc_html( $link_text ) );
|
|
}
|
|
|
|
public function team_member_presets_condition($options)
|
|
{
|
|
return [];
|
|
}
|
|
|
|
public function add_team_member_circle_presets($obj)
|
|
{
|
|
$obj->add_responsive_control(
|
|
'eael_team_members_image_height',
|
|
[
|
|
'label' => esc_html__('Image Height', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'range' => [
|
|
'em' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 1000,
|
|
],
|
|
],
|
|
'size_units' => ['px', 'em'],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-team-item figure img' => 'height:{{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
'eael_team_members_preset!' => 'eael-team-members-circle',
|
|
],
|
|
]
|
|
);
|
|
|
|
$obj->add_responsive_control(
|
|
'eael_team_members_circle_image_width',
|
|
[
|
|
'label' => esc_html__('Image Width', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'default' => [
|
|
'size' => 150,
|
|
'unit' => 'px',
|
|
],
|
|
'range' => [
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 1000,
|
|
],
|
|
],
|
|
'size_units' => ['px'],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-team-item.eael-team-members-circle figure img' => 'width:{{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
'eael_team_members_preset' => 'eael-team-members-circle',
|
|
],
|
|
]
|
|
);
|
|
|
|
$obj->add_responsive_control(
|
|
'eael_team_members_circle_image_height',
|
|
[
|
|
'label' => esc_html__('Image Height', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'default' => [
|
|
'size' => 150,
|
|
'unit' => 'px',
|
|
],
|
|
'range' => [
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 1000,
|
|
],
|
|
],
|
|
'size_units' => ['px'],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .eael-team-item.eael-team-members-circle figure img' => 'height:{{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
'eael_team_members_preset' => 'eael-team-members-circle',
|
|
],
|
|
]
|
|
);
|
|
}
|
|
|
|
public function add_team_member_social_bottom_markup($settings, $obj)
|
|
{
|
|
?>
|
|
<p class="eael-team-text"><?php echo wp_kses( $settings['eael_team_member_description'], Helper::eael_allowed_tags() ); ?></p>
|
|
<?php if (!empty($settings['eael_team_member_enable_social_profiles'])): ?>
|
|
<ul class="eael-team-member-social-profiles">
|
|
<?php
|
|
foreach ($settings['eael_team_member_social_profile_links'] as $key => $item):
|
|
$icon_migrated = isset($item['__fa4_migrated']['social_new']);
|
|
$icon_is_new = empty($item['social']);
|
|
$attr_key = 'eael_team_social_link_'.$item['_id'];
|
|
$obj->add_render_attribute( $attr_key, 'class', 'eael-team-social-link' );
|
|
|
|
if( !empty( $item['link']['url'] ) ){
|
|
$obj->add_link_attributes( $attr_key, $item['link'] );
|
|
}
|
|
?>
|
|
<li class="eael-team-member-social-link">
|
|
<a <?php $obj->print_render_attribute_string( $attr_key ) ?>>
|
|
<?php
|
|
if ($icon_is_new || $icon_migrated) {
|
|
\Elementor\Icons_Manager::render_icon( $item['social_new'], [ 'aria-hidden' => 'true' ] );
|
|
} else {?>
|
|
<i class="<?php echo esc_attr($item['social']); ?>"></i>
|
|
<?php }?>
|
|
</a>
|
|
</li>
|
|
<?php endforeach;?>
|
|
</ul>
|
|
<?php endif;
|
|
}
|
|
|
|
public function add_team_member_social_right_markup($settings, $obj)
|
|
{
|
|
?>
|
|
<?php if (!empty($settings['eael_team_member_enable_social_profiles'])): ?>
|
|
<ul class="eael-team-member-social-profiles">
|
|
<?php foreach ($settings['eael_team_member_social_profile_links'] as $item): ?>
|
|
<?php if (!empty($item['social_new'])):
|
|
$attr_key = 'eael_team_social_link_'.$item['_id'];
|
|
$obj->add_render_attribute( $attr_key, 'class', 'eael-team-social-link' );
|
|
|
|
if( !empty( $item['link']['url'] ) ){
|
|
$obj->add_link_attributes( $attr_key, $item['link'] );
|
|
}
|
|
?>
|
|
<li class="eael-team-member-social-link">
|
|
<a <?php echo $obj->get_render_attribute_string( esc_attr( $attr_key ) ) ?>>
|
|
<?php \Elementor\Icons_Manager::render_icon( $item['social_new'], [ 'aria-hidden' => 'true' ] ); ?>
|
|
</a>
|
|
</li>
|
|
<?php endif;?>
|
|
<?php endforeach;?>
|
|
</ul>
|
|
<?php endif;
|
|
}
|
|
|
|
// Advanced Data Table
|
|
public function advanced_data_table_source_control($wb)
|
|
{
|
|
// database
|
|
$wb->add_control('ea_adv_data_table_source_database_query_type', [
|
|
'label' => esc_html__('Select Query', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => [
|
|
'table' => 'Table',
|
|
'query' => 'MySQL Query',
|
|
],
|
|
'default' => 'table',
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'database',
|
|
],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_database_table', [
|
|
'label' => esc_html__('Select Table', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => Helper::list_db_tables(),
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'database',
|
|
'ea_adv_data_table_source_database_query_type' => 'table',
|
|
],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_database_query', [
|
|
'label' => esc_html__('MySQL Query', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXTAREA,
|
|
'placeholder' => 'e.g. SELECT * FROM `table`',
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'database',
|
|
'ea_adv_data_table_source_database_query_type' => 'query',
|
|
],
|
|
]);
|
|
|
|
// remote
|
|
$wb->add_control('ea_adv_data_table_source_remote_host', [
|
|
'label' => __('Host', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'remote',
|
|
'ea_adv_data_table_source_remote_connected' => false,
|
|
],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_remote_username', [
|
|
'label' => __('Username', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'remote',
|
|
'ea_adv_data_table_source_remote_connected' => false,
|
|
],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_remote_password', [
|
|
'label' => __('Password', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'input_type' => 'password',
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'remote',
|
|
'ea_adv_data_table_source_remote_connected' => false,
|
|
],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_remote_database', [
|
|
'label' => __('Database', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'remote',
|
|
'ea_adv_data_table_source_remote_connected' => false,
|
|
],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_remote_connect', [
|
|
'label' => __('Connect DB', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::BUTTON,
|
|
'text' => __('Connect', 'essential-addons-elementor'),
|
|
'event' => 'ea:advTable:connect',
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'remote',
|
|
'ea_adv_data_table_source_remote_connected' => false,
|
|
],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_remote_disconnect', [
|
|
'label' => __('Disconnect DB', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::BUTTON,
|
|
'text' => __('Disconnect', 'essential-addons-elementor'),
|
|
'event' => 'ea:advTable:disconnect',
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'remote',
|
|
'ea_adv_data_table_source_remote_connected' => true,
|
|
],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_remote_connected', [
|
|
'type' => Controls_Manager::HIDDEN,
|
|
'default' => false,
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_remote_tables', [
|
|
'type' => Controls_Manager::HIDDEN,
|
|
'default' => [],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_dynamic_th_width', [
|
|
'type' => Controls_Manager::HIDDEN,
|
|
'default' => [],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_remote_query_type', [
|
|
'label' => esc_html__('Select Query', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => [
|
|
'table' => 'Table',
|
|
'query' => 'MySQL Query',
|
|
],
|
|
'default' => 'table',
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'remote',
|
|
'ea_adv_data_table_source_remote_connected' => true,
|
|
],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_remote_table', [
|
|
'label' => esc_html__('Select Table', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => [],
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'remote',
|
|
'ea_adv_data_table_source_remote_connected' => true,
|
|
'ea_adv_data_table_source_remote_query_type' => 'table',
|
|
],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_remote_query', [
|
|
'label' => esc_html__('MySQL Query', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXTAREA,
|
|
'placeholder' => 'e.g. SELECT * FROM `table`',
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'remote',
|
|
'ea_adv_data_table_source_remote_connected' => true,
|
|
'ea_adv_data_table_source_remote_query_type' => 'query',
|
|
],
|
|
]);
|
|
|
|
// google sheet
|
|
$wb->add_control('ea_adv_data_table_source_google_api_key', [
|
|
'label' => __('API Key', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'google',
|
|
],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_google_sheet_id', [
|
|
'label' => __('Sheet ID', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'google',
|
|
],
|
|
]);
|
|
|
|
$wb->add_control('ea_adv_data_table_source_google_table_range', [
|
|
'label' => __('Table Range', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'google',
|
|
],
|
|
]);
|
|
|
|
// tablepress
|
|
if (apply_filters('eael/is_plugin_active', 'tablepress/tablepress.php')) {
|
|
$wb->add_control('ea_adv_data_table_source_tablepress_table_id', [
|
|
'label' => esc_html__('Table ID', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => Helper::list_tablepress_tables(),
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'tablepress',
|
|
],
|
|
]);
|
|
} else {
|
|
$wb->add_control('ea_adv_data_table_tablepress_required', [
|
|
'type' => Controls_Manager::RAW_HTML,
|
|
'raw' => __('<strong>TablePress</strong> is not installed/activated on your site. Please install and activate <a href="plugin-install.php?s=TablePress&tab=search&type=term" target="_blank">TablePress</a> first.', 'essential-addons-for-elementor'),
|
|
'content_classes' => 'eael-warning',
|
|
'condition' => [
|
|
'ea_adv_data_table_source' => 'tablepress',
|
|
],
|
|
]);
|
|
}
|
|
}
|
|
|
|
public function event_calendar_source_control($obj)
|
|
{
|
|
if (apply_filters('eael/is_plugin_active', 'eventON/eventon.php')) {
|
|
$obj->start_controls_section('eael_event_calendar_eventon_section', [
|
|
'label' => __('EventON', 'essential-addons-for-elementor'),
|
|
'condition' => [
|
|
'eael_event_calendar_type' => 'eventon',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_eventon_calendar_fetch', [
|
|
'label' => __('Get Events', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::SELECT,
|
|
'label_block' => true,
|
|
'default' => ['all'],
|
|
'options' => [
|
|
'all' => __('All', 'essential-addons-for-elementor'),
|
|
'date_range' => __('Date Range', 'essential-addons-for-elementor'),
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_eventon_calendar_start_date', [
|
|
'label' => __('Start Date', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::DATE_TIME,
|
|
'default' => date('Y-m-d H:i', current_time('timestamp', 0)),
|
|
'condition' => [
|
|
'eael_eventon_calendar_fetch' => 'date_range',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_eventon_calendar_end_date', [
|
|
'label' => __('End Date', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::DATE_TIME,
|
|
'default' => date('Y-m-d H:i', strtotime("+6 months", current_time('timestamp', 0))),
|
|
'condition' => [
|
|
'eael_eventon_calendar_fetch' => 'date_range',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('eael_eventon_calendar_post_tag', [
|
|
'label' => __('Event Tag', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::SELECT2,
|
|
'multiple' => true,
|
|
'label_block' => true,
|
|
'default' => [],
|
|
'options' => Helper::get_tags_list([
|
|
'taxonomy' => 'post_tag',
|
|
'hide_empty' => false,
|
|
]),
|
|
]);
|
|
|
|
$taxonomies = Helper::get_taxonomies_by_post(['object_type' => 'ajde_events']);
|
|
|
|
unset($taxonomies['event_location'], $taxonomies['post_tag'], $taxonomies['event_organizer']);
|
|
|
|
foreach ($taxonomies as $taxonomie) {
|
|
$key = 'eael_eventon_calendar_' . $taxonomie;
|
|
$obj->add_control($key, [
|
|
'label' => ucwords(str_replace('_', ' ', $taxonomie)),
|
|
'type' => Controls_Manager::SELECT2,
|
|
'multiple' => true,
|
|
'label_block' => true,
|
|
'default' => [],
|
|
'options' => Helper::get_tags_list([
|
|
'taxonomy' => $taxonomie,
|
|
'hide_empty' => false,
|
|
]),
|
|
]);
|
|
}
|
|
|
|
$obj->add_control('eael_eventon_calendar_event_location', [
|
|
'label' => __('Event Location', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::SELECT2,
|
|
'multiple' => true,
|
|
'label_block' => true,
|
|
'default' => [],
|
|
'options' => Helper::get_tags_list([
|
|
'taxonomy' => 'event_location',
|
|
'hide_empty' => false,
|
|
]),
|
|
]);
|
|
|
|
$obj->add_control('eael_eventon_calendar_event_organizer', [
|
|
'label' => __('Event Organizer', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::SELECT2,
|
|
'multiple' => true,
|
|
'label_block' => true,
|
|
'default' => [],
|
|
'options' => Helper::get_tags_list([
|
|
'taxonomy' => 'event_organizer',
|
|
'hide_empty' => false,
|
|
]),
|
|
]);
|
|
|
|
$obj->add_control('eael_eventon_calendar_max_result', [
|
|
'label' => __('Max Result', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::NUMBER,
|
|
'min' => 1,
|
|
'default' => 100,
|
|
]);
|
|
|
|
$obj->end_controls_section();
|
|
}
|
|
}
|
|
|
|
public function event_calendar_activation_notice($obj)
|
|
{
|
|
if (!apply_filters('eael/is_plugin_active', 'eventON/eventon.php')) {
|
|
$obj->add_control('eael_eventon_warning_text', [
|
|
'type' => Controls_Manager::RAW_HTML,
|
|
'raw' => __('<strong>EventON</strong> is not installed/activated on your site. Please install and activate <a href="https://codecanyon.net/item/eventon-wordpress-event-calendar-plugin/1211017" target="_blank">EventON</a> first.', 'essential-addons-for-elementor'),
|
|
'content_classes' => 'eael-warning',
|
|
'condition' => [
|
|
'eael_event_calendar_type' => 'eventon',
|
|
],
|
|
]);
|
|
}
|
|
}
|
|
|
|
public function advanced_data_table_database_integration($settings)
|
|
{
|
|
global $wpdb;
|
|
|
|
$html = '';
|
|
$results = [];
|
|
|
|
// suppress error
|
|
$wpdb->suppress_errors = true;
|
|
|
|
// collect data
|
|
if ($settings['ea_adv_data_table_source_database_query_type'] == 'table') {
|
|
$table = $settings["ea_adv_data_table_source_database_table"];
|
|
$results = $wpdb->get_results("SELECT * FROM $table", ARRAY_A);
|
|
} else {
|
|
if (empty($settings['ea_adv_data_table_source_database_query'])) {
|
|
return;
|
|
}
|
|
|
|
if( !$this->eael_valid_select_query( $settings['ea_adv_data_table_source_database_query'] ) ){
|
|
return $results;
|
|
}
|
|
|
|
$results = $wpdb->get_results($settings['ea_adv_data_table_source_database_query'], ARRAY_A);
|
|
}
|
|
|
|
if (is_wp_error($results)) {
|
|
return $results->get_error_message();
|
|
}
|
|
|
|
if (!empty($results)) {
|
|
$html .= '<thead><tr>';
|
|
foreach (array_keys($results[0]) as $key => $th) {
|
|
$style = isset($settings['ea_adv_data_table_dynamic_th_width']) && isset($settings['ea_adv_data_table_dynamic_th_width'][$key]) ? ' style="width:' . $settings['ea_adv_data_table_dynamic_th_width'][$key] . '"' : '';
|
|
$html .= '<th' . $style . '>' . $th . '</th>';
|
|
}
|
|
$html .= '</tr></thead>';
|
|
|
|
$html .= '<tbody>';
|
|
foreach ($results as $tr) {
|
|
$html .= '<tr>';
|
|
foreach ($tr as $td) {
|
|
$html .= '<td>' . $td . '</td>';
|
|
}
|
|
$html .= '</tr>';
|
|
}
|
|
$html .= '</tbody>';
|
|
}
|
|
|
|
// enable error reporting
|
|
$wpdb->suppress_errors = false;
|
|
|
|
return $html;
|
|
}
|
|
|
|
/**
|
|
* advanced_data_table_remote_database_integration
|
|
* Access remote database using settings info ,after that fetch table data and
|
|
* Preview in Advance Data Table widget
|
|
*
|
|
*
|
|
* @param $settings array elementor settings data
|
|
*
|
|
* @access public
|
|
* @return array|string|void
|
|
* @since 3.1.0
|
|
*/
|
|
public function advanced_data_table_remote_database_integration( $settings ) {
|
|
global $wpdb;
|
|
|
|
$html = '';
|
|
$results = [];
|
|
|
|
// suppress error
|
|
$wpdb->suppress_errors = true;
|
|
|
|
// collect data
|
|
if ( $settings['ea_adv_data_table_source'] == 'remote' ) {
|
|
if ( empty( $settings['ea_adv_data_table_source_remote_host'] ) || empty( $settings['ea_adv_data_table_source_remote_username'] ) || empty( $settings['ea_adv_data_table_source_remote_password'] ) || empty( $settings['ea_adv_data_table_source_remote_database'] ) ) {
|
|
return;
|
|
}
|
|
|
|
if ( $settings['ea_adv_data_table_source_remote_connected'] == false ) {
|
|
return;
|
|
}
|
|
|
|
$conn = new mysqli( $settings['ea_adv_data_table_source_remote_host'], $settings['ea_adv_data_table_source_remote_username'], $settings['ea_adv_data_table_source_remote_password'], $settings['ea_adv_data_table_source_remote_database'] );
|
|
|
|
if ( $conn->connect_error ) {
|
|
return "Failed to connect to MySQL: " . $conn->connect_error;
|
|
} else {
|
|
$conn->set_charset( "utf8" );
|
|
|
|
if ( $settings['ea_adv_data_table_source_remote_query_type'] == 'table' ) {
|
|
$table = $settings['ea_adv_data_table_source_remote_table'];
|
|
$query = $conn->query( "SELECT * FROM $table" );
|
|
|
|
if ( $query ) { //@todo we have to cache data for optimize site speed and mysql query request
|
|
$results = $query->fetch_all( MYSQLI_ASSOC );
|
|
}
|
|
} else {
|
|
|
|
if ( ! $this->eael_valid_select_query( $settings['ea_adv_data_table_source_remote_query'] ) ) {
|
|
return $results;
|
|
}
|
|
|
|
if ( $settings['ea_adv_data_table_source_remote_query'] ) {
|
|
$query = $conn->query( $settings['ea_adv_data_table_source_remote_query'] );
|
|
|
|
if ( $query ) {
|
|
$results = $query->fetch_all( MYSQLI_ASSOC );
|
|
}
|
|
}
|
|
}
|
|
|
|
$conn->close();
|
|
}
|
|
}
|
|
|
|
if ( ! empty( $results ) ) {
|
|
$html .= '<thead><tr>';
|
|
foreach ( array_keys( $results[0] ) as $key => $th ) {
|
|
$style = isset( $settings['ea_adv_data_table_dynamic_th_width'] ) && isset( $settings['ea_adv_data_table_dynamic_th_width'][ $key ] ) ? ' style="width:' . $settings['ea_adv_data_table_dynamic_th_width'][ $key ] . '"' : '';
|
|
$html .= '<th' . $style . '>' . $th . '</th>';
|
|
}
|
|
$html .= '</tr></thead>';
|
|
|
|
$html .= '<tbody>';
|
|
foreach ( $results as $tr ) {
|
|
$html .= '<tr>';
|
|
foreach ( $tr as $td ) {
|
|
$html .= '<td>' . $td . '</td>';
|
|
}
|
|
$html .= '</tr>';
|
|
}
|
|
$html .= '</tbody>';
|
|
}
|
|
|
|
// enable error reporting
|
|
$wpdb->suppress_errors = false;
|
|
|
|
return $html;
|
|
}
|
|
|
|
public function advanced_data_table_google_sheets_integration($settings)
|
|
{
|
|
if (empty($settings['ea_adv_data_table_source_google_api_key']) || empty($settings['ea_adv_data_table_source_google_sheet_id']) || empty($settings['ea_adv_data_table_source_google_table_range'])) {
|
|
return;
|
|
}
|
|
|
|
$arg = [
|
|
'google_sheet_api_key' => $settings['ea_adv_data_table_source_google_api_key'],
|
|
'google_sheet_id' => $settings['ea_adv_data_table_source_google_sheet_id'],
|
|
'table_range' => $settings['ea_adv_data_table_source_google_table_range'],
|
|
'cache_time' => $settings['ea_adv_data_table_data_cache_limit'],
|
|
];
|
|
|
|
$thead = '';
|
|
$tbody = '';
|
|
|
|
$transient_key = 'ea_adv_data_table_source_google_sheet_' . md5(implode('', $arg));
|
|
|
|
$results = get_transient( $transient_key );
|
|
|
|
if ( empty( $results ) || empty( $results['rowData'] ) ) {
|
|
$connection = wp_remote_get( "https://sheets.googleapis.com/v4/spreadsheets/{$settings['ea_adv_data_table_source_google_sheet_id']}/?key={$settings['ea_adv_data_table_source_google_api_key']}&ranges={$settings['ea_adv_data_table_source_google_table_range']}&includeGridData=true", [ 'timeout' => 70 ] );
|
|
|
|
if ( ! is_wp_error( $connection ) ) {
|
|
$connection = json_decode( wp_remote_retrieve_body( $connection ), true );
|
|
if ( isset( $connection['sheets'][0]['data'][0]['rowData'] ) ) {
|
|
$results = [];
|
|
$results['rowData'] = $connection['sheets'][0]['data'][0]['rowData'];
|
|
$results['startRow'] = empty( $connection['sheets'][0]['data'][0]['startRow'] ) ? 0 : $connection['sheets'][0]['data'][0]['startRow'];
|
|
$results['startColumn'] = empty( $connection['sheets'][0]['data'][0]['startColumn'] ) ? 0 : $connection['sheets'][0]['data'][0]['startColumn'];
|
|
|
|
$table_range = explode( ':', $arg['table_range'] );
|
|
|
|
if ( empty( $table_range[1] ) ) {
|
|
if ( empty( $connection['namedRanges'] ) ) {
|
|
$endRow = $results['startRow'] + 1;
|
|
$endColumn = $results['startColumn'] + 1;
|
|
} elseif ( count( $connection['namedRanges'] ) === 1 ) {
|
|
$endRow = $connection['namedRanges'][0]['range']['endRowIndex'];
|
|
$endColumn = $connection['namedRanges'][0]['range']['endColumnIndex'];
|
|
} else {
|
|
foreach ( $connection['namedRanges'] as $range ) {
|
|
if ( $range['name'] === $arg['table_range'] ) {
|
|
$endRow = $range['range']['endRowIndex'];
|
|
$endColumn = $range['range']['endColumnIndex'];
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
$table_range = strrev( $table_range[1] . '1' ); // Added extra 1 digit in last so that after flip the number pattern will ok. ex: 20 flip is 02 but 201 flip is 102
|
|
$table_range = sscanf( $table_range, '%d%s' );
|
|
$table_range = array_map( 'strrev', $table_range ); // Flip again to get exact value
|
|
$endRow = substr( $table_range[0], 0, - 1 ); // Remove the extra last digit
|
|
$endColumn = strtoupper( $table_range[1] );
|
|
$alphabet_to_int = array_flip( range( 'A', 'Z' ) );
|
|
|
|
if ( strlen( $endColumn ) === 1 ) {
|
|
$endColumn = $alphabet_to_int[ $endColumn ] + 1;
|
|
} else {
|
|
$sum = 0;
|
|
for ( $i = 0; $i < strlen( $endColumn ); $i ++ ) {
|
|
$sum = $sum * 26 + $alphabet_to_int[ $endColumn[ $i ] ] + 1;
|
|
}
|
|
$endColumn = $sum;
|
|
}
|
|
}
|
|
|
|
$results['rowCount'] = absint( $endRow ) - $results['startRow'];
|
|
$results['columnCount'] = absint( $endColumn ) - $results['startColumn'];
|
|
|
|
if ( isset( $connection['sheets'][0]['merges'] ) && is_array( $connection['sheets'][0]['merges'] ) ) {
|
|
$results['mergeData'] = $connection['sheets'][0]['merges'];
|
|
}
|
|
|
|
set_transient( $transient_key, $results, $settings['ea_adv_data_table_data_cache_limit'] * MINUTE_IN_SECONDS );
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! empty( $results['rowData'] ) ) {
|
|
if ( ! empty( $results['mergeData'] ) && is_array( $results['mergeData'] ) ) {
|
|
$merge_data_cell = [];
|
|
foreach ( $results['mergeData'] as $merge_data ) {
|
|
$attrs = [
|
|
'rowSpan' => '',
|
|
'colSpan' => '',
|
|
];
|
|
|
|
if ( ( $row_span = $merge_data['endRowIndex'] - $merge_data['startRowIndex'] ) !== 1 ) {
|
|
$attrs['rowSpan'] = "rowspan='{$row_span}'";
|
|
}
|
|
|
|
if ( ( $col_span = $merge_data['endColumnIndex'] - $merge_data['startColumnIndex'] ) !== 1 ) {
|
|
$attrs['colSpan'] = "colspan='{$col_span}'";
|
|
}
|
|
|
|
$startRowIndex = $merge_data['startRowIndex'] - $results['startRow'];
|
|
$startColumnIndex = $merge_data['startColumnIndex'] - $results['startColumn'];
|
|
$cell = "{$startRowIndex}-{$startColumnIndex}";
|
|
$merge_data_cell[ $cell ] = $attrs;
|
|
|
|
for ( $row = 0; $row < $row_span; $row ++ ) {
|
|
for ( $col = 0; $col < $col_span; $col ++ ) {
|
|
if ( $row == 0 && $col == 0 ) {
|
|
continue;
|
|
}
|
|
$rowindex = $startRowIndex + $row;
|
|
$colindex = $startColumnIndex + $col;
|
|
|
|
$merge_data_cell["{$rowindex}-{$colindex}"] = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ( $results['rowData'] as $tr_key => $tr ) {
|
|
|
|
if ( isset( $tr['values'] ) ) {
|
|
$tr = $tr['values'];
|
|
} else {
|
|
if ( $tr_key == 0 ) {
|
|
$thead .= '<tr>' . str_repeat( '<th> </th>', $results['columnCount'] ) . '</tr>';
|
|
} else {
|
|
$tbody .= '<tr>' . str_repeat( '<td> </td>', $results['columnCount'] ) . '</tr>';
|
|
}
|
|
continue;
|
|
}
|
|
|
|
if ($tr_key == 0) {
|
|
$thead .= '<tr>';
|
|
foreach ($tr as $key => $th) {
|
|
$cell = "{$tr_key}-{$key}";
|
|
if ( ! empty( $merge_data_cell[ $cell ] ) && $merge_data_cell[ $cell ] === true ) {
|
|
goto empty_th_cell;
|
|
}
|
|
|
|
$style = isset( $settings['ea_adv_data_table_dynamic_th_width'] ) && isset( $settings['ea_adv_data_table_dynamic_th_width'][ $key ] ) ? ' style="width:' . $settings['ea_adv_data_table_dynamic_th_width'][ $key ] . '"' : '';
|
|
$formattedValue = empty( $th['formattedValue'] ) ? '' : $th['formattedValue'];
|
|
$th = isset( $th['hyperlink'] ) ? '<a href="' . $th['hyperlink'] . '" target="_blank">' . $formattedValue . '</a>' : $formattedValue;
|
|
$row_span = empty( $merge_data_cell[ $cell ]['rowSpan'] ) ? '' : $merge_data_cell[ $cell ]['rowSpan'];
|
|
$col_span = empty( $merge_data_cell[ $cell ]['colSpan'] ) ? '' : $merge_data_cell[ $cell ]['colSpan'];
|
|
$merge_attr = " {$row_span} {$col_span}";
|
|
|
|
$thead .= '<th' . $style . $merge_attr . '>' . $th . '</th>';
|
|
|
|
empty_th_cell:
|
|
if ( count( $tr ) < $results['columnCount'] && count( $tr ) === $key + 1 ) {
|
|
$thead .= str_repeat( '<th> </th>', $results['columnCount'] - count( $tr ) );
|
|
}
|
|
}
|
|
$thead .= '</tr>';
|
|
} else {
|
|
$tbody .= '<tr>';
|
|
|
|
foreach ($tr as $key => $td) {
|
|
$cell = "{$tr_key}-{$key}";
|
|
if ( ! empty( $merge_data_cell[ $cell ] ) && $merge_data_cell[ $cell ] === true ) {
|
|
goto empty_td_cell;
|
|
}
|
|
|
|
$row_span = empty( $merge_data_cell[ $cell ]['rowSpan'] ) ? '' : $merge_data_cell[ $cell ]['rowSpan'];
|
|
$col_span = empty( $merge_data_cell[ $cell ]['colSpan'] ) ? '' : $merge_data_cell[ $cell ]['colSpan'];
|
|
$merge_attr = " {$row_span} {$col_span}";
|
|
$formattedValue = empty( $td['formattedValue'] ) ? '' : $td['formattedValue'];
|
|
$formattedValue = isset( $td['formattedValue'] ) && '0' === $td['formattedValue'] ? esc_html( $td['formattedValue'] ) : $formattedValue; // Fix for 0 value
|
|
$td = isset( $td['hyperlink'] ) ? '<a href="' . $td['hyperlink'] . '" target="_blank">' . $formattedValue . '</a>' : $formattedValue;
|
|
|
|
$tbody .= '<td' . $merge_attr . '>' . $td . '</td>';
|
|
|
|
empty_td_cell:
|
|
if ( count( $tr ) < $results['columnCount'] && count( $tr ) === $key + 1 ) {
|
|
$tbody .= str_repeat( '<td> </td>', $results['columnCount'] - count( $tr ) );
|
|
}
|
|
}
|
|
|
|
$tbody .= '</tr>';
|
|
}
|
|
|
|
if ( count( $results['rowData'] ) < $results['rowCount'] && count( $results['rowData'] ) === $tr_key + 1 ) {
|
|
$tbody .= str_repeat( '<tr>' . str_repeat( '<td> </td>', $results['columnCount'] ) . '</tr>', $results['rowCount'] - count( $results['rowData'] ) );
|
|
}
|
|
}
|
|
|
|
return '<thead>' . $thead . '</thead><tbody>' . $tbody . '</tbody>';
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
public function advanced_data_table_tablepress_integration($settings)
|
|
{
|
|
if (empty($settings['ea_adv_data_table_source_tablepress_table_id'])) {
|
|
return;
|
|
}
|
|
|
|
$html = '';
|
|
$tables_opt = get_option('tablepress_tables', '{}');
|
|
$tables_opt = json_decode($tables_opt, true);
|
|
$tables = $tables_opt['table_post'];
|
|
$table_id = $tables[$settings['ea_adv_data_table_source_tablepress_table_id']];
|
|
$table_data = get_post_field('post_content', $table_id);
|
|
$results = json_decode($table_data, true);
|
|
$table_settings = get_post_meta($table_id, '_tablepress_table_options', true);
|
|
$table_settings = json_decode($table_settings, true);
|
|
|
|
//return do_shortcode('[table id=1 /]');
|
|
if (!empty($results)) {
|
|
if ( ! empty( $table_settings ) && isset( $table_settings['table_head'] ) && $table_settings['table_head'] == true ) {
|
|
$html .= '<thead><tr>';
|
|
foreach ( $results[0] as $key => $th ) {
|
|
$style = isset( $settings['ea_adv_data_table_dynamic_th_width'] ) && isset( $settings['ea_adv_data_table_dynamic_th_width'][ $key ] ) ? ' style="width:' . $settings['ea_adv_data_table_dynamic_th_width'][ $key ] . '"' : '';
|
|
$colspan = 1;
|
|
while ( ! empty( $results[0][ $key + $colspan ] ) && $results[0][ $key + $colspan ] == '#colspan#' ) {
|
|
$colspan ++;
|
|
}
|
|
|
|
if ( $th == '#colspan#' ) {
|
|
continue;
|
|
}
|
|
$combine_cells = $colspan > 1 ? " colspan={$colspan} " : '';
|
|
$html .= '<th' . $combine_cells . $style . '>' . nl2br( $th ) . '</th>';
|
|
}
|
|
$html .= '</tr></thead>';
|
|
|
|
array_shift( $results );
|
|
}
|
|
|
|
$html .= '<tbody>';
|
|
foreach ($results as $index => $tr) {
|
|
$html .= '<tr>';
|
|
$col = false;
|
|
$row = [];
|
|
|
|
// for rowspan support
|
|
if ( ! empty( $results[ $index + 1 ] ) ) {
|
|
foreach ( $results[ $index + 1 ] as $next_key => $previous ) {
|
|
if ( $previous == '#rowspan#' ) {
|
|
$row[] = $next_key;
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ( $tr as $key => $td ) {
|
|
if ( $col ) {
|
|
$col = ! empty( $tr[ $key + 1 ] ) && $tr[ $key + 1 ] == '#colspan#';
|
|
continue;
|
|
}
|
|
|
|
$colspan = 1;
|
|
while ( ! empty( $tr[ $key + $colspan ] ) && $tr[ $key + $colspan ] == '#colspan#' ) {
|
|
$colspan ++;
|
|
}
|
|
$combine_cells = $colspan > 1 ? " colspan={$colspan} " : '';
|
|
$col = ! empty( $tr[ $key + 1 ] ) && $tr[ $key + 1 ] == '#colspan#';
|
|
|
|
if ( in_array( $key, $row ) ) {
|
|
$combine_cells = 'rowspan=2';
|
|
}
|
|
|
|
if ( $td == '#rowspan#' ) {
|
|
continue;
|
|
}
|
|
|
|
$html .= '<td ' . $combine_cells . '>' . nl2br( $td ) . '</td>';
|
|
}
|
|
$html .= '</tr>';
|
|
|
|
}
|
|
$html .= '</tbody>';
|
|
}
|
|
|
|
return $html;
|
|
}
|
|
|
|
public function event_calendar_eventon_integration($data, $settings)
|
|
{
|
|
if (!function_exists('EVO') || $settings['eael_event_calendar_type'] != 'eventon') {
|
|
return $data;
|
|
}
|
|
|
|
$default_attr = EVO()->calendar->get_supported_shortcode_atts();
|
|
$default_attr['event_count'] = $settings['eael_eventon_calendar_max_result'];
|
|
|
|
if ( $settings['eael_eventon_calendar_fetch'] == 'date_range' ) {
|
|
$default_attr['focus_start_date_range'] = strtotime( $settings['eael_eventon_calendar_start_date'] );
|
|
$default_attr['focus_end_date_range'] = strtotime( $settings['eael_eventon_calendar_end_date'] );
|
|
} else {
|
|
$default_attr['focus_start_date_range'] = strtotime( "-6 years", current_time( 'timestamp', 0 ) );
|
|
$default_attr['focus_end_date_range'] = strtotime( "+6 years", current_time( 'timestamp', 0 ) );
|
|
}
|
|
|
|
$cat_arr = Helper::get_taxonomies_by_post(['object_type' => 'ajde_events']);
|
|
|
|
foreach ($cat_arr as $key => $cat) {
|
|
|
|
$cat_id = 'eael_eventon_calendar_' . $key;
|
|
|
|
if (!empty($settings[$cat_id])) {
|
|
if ($cat == 'post_tag') {
|
|
$cat = 'event_tag';
|
|
}
|
|
$default_attr[$cat] = implode(',', $settings[$cat_id]);
|
|
}
|
|
}
|
|
|
|
EVO()->calendar->shortcode_args = $default_attr;
|
|
$content = EVO()->evo_generator->_generate_events();
|
|
$events = $content['data'];
|
|
|
|
if (!empty($events)) {
|
|
$data = [];
|
|
foreach ( $events as $key => $event ) {
|
|
$event_id = $event['ID'];
|
|
$date_format = 'Y-m-d';
|
|
$all_day = 'yes';
|
|
$featured = get_post_meta( $event_id, '_featured', true );
|
|
|
|
$end = date( $date_format, ( $event['event_end_unix'] + 86400 ) );
|
|
if ( get_post_meta( $event_id, 'evcal_allday', true ) === 'no' ) {
|
|
$date_format .= ' H:i';
|
|
$all_day = '';
|
|
$end = date( $date_format, $event['event_end_unix'] );
|
|
}
|
|
|
|
$start = date( $date_format, $event['event_start_unix'] );
|
|
|
|
if ( ! empty( $settings['eael_old_events_hide'] ) && 'yes' === $settings['eael_old_events_hide'] ) {
|
|
$is_old_event = $this->is_old_event_pro( $start );
|
|
if ( $is_old_event ) {
|
|
continue;
|
|
}
|
|
}
|
|
|
|
$data[] = [
|
|
'id' => $event_id,
|
|
'title' => ! empty( $event['event_title'] ) ? html_entity_decode( $event['event_title'], ENT_QUOTES ) : __( 'No Title', 'essential-addons-for-elementor' ),
|
|
'description' => $content = get_post_field( 'post_content', $event_id ),
|
|
'start' => $start,
|
|
'end' => $end,
|
|
'borderColor' => '#6231FF',
|
|
'textColor' => $settings['eael_event_global_text_color'],
|
|
'color' => ( $featured == 'yes' ) ? $settings['eael_event_on_featured_color'] : $settings['eael_event_global_bg_color'],
|
|
'url' => ( $settings['eael_event_details_link_hide'] !== 'yes' ) ? get_the_permalink( $event_id ) : '',
|
|
'allDay' => $all_day,
|
|
'external' => 'on',
|
|
'nofollow' => 'on',
|
|
'eventHasComplete' => get_post_meta( $event_id, '_completed', true ),
|
|
'hideEndDate' => get_post_meta( $event_id, 'evo_hide_endtime', true ),
|
|
];
|
|
}
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* Event Calendar: EventOn
|
|
*
|
|
* @since 5.1.2
|
|
*/
|
|
public function is_old_event_pro($start_date){
|
|
$today = strtotime( current_time( 'Y-m-d' ) );
|
|
$start_date_timestamp = strtotime( $start_date );
|
|
|
|
if ( $start_date_timestamp < $today ) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Woo Checkout Layout
|
|
*/
|
|
public function eael_woo_checkout_layout($layout)
|
|
{
|
|
if (apply_filters('eael/pro_enabled', false)) {
|
|
$layout['multi-steps'] = __('Multi Steps', 'essential-addons-elementor');
|
|
$layout['split'] = __('Split', 'essential-addons-elementor');
|
|
} else {
|
|
$layout['multi-steps'] = __('Multi Steps', 'essential-addons-elementor');
|
|
$layout['split'] = __('Split (Pro)', 'essential-addons-elementor');
|
|
}
|
|
|
|
return $layout;
|
|
}
|
|
|
|
/**
|
|
* Woo Checkout Layout Template
|
|
*/
|
|
public function add_woo_checkout_pro_layout($checkout, $settings)
|
|
{
|
|
if ($settings['ea_woo_checkout_layout'] == 'split') {
|
|
echo self::woo_checkout_render_split_template_($checkout, $settings);
|
|
} elseif ($settings['ea_woo_checkout_layout'] == 'multi-steps') {
|
|
echo self::woo_checkout_render_multi_steps_template_($checkout, $settings);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Woo Checkout Tab Data Settings
|
|
*/
|
|
public function add_woo_checkout_tabs_data($obj)
|
|
{
|
|
|
|
$obj->add_control('ea_woo_checkout_tabs_settings', [
|
|
'label' => __('Tabs Label', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::HEADING,
|
|
'separator' => 'before',
|
|
'condition' => [
|
|
'ea_woo_checkout_layout!' => 'default',
|
|
],
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tab_login_text', [
|
|
'label' => __('Login', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'default' => __('Login', 'essential-addons-elementor'),
|
|
'condition' => [
|
|
'ea_woo_checkout_layout!' => 'default',
|
|
],
|
|
'description' => 'To preview the changes in Login tab, turn on the Settings from \'Login\' section below.',
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tab_coupon_text', [
|
|
'label' => __('Coupon', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'default' => __('Coupon', 'essential-addons-elementor'),
|
|
'condition' => [
|
|
'ea_woo_checkout_layout!' => 'default',
|
|
],
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tab_billing_shipping_text', [
|
|
'label' => __('Billing & Shipping', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'default' => __('Billing & Shipping', 'essential-addons-elementor'),
|
|
'condition' => [
|
|
'ea_woo_checkout_layout!' => 'default',
|
|
],
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tab_payment_text', [
|
|
'label' => __('Payment', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'default' => __('Payment', 'essential-addons-elementor'),
|
|
'condition' => [
|
|
'ea_woo_checkout_layout!' => 'default',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('ea_woo_checkout_tabs_btn_settings', [
|
|
'label' => __('Previous/Next Label', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::HEADING,
|
|
'separator' => 'before',
|
|
'condition' => [
|
|
'ea_woo_checkout_layout!' => 'default',
|
|
],
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tabs_btn_next_text', [
|
|
'label' => __('Next', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'default' => __('Next', 'essential-addons-elementor'),
|
|
'condition' => [
|
|
'ea_woo_checkout_layout!' => 'default',
|
|
],
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tabs_btn_prev_text', [
|
|
'label' => __('Previous', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'default' => __('Previous', 'essential-addons-elementor'),
|
|
'condition' => [
|
|
'ea_woo_checkout_layout!' => 'default',
|
|
],
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Woo Checkout Layout
|
|
*/
|
|
public function add_woo_checkout_tabs_styles($obj)
|
|
{
|
|
|
|
$obj->start_controls_section('ea_section_woo_checkout_tabs_styles', [
|
|
'label' => esc_html__('Tabs', 'essential-addons-elementor'),
|
|
'tab' => Controls_Manager::TAB_STYLE,
|
|
'condition' => [
|
|
'ea_woo_checkout_layout!' => 'default',
|
|
],
|
|
]);
|
|
|
|
$obj->add_group_control(Group_Control_Typography::get_type(), [
|
|
'name' => 'ea_section_woo_checkout_tabs_typo',
|
|
'selector' => '{{WRAPPER}} .ea-woo-checkout.layout-split .layout-split-container .info-area .split-tabs li, {{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs .ms-tab',
|
|
'fields_options' => [
|
|
'font_size' => [
|
|
'default' => [
|
|
'unit' => 'px',
|
|
'size' => 16,
|
|
],
|
|
],
|
|
],
|
|
]);
|
|
|
|
$obj->start_controls_tabs('ea_woo_checkout_tabs_tabs');
|
|
$obj->start_controls_tab('ea_woo_checkout_tabs_tab_normal', ['label' => esc_html__('Normal', 'essential-addons-elementor')]);
|
|
|
|
$obj->add_control('ea_woo_checkout_tabs_bg_color', [
|
|
'label' => esc_html__('Background Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#f4f6fc',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-split .layout-split-container .info-area .split-tabs' => 'background-color: {{VALUE}};',
|
|
],
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'split',
|
|
],
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tabs_color', [
|
|
'label' => esc_html__('Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#404040',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .split-tabs li, {{WRAPPER}} .ms-tabs li' => 'color: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->end_controls_tab();
|
|
|
|
$obj->start_controls_tab('ea_woo_checkout_tabs_tab_active', ['label' => esc_html__('Active', 'essential-addons-elementor')]);
|
|
|
|
$obj->add_control('ea_woo_checkout_tabs_bg_color_active', [
|
|
'label' => esc_html__('Background Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#7866ff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-split .layout-split-container .info-area .split-tabs li.active' => 'background-color: {{VALUE}};',
|
|
],
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'split',
|
|
],
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tabs_color_active', [
|
|
'label' => esc_html__('Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#ffffff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-split .layout-split-container .info-area .split-tabs li.active' => 'color: {{VALUE}};',
|
|
],
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'split',
|
|
],
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tabs_ms_color_active', [
|
|
'label' => esc_html__('Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#7866ff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs li.completed' => 'color: {{VALUE}};',
|
|
],
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'multi-steps',
|
|
],
|
|
]);
|
|
$obj->add_group_control(Group_Control_Box_Shadow::get_type(), [
|
|
'name' => 'ea_woo_checkout_tabs_box_shadow',
|
|
'separator' => 'before',
|
|
'selector' => '{{WRAPPER}} .ea-woo-checkout.layout-split .layout-split-container .info-area .split-tabs li.active',
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'split',
|
|
],
|
|
]);
|
|
|
|
$obj->end_controls_tab();
|
|
$obj->end_controls_tabs();
|
|
|
|
$obj->add_responsive_control('ea_woo_checkout_tabs_border_radius', [
|
|
'label' => __('Border Radius', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'default' => [
|
|
'size' => 05,
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 50,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .split-tabs, {{WRAPPER}} .split-tab li.active' => 'border-radius: {{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'split',
|
|
],
|
|
]);
|
|
$obj->add_responsive_control('ea_woo_checkout_tabs_padding', [
|
|
'label' => esc_html__('Padding', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'default' => [
|
|
'top' => '17',
|
|
'right' => '17',
|
|
'bottom' => '17',
|
|
'left' => '17',
|
|
'unit' => 'px',
|
|
'isLinked' => true,
|
|
],
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-split .layout-split-container .info-area .split-tabs li' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'split',
|
|
],
|
|
]);
|
|
|
|
$obj->add_responsive_control('ea_woo_checkout_tabs_bottom_gap', [
|
|
'label' => esc_html__('Bottom Gap', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'range' => [
|
|
'px' => [
|
|
'max' => 50,
|
|
],
|
|
],
|
|
'default' => [
|
|
'unit' => 'px',
|
|
'size' => 30,
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs' => 'margin: 0 0 {{SIZE}}{{UNIT}} 0;',
|
|
],
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'multi-steps',
|
|
],
|
|
]);
|
|
// multi steps
|
|
$obj->add_control('ea_woo_checkout_tabs_steps', [
|
|
'label' => __('Steps', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::HEADING,
|
|
'separator' => 'before',
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'multi-steps',
|
|
],
|
|
]);
|
|
$obj->add_group_control(Group_Control_Typography::get_type(), [
|
|
'name' => 'ea_section_woo_checkout_tabs_steps_typo',
|
|
'selector' => '{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs li:before',
|
|
'fields_options' => [
|
|
'font_size' => [
|
|
'default' => [
|
|
'unit' => 'px',
|
|
'size' => 12,
|
|
],
|
|
],
|
|
],
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'multi-steps',
|
|
],
|
|
]);
|
|
$obj->start_controls_tabs('ea_woo_checkout_tabs_steps_tabs', [
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'multi-steps',
|
|
],
|
|
]);
|
|
$obj->start_controls_tab('ea_woo_checkout_tabs_steps_tab_normal', ['label' => esc_html__('Normal', 'essential-addons-elementor')]);
|
|
$obj->add_control('ea_woo_checkout_tabs_steps_bg_color', [
|
|
'label' => esc_html__('Background Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#d3c9f7',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs li:before' => 'background-color: {{VALUE}};',
|
|
],
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tabs_steps_color', [
|
|
'label' => esc_html__('Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#7866FF',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs li:before' => 'color: {{VALUE}};',
|
|
],
|
|
]);
|
|
$obj->add_group_control(Group_Control_Border::get_type(), [
|
|
'name' => 'ea_woo_checkout_tabs_steps_border',
|
|
'selector' => '{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs li:before',
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tabs_steps_connector_color', [
|
|
'label' => esc_html__('Connector Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#d3c9f7',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs li:after' => 'background-color: {{VALUE}};',
|
|
],
|
|
]);
|
|
$obj->end_controls_tab();
|
|
$obj->start_controls_tab('ea_woo_checkout_tabs_steps_tab_active', ['label' => esc_html__('Active', 'essential-addons-elementor')]);
|
|
$obj->add_control('ea_woo_checkout_tabs_steps_bg_color_active', [
|
|
'label' => esc_html__('Background Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#7866ff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs li.completed:before' => 'background-color: {{VALUE}};',
|
|
],
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tabs_steps_color_active', [
|
|
'label' => esc_html__('Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#ffffff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs li.completed:before' => 'color: {{VALUE}};',
|
|
],
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_tabs_steps_connector_color_active', [
|
|
'label' => esc_html__('Connector Color', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#7866ff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs li.completed:after' => 'background-color: {{VALUE}};',
|
|
],
|
|
]);
|
|
$obj->end_controls_tab();
|
|
$obj->end_controls_tabs();
|
|
$obj->add_responsive_control('ea_woo_checkout_tabs_steps_size', [
|
|
'label' => __('Size', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'default' => [
|
|
'size' => 25,
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 50,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs li:before' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}}; line-height: {{SIZE}}{{UNIT}};',
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs li:after' => 'top: calc(({{SIZE}}{{UNIT}}/2) - 2px);',
|
|
],
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'multi-steps',
|
|
],
|
|
]);
|
|
$obj->add_responsive_control('ea_woo_checkout_tabs_steps_border_radius', [
|
|
'label' => __('Border Radius', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'default' => [
|
|
'size' => 50,
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 50,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs li:before' => 'border-radius: {{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'multi-steps',
|
|
],
|
|
]);
|
|
|
|
$obj->end_controls_section();
|
|
}
|
|
|
|
/**
|
|
* Woo Checkout section
|
|
*/
|
|
public function add_woo_checkout_section_styles($obj)
|
|
{
|
|
|
|
$obj->start_controls_section('ea_section_woo_checkout_section_styles', [
|
|
'label' => esc_html__('Section', 'essential-addons-elementor'),
|
|
'tab' => Controls_Manager::TAB_STYLE,
|
|
'condition' => [
|
|
'ea_woo_checkout_layout' => 'multi-steps',
|
|
],
|
|
]);
|
|
$obj->add_control('ea_woo_checkout_section_bg_color', [
|
|
'label' => esc_html__('Background', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#ffffff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ms-tabs-content' => 'background-color: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_responsive_control('ea_woo_checkout_section_border_radius', [
|
|
'label' => __('Border Radius', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'default' => [
|
|
'size' => 05,
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 50,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ms-tabs-content' => 'border-radius: {{SIZE}}{{UNIT}};',
|
|
],
|
|
]);
|
|
$obj->add_responsive_control('ea_woo_checkout_section_padding', [
|
|
'label' => esc_html__('Padding', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'default' => [
|
|
'top' => '25',
|
|
'right' => '25',
|
|
'bottom' => '25',
|
|
'left' => '25',
|
|
'unit' => 'px',
|
|
'isLinked' => true,
|
|
],
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ms-tabs-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
|
],
|
|
]);
|
|
$obj->add_group_control(Group_Control_Box_Shadow::get_type(), [
|
|
'name' => 'ea_woo_checkout_section_box_shadow',
|
|
'separator' => 'before',
|
|
'selector' => '{{WRAPPER}} .ea-woo-checkout.layout-multi-steps .layout-multi-steps-container .ms-tabs-content-wrap .ms-tabs-content',
|
|
]);
|
|
|
|
$obj->end_controls_section();
|
|
}
|
|
|
|
/**
|
|
* Woo Checkout Tab Data Style
|
|
*/
|
|
public function add_woo_checkout_steps_btn_styles($obj)
|
|
{
|
|
|
|
$obj->start_controls_section('ea_section_woo_checkout_steps_btn_styles', [
|
|
'label' => esc_html__('Previous/Next Button', 'essential-addons-elementor'),
|
|
'tab' => Controls_Manager::TAB_STYLE,
|
|
'condition' => [
|
|
'ea_woo_checkout_layout!' => 'default',
|
|
],
|
|
]);
|
|
|
|
$obj->add_group_control(Group_Control_Typography::get_type(), [
|
|
'name' => 'ea_woo_checkout_steps_btn_typo',
|
|
'selector' => '{{WRAPPER}} .steps-buttons button',
|
|
]);
|
|
$obj->start_controls_tabs('ea_woo_checkout_steps_btn_tabs');
|
|
$obj->start_controls_tab('ea_woo_checkout_steps_btn_tab_normal', ['label' => __('Normal', 'essential-addons-for-elementor')]);
|
|
|
|
$obj->add_control('ea_woo_checkout_steps_btn_bg_color', [
|
|
'label' => __('Background Color', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#7866ff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout .steps-buttons button,
|
|
{{WRAPPER}} .ea-woo-checkout .steps-buttons button#ea_place_order' => 'background-color: {{VALUE}};background: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('ea_woo_checkout_steps_btn_color', [
|
|
'label' => __('Color', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#ffffff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout .steps-buttons button,
|
|
{{WRAPPER}} .ea-woo-checkout .steps-buttons button#ea_place_order' => 'color: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_group_control(Group_Control_Border::get_type(), [
|
|
'name' => 'ea_woo_checkout_steps_btn_border',
|
|
'selector' => '{{WRAPPER}} .ea-woo-checkout .steps-buttons button,
|
|
{{WRAPPER}} .ea-woo-checkout .steps-buttons button#ea_place_order',
|
|
]);
|
|
|
|
$obj->end_controls_tab();
|
|
|
|
$obj->start_controls_tab('ea_woo_checkout_steps_btn_tab_hover', ['label' => __('Hover', 'essential-addons-for-elementor')]);
|
|
|
|
$obj->add_control('ea_woo_checkout_steps_btn_bg_color_hover', [
|
|
'label' => __('Background Color', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#7866ff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout .steps-buttons button:hover,
|
|
{{WRAPPER}} .ea-woo-checkout .steps-buttons button#ea_place_order:hover' => 'background-color: {{VALUE}};background: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('ea_woo_checkout_steps_btn_color_hover', [
|
|
'label' => __('Color', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#ffffff',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout .steps-buttons button:hover,
|
|
{{WRAPPER}} .ea-woo-checkout .steps-buttons button#ea_place_order:hover' => 'color: {{VALUE}};',
|
|
],
|
|
]);
|
|
|
|
$obj->add_control('ea_woo_checkout_steps_btn_border_color_hover', [
|
|
'label' => __('Border Color', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::COLOR,
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout .steps-buttons button:hover,
|
|
{{WRAPPER}} .ea-woo-checkout .steps-buttons button#ea_place_order:hover' => 'border-color: {{VALUE}};',
|
|
],
|
|
'condition' => [
|
|
'ea_section_woo_checkout_steps_btn_border_border!' => '',
|
|
],
|
|
]);
|
|
|
|
$obj->end_controls_tab();
|
|
$obj->end_controls_tabs();
|
|
|
|
$obj->add_control('ea_woo_checkout_steps_btn_border_radius', [
|
|
'label' => __('Border Radius', 'essential-addons-for-elementor'),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'default' => [
|
|
'top' => '5',
|
|
'right' => '5',
|
|
'bottom' => '5',
|
|
'left' => '5',
|
|
'unit' => 'px',
|
|
'isLinked' => true,
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .ea-woo-checkout .steps-buttons button,
|
|
{{WRAPPER}} .ea-woo-checkout .steps-buttons button#ea_place_order' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
|
],
|
|
]);
|
|
$obj->add_group_control(Group_Control_Box_Shadow::get_type(), [
|
|
'name' => 'ea_woo_checkout_steps_btn_box_shadow',
|
|
'selector' => '{{WRAPPER}} .ea-woo-checkout .steps-buttons button',
|
|
]);
|
|
$obj->add_responsive_control('ea_woo_checkout_steps_btn_padding', [
|
|
'label' => esc_html__('Padding', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'default' => [
|
|
'top' => '13',
|
|
'right' => '20',
|
|
'bottom' => '13',
|
|
'left' => '20',
|
|
'unit' => 'px',
|
|
'isLinked' => true,
|
|
],
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .steps-buttons button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
|
],
|
|
]);
|
|
$obj->add_responsive_control('ea_woo_checkout_steps_btn_align', [
|
|
'label' => __('Alignment', 'elementor'),
|
|
'type' => Controls_Manager::CHOOSE,
|
|
'options' => [
|
|
'flex-start' => [
|
|
'title' => __('Left', 'elementor'),
|
|
'icon' => 'eicon-text-align-left',
|
|
],
|
|
'center' => [
|
|
'title' => __('Center', 'elementor'),
|
|
'icon' => 'eicon-text-align-center',
|
|
],
|
|
'flex-end' => [
|
|
'title' => __('Right', 'elementor'),
|
|
'icon' => 'eicon-text-align-right',
|
|
],
|
|
'space-between' => [
|
|
'title' => __('Justified', 'elementor'),
|
|
'icon' => 'eicon-text-align-justify',
|
|
],
|
|
],
|
|
'default' => 'flex-start',
|
|
'selectors' => [
|
|
'{{WRAPPER}} .steps-buttons' => 'justify-content: {{VALUE}};',
|
|
],
|
|
]);
|
|
$obj->add_responsive_control('ea_woo_checkout_steps_btn_gap', [
|
|
'label' => __('Gap', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'default' => [
|
|
'size' => 10,
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
'{{WRAPPER}} .steps-buttons button:first-child' => 'margin-right: calc({{SIZE}}{{UNIT}} / 2);',
|
|
'{{WRAPPER}} .steps-buttons button:last-child' => 'margin-left: calc({{SIZE}}{{UNIT}} / 2);',
|
|
],
|
|
]);
|
|
|
|
$obj->end_controls_section();
|
|
}
|
|
|
|
/**
|
|
* Add ajax control
|
|
*
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_init_content_ajax_controls($lr)
|
|
{
|
|
$lr->add_control('enable_ajax', [
|
|
'label' => __('Submit Form via AJAX', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'default' => 'yes',
|
|
]);
|
|
|
|
}
|
|
|
|
/**
|
|
* Add spinner control
|
|
*
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_init_content_spinner_controls($lr, $button_type)
|
|
{
|
|
$lr->add_control( "{$button_type}_btn_show_spinner", [
|
|
'label' => esc_html__( 'Show Spinner', 'essential-addons-for-elementor-lite' ),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'return_value' => 'true',
|
|
'default' => '',
|
|
'label_on' => __( 'Show', 'essential-addons-for-elementor-lite' ),
|
|
'label_off' => __( 'Hide', 'essential-addons-for-elementor-lite' ),
|
|
] );
|
|
|
|
$lr->add_control( "{$button_type}_btn_spinner_note", [
|
|
'type' => Controls_Manager::RAW_HTML,
|
|
'content_classes' => 'elementor-control-raw-html elementor-panel-alert elementor-panel-alert-info',
|
|
'raw' => esc_html__( 'In preview, Spinner is only visible after clicking on the button.', 'essential-addons-for-elementor-lite' ),
|
|
'condition' => [
|
|
"{$button_type}_btn_show_spinner" => 'true',
|
|
],
|
|
] );
|
|
|
|
$lr->add_control( "{$button_type}_btn_spinner_position", [
|
|
'label' => __( 'Position X', 'essential-addons-for-elementor-lite' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => -500,
|
|
'max' => 500,
|
|
'step' => 1,
|
|
],
|
|
'%' => [
|
|
'min' => -100,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'condition' => [
|
|
"{$button_type}_btn_show_spinner" => 'true',
|
|
],
|
|
'selectors' => [
|
|
"{{WRAPPER}} .eael-lr-form-loader-wrapper .eael-lr-form-loader.eael-lr-{$button_type}-form-loader" => 'right: {{SIZE}}{{UNIT}};',
|
|
],
|
|
] );
|
|
|
|
$lr->add_control( "{$button_type}_btn_spinner_position_y", [
|
|
'label' => __( 'Position Y', 'essential-addons-for-elementor-lite' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => -500,
|
|
'max' => 500,
|
|
'step' => 1,
|
|
],
|
|
'%' => [
|
|
'min' => -100,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'default' => [
|
|
'unit' => 'px',
|
|
'size' => 12,
|
|
],
|
|
'condition' => [
|
|
"{$button_type}_btn_show_spinner" => 'true',
|
|
],
|
|
'selectors' => [
|
|
"{{WRAPPER}} .eael-lr-form-loader-wrapper .eael-lr-form-loader.eael-lr-{$button_type}-form-loader" => 'bottom: {{SIZE}}{{UNIT}};',
|
|
],
|
|
] );
|
|
|
|
$lr->add_control( "{$button_type}_btn_spinner_size", [
|
|
'label' => __( 'Size (px)', 'essential-addons-for-elementor-lite' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [ 'px' ],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
'step' => 1,
|
|
]
|
|
],
|
|
'default' => [
|
|
'unit' => 'px',
|
|
'size' => 14,
|
|
],
|
|
'condition' => [
|
|
"{$button_type}_btn_show_spinner" => 'true',
|
|
],
|
|
'selectors' => [
|
|
"{{WRAPPER}} .eael-lr-form-loader-wrapper .eael-lr-form-loader.eael-lr-{$button_type}-form-loader svg" => 'height: {{SIZE}}{{UNIT}};width: {{SIZE}}{{UNIT}};line-height:{{SIZE}}{{UNIT}};',
|
|
],
|
|
] );
|
|
|
|
$lr->add_control( "{$button_type}_btn_spinner_color", [
|
|
'label' => __( 'Color', 'essential-addons-for-elementor-lite' ),
|
|
'type' => Controls_Manager::COLOR,
|
|
'default' => '#fff',
|
|
'condition' => [
|
|
"{$button_type}_btn_show_spinner" => 'true',
|
|
],
|
|
'selectors' => [
|
|
"{{WRAPPER}} .eael-lr-form-loader-wrapper .eael-lr-form-loader.eael-lr-{$button_type}-form-loader" => 'color: {{VALUE}};',
|
|
"{{WRAPPER}} .eael-lr-form-loader-wrapper .eael-lr-form-loader.eael-lr-{$button_type}-form-loader svg" => 'fill: {{VALUE}};',
|
|
],
|
|
] );
|
|
}
|
|
|
|
/**
|
|
* Add login button spinner control
|
|
*
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_init_content_login_spinner_controls($lr)
|
|
{
|
|
$button_type = 'login';
|
|
|
|
$this->lr_init_content_spinner_controls($lr, $button_type);
|
|
}
|
|
|
|
/**
|
|
* Add register button spinner control
|
|
*
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_init_content_register_spinner_controls($lr)
|
|
{
|
|
$button_type = 'register';
|
|
|
|
$this->lr_init_content_spinner_controls($lr, $button_type);
|
|
}
|
|
|
|
/**
|
|
* Add Social Login related controls
|
|
*
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_init_content_social_login_controls($lr)
|
|
{
|
|
$lr->start_controls_section('section_content_social_login', [
|
|
'label' => __('Social Login', 'essential-addons-elementor'),
|
|
'conditions' => $lr->get_form_controls_display_condition('login'),
|
|
]);
|
|
$lr->add_control('enable_google_login', [
|
|
'label' => __('Enable Login with Google', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'render_type' => 'template',
|
|
]);
|
|
if (empty(get_option('eael_g_client_id'))) {
|
|
$lr->add_control('eael_g_client_id_missing', [
|
|
'type' => Controls_Manager::RAW_HTML,
|
|
'raw' => sprintf(__('Google Client ID is missing. Please add it from %sDashboard >> Essential Addons >> Elements >> Login | Register Form %sSettings', 'essential-addons-elementor'), '<strong>', '</strong>'),
|
|
'content_classes' => 'eael-warning',
|
|
'condition' => [
|
|
'enable_google_login' => 'yes',
|
|
],
|
|
]);
|
|
}
|
|
$lr->add_control('enable_fb_login', [
|
|
'label' => __('Enable Login with Facebook', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'render_type' => 'template',
|
|
]);
|
|
if (empty(get_option('eael_fb_app_id')) || empty(get_option('eael_fb_app_secret'))) {
|
|
$lr->add_control('eael_fb_app_id_missing', [
|
|
'type' => Controls_Manager::RAW_HTML,
|
|
'raw' => sprintf(__('Facebook API keys are missing. Please add them from %sDashboard >> Essential Addons >> Elements >> Login | Register Form %sSettings', 'essential-addons-elementor'), '<strong>', '</strong>'),
|
|
'content_classes' => 'eael-warning',
|
|
'condition' => [
|
|
'enable_fb_login' => 'yes',
|
|
],
|
|
]);
|
|
}
|
|
$lr->add_control('fb_login_text', [
|
|
'label' => __('Text for Facebook Button', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'default' => __('Login with Facebook', 'essential-addons-elementor'),
|
|
'placeholder' => __('Login with Facebook', 'essential-addons-elementor'),
|
|
'condition' => [
|
|
'enable_fb_login' => 'yes',
|
|
],
|
|
]);
|
|
|
|
$lr->add_control('enable_social_login_on_register_form', [
|
|
'label' => __('Show on Register Form', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'render_type' => 'template',
|
|
]);
|
|
|
|
$lr->add_control('show_separator', [
|
|
'label' => __('Show Separator', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'conditions' => [
|
|
'relation' => 'or',
|
|
'terms' => [
|
|
[
|
|
'name' => "enable_fb_login",
|
|
'value' => 'yes',
|
|
],
|
|
[
|
|
'name' => 'enable_google_login',
|
|
'value' => 'yes',
|
|
],
|
|
],
|
|
],
|
|
]);
|
|
|
|
$lr->add_control('separator_type', [
|
|
'label' => __('Separator Type', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => [
|
|
'hr' => __('Line', 'essential-addons-elementor'),
|
|
'text' => __('Text', 'essential-addons-elementor'),
|
|
],
|
|
'default' => 'hr',
|
|
'condition' => [
|
|
'show_separator' => 'yes',
|
|
],
|
|
]);
|
|
|
|
$lr->add_control('separator_text', [
|
|
'label' => __('Separator Text', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::TEXT,
|
|
'dynamic' => [
|
|
'active' => true,
|
|
],
|
|
'default' => __('Or', 'essential-addons-elementor'),
|
|
'placeholder' => __('Eg. Or', 'essential-addons-elementor'),
|
|
'condition' => [
|
|
'separator_type' => 'text',
|
|
],
|
|
]);
|
|
|
|
$lr->end_controls_section();
|
|
}
|
|
|
|
/**
|
|
* It prints Social Login related markup
|
|
*
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_print_social_login($lr, $form_type = 'login')
|
|
{
|
|
$form_type = in_array($form_type, ['login', 'register']) ? $form_type : 'login';
|
|
|
|
$should_print_google = $should_print_fb = false;
|
|
$gclient = $app_id = $fbtn_text = '';
|
|
if ('yes' === $lr->get_settings_for_display('enable_google_login')) {
|
|
$gclient = get_option('eael_g_client_id');
|
|
$should_print_google = true;
|
|
}
|
|
|
|
if ('yes' === $lr->get_settings_for_display('enable_fb_login')) {
|
|
$app_id = get_option('eael_fb_app_id');
|
|
$should_print_fb = true;
|
|
|
|
$fbtn_text = apply_filters('eael/login-register/fb-button-text', $lr->get_settings_for_display('fb_login_text'));
|
|
|
|
}
|
|
$show_sep = $lr->get_settings_for_display('show_separator');
|
|
$sep_type = $lr->get_settings_for_display('separator_type');
|
|
$sep_text = $lr->get_settings_for_display('separator_text');
|
|
|
|
if ($should_print_google || $should_print_fb) {?>
|
|
<div class="lr-social-login-container"
|
|
data-widget-id="<?php echo esc_attr($lr->get_id()); ?>">
|
|
<?php
|
|
if ('yes' === $show_sep) {?>
|
|
<div class="lr-separator">
|
|
<?php if ('hr' === $sep_type) {
|
|
echo '<hr>';
|
|
} elseif ('text' === $sep_type) {
|
|
printf("<p>%s</p>", esc_html($sep_text));
|
|
}?>
|
|
</div>
|
|
<?php }?>
|
|
<div class="lr-social-buttons-container">
|
|
<?php
|
|
if ($should_print_google) {
|
|
$this->lr_print_google_button($gclient, $lr, $form_type);
|
|
}
|
|
if ($should_print_fb) {
|
|
$this->lr_print_facebook_button($app_id, $lr, $fbtn_text, $form_type);
|
|
}
|
|
?>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
}
|
|
|
|
/**
|
|
* It prints Social Login related markup
|
|
*
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_print_social_login_on_register($lr) {
|
|
if ('yes' === $lr->get_settings_for_display('enable_social_login_on_register_form')) {
|
|
$this->lr_print_social_login($lr, 'register');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* It prints google login button
|
|
*
|
|
* @param string $client_id
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_print_google_button($client_id, $lr, $form_type = 'login')
|
|
{
|
|
$form_type = in_array( $form_type, [ 'login', 'register' ] ) ? $form_type : 'login';
|
|
$type = $lr->get_settings_for_display( 'eael_sl_gis_btn_type' );
|
|
$theme = $lr->get_settings_for_display( 'eael_sl_gis_btn_theme' );
|
|
$size = $lr->get_settings_for_display( 'eael_sl_gis_btn_size' );
|
|
$text = $lr->get_settings_for_display( 'eael_sl_gis_btn_text' );
|
|
$shape = $lr->get_settings_for_display( 'eael_sl_gis_btn_shape' );
|
|
$logo_alignment = $lr->get_settings_for_display( 'eael_sl_gis_btn_logo_alignment' );
|
|
$locale = $lr->get_settings_for_display( 'eael_sl_gis_btn_locale' );
|
|
$width = $lr->get_settings_for_display( 'eael_sl_gis_btn_width' );
|
|
$width = empty( $width['size'] ) ? '185px' : $width['size'] . 'px';
|
|
?>
|
|
<div class="eael-social-button eael-gis" id="eael-google-<?php echo esc_attr( $form_type ); ?>-btn-<?php echo esc_attr( $lr->get_id() ); ?>"
|
|
data-g-client-id="<?php echo esc_attr( $client_id ); ?>" data-type="<?php echo esc_attr( $type ); ?>" data-theme="<?php echo esc_attr( $theme ); ?>"
|
|
data-size="<?php echo esc_attr( $size ); ?>" data-text="<?php echo esc_attr( $text ); ?>" data-shape="<?php echo esc_attr( $shape ); ?>"
|
|
data-logo_alignment="<?php echo esc_attr( $logo_alignment ); ?>" data-width="<?php echo esc_attr( $width ); ?>" data-locale="<?php echo esc_attr( $locale ); ?>">
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* It prints facebook login button
|
|
*
|
|
* @param string $app_id
|
|
* @param Login_Register $lr
|
|
* @param string $btn_text
|
|
*/
|
|
public function lr_print_facebook_button($app_id, $lr, $btn_text = '', $form_type = 'login')
|
|
{
|
|
$form_type = in_array($form_type, ['login', 'register']) ? $form_type : 'login';
|
|
|
|
?>
|
|
<div class="eael-social-button eael-facebook"
|
|
id="eael-fb-<?php echo esc_attr($form_type); ?>-btn-<?php echo esc_attr($lr->get_id()); ?>"
|
|
data-fb-appid="<?php echo esc_attr($app_id); ?>">
|
|
<svg xmlns="http://www.w3.org/2000/svg"
|
|
width="18px"
|
|
height="18px"
|
|
viewBox="0 0 216 216"
|
|
class="_5h0m"
|
|
fill="#4d6fa9">
|
|
<path d="M204.1 0H11.9C5.3 0 0 5.3 0 11.9v192.2c0 6.6 5.3 11.9 11.9 11.9h103.5v-83.6H87.2V99.8h28.1v-24c0-27.9 17-43.1 41.9-43.1 11.9 0 22.2.9 25.2 1.3v29.2h-17.3c-13.5 0-16.2 6.4-16.2 15.9v20.8h32.3l-4.2 32.6h-28V216h55c6.6 0 11.9-5.3 11.9-11.9V11.9C216 5.3 210.7 0 204.1 0z"></path>
|
|
</svg>
|
|
<?php
|
|
if ($btn_text) {
|
|
printf("<span class='eael-fbtn-text'>%s</span>", esc_html($btn_text));
|
|
}
|
|
?>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
public function lr_handle_social_login() {
|
|
// verify security for social login
|
|
if ( ! empty( $_POST['eael-google-submit'] ) || ! empty( $_POST['eael-facebook-submit'] ) ) {
|
|
check_ajax_referer( 'essential-addons-elementor', 'nonce' );
|
|
if ( is_user_logged_in() ) {
|
|
wp_send_json_error( __( 'You are already logged in.', 'essential-addons-elementor' ) );
|
|
}
|
|
}
|
|
|
|
|
|
if ( ! empty( $_POST['eael-google-submit'] ) ) {
|
|
$client_id = get_option( 'eael_g_client_id' );
|
|
$id_token = ! empty( $_POST['id_token'] ) ? sanitize_text_field( $_POST['id_token'] ) : '';
|
|
$verified_data = $this->lr_verify_google_user_data( $id_token, $client_id );
|
|
|
|
if ( empty( $verified_data ) ) {
|
|
wp_send_json_error( __( 'User data was not verified by Google', 'essential-addons-elementor' ) );
|
|
}
|
|
// verified data
|
|
$v_name = isset( $verified_data['name'] ) ? $verified_data['name'] : '';
|
|
$v_email = isset( $verified_data['email'] ) ? $verified_data['email'] : '';
|
|
$v_client_id = isset( $verified_data['aud'] ) ? $verified_data['aud'] : '';
|
|
|
|
// Check if email is verified with Google.
|
|
if ( ( $client_id !== $v_client_id ) ) {
|
|
wp_send_json_error( __( 'User data was not verified by Google', 'essential-addons-elementor' ) );
|
|
}
|
|
|
|
$this->lr_log_user_using_social_data( $v_name, $v_email, 'google' );
|
|
}
|
|
|
|
if ( ! empty( $_POST['eael-facebook-submit'] ) ) {
|
|
|
|
$app_id = get_option( 'eael_fb_app_id' );
|
|
$app_secret = get_option( 'eael_fb_app_secret' );
|
|
$access_token = ! empty( $_POST['access_token'] ) ? sanitize_text_field( $_POST['access_token'] ) : '';
|
|
$user_id = ! empty( $_POST['user_id'] ) ? sanitize_text_field( $_POST['user_id'] ) : 0;
|
|
$name = isset( $_POST['full_name'] ) ? sanitize_text_field( $_POST['full_name'] ) : '';
|
|
$email = isset( $_POST['email'] ) ? sanitize_email( $_POST['email'] ) : '';
|
|
if ( empty( $user_id ) ) {
|
|
wp_send_json_error( __( 'Facebook authorization failed', 'essential-addons-elementor' ) );
|
|
}
|
|
|
|
$fb_user_data = $this->lr_get_facebook_user_profile( $access_token, $app_id, $app_secret );
|
|
|
|
|
|
if ( empty( $user_id ) || empty( $fb_user_data ) || empty( $app_id ) || empty( $app_secret ) || ( $user_id !== $fb_user_data['data']['user_id'] ) || ( $app_id !== $fb_user_data['data']['app_id'] ) || ( ! $fb_user_data['data']['is_valid'] ) ) {
|
|
wp_send_json_error( __( 'Facebook authorization failed', 'essential-addons-elementor' ) );
|
|
}
|
|
|
|
|
|
$res = $this->lr_get_user_email_facebook( $fb_user_data['data']['user_id'], $access_token );
|
|
//Some facebook user may not have $email as they might have used mobile number to open account
|
|
if ( ! empty( $email ) && ( empty( $res['email'] ) || $res['email'] !== $email ) ) {
|
|
//if js SDK sends email, then php api must return the same email.
|
|
wp_send_json_error( __( 'Facebook email validation failed', 'essential-addons-elementor' ) );
|
|
}
|
|
|
|
$v_email = ! empty( $email ) && ! empty( $res['email'] ) ? sanitize_email( $res['email'] ) : $fb_user_data['data']['user_id'] . '@facebook.com';
|
|
|
|
$this->lr_log_user_using_social_data( $name, $v_email, 'facebook' );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* @param string $name
|
|
* @param string $email
|
|
* @param string $login_source eg. Google, Facebook etc.
|
|
*/
|
|
public function lr_log_user_using_social_data( $name, $email, $login_source = '' ) {
|
|
$response = [];
|
|
$username = strtolower( preg_replace( '/\s+/', '', $name ) );
|
|
$response['username'] = $username;
|
|
$user_data = get_user_by( 'email', $email ); // do we have user by this email already?
|
|
|
|
if ( ! empty( $user_data ) ) {
|
|
//user already registered using this email, so log him in.
|
|
$user_ID = $user_data->ID;
|
|
wp_set_auth_cookie( $user_ID );
|
|
wp_set_current_user( $user_ID, $username );
|
|
do_action( 'wp_login', $user_data->user_login, $user_data );
|
|
|
|
} else {
|
|
$users_can_register = get_option( 'users_can_register' );
|
|
if ( ! $users_can_register ) {
|
|
wp_send_json_error( __( 'User not registered', 'essential-addons-elementor' ) );
|
|
}
|
|
|
|
// user is new, so let's register him
|
|
$password = wp_generate_password( 12, true, false );
|
|
|
|
if ( username_exists( $username ) ) {
|
|
// Generate something unique to append to the username in case of a conflict with another user.
|
|
$suffix = '-' . zeroise( wp_rand( 0, 9999 ), 4 );
|
|
$username .= $suffix;
|
|
}
|
|
$user_array = [
|
|
'user_login' => $username,
|
|
'user_pass' => $password,
|
|
'user_email' => $email,
|
|
];
|
|
$_name = explode( " ", $name, 2 );
|
|
if ( isset( $_name[0] ) ) {
|
|
$user_array['first_name'] = $_name[0];
|
|
}
|
|
if ( isset( $_name[1] ) ) {
|
|
$user_array['last_name'] = $_name[1];
|
|
}
|
|
$result = wp_insert_user( $user_array );
|
|
if ( is_wp_error( $result ) ) {
|
|
wp_send_json_error( __( 'Logging user failed.', 'essential-addons-elementor' ) );
|
|
}
|
|
|
|
//@TODO; send email to user/admin later
|
|
//do_action( 'edit_user_created_user', $result, $notify );
|
|
|
|
$user_data = get_user_by( 'email', $email );
|
|
|
|
if ( $user_data ) {
|
|
$user_ID = $user_data->ID;
|
|
$user_meta = [
|
|
'login_source' => $login_source,
|
|
];
|
|
|
|
update_user_meta( $user_ID, 'eael_login_form', $user_meta );
|
|
|
|
if ( wp_check_password( $password, $user_data->user_pass, $user_data->ID ) ) {
|
|
wp_set_auth_cookie( $user_ID );
|
|
wp_set_current_user( $user_ID, $username );
|
|
do_action( 'wp_login', $user_data->user_login, $user_data );
|
|
} else {
|
|
wp_send_json_error( __( 'Logging user failed.', 'essential-addons-elementor' ) );
|
|
}
|
|
}
|
|
}
|
|
$response ['message'] = __( 'You are logged in successfully', 'essential-addons-elementor' );
|
|
if ( ! empty( $_POST['redirect_to'] ) ) {
|
|
$response['redirect_to'] = esc_url( $_POST['redirect_to'] );
|
|
}
|
|
|
|
wp_send_json_success( $response );
|
|
}
|
|
|
|
/**
|
|
* It verifies id token generated or sent from google js sdk
|
|
*
|
|
* @param string $id_token id token generated via google js sdk
|
|
* @param string $client_id the client api key generated in the google console
|
|
*
|
|
* @return array|false
|
|
*/
|
|
public function lr_verify_google_user_data( $id_token, $client_id ) {
|
|
// load composer autoloader
|
|
$composer_autoloader = EAEL_PRO_PLUGIN_PATH . 'vendor/autoload.php';
|
|
if ( file_exists( $composer_autoloader ) ) {
|
|
require_once $composer_autoloader;
|
|
}
|
|
|
|
if ( ! class_exists( '\Google_Client' ) ) {
|
|
error_log( 'Google_client class was not loaded. did you run composer install?' );
|
|
|
|
return false;
|
|
}
|
|
$client = new Google_Client( [ 'client_id' => $client_id ] );
|
|
$verified_data = $client->verifyIdToken( $id_token );
|
|
if ( $verified_data ) {
|
|
return $verified_data;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Get facebook user profile
|
|
*
|
|
* @param string $access_token Access Token.
|
|
* @param string $app_id App ID.
|
|
* @param string $app_secret Secret token.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function lr_get_facebook_user_profile( $access_token, $app_id, $app_secret ) {
|
|
|
|
$fb_url = 'https://graph.facebook.com/oauth/access_token';
|
|
$fb_url = add_query_arg( [
|
|
'client_id' => $app_id,
|
|
'client_secret' => $app_secret,
|
|
'grant_type' => 'client_credentials',
|
|
], $fb_url );
|
|
|
|
$fb_response = wp_remote_get( $fb_url );
|
|
|
|
if ( is_wp_error( $fb_response ) ) {
|
|
wp_send_json_error();
|
|
}
|
|
|
|
$fb_app_response = json_decode( wp_remote_retrieve_body( $fb_response ), true );
|
|
|
|
$app_token = $fb_app_response['access_token'];
|
|
|
|
$url = 'https://graph.facebook.com/debug_token';
|
|
$url = add_query_arg( [
|
|
'input_token' => $access_token,
|
|
'access_token' => $app_token,
|
|
], $url );
|
|
|
|
$response = wp_remote_get( $url );
|
|
|
|
if ( is_wp_error( $response ) ) {
|
|
return false;
|
|
}
|
|
|
|
return json_decode( wp_remote_retrieve_body( $response ), true );
|
|
}
|
|
|
|
/**
|
|
* Get user email of authenticated facebook user
|
|
*
|
|
* @param string $user_id User ID.
|
|
* @param string $access_token User Access Token.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function lr_get_user_email_facebook( $user_id, $access_token ) {
|
|
$fb_email_url = 'https://graph.facebook.com/' . $user_id;
|
|
$fb_email_url = add_query_arg( [
|
|
'fields' => 'email',
|
|
'access_token' => $access_token,
|
|
], $fb_email_url );
|
|
|
|
$email_response = wp_remote_get( $fb_email_url );
|
|
|
|
if ( is_wp_error( $email_response ) ) {
|
|
return false;
|
|
}
|
|
|
|
return json_decode( wp_remote_retrieve_body( $email_response ), true );
|
|
}
|
|
|
|
/**
|
|
* It adds styling controls for social login
|
|
*
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_init_style_social_controls( Login_Register $lr ) {
|
|
$lr->start_controls_section( 'section_style_social_login', [
|
|
'label' => __( 'Social Login Style', 'essential-addons-for-elementor' ),
|
|
'tab' => Controls_Manager::TAB_STYLE,
|
|
'conditions' => [
|
|
'relation' => 'or',
|
|
'terms' => [
|
|
[
|
|
'name' => "enable_fb_login",
|
|
'value' => 'yes',
|
|
],
|
|
[
|
|
'name' => 'enable_google_login',
|
|
'value' => 'yes',
|
|
],
|
|
],
|
|
],
|
|
] );
|
|
$container = "{{WRAPPER}} .lr-social-login-container";
|
|
$lr->add_control( 'eael_sl_pot', [
|
|
'label' => __( 'Social Container', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::POPOVER_TOGGLE,
|
|
'label_off' => __( 'Default', 'essential-addons-for-elementor' ),
|
|
'label_on' => __( 'Custom', 'essential-addons-for-elementor' ),
|
|
'return_value' => 'yes',
|
|
] );
|
|
$lr->start_popover();
|
|
$lr->add_responsive_control( "eael_sl_wrap_width", [
|
|
'label' => esc_html__( 'Width', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 1000,
|
|
'step' => 5,
|
|
],
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'default' => [
|
|
'unit' => '%',
|
|
'size' => 100,
|
|
],
|
|
'selectors' => [
|
|
$container => 'width: {{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
'eael_sl_pot' => 'yes',
|
|
],
|
|
] );
|
|
|
|
$lr->add_responsive_control( "eael_sl_wrap_height", [
|
|
'label' => esc_html__( 'Height', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 1000,
|
|
'step' => 5,
|
|
],
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
$container => 'height: {{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
'eael_sl_pot' => 'yes',
|
|
],
|
|
] );
|
|
|
|
$lr->add_responsive_control( "eael_sl_wrap_margin", [
|
|
'label' => __( 'Margin', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$container => $lr->apply_dim( 'margin' ),
|
|
],
|
|
'condition' => [
|
|
'eael_sl_pot' => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_sl_wrap_padding", [
|
|
'label' => __( 'Padding', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$container => $lr->apply_dim( 'padding' ),
|
|
],
|
|
'condition' => [
|
|
'eael_sl_pot' => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_group_control( Group_Control_Border::get_type(), [
|
|
'name' => "eael_sl_wrap_border",
|
|
'selector' => $container,
|
|
'condition' => [
|
|
'eael_sl_pot' => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_control( "eael_sl_wrap_border_radius", [
|
|
'label' => __( 'Border Radius', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$container => $lr->apply_dim( 'border-radius' ),
|
|
],
|
|
'condition' => [
|
|
'eael_sl_pot' => 'yes',
|
|
],
|
|
'separator' => 'after',
|
|
] );
|
|
$lr->add_control( "eael_sl_wrap_text_color", [
|
|
'label' => __( 'Text Color', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::COLOR,
|
|
'selectors' => [
|
|
$container => 'color: {{VALUE}};',
|
|
],
|
|
'condition' => [
|
|
'eael_sl_pot' => 'yes',
|
|
],
|
|
'separator' => 'before',
|
|
] );
|
|
$lr->add_group_control( Group_Control_Background::get_type(), [
|
|
'name' => "eael_sl_wrap_bg_color",
|
|
'label' => __( 'Background Color', 'essential-addons-for-elementor' ),
|
|
'types' => [
|
|
'classic',
|
|
'gradient',
|
|
],
|
|
'selector' => $container,
|
|
'condition' => [
|
|
'eael_sl_pot' => 'yes',
|
|
],
|
|
] );
|
|
$lr->end_popover();
|
|
|
|
$lr->add_responsive_control( "eael_sl_btn_display_type", [
|
|
'label' => __( 'Display Button as', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => [
|
|
'row' => __( 'Inline', 'essential-addons-for-elementor' ),
|
|
'column' => __( 'Block', 'essential-addons-for-elementor' ),
|
|
],
|
|
'default' => 'row',
|
|
'selectors' => [
|
|
"{$container} .lr-social-buttons-container" => 'flex-direction: {{VALUE}};',
|
|
],
|
|
] );
|
|
//Social Buttons
|
|
$this->lr_social_gis_btn_controlls( $lr );
|
|
$this->lr_init_style_social_btn_controls( $lr, 'facebook' );
|
|
// Separator
|
|
$this->lr_init_style_social_separator_controls( $lr );
|
|
$lr->end_controls_section();
|
|
}
|
|
|
|
/**
|
|
* It adds styling controls for mailchimp integration to Login | Register Form
|
|
*
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_init_mailchimp_integration_controls( Login_Register $lr ) {
|
|
$lr->add_control( 'eael_register_mailchimp_integration_enable', [
|
|
'label' => __( 'Enable Mailchimp Integration', 'essential-addons-elementor' ),
|
|
'description' => __( 'Enable to create new Mailchimp audience contact on each user registration.', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'label_on' => __( 'Yes', 'essential-addons-elementor' ),
|
|
'label_off' => __( 'No', 'essential-addons-elementor' ),
|
|
'return_value' => 'yes',
|
|
] );
|
|
|
|
$lr->add_control(
|
|
'eael_mailchimp_lists',
|
|
[
|
|
'label' => esc_html__('Mailchimp List', 'essential-addons-elementor'),
|
|
'type' => Controls_Manager::SELECT,
|
|
'label_block' => false,
|
|
'description' => __( sprintf('Set your API Key from <a class="elementor-control-field-description" href="%s" target="_blank"><strong>EA Dashboard » Elements » Login | Register Form Settings</strong></a>', site_url('/wp-admin/admin.php?page=eael-settings') ), 'essential-addons-elementor' ),
|
|
'options' => Helper::mailchimp_lists('login-register-form'),
|
|
'condition' => [
|
|
'eael_register_mailchimp_integration_enable' => 'yes',
|
|
],
|
|
]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* GIS button new controllers
|
|
*
|
|
* @param Login_Register $lr
|
|
*
|
|
* @return void
|
|
*/
|
|
public function lr_social_gis_btn_controlls( Login_Register $lr ) {
|
|
$lr->add_control( "eael_sl_gis_btn_pot", [
|
|
'label' => __( 'Google Button', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::POPOVER_TOGGLE,
|
|
'label_off' => __( 'Default', 'essential-addons-elementor' ),
|
|
'label_on' => __( 'Custom', 'essential-addons-elementor' ),
|
|
'return_value' => 'yes',
|
|
'separator' => 'before',
|
|
'condition' => [ 'enable_google_login' => 'yes' ],
|
|
] );
|
|
|
|
$lr->start_popover();
|
|
|
|
$lr->add_control( "eael_sl_gis_btn_heading", [
|
|
'label' => __( 'Button Style', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::HEADING,
|
|
'separator' => 'before',
|
|
] );
|
|
|
|
$lr->add_control( "eael_sl_gis_btn_type", [
|
|
'label' => __( 'Type', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => [
|
|
'standard' => __( 'Standard', 'essential-addons-elementor' ),
|
|
'icon' => __( 'Icon', 'essential-addons-elementor' ),
|
|
],
|
|
'default' => 'standard',
|
|
] );
|
|
|
|
$lr->add_control( "eael_sl_gis_btn_theme", [
|
|
'label' => __( 'Theme', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => [
|
|
'outline' => __( 'Outline', 'essential-addons-elementor' ),
|
|
'filled_blue' => __( 'Filled Blue', 'essential-addons-elementor' ),
|
|
'filled_black' => __( 'Filled Black', 'essential-addons-elementor' ),
|
|
],
|
|
'default' => 'outline',
|
|
] );
|
|
|
|
$lr->add_control( "eael_sl_gis_btn_size", [
|
|
'label' => __( 'Size', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => [
|
|
'large' => __( 'Large', 'essential-addons-elementor' ),
|
|
'medium' => __( 'Medium', 'essential-addons-elementor' ),
|
|
'small' => __( 'Small', 'essential-addons-elementor' ),
|
|
],
|
|
'default' => 'large',
|
|
] );
|
|
|
|
$lr->add_control( "eael_sl_gis_btn_text", [
|
|
'label' => __( 'Text', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => [
|
|
'signin_with' => __( 'Sign in with Google', 'essential-addons-elementor' ),
|
|
'signup_with' => __( 'Sign up with Google', 'essential-addons-elementor' ),
|
|
'continue_with' => __( 'Continue with Google', 'essential-addons-elementor' ),
|
|
'signin' => __( 'Sign in', 'essential-addons-elementor' ),
|
|
],
|
|
'default' => 'signin_with',
|
|
] );
|
|
|
|
$lr->add_control( "eael_sl_gis_btn_shape", [
|
|
'label' => __( 'Shape', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => [
|
|
'rectangular' => __( 'Rectangular', 'essential-addons-elementor' ),
|
|
'pill' => __( 'Pill', 'essential-addons-elementor' ),
|
|
'circle' => __( 'Circle', 'essential-addons-elementor' ),
|
|
'square' => __( 'Square', 'essential-addons-elementor' ),
|
|
],
|
|
'default' => 'rectangular',
|
|
] );
|
|
|
|
$lr->add_control( "eael_sl_gis_btn_logo_alignment", [
|
|
'label' => __( 'Logo Alignment', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SELECT,
|
|
'options' => [
|
|
'left' => __( 'Left', 'essential-addons-elementor' ),
|
|
'center' => __( 'Center', 'essential-addons-elementor' ),
|
|
],
|
|
'default' => 'left',
|
|
'condition' => [ 'eael_sl_gis_btn_type' => 'standard' ],
|
|
] );
|
|
|
|
$lr->add_control( "eael_sl_gis_btn_width", [
|
|
'label' => esc_html__( 'Width', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 280,
|
|
'step' => 5,
|
|
],
|
|
],
|
|
'default' => [
|
|
'unit' => 'px',
|
|
'size' => 185,
|
|
],
|
|
] );
|
|
|
|
$lr->add_control( "eael_sl_gis_btn_locale", [
|
|
'label' => __( 'Locale', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SELECT2,
|
|
'options' => [
|
|
"am" => "Amharic",
|
|
"ar" => "Arabic",
|
|
"eu" => "Basque",
|
|
"bn" => "Bengali",
|
|
"en-GB" => "English (UK)",
|
|
"pt-BR" => "Portuguese (Brazil)",
|
|
"bg" => "Bulgarian",
|
|
"ca" => "Catalan",
|
|
"chr" => "Cherokee",
|
|
"hr" => "Croatian",
|
|
"cs" => "Czech",
|
|
"da" => "Danish",
|
|
"nl" => "Dutch",
|
|
"en" => "English (US)",
|
|
"et" => "Estonian",
|
|
"fil" => "Filipino",
|
|
"fi" => "Finnish",
|
|
"fr" => "French",
|
|
"de" => "German",
|
|
"el" => "Greek",
|
|
"gu" => "Gujarati",
|
|
"iw" => "Hebrew",
|
|
"hi" => "Hindi",
|
|
"hu" => "Hungarian",
|
|
"is" => "Icelandic",
|
|
"id" => "Indonesian",
|
|
"it" => "Italian",
|
|
"ja" => "Japanese",
|
|
"kn" => "Kannada",
|
|
"ko" => "Korean",
|
|
"lv" => "Latvian",
|
|
"lt" => "Lithuanian",
|
|
"ms" => "Malay",
|
|
"ml" => "Malayalam",
|
|
"mr" => "Marathi",
|
|
"no" => "Norwegian",
|
|
"pl" => "Polish",
|
|
"pt-PT" => "Portuguese (Portugal)",
|
|
"ro" => "Romanian",
|
|
"ru" => "Russian",
|
|
"sr" => "Serbian",
|
|
"zh-CN" => "Chinese (PRC)",
|
|
"sk" => "Slovak",
|
|
"sl" => "Slovenian",
|
|
"es" => "Spanish",
|
|
"sw" => "Swahili",
|
|
"sv" => "Swedish",
|
|
"ta" => "Tamil",
|
|
"te" => "Telugu",
|
|
"th" => "Thai",
|
|
"zh-TW" => "Chinese (Taiwan)",
|
|
"tr" => "Turkish",
|
|
"ur" => "Urdu",
|
|
"uk" => "Ukrainian",
|
|
"vi" => "Vietnamese",
|
|
"cy" => "Welsh",
|
|
],
|
|
'default' => 'en',
|
|
] );
|
|
|
|
$lr->end_popover();
|
|
}
|
|
|
|
/**
|
|
* @param Login_Register $lr
|
|
* @param string $btn_type
|
|
*/
|
|
public function lr_init_style_social_btn_controls( Login_Register $lr, $btn_type = 'google' ) {
|
|
$btn_class = "{{WRAPPER}} .lr-social-login-container .eael-social-button.eael-{$btn_type}";
|
|
$icon_class = "{$btn_class} svg";
|
|
$width = 'google' === $btn_type ? 175 : 190;
|
|
|
|
$condition_name = 'facebook' === $btn_type ? 'enable_fb_login' : "enable_{$btn_type}_login";
|
|
|
|
$lr->add_control( "eael_sl_{$btn_type}_btn_pot", [
|
|
'label' => sprintf( __( '%s Button', 'essential-addons-for-elementor' ), ucfirst( $btn_type ) ),
|
|
'type' => Controls_Manager::POPOVER_TOGGLE,
|
|
'label_off' => __( 'Default', 'essential-addons-for-elementor' ),
|
|
'label_on' => __( 'Custom', 'essential-addons-for-elementor' ),
|
|
'return_value' => 'yes',
|
|
'separator' => 'before',
|
|
'condition' => [ $condition_name => 'yes' ],
|
|
] );
|
|
|
|
$lr->start_popover();
|
|
$lr->add_control( "eael_sl_{$btn_type}_btn_heading", [
|
|
'label' => __( 'Button Style', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::HEADING,
|
|
'separator' => 'before',
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_btn_pot" => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_sl_{$btn_type}_btn_width", [
|
|
'label' => esc_html__( 'Button Width', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 1000,
|
|
'step' => 5,
|
|
],
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'default' => [
|
|
'unit' => 'px',
|
|
'size' => $width,
|
|
],
|
|
'selectors' => [
|
|
$btn_class => 'width: {{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_btn_pot" => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_sl_{$btn_type}_btn_height", [
|
|
'label' => esc_html__( 'Button Height', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 1000,
|
|
'step' => 5,
|
|
],
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
$btn_class => 'height: {{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_btn_pot" => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_sl_{$btn_type}_btn_margin", [
|
|
'label' => __( 'Margin', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$btn_class => $lr->apply_dim( 'margin' ),
|
|
],
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_btn_pot" => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_sl_{$btn_type}_btn_padding", [
|
|
'label' => __( 'Padding', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$btn_class => $lr->apply_dim( 'padding' ),
|
|
],
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_btn_pot" => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_group_control( Group_Control_Border::get_type(), [
|
|
'name' => "eael_sl_{$btn_type}_btn_border",
|
|
'selector' => $btn_class,
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_btn_pot" => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_control( "eael_sl_{$btn_type}_btn_border_radius", [
|
|
'label' => __( 'Border Radius', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$btn_class => $lr->apply_dim( 'border-radius' ),
|
|
],
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_btn_pot" => 'yes',
|
|
],
|
|
'separator' => 'after',
|
|
] );
|
|
$lr->add_control( "eael_sl_{$btn_type}_btn_text_color", [
|
|
'label' => __( 'Text Color', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::COLOR,
|
|
'selectors' => [
|
|
$btn_class => 'color: {{VALUE}};',
|
|
],
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_btn_pot" => 'yes',
|
|
],
|
|
'separator' => 'before',
|
|
] );
|
|
$lr->add_group_control( Group_Control_Background::get_type(), [
|
|
'name' => "eael_sl_{$btn_type}_btn_bg_color",
|
|
'label' => __( 'Background Color', 'essential-addons-for-elementor' ),
|
|
'types' => [
|
|
'classic',
|
|
'gradient',
|
|
],
|
|
'selector' => $btn_class,
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_btn_pot" => 'yes',
|
|
],
|
|
] );
|
|
|
|
$lr->end_popover();
|
|
$lr->add_group_control( Group_Control_Typography::get_type(), [
|
|
'name' => "eael_sl_{$btn_type}_btn_typo",
|
|
'label' => sprintf( __( '%s Button Typography', 'essential-addons-for-elementor' ), ucfirst( $btn_type ) ),
|
|
'selector' => $btn_class,
|
|
] );
|
|
|
|
// Button icon
|
|
$lr->add_control( "eael_sl_{$btn_type}_icon_pot", [
|
|
'label' => sprintf( __( '%s Button Icon', 'essential-addons-for-elementor' ), ucfirst( $btn_type ) ),
|
|
'type' => Controls_Manager::POPOVER_TOGGLE,
|
|
'label_off' => __( 'Default', 'essential-addons-for-elementor' ),
|
|
'label_on' => __( 'Custom', 'essential-addons-for-elementor' ),
|
|
'return_value' => 'yes',
|
|
] );
|
|
$lr->start_popover();
|
|
$lr->add_responsive_control( "eael_sl_{$btn_type}_icon_width", [
|
|
'label' => esc_html__( 'Icon Width', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 150,
|
|
'step' => 1,
|
|
],
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'default' => [
|
|
'unit' => 'px',
|
|
'size' => 18,
|
|
],
|
|
'selectors' => [
|
|
$icon_class => 'width: {{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_icon_pot" => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_sl_{$btn_type}_icon_height", [
|
|
'label' => esc_html__( 'Icon Height', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 150,
|
|
'step' => 1,
|
|
],
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'default' => [
|
|
'unit' => 'px',
|
|
'size' => 18,
|
|
],
|
|
'selectors' => [
|
|
$icon_class => 'height: {{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_icon_pot" => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_sl_{$btn_type}_icon_margin", [
|
|
'label' => __( 'Margin', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$icon_class => $lr->apply_dim( 'margin' ),
|
|
],
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_icon_pot" => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_sl_{$btn_type}_icon_padding", [
|
|
'label' => __( 'Padding', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$icon_class => $lr->apply_dim( 'padding' ),
|
|
],
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_icon_pot" => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_group_control( Group_Control_Background::get_type(), [
|
|
'name' => "eael_sl_{$btn_type}_icon_bg_color",
|
|
'label' => __( 'Background Color', 'essential-addons-for-elementor' ),
|
|
'types' => [
|
|
'classic',
|
|
'gradient',
|
|
],
|
|
'selector' => $icon_class,
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_icon_pot" => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_group_control( Group_Control_Border::get_type(), [
|
|
'name' => "eael_sl_{$btn_type}_icon_border",
|
|
'selector' => $icon_class,
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_btn_pot" => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_control( "eael_sl_{$btn_type}_icon_border_radius", [
|
|
'label' => __( 'Border Radius', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$icon_class => $lr->apply_dim( 'border-radius' ),
|
|
],
|
|
'condition' => [
|
|
"eael_sl_{$btn_type}_btn_pot" => 'yes',
|
|
],
|
|
'separator' => 'after',
|
|
] );
|
|
$lr->end_popover();
|
|
}
|
|
|
|
/**
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_init_style_social_separator_controls( Login_Register $lr ) {
|
|
$sep_class = '{{WRAPPER}} .lr-social-login-container .lr-separator';
|
|
$sep_text = '{{WRAPPER}} .lr-social-login-container .lr-separator p';
|
|
$sep_hr = '{{WRAPPER}} .lr-social-login-container .lr-separator hr';
|
|
$lr->add_control( 'eael_sl_sep_pot', [
|
|
'label' => __( 'Separator', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::POPOVER_TOGGLE,
|
|
'label_off' => __( 'Default', 'essential-addons-for-elementor' ),
|
|
'label_on' => __( 'Custom', 'essential-addons-for-elementor' ),
|
|
'return_value' => 'yes',
|
|
'separator' => 'before',
|
|
'condition' => [
|
|
'show_separator' => 'yes',
|
|
],
|
|
] );
|
|
$lr->start_popover();
|
|
$lr->add_responsive_control( "eael_sl_sep_width", [
|
|
'label' => esc_html__( 'Divider Width', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 1000,
|
|
'step' => 5,
|
|
],
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'default' => [
|
|
'unit' => '%',
|
|
'size' => 100,
|
|
],
|
|
'selectors' => [
|
|
$sep_hr => 'width: {{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
'eael_sl_sep_pot' => 'yes',
|
|
'separator_type' => 'hr',
|
|
],
|
|
] );
|
|
|
|
$lr->add_responsive_control( "eael_sl_sep_height", [
|
|
'label' => esc_html__( 'Divider Height', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 20,
|
|
'step' => 5,
|
|
],
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
$sep_hr => 'height: {{SIZE}}{{UNIT}};',
|
|
],
|
|
'condition' => [
|
|
'eael_sl_sep_pot' => 'yes',
|
|
'separator_type' => 'hr',
|
|
],
|
|
] );
|
|
|
|
$lr->add_responsive_control( "eael_sl_sep_margin", [
|
|
'label' => __( 'Margin', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$sep_text => $lr->apply_dim( 'margin' ),
|
|
$sep_hr => $lr->apply_dim( 'margin' ),
|
|
],
|
|
'condition' => [
|
|
'eael_sl_sep_pot' => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_sl_sep_padding", [
|
|
'label' => __( 'Padding', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$sep_text => $lr->apply_dim( 'padding' ),
|
|
$sep_hr => $lr->apply_dim( 'padding' ),
|
|
],
|
|
'condition' => [
|
|
'eael_sl_sep_pot' => 'yes',
|
|
],
|
|
] );
|
|
$lr->add_group_control( Group_Control_Border::get_type(), [
|
|
'name' => "eael_sl_sep_border",
|
|
'selector' => $sep_text,
|
|
'condition' => [
|
|
'eael_sl_sep_pot' => 'yes',
|
|
'separator_type' => 'text',
|
|
],
|
|
] );
|
|
$lr->add_control( "eael_sl_sep_border_radius", [
|
|
'label' => __( 'Border Radius', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$sep_hr => $lr->apply_dim( 'border-radius' ),
|
|
$sep_text => $lr->apply_dim( 'border-radius' ),
|
|
],
|
|
'condition' => [
|
|
'eael_sl_sep_pot' => 'yes',
|
|
],
|
|
'separator' => 'after',
|
|
] );
|
|
$lr->add_control( "eael_sl_sep_text_color", [
|
|
'label' => __( 'Color', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::COLOR,
|
|
'selectors' => [
|
|
$sep_text => 'color: {{VALUE}};',
|
|
],
|
|
'condition' => [
|
|
'eael_sl_sep_pot' => 'yes',
|
|
'separator_type' => 'text',
|
|
],
|
|
'separator' => 'before',
|
|
] );
|
|
$lr->add_group_control( Group_Control_Background::get_type(), [
|
|
'name' => "eael_sl_sep_bg_color",
|
|
'label' => __( 'Background Color', 'essential-addons-for-elementor' ),
|
|
'types' => [
|
|
'classic',
|
|
'gradient',
|
|
],
|
|
'selector' => $sep_text . ', ' . $sep_hr,
|
|
'condition' => [
|
|
'eael_sl_sep_pot' => 'yes',
|
|
],
|
|
] );
|
|
$lr->end_popover();
|
|
$lr->add_group_control( Group_Control_Typography::get_type(), [
|
|
'name' => "eael_sl_sep_typo",
|
|
'label' => __( 'Separator Typography', 'essential-addons-for-elementor' ),
|
|
'selector' => $sep_text,
|
|
'condition' => [
|
|
'separator_type' => 'text',
|
|
],
|
|
] );
|
|
}
|
|
|
|
/**
|
|
* @param array $scripts
|
|
*
|
|
* @return array
|
|
*/
|
|
public function lr_load_pro_scripts( $scripts ) {
|
|
array_push( $scripts, 'password-strength-meter' );
|
|
|
|
return $scripts;
|
|
}
|
|
|
|
/**
|
|
* @param array $styles
|
|
*
|
|
* @return array
|
|
*/
|
|
public function lr_load_pro_styles( array $styles ) {
|
|
return array_merge( $styles, [
|
|
'font-awesome-5-all',
|
|
'font-awesome-4-shim',
|
|
] );
|
|
}
|
|
|
|
/**
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_init_content_pass_strength_controls( Login_Register $lr ) {
|
|
$lr->add_control( 'show_register_icon', [
|
|
'label' => __( 'Show Field Icons', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
] );
|
|
$lr->add_control( 'show_ps_meter', [
|
|
'label' => __( 'Show Password Strength Meter', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
] );
|
|
$lr->add_control( 'show_pass_strength', [
|
|
'label' => __( 'Show Password Strength Text', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
] );
|
|
$lr->add_control( 'ps_text_type', [
|
|
'label' => __( 'Password Strength Text', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SELECT,
|
|
'default' => 'default',
|
|
'options' => [
|
|
'default' => __( 'Default', 'essential-addons-elementor' ),
|
|
'custom' => __( 'Custom', 'essential-addons-elementor' ),
|
|
],
|
|
'condition' => [
|
|
'show_pass_strength' => 'yes',
|
|
],
|
|
] );
|
|
$pass_type = [
|
|
'short' => __( 'Very Weak', 'essential-addons-elementor' ),
|
|
'bad' => __( 'Weak', 'essential-addons-elementor' ),
|
|
'good' => __( 'Medium', 'essential-addons-elementor' ),
|
|
'strong' => __( 'Strong', 'essential-addons-elementor' ),
|
|
];
|
|
foreach ( $pass_type as $p_type => $label ) {
|
|
$lr->add_control( "ps_text_{$p_type}", [
|
|
/* translators: %s: Strength of the Password eg. Bad, Good etc. */
|
|
'label' => sprintf( __( '%s Password', 'essential-addons-elementor' ), $label ),
|
|
'type' => Controls_Manager::TEXT,
|
|
/* translators: %s: Strength of the Password eg. Bad, Good etc. */
|
|
'default' => sprintf( __( '%s Password', 'essential-addons-elementor' ), $label ),
|
|
'placeholder' => __( 'Eg. Weak or Good etc.', 'essential-addons-elementor' ),
|
|
'condition' => [
|
|
'show_pass_strength' => 'yes',
|
|
'ps_text_type' => 'custom',
|
|
],
|
|
] );
|
|
}
|
|
|
|
/** Use Weak Password : Starts */
|
|
$lr->add_control( 'use_weak_password', [
|
|
'label' => __( 'Enable use of weak Password', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'default' => 'yes',
|
|
] );
|
|
|
|
$lr->add_control( 'weak_pass_validation_text_type', [
|
|
'label' => __( 'Validation Text', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SELECT,
|
|
'default' => '',
|
|
'options' => [
|
|
'' => __( 'Default', 'essential-addons-elementor' ),
|
|
'custom' => __( 'Custom', 'essential-addons-elementor' ),
|
|
],
|
|
'condition' => [
|
|
'use_weak_password' => '',
|
|
],
|
|
] );
|
|
|
|
$lr->add_control( "weak_pass_custom_validation_text", [
|
|
'label' => __( 'Custom Validation Text', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::TEXT,
|
|
'placeholder' => __( 'Your custom validation text...', 'essential-addons-elementor' ),
|
|
'condition' => [
|
|
'weak_pass_validation_text_type' => 'custom',
|
|
'use_weak_password' => '',
|
|
],
|
|
] );
|
|
|
|
$lr->add_control( 'weak_pass_min_char', [
|
|
'label' => __( 'Minimum Password Length', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::NUMBER,
|
|
'default' => 12,
|
|
'min' => 6,
|
|
'max' => 30,
|
|
'step' => 1,
|
|
'condition' => [
|
|
'use_weak_password' => '',
|
|
],
|
|
] );
|
|
|
|
$lr->add_control( 'weak_pass_one_uppercase', [
|
|
'label' => __( 'One Uppercase Letter', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'default' => 'yes',
|
|
'condition' => [
|
|
'use_weak_password' => '',
|
|
],
|
|
] );
|
|
|
|
$lr->add_control( 'weak_pass_one_lowercase', [
|
|
'label' => __( 'One Lowercase Letter', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'default' => 'yes',
|
|
'condition' => [
|
|
'use_weak_password' => '',
|
|
],
|
|
] );
|
|
|
|
$lr->add_control( 'weak_pass_one_number', [
|
|
'label' => __( 'One Number', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'default' => 'yes',
|
|
'condition' => [
|
|
'use_weak_password' => '',
|
|
],
|
|
] );
|
|
|
|
$lr->add_control( 'weak_pass_one_special', [
|
|
'label' => __( 'One Special Character', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
'default' => 'yes',
|
|
'condition' => [
|
|
'use_weak_password' => '',
|
|
],
|
|
] );
|
|
|
|
/** Use Weak Password : Ends */
|
|
|
|
$lr->add_control( 'ps_hint_type', [
|
|
'label' => __( 'Password Hint', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SELECT,
|
|
'default' => '',
|
|
'options' => [
|
|
'' => __( 'None', 'essential-addons-elementor' ),
|
|
'default' => __( 'WordPress Default', 'essential-addons-elementor' ),
|
|
'custom' => __( 'Custom', 'essential-addons-elementor' ),
|
|
],
|
|
'condition' => [
|
|
'use_weak_password!' => '',
|
|
],
|
|
'separator' => 'before',
|
|
] );
|
|
$lr->add_control( "ps_hint", [
|
|
'label' => __( 'Custom Password Hint', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::TEXT,
|
|
'placeholder' => __( 'Your custom password hint...', 'essential-addons-elementor' ),
|
|
'condition' => [
|
|
'ps_hint_type' => 'custom',
|
|
'use_weak_password!' => '',
|
|
],
|
|
] );
|
|
|
|
}
|
|
|
|
/**
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_init_content_icon_controls( Login_Register $lr ) {
|
|
$lr->add_control( 'show_login_icon', [
|
|
'label' => __( 'Show Field Icons', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::SWITCHER,
|
|
] );
|
|
}
|
|
|
|
/**
|
|
* @param Repeater $repeater register field repeater object
|
|
*/
|
|
public function lr_add_register_fields_icons( $repeater ) {
|
|
$repeater->add_control( 'icon', [
|
|
'label' => __( 'Icon', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::ICONS,
|
|
'default' => [
|
|
'value' => 'fas fa-user',
|
|
'library' => 'fa-solid',
|
|
],
|
|
'condition' => [
|
|
'field_type!' => [
|
|
'honeypot'
|
|
],
|
|
],
|
|
] );
|
|
}
|
|
|
|
/**
|
|
* @param array $fields register fields default fields array
|
|
*
|
|
* @return array $fields
|
|
*/
|
|
public function lr_add_register_fields_default_icons( $fields ) {
|
|
return array_map( function ( $field ) {
|
|
if ( ! isset( $field['field_type'] ) ) {
|
|
return $field;
|
|
}
|
|
switch ( $field['field_type'] ) {
|
|
case 'user_name':
|
|
case 'first_name':
|
|
case 'last_name':
|
|
$field['icon'] = [
|
|
'value' => 'fas fa-user',
|
|
'library' => 'fa-solid',
|
|
];
|
|
break;
|
|
case 'email':
|
|
$field['icon'] = [
|
|
'value' => 'fas fa-envelope',
|
|
'library' => 'fa-solid',
|
|
];
|
|
break;
|
|
case 'password':
|
|
case 'confirm_pass':
|
|
$field['icon'] = [
|
|
'value' => 'fas fa-lock',
|
|
'library' => 'fa-solid',
|
|
];
|
|
break;
|
|
case 'website':
|
|
$field['icon'] = [
|
|
'value' => 'fas fa-globe',
|
|
'library' => 'fa-solid',
|
|
];
|
|
break;
|
|
|
|
}
|
|
|
|
return $field;
|
|
}, $fields );
|
|
}
|
|
|
|
/**
|
|
* It adds styling controls for password strength
|
|
*
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_init_style_pass_strength_controls( Login_Register $lr ) {
|
|
$lr->start_controls_section( 'section_style_pass_strength', [
|
|
'label' => __( 'Password Strength', 'essential-addons-for-elementor' ),
|
|
'tab' => Controls_Manager::TAB_STYLE,
|
|
//'condition' => [
|
|
// 'show_pass_strength' => 'yes',
|
|
//], //@TODO; update to or condition later
|
|
] );
|
|
$container = "{{WRAPPER}} .pass-meta-info";
|
|
$notice_container = "{{WRAPPER}} .eael-pass-notice";
|
|
$meter = "{{WRAPPER}} .eael-pass-meter";
|
|
$hint = "{{WRAPPER}} .eael-pass-hint";
|
|
$lr->add_responsive_control( "eael_ps_wrap_width", [
|
|
'label' => esc_html__( 'Width', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 1000,
|
|
'step' => 5,
|
|
],
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'default' => [
|
|
'unit' => '%',
|
|
'size' => 100,
|
|
],
|
|
'selectors' => [
|
|
$container => 'width: {{SIZE}}{{UNIT}};',
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_ps_wrap_height", [
|
|
'label' => esc_html__( 'Height', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::SLIDER,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'range' => [
|
|
'px' => [
|
|
'min' => 0,
|
|
'max' => 1000,
|
|
'step' => 5,
|
|
],
|
|
'%' => [
|
|
'min' => 0,
|
|
'max' => 100,
|
|
],
|
|
],
|
|
'selectors' => [
|
|
$container => 'height: {{SIZE}}{{UNIT}};',
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_ps_wrap_margin", [
|
|
'label' => __( 'Box Margin', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$container => $lr->apply_dim( 'margin' ),
|
|
],
|
|
] );
|
|
|
|
$lr->add_responsive_control( "eael_ps_wrap_padding", [
|
|
'label' => __( 'Box Padding', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$container => $lr->apply_dim( 'padding' ),
|
|
],
|
|
'separator' => 'after',
|
|
] );
|
|
$lr->add_responsive_control( "eael_ps_meter_margin", [
|
|
'label' => __( 'Meter Margin', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$meter => $lr->apply_dim( 'margin' ),
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_ps_text_margin", [
|
|
'label' => __( 'Strength Text Margin', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$notice_container => $lr->apply_dim( 'margin' ),
|
|
],
|
|
] );
|
|
$lr->add_responsive_control( "eael_ps_hint_margin", [
|
|
'label' => __( 'Password Hint Margin', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'em',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$hint => $lr->apply_dim( 'margin' ),
|
|
],
|
|
'condition' => [
|
|
'ps_hint_type!' => '',
|
|
'use_weak_password!' => '',
|
|
],
|
|
] );
|
|
$lr->add_group_control( Group_Control_Typography::get_type(), [
|
|
'label' => __( 'Strength Text Typography', 'essential-addons-elementor' ),
|
|
'name' => 'eael_ps_text_typo',
|
|
'selector' => $notice_container,
|
|
] );
|
|
$lr->add_group_control( Group_Control_Typography::get_type(), [
|
|
'label' => __( 'Password Hint Typography', 'essential-addons-elementor' ),
|
|
'name' => 'eael_ps_hint_typo',
|
|
'selector' => $hint,
|
|
'condition' => [
|
|
'ps_hint_type!' => '',
|
|
'use_weak_password!' => '',
|
|
],
|
|
] );
|
|
$lr->add_group_control( Group_Control_Border::get_type(), [
|
|
'name' => "eael_ps_wrap_border",
|
|
'selector' => $notice_container,
|
|
] );
|
|
$lr->add_control( "eael_ps_wrap_border_radius", [
|
|
'label' => __( 'Border Radius', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::DIMENSIONS,
|
|
'size_units' => [
|
|
'px',
|
|
'%',
|
|
],
|
|
'selectors' => [
|
|
$notice_container => $lr->apply_dim( 'border-radius' ),
|
|
],
|
|
'separator' => 'after',
|
|
] );
|
|
$lr->add_control( 'ps_text_color_heading', [
|
|
'label' => __( 'Colors', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::HEADING,
|
|
'separator' => 'before',
|
|
] );
|
|
$pass_type = [
|
|
'short' => __( 'Very Weak', 'essential-addons-elementor' ),
|
|
'bad' => __( 'Weak', 'essential-addons-elementor' ),
|
|
'good' => __( 'Medium', 'essential-addons-elementor' ),
|
|
'strong' => __( 'Strong', 'essential-addons-elementor' ),
|
|
];
|
|
foreach ( $pass_type as $p_type => $label ) {
|
|
$ps_text_n_meter_selectors = [ "{$notice_container}.{$p_type}" => 'color: {{VALUE}};' ];
|
|
switch ( $p_type ) {
|
|
case 'short':
|
|
$ps_text_n_meter_selectors['{{WRAPPER}} .eael-lr-form-wrapper meter[value=\'0\']::-webkit-meter-optimum-value'] = 'background: {{VALUE}};';
|
|
$ps_text_n_meter_selectors['{{WRAPPER}} .eael-lr-form-wrapper meter[value=\'0\']::-moz-meter-bar, '] = 'background: {{VALUE}};';
|
|
$ps_text_n_meter_selectors['{{WRAPPER}} .eael-lr-form-wrapper meter[value=\'1\']::-webkit-meter-optimum-value'] = 'background: {{VALUE}};';
|
|
$ps_text_n_meter_selectors['{{WRAPPER}} .eael-lr-form-wrapper meter[value=\'1\']::-moz-meter-bar'] = 'background: {{VALUE}};';
|
|
break;
|
|
case 'bad':
|
|
$ps_text_n_meter_selectors['{{WRAPPER}} .eael-lr-form-wrapper meter[value=\'2\']::-webkit-meter-optimum-value'] = 'background: {{VALUE}};';
|
|
$ps_text_n_meter_selectors['{{WRAPPER}} .eael-lr-form-wrapper meter[value=\'2\']::-moz-meter-bar'] = 'background: {{VALUE}};';
|
|
break;
|
|
case 'good':
|
|
|
|
$ps_text_n_meter_selectors['{{WRAPPER}} .eael-lr-form-wrapper meter[value=\'3\']::-webkit-meter-optimum-value'] = 'background: {{VALUE}};';
|
|
$ps_text_n_meter_selectors['{{WRAPPER}} .eael-lr-form-wrapper meter[value=\'3\']::-moz-meter-bar'] = 'background: {{VALUE}};';
|
|
break;
|
|
case 'strong':
|
|
$ps_text_n_meter_selectors['{{WRAPPER}} .eael-lr-form-wrapper meter[value=\'4\']::-webkit-meter-optimum-value'] = 'background: {{VALUE}};';
|
|
$ps_text_n_meter_selectors['{{WRAPPER}} .eael-lr-form-wrapper meter[value=\'4\']::-moz-meter-bar'] = 'background: {{VALUE}};';
|
|
break;
|
|
}
|
|
|
|
$lr->add_control( "ps_text_{$p_type}_color", [
|
|
/* translators: %s: Strength of the Password eg. Bad, Good etc. */
|
|
'label' => sprintf( __( '%s Password', 'essential-addons-elementor' ), $label ),
|
|
'type' => Controls_Manager::COLOR,
|
|
'selectors' => $ps_text_n_meter_selectors,
|
|
'condition' => [
|
|
'show_pass_strength' => 'yes',
|
|
],
|
|
] );
|
|
}
|
|
$lr->add_control( "ps_hint_color", [
|
|
'label' => __( 'Password Hint', 'essential-addons-elementor' ),
|
|
'type' => Controls_Manager::COLOR,
|
|
'selectors' => $hint,
|
|
'condition' => [
|
|
'ps_hint_type!' => '',
|
|
'use_weak_password!' => '',
|
|
],
|
|
] );
|
|
$lr->add_group_control( Group_Control_Background::get_type(), [
|
|
'name' => "eael_ps_wrap_bg_color",
|
|
'label' => __( 'Background Color', 'essential-addons-for-elementor' ),
|
|
'types' => [
|
|
'classic',
|
|
'gradient',
|
|
],
|
|
'selector' => $notice_container,
|
|
] );
|
|
$lr->add_responsive_control( 'eael_ps_align', [
|
|
'label' => __( 'Alignment', 'essential-addons-for-elementor' ),
|
|
'type' => Controls_Manager::CHOOSE,
|
|
'options' => [
|
|
'left' => [
|
|
'title' => __( 'Left', 'essential-addons-for-elementor' ),
|
|
'icon' => 'eicon-text-align-left',
|
|
],
|
|
'center' => [
|
|
'title' => __( 'Center', 'essential-addons-for-elementor' ),
|
|
'icon' => 'eicon-text-align-center',
|
|
],
|
|
'right' => [
|
|
'title' => __( 'Right', 'essential-addons-for-elementor' ),
|
|
'icon' => 'eicon-text-align-right',
|
|
],
|
|
],
|
|
'default' => '',
|
|
'selectors' => [
|
|
$notice_container => 'text-align: {{VALUE}};',
|
|
],
|
|
] );
|
|
$lr->end_controls_section();
|
|
}
|
|
|
|
/**
|
|
* It shows password strength
|
|
*
|
|
* @param Login_Register $lr
|
|
*/
|
|
public function lr_show_password_strength_meter( Login_Register $lr ) {
|
|
$show_ps_meter = $lr->get_settings_for_display( 'show_ps_meter' );
|
|
$show_pass_strength = $lr->get_settings_for_display( 'show_pass_strength' );
|
|
$hint_type = $lr->get_settings_for_display( 'ps_hint_type' );
|
|
|
|
if ( 'yes' !== $show_pass_strength && empty( $hint_type ) && 'yes' !== $show_ps_meter ) {
|
|
return;// vail early if SPS, spsm and hint all off
|
|
}
|
|
|
|
$data = [
|
|
'show_ps_meter' => esc_attr( $show_ps_meter ),
|
|
'show_pass_strength' => esc_attr( $show_pass_strength ),
|
|
'ps_text_type' => esc_attr( $lr->get_settings_for_display( 'ps_text_type' ) ),
|
|
];
|
|
|
|
if ( 'yes' === $show_pass_strength ) {
|
|
$pass_types = [
|
|
'short',
|
|
'bad',
|
|
'good',
|
|
'strong',
|
|
];
|
|
foreach ( $pass_types as $pass_type ) {
|
|
$data["ps_text_{$pass_type}"] = trim( $lr->get_settings_for_display( "ps_text_{$pass_type}" ) );
|
|
}
|
|
}
|
|
|
|
$hint = '';
|
|
if ( ! empty( $hint_type ) ) {
|
|
$hint = 'custom' === $hint_type ? $lr->get_settings_for_display( 'ps_hint' ) : wp_get_password_hint();
|
|
}
|
|
?>
|
|
<div class='pass-meta-info' data-strength-options="<?php echo esc_attr( json_encode( $data ) ); ?>">
|
|
<?php
|
|
if ( 'yes' === $show_ps_meter ) {
|
|
echo '<meter max="4" class="eael-pass-meter" value="" style="display: none"></meter>';
|
|
}
|
|
if ( 'yes' === $show_pass_strength ) {
|
|
echo '<p class="eael-pass-notice" style="display: none"></p>';
|
|
}
|
|
if ( ! empty( $hint ) ) {
|
|
printf( "<p class='eael-pass-hint'>%s</p>", esc_html( $hint ) );
|
|
}
|
|
?>
|
|
</div>
|
|
<?php
|
|
|
|
}
|
|
|
|
/**
|
|
* It validates password
|
|
*
|
|
* @param array $settings
|
|
* @param string $password
|
|
* @param array $errors
|
|
*/
|
|
public function lr_register_user_password_validation( $errors, $settings, $password ) {
|
|
$use_weak_password = !empty($settings['use_weak_password']) ? $settings['use_weak_password'] : '';
|
|
$validation_text_condition = [];
|
|
|
|
if('yes' !== $use_weak_password) {
|
|
$weak_pass_min_char = isset($settings['weak_pass_min_char']) ? intval($settings['weak_pass_min_char']) : 12;
|
|
$weak_pass_one_uppercase = isset($settings['weak_pass_one_uppercase']) ? sanitize_text_field( $settings['weak_pass_one_uppercase'] ) : 'yes';
|
|
$weak_pass_one_lowercase = isset($settings['weak_pass_one_lowercase']) ? sanitize_text_field( $settings['weak_pass_one_lowercase'] ) : 'yes';
|
|
$weak_pass_one_number = isset($settings['weak_pass_one_number']) ? sanitize_text_field( $settings['weak_pass_one_number'] ) : 'yes';
|
|
$weak_pass_one_special = isset($settings['weak_pass_one_special']) ? sanitize_text_field( $settings['weak_pass_one_special'] ) : 'yes';
|
|
|
|
$pattern_init_uppercase = $pattern_init_lowercase = $pattern_init_number = $pattern_init_special = '';
|
|
|
|
if( 'yes' === $weak_pass_one_uppercase ) {
|
|
$pattern_init_uppercase = '(?=.*[A-Z])';
|
|
$validation_text_condition[] = 'one uppercase letter';
|
|
}
|
|
if( 'yes' === $weak_pass_one_lowercase ) {
|
|
$pattern_init_lowercase = '(?=.*[a-z])';
|
|
$validation_text_condition[] = 'one lowercase letter';
|
|
}
|
|
if( 'yes' === $weak_pass_one_number ) {
|
|
$pattern_init_number = '(?=.*[0-9])';
|
|
$validation_text_condition[] = 'one number';
|
|
}
|
|
if( 'yes' === $weak_pass_one_special ) {
|
|
$pattern_init_special = '(?=.*[!@#$%^&*-])';
|
|
$validation_text_condition[] = 'one special character';
|
|
}
|
|
|
|
if($weak_pass_min_char){
|
|
$pattern_init_min_char = '.{' . $weak_pass_min_char . ',}';
|
|
}
|
|
$pattern = '/^' . $pattern_init_special . $pattern_init_number . $pattern_init_uppercase . $pattern_init_lowercase . $pattern_init_min_char . '$/';
|
|
// Regex Example: $pattern = '/^(?=.*[!@#$%^&*-])(?=.*[0-9])(?=.*[A-Z]).{12,}$/'; // at least 12 characters, one special character, one number, one uppercase letter and one lowercase letter
|
|
|
|
if(!preg_match($pattern, $password)) {
|
|
|
|
$validation_text_default = 'Password must be at least ' . intval( $weak_pass_min_char ) . ' characters long';
|
|
|
|
if( count($validation_text_condition) ){
|
|
foreach($validation_text_condition as $key => $value) {
|
|
if($key === 0) {
|
|
$validation_text_default .= ' and contains at least ';
|
|
} else if ( $key === count($validation_text_condition) - 1 ) {
|
|
$validation_text_default .= ' and ';
|
|
} else {
|
|
$validation_text_default .= ', ';
|
|
}
|
|
|
|
$validation_text_default .= $value;
|
|
}
|
|
}
|
|
|
|
$errors['password'] = $validation_text_default;
|
|
|
|
if ( !empty( $settings['weak_pass_validation_text_type'] ) && 'custom' === $settings['weak_pass_validation_text_type'] ) {
|
|
$errors['password'] = !empty( $settings['weak_pass_custom_validation_text'] ) ? sanitize_text_field( $settings['weak_pass_custom_validation_text'] ) : $errors['password'];
|
|
}
|
|
}
|
|
}
|
|
|
|
return $errors;
|
|
}
|
|
|
|
}
|