You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
4.1 KiB
PHTML
138 lines
4.1 KiB
PHTML
8 months ago
|
<?php
|
||
|
|
||
|
/**
|
||
|
* Class ET_Builder_Module_Helper_Slider
|
||
|
*/
|
||
|
class ET_Builder_Module_Helper_Slider {
|
||
|
|
||
|
/**
|
||
|
* Returns slider arrows CSS selector
|
||
|
*
|
||
|
* @since 3.25.3
|
||
|
*
|
||
|
* @param string $prefix
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function get_arrows_selector( $prefix = '%%order_class%%' ) {
|
||
|
return implode(
|
||
|
',',
|
||
|
array(
|
||
|
"$prefix .et-pb-slider-arrows .et-pb-arrow-prev",
|
||
|
"$prefix .et-pb-slider-arrows .et-pb-arrow-next",
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns slider dots CSS selector
|
||
|
*
|
||
|
* @since 3.25.3
|
||
|
*
|
||
|
* @param string $prefix
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function get_dots_selector( $prefix = '%%order_class%%' ) {
|
||
|
return "$prefix .et-pb-controllers a, $prefix .et-pb-controllers .et-pb-active-control";
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Reapply (fullwidth) post slider's module background on slide item which has featured image
|
||
|
*
|
||
|
* @since 4.3.3
|
||
|
*
|
||
|
* @param array $args {
|
||
|
* @type int $slide_post_id
|
||
|
* @type string|bool $post_featured_image
|
||
|
* @type string $render_slug
|
||
|
* @type array $props
|
||
|
* }
|
||
|
*/
|
||
|
public static function reapply_module_background_on_slide( $args = array() ) {
|
||
|
$defaults = array(
|
||
|
'slide_post_id' => 0,
|
||
|
'post_featured_image' => false,
|
||
|
'render_slug' => '',
|
||
|
'props' => array(),
|
||
|
);
|
||
|
|
||
|
// Parse argument
|
||
|
$args = wp_parse_args( $args, $defaults );
|
||
|
|
||
|
// Create slide class
|
||
|
$slide_id_class = "et_pb_post_slide-{$args['slide_post_id']}";
|
||
|
|
||
|
// Reapply background color (affecting blend mode), gradient (can be placed on top of image
|
||
|
// creating overlay-effect), and images (gradient is actually image) if:
|
||
|
// 1. Featured image exist on current slide
|
||
|
// 2. Featured image is shown (responsive)
|
||
|
// 3. Featured image placement is placed on background
|
||
|
// 4. Parallax (responsive) is off
|
||
|
|
||
|
// 1. Exit if featured image doesn't exist on current slide
|
||
|
if ( ! $args['post_featured_image'] ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$props = $args['props'];
|
||
|
|
||
|
// 2. Exit if featured image is not shown
|
||
|
$is_show_image_responsive = et_pb_responsive_options()->is_responsive_enabled( $props, 'show_image' );
|
||
|
$is_featured_image_shown = $is_show_image_responsive ?
|
||
|
in_array( 'on', et_pb_responsive_options()->get_property_values( $props, 'show_image' ) ) :
|
||
|
'on' === et_()->array_get( $props, 'show_image' );
|
||
|
|
||
|
if ( ! $is_featured_image_shown ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// 3. Exit if feature image is not placed in background
|
||
|
if ( 'background' !== et_()->array_get( $props, 'image_placement' ) ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// 4. Exit if parallax is activated
|
||
|
$is_parallax_responsive = et_pb_responsive_options()->is_responsive_enabled( $props, 'parallax' );
|
||
|
$is_parallax_active = $is_parallax_responsive ?
|
||
|
in_array( 'on', et_pb_responsive_options()->get_property_values( $props, 'parallax' ) ) :
|
||
|
'on' === et_()->array_get( $props, 'parallax' );
|
||
|
|
||
|
if ( $is_parallax_active ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Process background
|
||
|
$props['background_image'] = $args['post_featured_image'];
|
||
|
$props['background_enable_image'] = 'on';
|
||
|
|
||
|
// Background responsive is generally set via background_last_edited instead of each background
|
||
|
// type's *_last_edited; when background's responsive active and no background image is set,
|
||
|
// background-image property will be set to `initial` and featured image on current image got
|
||
|
// removed on current breakpoint. Thus, Set background image responsive attribute on current
|
||
|
// background_image attribute to keep it visible
|
||
|
if ( et_pb_responsive_options()->is_responsive_enabled( $props, 'background' ) ) {
|
||
|
$props['background_image_last_edited'] = '';
|
||
|
$props['background_image_tablet'] = $args['post_featured_image'];
|
||
|
$props['background_image_phone'] = $args['post_featured_image'];
|
||
|
|
||
|
}
|
||
|
|
||
|
if ( et_builder_is_hover_enabled( 'background', $props ) ) {
|
||
|
$props['background_image__hover'] = $args['post_featured_image'];
|
||
|
}
|
||
|
|
||
|
et_pb_background_options()->get_background_style(
|
||
|
array(
|
||
|
'props' => $props,
|
||
|
'selector' => "%%order_class%% .{$slide_id_class}",
|
||
|
'selector_hover' => "%%order_class%%:hover .{$slide_id_class}",
|
||
|
'function_name' => $args['render_slug'],
|
||
|
)
|
||
|
);
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|