239 lines
5.9 KiB
PHP
239 lines
5.9 KiB
PHP
<?php
|
|
|
|
function ux_section( $atts, $content = null ) {
|
|
$atts = shortcode_atts( array(
|
|
'_id' => 'section_' . rand(),
|
|
'class' => '',
|
|
'label' => '',
|
|
'visibility' => '',
|
|
'sticky' => '',
|
|
// Background.
|
|
'bg' => '',
|
|
'bg_size' => '',
|
|
'bg_color' => '',
|
|
'bg_overlay' => '',
|
|
'bg_overlay__sm' => '',
|
|
'bg_overlay__md' => '',
|
|
'bg_pos' => '',
|
|
'parallax' => '',
|
|
'effect' => '',
|
|
// Video.
|
|
'video_mp4' => '',
|
|
'video_ogg' => '',
|
|
'video_webm' => '',
|
|
'video_sound' => 'false',
|
|
'video_loop' => 'true',
|
|
'youtube' => '',
|
|
'video_visibility' => 'hide-for-medium',
|
|
// Layout.
|
|
'dark' => 'false',
|
|
'mask' => '',
|
|
'padding' => '30px',
|
|
'padding__sm' => '',
|
|
'padding__md' => '',
|
|
'height' => '',
|
|
'height__sm' => '',
|
|
'height__md' => '',
|
|
'margin' => '',
|
|
'loading' => '',
|
|
'scroll_for_more' => '',
|
|
// Shape divider.
|
|
'divider_top' => '',
|
|
'divider_top_height' => '150px',
|
|
'divider_top_height__sm' => null,
|
|
'divider_top_height__md' => null,
|
|
'divider_top_width' => '100',
|
|
'divider_top_width__sm' => null,
|
|
'divider_top_width__md' => null,
|
|
'divider_top_fill' => '',
|
|
'divider_top_flip' => 'false',
|
|
'divider_top_to_front' => 'false',
|
|
'divider' => '',
|
|
'divider_height' => '150px',
|
|
'divider_height__sm' => null,
|
|
'divider_height__md' => null,
|
|
'divider_width' => '100',
|
|
'divider_width__sm' => null,
|
|
'divider_width__md' => null,
|
|
'divider_fill' => '',
|
|
'divider_flip' => 'false',
|
|
'divider_to_front' => 'false',
|
|
// Border Control.
|
|
'border' => '',
|
|
'border_hover' => '',
|
|
'border_color' => '',
|
|
'border_margin' => '',
|
|
'border_radius' => '',
|
|
'border_style' => '',
|
|
), $atts );
|
|
|
|
extract( $atts );
|
|
|
|
// Hide if visibility is hidden.
|
|
if ( $visibility === 'hidden' ) {
|
|
return;
|
|
}
|
|
|
|
ob_start();
|
|
|
|
$classes = array( 'section' );
|
|
|
|
$classes_bg = array( 'bg', 'section-bg', 'fill', 'bg-fill' );
|
|
|
|
// Fix old.
|
|
if ( strpos( $bg, '#' ) !== false ) {
|
|
$atts['bg_color'] = $bg;
|
|
$atts['bg'] = false;
|
|
}
|
|
|
|
// Add Custom Classes.
|
|
if ( $class ) {
|
|
$classes[] = $class;
|
|
}
|
|
|
|
// Add Dark text.
|
|
if ( $dark === 'true' ) {
|
|
$classes[] = 'dark';
|
|
}
|
|
|
|
// If sticky section.
|
|
if ( $sticky ) {
|
|
$classes[] = 'sticky-section';
|
|
}
|
|
|
|
// Add Mask.
|
|
if ( $mask ) {
|
|
$classes[] = 'has-mask mask-' . $mask;
|
|
}
|
|
|
|
// Add visibility class.
|
|
if ( $visibility ) {
|
|
$classes[] = $visibility;
|
|
}
|
|
|
|
// Add Parallax.
|
|
if ( $parallax ) {
|
|
$classes[] = 'has-parallax';
|
|
$parallax = 'data-parallax-container=".section" data-parallax-background data-parallax="-' . $parallax . '"';
|
|
}
|
|
|
|
// Background effects.
|
|
if ( $effect ) {
|
|
wp_enqueue_style( 'flatsome-effects' );
|
|
}
|
|
|
|
// Add Full Height Class.
|
|
if ( $height === '100vh' ) {
|
|
$classes[] = 'is-full-height';
|
|
}
|
|
|
|
// Lazy load.
|
|
$classes_bg[] = get_theme_mod( 'lazy_load_backgrounds', 1 ) ? '' : 'bg-loaded';
|
|
$classes_bg[] = $bg ? '' : 'bg-loaded';
|
|
|
|
if ( $border_hover ) {
|
|
$classes[] = 'has-hover';
|
|
}
|
|
|
|
$classes = implode( ' ', $classes );
|
|
$classes_bg = implode( ' ', $classes_bg );
|
|
?>
|
|
<section class="<?php echo $classes; ?>" id="<?php echo $_id; ?>">
|
|
<div class="<?php echo $classes_bg; ?>" <?php echo $parallax; ?>>
|
|
|
|
<?php require( __DIR__ . '/commons/video.php' ); ?>
|
|
|
|
<?php
|
|
if ( $bg_overlay ) {
|
|
echo '<div class="section-bg-overlay absolute fill"></div>';
|
|
}
|
|
if ( $loading ) {
|
|
echo '<div class="loading-spin centered"></div>';
|
|
}
|
|
if ( $scroll_for_more ) {
|
|
echo '<button class="scroll-for-more z-5 icon absolute bottom h-center" aria-label="' . esc_attr__( 'Scroll for more', 'flatsome' ) . '">' . get_flatsome_icon( 'icon-angle-down', '42px' ) . '</button>';
|
|
}
|
|
if ( $effect ) {
|
|
echo '<div class="effect-' . $effect . ' bg-effect fill no-click"></div>';
|
|
}
|
|
?>
|
|
|
|
<?php require( __DIR__ . '/commons/border.php' ); ?>
|
|
|
|
</div>
|
|
|
|
<?php require __DIR__ . '/commons/shape-divider.php'; ?>
|
|
|
|
<div class="section-content relative">
|
|
<?php echo $content; ?>
|
|
</div>
|
|
|
|
<?php
|
|
// Get custom CSS.
|
|
$args = array(
|
|
'padding' => array(
|
|
'selector' => '',
|
|
'property' => 'padding-top, padding-bottom',
|
|
),
|
|
'margin' => array(
|
|
'selector' => '',
|
|
'property' => 'margin-bottom',
|
|
),
|
|
'height' => array(
|
|
'selector' => '',
|
|
'property' => 'min-height',
|
|
),
|
|
'bg_color' => array(
|
|
'selector' => '',
|
|
'property' => 'background-color',
|
|
),
|
|
'bg_overlay' => array(
|
|
'selector' => '.section-bg-overlay',
|
|
'property' => 'background-color',
|
|
),
|
|
'bg' => array(
|
|
'selector' => '.section-bg.bg-loaded',
|
|
'property' => 'background-image',
|
|
'size' => $bg_size,
|
|
),
|
|
'bg_pos' => array(
|
|
'selector' => '.section-bg',
|
|
'property' => 'background-position',
|
|
),
|
|
'divider_top_height' => array(
|
|
'selector' => '.ux-shape-divider--top svg',
|
|
'property' => 'height',
|
|
),
|
|
'divider_top_width' => array(
|
|
'selector' => '.ux-shape-divider--top svg',
|
|
'property' => '--divider-top-width',
|
|
'unit' => '%',
|
|
),
|
|
'divider_top_fill' => array(
|
|
'selector' => '.ux-shape-divider--top .ux-shape-fill',
|
|
'property' => 'fill',
|
|
),
|
|
'divider_height' => array(
|
|
'selector' => '.ux-shape-divider--bottom svg',
|
|
'property' => 'height',
|
|
),
|
|
'divider_width' => array(
|
|
'selector' => '.ux-shape-divider--bottom svg',
|
|
'property' => '--divider-width',
|
|
'unit' => '%',
|
|
),
|
|
'divider_fill' => array(
|
|
'selector' => '.ux-shape-divider--bottom .ux-shape-fill',
|
|
'property' => 'fill',
|
|
),
|
|
);
|
|
echo ux_builder_element_style_tag( $_id, $args, $atts );
|
|
?>
|
|
</section>
|
|
<?php
|
|
$content = ob_get_contents();
|
|
ob_end_clean();
|
|
|
|
return do_shortcode( $content );
|
|
}
|