File "functions.php"
Full Path: /home/tekvhqgl/public_html/wp-content/plugins/responsive-owl-carousel-elementor/includes/functions.php
File size: 33.25 KB
MIME-type: text/x-php
Charset: utf-8
<?php
use Elementor\Utils;
use Elementor\Plugin;
use Elementor\Icons_Manager;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Background;
use Elementor\Group_Control_Typography;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Box_Shadow;
/**
* Add custom image sizes for different layouts
*/
function owce_image_sizes() {
add_image_size( 'owl_elementor_thumbnail', 600, 450 );
add_image_size( 'owl_elementor_team', 350, 450, true );
add_image_size( 'owl_elementor_testimonial', 100, 100, true );
}
add_action( 'init', 'owce_image_sizes', 999 );
/**
* Get carousel layouts
*
* @return array
*/
function get_carousel_layouts() {
$base_layouts = [
'basic' => __( 'Basic', 'responsive-owl-carousel-elementor' ),
'image' => __( 'Image Only', 'responsive-owl-carousel-elementor' ),
'testimonial' => __( 'Testimonial', 'responsive-owl-carousel-elementor' ),
'team' => __( 'Team', 'responsive-owl-carousel-elementor' ),
];
return apply_filters( 'owce_layouts', $base_layouts );
}
/**
* Generating styles for carousel layouts
*
* @param string $layout
*
* @return array
*/
function get_carousel_layout_styles( $layout = 'basic' ) {
$styles = [
'basic' => [
'one' => __( 'One', 'responsive-owl-carousel-elementor' )
],
'testimonial' => [
'one' => __( 'One', 'responsive-owl-carousel-elementor' ),
'two' => __( 'Two', 'responsive-owl-carousel-elementor' ),
'three' => __( 'Three', 'responsive-owl-carousel-elementor' ),
'four' => __( 'Four', 'responsive-owl-carousel-elementor' ),
],
'team' => [
'one' => __( 'One', 'responsive-owl-carousel-elementor' ),
'two' => __( 'Two', 'responsive-owl-carousel-elementor' ),
],
];
return $styles[ $layout ];
}
/**
* Get social icons list
*
* @return array
*/
function get_social_icons() {
$social_icons = [];
$total = 4;
for ( $i = 1; $i <= $total; $i ++ ) {
$social_icons[ 'item_social_icon_' . $i ] = esc_html__( 'Icon', 'responsive-owl-carousel-elementor' );
}
return apply_filters( 'owce_social_icons', $social_icons );
}
/**
* Get social icons control
*
* @param $widget
* @param $settings
* @param string[] $attrs
*
* @return false|string|void
*/
function owce_get_social_icons( $widget, $settings, $attrs = [ 'class' => '' ] ) {
$social_icons = get_social_icons();
if ( count( $social_icons ) < 1 ) {
return;
}
ob_start();
foreach ( $social_icons as $icon_key => $label ) {
$link_key = $icon_key . '_link';
$link_attrs = [
'class' => $attrs['class'],
'data-setting' => $link_key . '_url',
];
if ( ! empty( $settings[ $link_key ]['url'] ) ) {
$link_attrs['href'] = $settings[ $link_key ]['url'];
}
if ( ! empty( $settings[ $link_key ]['is_external'] ) ) {
$link_attrs['target'] = "_blank";
}
if ( ! empty( $settings[ $link_key ]['nofollow'] ) ) {
$link_attrs['rel'] = "nofollow";
}
echo owce_get_text_with_tag(
$widget,
'a',
owce_get_rendered_icons( $settings[ $icon_key ] ),
$link_attrs );
}
return ob_get_clean();
}
/**
* Get html tag with passed attributes
*
* @param $widget
* @param $html_tag
* @param $text
* @param array $attrs
*
* @return string
*/
function owce_get_text_with_tag( $widget, $html_tag, $text, $attrs = [] ) {
//$widget->add_render_attribute( $key, array_map( 'esc_attr', $attrs ) );
// following function has a duplication issue
// return sprintf( '<%1$s %2$s>%3$s</%1$s>', esc_html( $html_tag ),
// $widget->get_render_attribute_string( $key ), $key );
$html_attrs = '';
foreach ( $attrs as $key => $value ) {
$html_attrs .= $key . "=" . $value . " ";
}
return sprintf( '<%1$s %2$s>%3$s</%1$s>',
$html_tag,
$html_attrs,
$text
);
}
/**
* Get image with size
*
* @param $settings
* @param $img_size
* @param $img_key
* @param null $widget
* @param array $lightbox
*
* @return string
*/
function owce_get_img_with_size( $settings, $img_size, $img_key, $widget = null, $lightbox = [] ) {
$defaults = [
'show_lightbox' => false,
'show_lightbox_title' => true,
'show_lightbox_description' => false,
'disable_lightbox_editor_mode' => true
];
$options = wp_parse_args( $lightbox, $defaults );
/**
* @var string $show_lightbox
* @var string $disable_lightbox_editor_mode
* @var string $show_lightbox_title
* @var string $show_lightbox_description
*/
extract( $options );
if ( $widget && $show_lightbox ) {
$link = [
'url' => $settings[ $img_key ]['url'],
'id' => $settings[ $img_key ]['id']
];
$img_id = $link['id'];
$img_link = $link['url'];
$widget->add_link_attributes( $img_link, $link );
$widget->add_lightbox_data_attributes( $img_link, $img_id, 'yes', $widget->get_id() );
// enable/disable click on image to open lightbox in edit mode
if ( Plugin::$instance->editor->is_edit_mode() ) {
if ( $disable_lightbox_editor_mode ) {
$widget->add_render_attribute( $img_link, [ 'class' => 'js-elementor-not-clickable' ] );
} else {
$widget->add_render_attribute( $img_link, [ 'class' => 'elementor-clickable' ] );
}
}
// empty title value
if ( ! $show_lightbox_title ) {
$widget->add_render_attribute( $img_link, [ 'data-elementor-lightbox-title' => '' ], null, true );
}
// empty description value
if ( ! $show_lightbox_description ) {
$widget->add_render_attribute( $img_link, [ 'data-elementor-lightbox-description' => '' ], null, true );
}
$img_html = "<a " . $widget->get_render_attribute_string( $img_link ) . ">";
$img_html .= Group_Control_Image_Size::get_attachment_image_html( $settings, $img_size, $img_key );
$img_html .= "</a>";
return $img_html;
}
return Group_Control_Image_Size::get_attachment_image_html( $settings, $img_size, $img_key );
}
/**
* Wrapper for generating various kinds of Elementor control
*
* @param $widget
* @param $field
* @param $label
* @param $selector
* @param array $options
* @param string $tab
*/
function owce_common_controls_section( $widget, $field, $label, $selector, $options = [], $tab = '' ) {
$field_prefix = owce_get_class_constant( $widget, 'FIELD_PREFIX' ) ? $widget::FIELD_PREFIX : '';
$defaults = [
'hide' => true,
'hide_default' => '',
'align' => false,
'tag' => true,
'default_tag' => 'div',
'color' => true,
'hover_color' => false,
'background' => false,
'hover_background' => false,
// 'background_type' => [ 'classic', 'gradient', 'video' ],
// 'background_exclude' => [],
'padding' => false,
'margin' => true,
'gap' => false,
'typography' => true,
'font_size' => false,
'border' => false,
'box_shadow' => false,
'border_radius' => false,
'icon' => false,
'size' => false,
'image' => false,
'hover_animation' => false,
'hover_animation_default' => '',
'condition' => ''
];
$options = wp_parse_args( $options, $defaults );
/**
* @var array $condition
* @var string $hide
* @var string $icon
* @var string $tag
* @var string $default_tag
* @var string $color
* @var string $hover_color
* @var string $background
* @var string $hover_background
* @var array $background_exclude
* @var array $background_type
* @var string $typography
* @var string $gap
* @var string $font_size
* @var string $align
* @var string $margin
* @var string $padding
* @var string $size
* @var string $border
* @var string $box_shadow
* @var string $border_radius
* @var string $box_shadow
* @var string $box_shadow
* @var string $hover_animation
* @var string $hover_animation_default
*/
extract( $options );
$tab_section = $tab == 'tab' ? Controls_Manager::TAB_CONTENT : Controls_Manager::TAB_STYLE;
$widget->start_controls_section(
$field_prefix . 'style_' . $field,
[
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'tab' => $tab_section,
'condition' => $condition
]
);
if ( $hide ) {
$hide_options = $options;
$hide_options['default'] = $options['hide_default'];
$hide_options['condition'] = $show_hide_button ?? '';
$_label = owce_key_value_exists( $options, 'hide_label', esc_html__( 'Hide', 'responsive-owl-carousel-elementor' ) );
owce_switcher_control( $widget, $field . '_hide', $_label, $hide_options );
}
if ( $icon ) {
$_label = owce_key_value_exists( $options, 'icon_label', esc_html__( 'Icon', 'responsive-owl-carousel-elementor' ) );
owce_icons_control( $widget, $field, $_label, $options );
}
if ( $tag ) {
$_label = owce_key_value_exists( $options, 'tag_label', esc_html__( 'HTML Tag', 'responsive-owl-carousel-elementor' ) );
$_tags = [
'h1' => 'H1',
'h2' => 'H2',
'h3' => 'H3',
'h4' => 'H4',
'h5' => 'H5',
'h6' => 'H6',
'div' => 'div',
'span' => 'span',
'p' => 'p',
];
owce_select_control( $widget, $field . '_tag', $_label, [ 'options' => $_tags, 'default' => $default_tag ] );
}
if ( $color ) {
$_label = owce_key_value_exists( $options, 'color_label', esc_html__( 'Color', 'responsive-owl-carousel-elementor' ) );
owce_color_control( $widget, $field . '_color', $_label, $selector );
}
if ( $background ) {
$_label = owce_key_value_exists( $options, 'background_label', esc_html__( 'Background', 'responsive-owl-carousel-elementor' ) );
owce_background_control( $widget, $field . '_background', $_label, [
'selector' => $selector,
'condition' => $condition,
] );
}
if ( $hover_background ) {
$_label = owce_key_value_exists( $options, 'hover_background_label', esc_html__( 'Hover', 'responsive-owl-carousel-elementor' ) );
// label/description doesn't work for background control.
// That's creating an heading control to show a note
$widget->add_control(
'_hover_background_note',
[
'label' => esc_html__( $_label, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
owce_background_control( $widget, $field . '_hover_background', $_label, [
'hover' => true,
'selector' => $selector,
'condition' => $condition,
] );
}
if ( $hover_color ) {
$_label = owce_key_value_exists( $options, 'hover_color_label', esc_html__( 'Hover color', 'responsive-owl-carousel-elementor' ) );
owce_color_control( $widget, $field . '_hover_color', $_label, $selector, true );
}
if ( $typography ) {
$_label = owce_key_value_exists( $options, 'typography_label', esc_html__( 'Typography', 'responsive-owl-carousel-elementor' ) );
$widget->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => $field_prefix . $field . '_typography',
'label' => esc_html__( $_label, 'responsive-owl-carousel-elementor' ),
'selector' => '{{WRAPPER}} ' . $selector
]
);
}
if ( $gap ) {
$default_gap = null;
$_label = owce_key_value_exists( $options, 'gap_label', esc_html__( 'Gap', 'responsive-owl-carousel-elementor' ) );
owce_slider_control( $widget, $field . '_gap', $_label, [
'responsive' => true,
'property' => 'no-selector',
'size_units' => [ 'px' ],
'range' => [ 'px' => [ 'max' => 100 ] ],
'default' => [ 'size' => 10 ],
'tablet_default' => [ 'size' => 10 ],
'mobile_default' => [ 'size' => 0 ],
] );
}
if ( $font_size ) {
$_label = owce_key_value_exists( $options, 'font_size_label', esc_html__( 'Size', 'responsive-owl-carousel-elementor' ) );
owce_slider_control( $widget, $field . '_font_size', $_label, [
'property' => 'font-size',
'selector' => $selector
] );
}
if ( $align ) {
$_label = owce_key_value_exists( $options, 'align_label', esc_html__( 'Align', 'responsive-owl-carousel-elementor' ) );
owce_choose_control( $widget, $field . '_align', $_label, [ 'selector' => $selector ] );
}
if ( $margin ) {
$_label = owce_key_value_exists( $options, 'margin_label', esc_html__( 'Margin', 'responsive-owl-carousel-elementor' ) );
owce_dimension_control( $widget, $field . '_margin', $_label, [ 'selector' => $selector ] );
}
if ( $padding ) {
$_label = owce_key_value_exists( $options, 'padding_label', esc_html__( 'Padding', 'responsive-owl-carousel-elementor' ) );
owce_dimension_control( $widget, $field . '_padding', $_label, [
'type' => 'padding',
'selector' => $selector,
'default' => $padding_default ?? []
] );
}
if ( $size ) {
// width
$_label = owce_key_value_exists( $options, 'width_label', esc_html__( 'Width', 'responsive-owl-carousel-elementor' ) );
owce_slider_control( $widget, $field . '_width', $_label, [ 'selector' => $selector ] );
// height
$_label = owce_key_value_exists( $options, 'height_label', esc_html__( 'Height', 'responsive-owl-carousel-elementor' ) );
owce_slider_control( $widget, $field . '_height', $_label, [
'property' => 'height',
'size_units' => [ 'px' ],
'selector' => $selector,
'description' => 'in px only'
] );
}
if ( $border ) {
$_label = owce_key_value_exists( $options, 'border_label', esc_html__( 'Border', 'responsive-owl-carousel-elementor' ) );
$widget->add_group_control(
Group_Control_Border::get_type(),
[
'name' => $field_prefix . $field . '_border',
'label' => esc_html__( $_label, 'responsive-owl-carousel-elementor' ),
'fields_options' => $border_default ?? '',
'selector' => '{{WRAPPER}} ' . $selector,
]
);
}
if ( $box_shadow ) {
$_label = owce_key_value_exists( $options, 'box_shadow_label', esc_html__( 'Box Shadow', 'responsive-owl-carousel-elementor' ) );
$widget->add_group_control(
Group_Control_Box_Shadow::get_type(),
[
'name' => $field_prefix . $field . '_box_shadow',
'label' => esc_html__( $_label, 'responsive-owl-carousel-elementor' ),
'selector' => '{{WRAPPER}} ' . $selector,
]
);
}
if ( $border_radius ) {
$_label = owce_key_value_exists( $options, 'border_radius_label', esc_html__( 'Border Radius', 'responsive-owl-carousel-elementor' ) );
owce_dimension_control( $widget, $field . '_border_radius', $_label, [
'type' => 'border-radius',
'selector' => $selector,
'default' => $border_radius_default ?? []
] );
}
if ( $hover_animation ) {
$_label = owce_key_value_exists( $options, 'hover_animation_label', esc_html__( 'Hover Animation', 'responsive-owl-carousel-elementor' ) );
$widget->add_control(
$field_prefix . $field . '_hover_animation',
[
'label' => esc_html__( $_label, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::HOVER_ANIMATION,
'default' => $hover_animation_default
]
);
}
$widget->end_controls_section();
}
/**
* Get elementor background control
*
* @param $widget
* @param $field
* @param $label
* @param array $options
*/
function owce_background_control( $widget, $field, $label, $options = [] ) {
$defaults = [
'hover' => false,
'background_type' => [ 'classic' ],
'background_exclude' => [ 'image' ],
'selector' => '',
'condition' => '',
];
$options = wp_parse_args( $options, $defaults );
/**
* @var string $default
* @var string $description
* @var array $background_exclude
* @var array $background_type
* @var string $selector
* @var array $classes
* @var array $hover
* @var array $condition
*/
extract( $options );
$field_prefix = owce_get_class_constant( $widget, 'FIELD_PREFIX' ) ? $widget::FIELD_PREFIX : '';
$selector = '{{WRAPPER}} ' . $selector;
if ( $hover ) {
$selector = $selector . ':hover, ' . $selector . ':focus';
}
$widget->add_group_control(
Group_Control_Background::get_type(),
[
'name' => $field_prefix . $field,
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'description' => esc_html__( 'My description', 'responsive-owl-carousel-elementor' ),
'exclude' => $background_exclude,
'types' => $background_type,
'selector' => $selector,
'content_classes' => 'myclassss',
'condition' => $condition,
]
);
}
/**
* Get elementor text control
*
* @param $widget
* @param $field
* @param $label
* @param array $options
*/
function owce_text_control( $widget, $field, $label, $options = [] ) {
$defaults = [
'type' => 'text',
'input_type' => 'text',
'description' => '',
'show_label' => true,
'label_block' => true,
'default' => '',
'placeholder' => '',
'classes' => '',
'selectors' => '',
'condition' => ''
];
$options = wp_parse_args( $options, $defaults );
/**
* @var string $default
* @var string $show_label
* @var string $label_block
* @var string $placeholder
* @var string $classes
* @var array $selectors
* @var array $condition
* @var string $type
* @var string $input_type
*/
extract( $options );
$args = [
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::TEXT,
'default' => esc_html__( $default, 'responsive-owl-carousel-elementor' ),
'show_label' => $show_label,
'label_block' => $label_block,
'placeholder' => esc_html__( $placeholder, 'responsive-owl-carousel-elementor' ),
'classes' => $classes,
'selectors' => $selectors,
'condition' => $condition
];
if ( $type == 'text' ) {
$args['input_type'] = $input_type;
}
if ( $type == 'textarea' ) {
$args['type'] = Controls_Manager::TEXTAREA;
}
if ( $type == 'wysiwyg' ) {
$args['type'] = Controls_Manager::WYSIWYG;
}
$field_prefix = owce_get_class_constant( $widget, 'FIELD_PREFIX' ) ? $widget::FIELD_PREFIX : '';
$widget->add_control(
$field_prefix . $field,
$args
);
}
/**
* Get elementor image control
*
* @param $widget
* @param $field
* @param $label
* @param array $options
*/
function owce_image_control( $widget, $field, $label, $options = [] ) {
$defaults = [
'description' => '',
'classes' => '',
'condition' => '',
'default' => [
'url' => Utils::get_placeholder_image_src()
],
];
$options = wp_parse_args( $options, $defaults );
/**
* @var string $default
* @var string $description
* @var string $classes
* @var array $condition
*/
extract( $options );
$field_prefix = owce_get_class_constant( $widget, 'FIELD_PREFIX' ) ? $widget::FIELD_PREFIX : '';
$widget->add_control(
$field_prefix . $field,
[
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'description' => esc_html__( $description, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::MEDIA,
'classes' => $classes,
'condition' => $condition,
'default' => $default
]
);
}
/**
* Get elementor dimension control
*
* @param $widget
* @param $field
* @param $label
* @param array $options
*/
function owce_dimension_control( $widget, $field, $label, $options = [] ) {
$defaults = [
'type' => 'margin',
'responsive' => true,
'description' => '',
'size_units' => [ 'px', '%', 'em' ],
'default' => [
'top' => '',
'right' => '',
'bottom' => '',
'left' => '',
'isLinked' => true,
],
'allowed_dimensions' => 'all',
'classes' => '',
'selector' => '',
'condition' => '',
];
$options = wp_parse_args( $options, $defaults );
/**
* @var string $default
* @var string $description
* @var array $size_units
* @var array $allowed_dimensions
* @var string $selector
* @var string $classes
* @var array $condition
* @var string $responsive
* @var string $type
*/
extract( $options );
$args = [
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'description' => esc_html__( $description, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => $size_units,
'selectors' => [
'{{WRAPPER}} ' . $selector => $type . ': {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
'allowed_dimensions' => $allowed_dimensions,
'default' => $default,
'classes' => $classes,
'condition' => $condition,
];
$field_prefix = owce_get_class_constant( $widget, 'FIELD_PREFIX' ) ? $widget::FIELD_PREFIX : '';
if ( $responsive ) {
$widget->add_responsive_control(
$field_prefix . $field,
$args
);
} else {
$widget->add_control(
$field_prefix . $field,
$args
);
}
}
/**
* Get elementor switcher control
*
* @param $widget
* @param $field
* @param $label
* @param array $options
*/
function owce_switcher_control( $widget, $field, $label, $options = [] ) {
$defaults = [
'responsive' => false,
'description' => '',
'label_on' => 'Yes',
'label_off' => 'No',
'return_value' => 'yes',
'default' => 'yes',
'tablet_default' => 'yes',
'mobile_default' => 'yes',
'condition' => ''
];
$options = wp_parse_args( $options, $defaults );
/**
* @var string $default
* @var string $description
* @var string $label_on
* @var string $label_off
* @var string $return_value
* @var string $tablet_default
* @var string $mobile_default
* @var array $condition
* @var string $responsive
*/
extract( $options );
$args = [
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'description' => esc_html__( $description, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::SWITCHER,
'label_on' => esc_html__( $label_on, 'responsive-owl-carousel-elementor' ),
'label_off' => esc_html__( $label_off, 'responsive-owl-carousel-elementor' ),
'return_value' => $return_value,
'default' => $default,
'condition' => $condition
];
$field_prefix = owce_get_class_constant( $widget, 'FIELD_PREFIX' ) ? $widget::FIELD_PREFIX : '';
if ( $responsive ) {
$args['tablet_default'] = $tablet_default;
$args['mobile_default'] = $mobile_default;
$widget->add_responsive_control(
$field_prefix . $field,
$args
);
} else {
$widget->add_control(
$field_prefix . $field,
$args
);
}
}
/**
* Get elementor number control
*
* @param $widget
* @param $field
* @param $label
* @param array $options
*/
function owce_number_control( $widget, $field, $label, $options = [] ) {
$defaults = [
'responsive' => false,
'description' => '',
'min' => 1,
'max' => null,
'step' => 1,
'default' => null,
'tablet_default' => null,
'mobile_default' => null,
'condition' => ''
];
$options = wp_parse_args( $options, $defaults );
/**
* @var string $default
* @var string $description
* @var number $min
* @var number $max
* @var number $step
* @var number $tablet_default
* @var number $mobile_default
* @var string $responsive
* @var array $condition
*/
extract( $options );
$args = [
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'description' => esc_html__( $description, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::NUMBER,
'min' => $min,
'max' => $max,
'step' => $step,
'default' => $default,
'condition' => $condition,
];
if ( $responsive ) {
$args['tablet_default'] = $tablet_default;
$args['mobile_default'] = $mobile_default;
$widget->add_responsive_control(
$widget::FIELD_PREFIX . $field,
$args
);
} else {
$widget->add_control(
$widget::FIELD_PREFIX . $field,
$args
);
}
}
/**
* Get elementor color control
*
* @param $widget
* @param $field
* @param $label
* @param $selector
* @param bool $hover
*/
function owce_color_control( $widget, $field, $label, $selector, $hover = false ) {
if ( $hover ) {
$selector = $selector . ':hover';
}
$widget->add_control(
$widget::FIELD_PREFIX . $field,
[
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} ' . $selector => 'color: {{VALUE}}'
]
]
);
}
/**
* Get elementor slider control
*
* @param $widget
* @param $field
* @param $label
* @param array $options
*/
function owce_slider_control( $widget, $field, $label, $options = [] ) {
$defaults = [
'responsive' => false,
'description' => '',
'property' => 'width',
'size_units' => [ 'px', '%' ],
'range' => [
'px' => [
'min' => 0,
'max' => 1920,
'step' => 1,
],
'%' => [
'min' => 0,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => '',
],
'classes' => '',
'selector' => '',
'tablet_default' => '',
'mobile_default' => ''
];
$options = wp_parse_args( $options, $defaults );
/**
* @var string $default
* @var string $description
* @var array $size_units
* @var array $range
* @var string $property
* @var string $tablet_default
* @var string $mobile_default
* @var string $selector
* @var string $classes
* @var string $responsive
*/
extract( $options );
$args = [
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'description' => esc_html__( $description, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::SLIDER,
'size_units' => $size_units,
'range' => $range,
'default' => $default,
'classes' => $classes
];
if ( $property == 'width' ) {
$args['selectors'] = [ '{{WRAPPER}} ' . $selector => 'width: {{SIZE}}{{UNIT}};' ];
}
if ( $property == 'height' ) {
$args['selectors'] = [ '{{WRAPPER}} ' . $selector => 'height: {{SIZE}}{{UNIT}};' ];
}
if ( $property == 'font-size' ) {
$args['selectors'] = [ '{{WRAPPER}} ' . $selector => 'font-size: {{SIZE}}{{UNIT}};' ];
}
if ( $property == 'border-radius' ) {
$args['selectors'] = [ '{{WRAPPER}} ' . $selector => 'border-radius: {{SIZE}}{{UNIT}};' ];
}
if ( $tablet_default ) {
$args['tablet_default'] = $options['tablet_default'];
}
if ( $mobile_default ) {
$args['mobile_default'] = $options['mobile_default'];
}
if ( $property == 'no-selector' ) {
unset( $args['selectors'] );
}
$field_prefix = owce_get_class_constant( $widget, 'FIELD_PREFIX' ) ? $widget::FIELD_PREFIX : '';
if ( $responsive ) {
$widget->add_responsive_control(
$field_prefix . $field,
$args
);
} else {
$widget->add_control(
$field_prefix . $field,
$args
);
}
}
/**
* Get elementor choose control
*
* @param $widget
* @param $field
* @param $label
* @param array $options
*/
function owce_choose_control( $widget, $field, $label, $options = [] ) {
$defaults = [
'description' => '',
'options' => [
'left' => [
'title' => esc_html__( 'Left', 'responsive-owl-carousel-elementor' ),
'icon' => 'fa fa-align-left',
],
'center' => [
'title' => esc_html__( 'Center', 'responsive-owl-carousel-elementor' ),
'icon' => 'fa fa-align-center',
],
'right' => [
'title' => esc_html__( 'Right', 'responsive-owl-carousel-elementor' ),
'icon' => 'fa fa-align-right',
],
],
'default' => '',
'toggle' => true,
'classes' => '',
'selector' => ''
];
$options = wp_parse_args( $options, $defaults );
/**
* @var string $default
* @var string $description
* @var string $classes
* @var array $selector
*/
extract( $options );
$args = [
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'description' => esc_html__( $description, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::CHOOSE,
'options' => $options,
'default' => $default,
'classes' => $classes,
'selectors' => [
'{{WRAPPER}} ' . $selector => 'text-align: {{VALUE}}'
]
];
$field_prefix = owce_get_class_constant( $widget, 'FIELD_PREFIX' ) ? $widget::FIELD_PREFIX : '';
$widget->add_control(
$field_prefix . $field,
$args
);
}
/**
* Get elementor select control
*
* @param $widget
* @param $field
* @param $label
* @param array $_options
*/
function owce_select_control( $widget, $field, $label, $_options = [] ) {
$defaults = [
'description' => '',
'options' => [],
'default' => '',
'classes' => '',
'selector' => '',
'condition' => ''
];
$_options = wp_parse_args( $_options, $defaults );
/**
* @var string $default
* @var string $description
* @var string $classes
* @var string $selector
* @var array $options
* @var array $condition
*/
extract( $_options );
$args = [
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'description' => esc_html__( $description, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::SELECT,
'options' => $options,
'default' => $default,
'classes' => $classes,
'condition' => $condition
];
if ( $selector == 'no-refresh' ) {
$args['selectors'] = [ '{{WRAPPER}} ' . $selector => '' ];
}
$field_prefix = owce_get_class_constant( $widget, 'FIELD_PREFIX' ) ? $widget::FIELD_PREFIX : '';
$widget->add_control(
$field_prefix . $field,
$args
);
}
/**
* Get elementor url control
*
* @param $widget
* @param $field
* @param $label
* @param array $options
*/
function owce_url_control( $widget, $field, $label, $options = [] ) {
$defaults = [
'description' => '',
'show_label' => true,
'label_block' => true,
'default' => [
'url' => '#',
'is_external' => true,
'nofollow' => true,
],
'url_options' => [
'is_external',
'nofollow',
],
'placeholder' => 'https://your-link.com',
'classes' => '',
'selector' => '',
'condition' => ''
];
$options = wp_parse_args( $options, $defaults );
/**
* @var string $default
* @var string $placeholder
* @var string $show_label
* @var string $label_block
* @var array $url_options
* @var string $classes
* @var string $selector
* @var array $condition
*/
extract( $options );
$args = [
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::URL,
'placeholder' => esc_html__( $placeholder, 'responsive-owl-carousel-elementor' ),
'show_label' => $show_label,
'label_block' => $label_block,
'options' => $url_options,
'default' => $default,
'classes' => $classes,
// selectors is just to prevent refreshing page while typing the URL
'selectors' => [
'{{WRAPPER}} ' . $selector => '',
],
'condition' => $condition
];
$field_prefix = owce_get_class_constant( $widget, 'FIELD_PREFIX' ) ? $widget::FIELD_PREFIX : '';
$widget->add_control(
$field_prefix . $field,
$args
);
}
/**
* Get elementor icons control
*
* @param $widget
* @param $field
* @param $label
* @param array $options
*/
function owce_icons_control( $widget, $field, $label, $options = [] ) {
$defaults = [
'default' => [ 'library' => 'solid', 'value' => 'fas fa-star' ],
'classes' => '',
'condition' => ''
];
$options = wp_parse_args( $options, $defaults );
/**
* @var string $default
* @var string $classes
*/
extract( $options );
$field_prefix = owce_get_class_constant( $widget, 'FIELD_PREFIX' ) ? $widget::FIELD_PREFIX : '';
$widget->add_control(
$field_prefix . $field,
[
'label' => esc_html__( $label, 'responsive-owl-carousel-elementor' ),
'type' => Controls_Manager::ICONS,
'default' => $default,
'classes' => $classes
]
);
}
/**
* Get custom social icons control
*
* @param $widget
* @param $fields
* @param array $options
*/
function owce_social_icons_control( $widget, $fields, $options = [] ) {
$default_icons = [
'fa-facebook-f',
'fa-twitter',
'fa-instagram',
'fa-linkedin-in'
];
$icons_options = $options;
$icons_options['default']['library'] = 'fa-brands';
$index = 0;
$existing_classes = $options['classes'] . ' ';
foreach ( $fields as $key => $label ) {
$icons_options['default']['value'] = 'fab ' . $default_icons[ $index ];
owce_icons_control( $widget, $key, $label, $icons_options );
$options['classes'] = $existing_classes . $key . '_link_url';
owce_url_control( $widget, $key . '_link', $label . ' Link', $options );
$index++;
}
}
/**
* Get rendered icon for icons control
*
* @param $key
* @param int $length
*
* @return false|string
*/
function owce_get_rendered_icons( $key, $length = 1 ) {
ob_start();
for ( $i = 1; $i <= $length; $i ++ ) {
Icons_Manager::render_icon( $key, [ 'aria-hidden' => 'true' ] );
}
return ob_get_clean();
}
/**
* Check if key exists and return it
*
* @param $arr
* @param $key
* @param $default
*
* @return mixed
*/
function owce_key_value_exists( $arr, $key, $default ) {
return ( ! empty( $arr[ $key ] ) && trim( $arr[ $key ] ) ) ? $arr[ $key ] : $default;
}
/**
* Check if constant exists and return it
*
* @param $class
* @param $name
*
* @return bool
*/
function owce_get_class_constant( $class, $name ) {
if ( is_string( $class ) ) {
return defined( "$class::$name" );
} else if ( is_object( $class ) ) {
return defined( get_class( $class ) . "::$name" );
}
return false;
}