File "HeroStyle.php"
Full Path: /home/pumpbmko/public_html/wp-content/themes/momota/lib/colibriwp/src/Customizer/Sections/HeroStyle.php
File size: 32.86 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace ColibriWP\Theme\Components\Header;
use ColibriWP\Theme\Components\CSSOutput;
use ColibriWP\Theme\Core\PartialComponent;
use ColibriWP\Theme\Core\Utils;
use ColibriWP\Theme\Defaults;
use ColibriWP\Theme\Theme;
use ColibriWP\Theme\Translations;
class HeroStyle extends PartialComponent {
protected static $instances = array();
protected $prefix = '';
protected $selector = '';
public function __construct( $prefix, $selector ) {
$this->prefix = $prefix;
$this->selector = $selector;
}
public static function getInstance( $prefix, $selector ) {
$key = Utils::slugify( "{$prefix}-{$selector}" );
if ( ! isset( static::$instances[ $key ] ) ) {
static::$instances[ $key ] = new static( $prefix, $selector );
}
return static::$instances[ $key ];
}
public function renderContent( $parameters = array() ) {
?>
<div class="background-wrapper" data-colibri-hide-pen="true">
<div class="background-layer">
<div class="background-layer">
<?php $this->doSlideshow(); ?>
<?php $this->doVideoBackground(); ?>
</div>
<div class="overlay-layer"></div>
<div class="shape-layer"></div>
</div>
</div>
<?php
}
public function doSlideshow() {
$slideshow_prefix = 'style.background.slideshow.';
$component_id = "{$this->getPrefix()}slideshow";
$slides = $this->prefixedMod( "{$slideshow_prefix}slides" );
$slide_duration = $this->prefixedMod( "{$slideshow_prefix}duration.value" );
$slide_speed = $this->prefixedMod( "{$slideshow_prefix}duration.value" );
$this->printSlideshow( $component_id, $slides, $slide_duration, $slide_speed );
}
/**
* @return string
*/
public function getPrefix() {
return $this->prefix;
}
/**
* @param string $prefix
*
* @return HeroStyle
*/
public function setPrefix( $prefix ) {
$this->prefix = $prefix;
return $this;
}
public function prefixedMod( $name ) {
$name = $this->getPrefix() . $name;
return $this->mod( $name );
}
public function printSlideshow( $component_id, $slides, $slide_duration, $slide_speed ) {
if ( $this->prefixedMod( 'style.background.type' ) !== 'slideshow' ) {
return;
}
$settings = json_encode(
array(
'speed' => $slide_speed,
'duration' => $slide_duration,
)
);
?>
<div class="colibri-slideshow background-layer"
data-kubio-settings="<?php echo esc_attr( $settings ); ?>"
data-colibri-id="<?php echo esc_attr( $component_id ); ?>"
data-kubio-component="slideshow">
<?php foreach ( $slides as $slide ) : ?>
<?php $this->printSlide( $slide ); ?>
<?php endforeach; ?>
</div>
<?php
}
private function printSlide( $slide ) {
?>
<div class="slideshow-image"
style="background-image:url(<?php echo esc_attr( $slide['url'] ); ?>)"></div>
<?php
}
public function doVideoBackground() {
$component_id = "{$this->getPrefix()}video";
$this->printVideoBackground( $component_id );
}
public function printVideoBackground( $component_id ) {
if ( $this->prefixedMod( 'style.background.type' ) !== 'video' ) {
return;
}
$video_prefix = 'style.background.video.';
$mime_type = 'video/mp4';
$poster = $this->prefixedMod( "{$video_prefix}poster.url" );
$video = '';
if ( $this->prefixedMod( "{$video_prefix}videoType" ) === 'external' ) {
$mime_type = 'video/x-youtube';
$video = $this->prefixedMod( "{$video_prefix}externalUrl" );
} else {
$id = absint( $this->prefixedMod( "{$video_prefix}internalUrl" ) );
if ( $id ) {
$video = wp_get_attachment_url( $id );
$type = wp_check_filetype( $video, wp_get_mime_types() );
$mime_type = $type['type'];
}
}
?>
<div
class="kubio-video-background background-layer"
data-kubio-component="video-background"
data-mime-type="<?php echo esc_attr( $mime_type ); ?>"
data-video="<?php echo esc_attr( $video ); ?>"
data-poster="<?php echo esc_attr( $poster ); ?>"
style="<?php echo ( $poster ? "background-image:url({$poster});" : '' ); ?>"
data-colibri-id="<?php echo esc_attr( $component_id ); ?>">
</div>
<?php
}
public function whenCustomizerPreview() {
$component_id = "{$this->getPrefix()}slideshow";
$slideshow_prefix = 'style.background.slideshow.';
$this->addFrontendJSData(
$component_id,
array(
'wpSettings' => array(
'slideDuration' => "{$this->getPrefix()}{$slideshow_prefix}duration.value",
'slideSpeed' => "{$this->getPrefix()}{$slideshow_prefix}speed.value",
),
),
true
);
$video_prefix = 'style.background.video.';
$video_component_id = "{$this->getPrefix()}video";
$this->addFrontendJSData(
$video_component_id,
array(
'wpSettings' => array(
'videoType' => "{$this->getPrefix()}{$video_prefix}videoType",
'externalUrl' => "{$this->getPrefix()}{$video_prefix}externalUrl",
'internalUrl' => "{$this->getPrefix()}{$video_prefix}internalUrl",
'posterUrl' => "{$this->getPrefix()}{$video_prefix}poster.url",
),
)
);
}
public function getOptions() {
$prefix = $this->getPrefix();
$wrapper_settings = array_merge(
$this->getSlideshowSettings( $prefix ),
$this->getVideoSettings( $prefix ),
$this->getOverlaySettings( $prefix ),
$this->getDividerSettings( $prefix ),
array()
);
foreach ( $wrapper_settings as $key => $setting_data ) {
if ( ! isset( $setting_data['control']['selective_refresh'] ) ) {
$wrapper_settings[ $key ]['control']['selective_refresh'] = array(
'selector' => $this->getSelector() . ' .background-wrapper',
'function' => array( $this, 'renderContent' ),
);
}
}
return array(
'settings' => array_merge(
array(),
$this->getGeneralBackgroundSettings( $prefix ),
$this->getImageSettings( $prefix ),
$this->getGradientSettings( $prefix ),
$wrapper_settings,
$this->getSpacingSettings( $prefix )
),
);
}
protected function getSlideshowSettings( $prefix ) {
$slideshow_prefix = "{$prefix}style.background.slideshow.";
$self = $this;
return array(
"{$slideshow_prefix}slides" => array(
'default' => Defaults::get( "{$slideshow_prefix}slides" ),
'control' => array(
'colibri_tab' => 'style',
'label' => Translations::escHtml( 'slideshow' ),
'type' => 'repeater',
'section' => 'hero',
'item_label' => Translations::get( 'slide_n' ),
'item_add_label' => Translations::get( 'add_slide' ),
'fields' => array(
'url' => array(
'type' => 'image',
'label' => Translations::get( 'image' ),
'default' => Defaults::get( "{$slideshow_prefix}slides.0.url" ),
),
),
'active_rules' => array(
array(
'setting' => "{$prefix}style.background.type",
'operator' => '=',
'value' => 'slideshow',
),
),
),
),
"{$slideshow_prefix}duration.value" => array(
'default' => Defaults::get( "{$slideshow_prefix}duration.value", 100 ),
'transport' => 'postMessage',
'control' => array(
'label' => Translations::escHtml( 'slide_duration' ),
'colibri_tab' => 'style',
'type' => 'slider',
'section' => 'hero',
'min' => 0,
'max' => 10000,
'step' => 100,
'active_rules' => array(
array(
'setting' => "{$prefix}style.background.type",
'operator' => '=',
'value' => 'slideshow',
),
),
),
),
"{$slideshow_prefix}speed.value" => array(
'default' => Defaults::get( "{$slideshow_prefix}speed.value" ),
'transport' => 'postMessage',
'control' => array(
'label' => Translations::escHtml( 'effect_speed' ),
'colibri_tab' => 'style',
'type' => 'slider',
'section' => 'hero',
'min' => 100,
'max' => 10000,
'step' => 100,
'active_rules' => array(
array(
'setting' => "{$prefix}style.background.type",
'operator' => '=',
'value' => 'slideshow',
),
),
),
),
);
}
protected static function getVideoSettings( $prefix ) {
$base_active_rule
= array(
'setting' => "{$prefix}style.background.type",
'operator' => '=',
'value' => 'video',
);
$video_prefix = "{$prefix}style.background.video.";
// $self = $this;
return array(
"{$video_prefix}videoType" => array(
'default' => Defaults::get( "{$video_prefix}videoType" ),
'control' => array(
'label' => Translations::get( 'video_type' ),
'type' => 'button-group',
'button_size' => 'medium',
'choices' => array(
'internal' => Translations::escHtml( 'self_hosted' ),
'external' => Translations::escHtml( 'external_video' ),
),
'section' => 'hero',
'colibri_tab' => 'style',
'active_rules' => array( $base_active_rule ),
),
),
"{$video_prefix}externalUrl" => array(
'default' => Defaults::get( "{$video_prefix}externalUrl" ),
'control' => array(
'label' => Translations::get( 'youtube_url' ),
'type' => 'input',
'section' => 'hero',
'colibri_tab' => 'style',
'active_rules' => array(
$base_active_rule,
array(
'setting' => "{$video_prefix}videoType",
'operator' => '=',
'value' => 'external',
),
),
),
),
"{$video_prefix}internalUrl" => array(
'default' => Defaults::get( "{$video_prefix}internalUrl" ),
'control' => array(
'label' => Translations::get( 'self_hosted_video' ),
'type' => 'video',
'section' => 'hero',
'colibri_tab' => 'style',
'active_rules' => array(
$base_active_rule,
array(
'setting' => "{$video_prefix}videoType",
'operator' => '=',
'value' => 'internal',
),
),
),
),
"{$video_prefix}poster.url" => array(
'default' => Defaults::get( "{$video_prefix}poster.url" ),
'transport' => 'postMessage',
'control' => array(
'label' => Translations::get( 'video_poster' ),
'type' => 'image',
'section' => 'hero',
'colibri_tab' => 'style',
'active_rules' => array(
$base_active_rule,
array(
'setting' => "{$prefix}style.background.type",
'operator' => '=',
'value' => 'video',
),
),
),
),
);
}
public function getOverlaySettings( $prefix ) {
$overlay_prefix = "{$prefix}style.background.overlay.";
$active_rule_base = array(
'setting' => "{$overlay_prefix}enabled",
'operator' => '=',
'value' => true,
);
$shape_base_url = Theme::rootDirectoryUri() . '/resources/images/header-shapes';
return array(
"{$prefix}hero.separator5" => array(
'default' => '',
'control' => array(
'label' => '',
'type' => 'separator',
'section' => 'hero',
'colibri_tab' => 'style',
'active_rules' => array(
array(
'setting' => "{$prefix}style.background.type",
'operator' => '!=',
'value' => 'color',
),
),
),
),
"{$overlay_prefix}type" => array(
'default' => Defaults::get( "{$overlay_prefix}type" ),
'transport' => 'postMessage',
'control' => array(
'label' => Translations::get( 'overlay_type' ),
'type' => 'button-group',
'button_size' => 'medium',
'choices' => array(
'shapeOnly' => Translations::escHtml( 'shape_only' ),
'color' => Translations::escHtml( 'color' ),
'gradient' => Translations::escHtml( 'gradient' ),
),
'section' => 'hero',
'colibri_tab' => 'style',
'active_rules' => array( $active_rule_base ),
),
),
"{$overlay_prefix}shape.value" => array(
'default' => Defaults::get( "{$overlay_prefix}shape.value", 'none' ),
'transport' => 'postMessage',
'control' => array(
'label' => Translations::escHtml( 'overlay_shape' ),
'type' => 'select',
'section' => 'hero',
'colibri_tab' => 'style',
'size' => 'small',
'choices' => array(
'none' => Translations::get( 'none' ),
'circles' => Translations::get( 'circles' ),
'10degree-stripes' => Translations::get( '10degree_stripes' ),
'rounded-squares-blue' => Translations::get( 'rounded_squares_blue' ),
'many-rounded-squares-blue' => Translations::get( 'many_rounded_squares_blue' ),
'two-circles' => Translations::get( 'two_circles' ),
'circles-2' => Translations::get( 'circles_2' ),
'circles-3' => Translations::get( 'circles_3' ),
'circles-gradient' => Translations::get( 'circles_gradient' ),
'circles-white-gradient' => Translations::get( 'circles_white_gradient' ),
'waves' => Translations::get( 'waves' ),
'waves-inverted' => Translations::get( 'waves_inverted' ),
'dots' => Translations::get( 'dots' ),
'left-tilted-lines' => Translations::get( 'left_tilted_lines' ),
'right-tilted-lines' => Translations::get( 'right_tilted_lines' ),
'right-tilted-strips' => Translations::get( 'right_tilted_strips' ),
),
),
'css_output' => array(
array(
'selector' => "{$this->selector} .background-layer .shape-layer",
'media' => CSSOutput::NO_MEDIA,
'property' => 'background-image',
'value_pattern' => 'url(' . $shape_base_url . '/%s.png)',
),
),
'active_rules' => array( $active_rule_base ),
),
"{$overlay_prefix}light" => array(
'default' => Defaults::get( "{$overlay_prefix}light" ),
'transport' => 'postMessage',
'control' => array(
'label' => Translations::escHtml( 'shape_light' ),
'type' => 'slider',
'section' => 'hero',
'colibri_tab' => 'style',
),
'css_output' => array(
array(
'selector' => "{$this->selector} .background-layer .shape-layer",
'media' => CSSOutput::NO_MEDIA,
'property' => 'filter',
'value_pattern' => 'invert(%s%%)',
),
),
'active_rules' => array(
array(
'setting' => "{$overlay_prefix}shape.value",
'operator' => '!=',
'value' => 'none',
),
),
),
"{$overlay_prefix}color.value" => array(
'default' => Defaults::get( "{$overlay_prefix}color.value" ),
'control' => array(
'label' => Translations::get( 'color' ),
'type' => 'color',
'alpha' => false,
'section' => 'hero',
'colibri_tab' => 'style',
),
'css_output' => array(
array(
'selector' => "{$this->selector} .background-layer .overlay-layer",
'media' => CSSOutput::NO_MEDIA,
'property' => 'background-color',
),
),
'active_rules' => array(
array(
'setting' => "{$overlay_prefix}type",
'operator' => '=',
'value' => 'color',
),
),
),
"{$overlay_prefix}gradient" => array(
'default' => Defaults::get( "{$overlay_prefix}gradient" ),
'control' => array(
'label' => Translations::escHtml( 'gradient' ),
'type' => 'gradient',
'section' => 'hero',
'colibri_tab' => 'style',
'choices' => Defaults::get( 'gradients', '' ),
),
'css_output' => array(
array(
'selector' => "{$this->selector} .background-layer .overlay-layer",
'media' => CSSOutput::NO_MEDIA,
'property' => 'background-image',
'value_pattern' => CSSOutput::GRADIENT_VALUE_PATTERN,
),
),
'active_rules' => array(
array(
'setting' => "{$overlay_prefix}type",
'operator' => '=',
'value' => 'gradient',
),
),
),
"{$overlay_prefix}gradient_opacity" => array(
'default' => Defaults::get( "{$overlay_prefix}gradient_opacity" ),
'control' => array(
'label' => Translations::get( 'opacity' ),
'type' => 'slider',
'section' => 'hero',
'colibri_tab' => 'style',
'min' => 1,
'max' => 100,
),
'css_output' => array(
array(
'selector' => "{$this->selector} .background-layer .overlay-layer",
'media' => CSSOutput::NO_MEDIA,
'property' => 'opacity',
'value_pattern' => 'calc( %s / 100 )',
),
),
'active_rules' => array(
array(
'setting' => "{$overlay_prefix}type",
'operator' => '=',
'value' => 'gradient',
),
),
),
"{$overlay_prefix}enabled" => array(
'default' => Defaults::get( "{$overlay_prefix}enabled" ),
'transport' => 'postMessage',
'control' => array(
'label' => Translations::get( 'show_background_overlay' ),
'type' => 'group',
'section' => 'hero',
'show_toggle' => true,
'controls' => array(
"{$overlay_prefix}type",
"{$overlay_prefix}color.value",
"{$overlay_prefix}gradient",
"{$overlay_prefix}gradient_opacity",
"{$overlay_prefix}shape.value",
"{$overlay_prefix}light",
),
'colibri_tab' => 'style',
),
'css_output' => array(
array(
'selector' => "{$this->selector} .background-layer .overlay-layer",
'media' => CSSOutput::NO_MEDIA,
'property' => 'display',
'false_value' => 'none',
),
),
),
);
}
public function getDividerSettings( $prefix ) {
$divider_prefix = "{$prefix}style.separatorBottom.";
$section = 'hero';
$active_rule_base = array(
'setting' => "{$divider_prefix}enabled",
'operator' => '=',
'value' => true,
);
return array(
"{$prefix}hero.separator6" => array(
'default' => '',
'control' => array(
'label' => '',
'type' => 'separator',
'section' => 'hero',
'colibri_tab' => 'style',
),
),
"{$divider_prefix}enabled" => array(
'default' => Defaults::get( "{$divider_prefix}enabled" ),
'control' => array(
'label' => Translations::get( 'show_bottom_divider' ),
'type' => 'group',
'section' => $section,
'show_toggle' => true,
'colibri_tab' => 'style',
'controls' => array(
"{$divider_prefix}type",
"{$divider_prefix}negative",
"{$divider_prefix}color",
"{$divider_prefix}height.value",
),
'selective_refresh' => array(
'selector' => $this->getSelector(),
'function' => array( $this, 'renderContent' ),
),
),
),
"{$divider_prefix}type" => array(
'default' => Defaults::get( "{$divider_prefix}type", 'none' ),
'control' => array(
'label' => Translations::escHtml( 'divider_style' ),
'type' => 'select',
'section' => 'hero',
'colibri_tab' => 'style',
'size' => 'small',
'choices' => array(
'tilt' => Translations::get( 'tilt' ),
'tilt-flipped' => Translations::get( 'tilt-flipped' ),
'triangle' => Translations::get( 'triangle' ),
'triangle-asymmetrical' => Translations::get( 'triangle-asymmetrical' ),
'opacity-fan' => Translations::get( 'opacity-fan' ),
'opacity-tilt' => Translations::get( 'opacity-tilt' ),
'mountains' => Translations::get( 'mountains' ),
'pyramids' => Translations::get( 'pyramids' ),
'waves' => Translations::get( 'waves' ),
'wave-brush' => Translations::get( 'wave-brush' ),
'waves-pattern' => Translations::get( 'waves-pattern' ),
'clouds' => Translations::get( 'clouds' ),
'curve' => Translations::get( 'curve' ),
'curve-asymmetrical' => Translations::get( 'curve-asymmetrical' ),
'drops' => Translations::get( 'drops' ),
'arrow' => Translations::get( 'arrow' ),
'book' => Translations::get( 'book' ),
'split' => Translations::get( 'split' ),
'zigzag' => Translations::get( 'zigzag' ),
),
'selective_refresh' => array(
'selector' => $this->getSelector(),
'function' => array( $this, 'renderContent' ),
),
),
'active_rules' => array( $active_rule_base ),
),
"{$divider_prefix}color" => array(
'default' => Defaults::get( "{$divider_prefix}color" ),
'control' => array(
'label' => Translations::escHtml( 'color' ),
'type' => 'color',
'section' => 'hero',
'colibri_tab' => 'style',
),
'css_output' => array(
array(
'selector' => "{$this->selector} .h-separator svg path",
'media' => CSSOutput::NO_MEDIA,
'property' => 'background-color',
),
array(
'selector' => "{$this->selector} .h-separator svg path",
'media' => CSSOutput::NO_MEDIA,
'property' => 'fill',
),
),
'active_rules' => array( $active_rule_base ),
),
"{$divider_prefix}height.value" => array(
'default' => Defaults::get( "{$divider_prefix}height.value", 100 ),
'control' => array(
'label' => Translations::escHtml( 'divider_height' ),
'colibri_tab' => 'style',
'type' => 'slider',
'section' => 'hero',
'min' => 0,
'max' => 300,
'step' => 1,
'active_rules' => array( $active_rule_base ),
),
'css_output' => array(
array(
'selector' => "{$this->selector} .h-separator",
'media' => CSSOutput::NO_MEDIA,
'property' => 'height',
'value_pattern' => '%spx !important',
),
),
),
"{$divider_prefix}negative" => array(
'default' => Defaults::get( "{$divider_prefix}negative", 100 ),
'control' => array(
'label' => Translations::escHtml( 'divider_negative' ),
'type' => 'switch',
'section' => 'hero',
'colibri_tab' => 'style',
'active_rules' => array( $active_rule_base ),
'selective_refresh' => array(
'selector' => $this->getSelector(),
'function' => array( $this, 'renderContent' ),
),
),
),
);
}
/**
* @return string
*/
public function getSelector() {
return $this->selector;
}
/**
* @param string $selector
*/
public function setSelector( $selector ) {
$this->selector = $selector;
}
protected function getGeneralBackgroundSettings( $prefix ) {
return array(
"{$prefix}full_height" => array(
'default' => Defaults::get( "{$prefix}full_height" ),
'control' => array(
'label' => Translations::get( 'full_height' ),
'type' => 'switch',
'section' => 'hero',
'colibri_tab' => 'style',
),
'css_output' => array(
array(
'selector' => $this->selector,
'media' => CSSOutput::NO_MEDIA,
'property' => 'min-height',
'true_value' => '100vh',
'false_value' => 'auto',
),
),
),
"{$prefix}hero.separator2" => array(
'default' => '',
'control' => array(
'label' => '',
'type' => 'separator',
'section' => 'hero',
'colibri_tab' => 'style',
),
),
"{$prefix}style.background.color" => array(
'default' => Defaults::get( "{$prefix}style.background.color" ),
'control' => array(
'label' => Translations::escHtml( 'background_color' ),
'type' => 'color',
'section' => 'hero',
'colibri_tab' => 'style',
),
'css_output' => array(
array(
'selector' => $this->selector,
'media' => CSSOutput::NO_MEDIA,
'property' => 'background-color',
),
),
),
"{$prefix}style.background.type" => array(
'default' => Defaults::get( "{$prefix}style.background.type" ),
'control' => array(
'label' => Translations::escHtml( 'background_type' ),
'focus_alias' => 'hero_background',
'type' => 'button-group',
'button_size' => 'medium',
'choices' => array(
'image' => Translations::escHtml( 'image' ),
'gradient' => Translations::escHtml( 'gradient' ),
'slideshow' => Translations::escHtml( 'slideshow' ),
'video' => Translations::escHtml( 'video' ),
),
'colibri_tab' => 'style',
'none_value' => 'color',
'section' => 'hero',
'selective_refresh' => array(
'selector' => $this->getSelector() . ' .background-wrapper',
'function' => array( $this, 'renderContent' ),
),
),
),
);
}
protected function getImageSettings( $prefix ) {
$image_prefix = "{$prefix}style.background.image.0.";
return array(
"{$image_prefix}source.url" => array(
'default' => Defaults::get( "{$image_prefix}source.url", '' ),
'control' => array(
'label' => Translations::escHtml( 'image' ),
'type' => 'image',
'section' => 'hero',
'colibri_tab' => 'style',
),
'css_output' => array(
array(
'selector' => static::getSelector(),
'media' => CSSOutput::NO_MEDIA,
'property' => 'background-image',
'value_pattern' => 'url("%s")',
),
),
'active_rules' => array(
array(
'setting' => "{$prefix}style.background.type",
'operator' => '=',
'value' => 'image',
),
),
),
"{$image_prefix}position" => array(
'default' => Defaults::get( "{$image_prefix}position", 'top center' ),
'control' => array(
'label' => Translations::escHtml( 'position' ),
'type' => 'select',
'section' => 'hero',
'colibri_tab' => 'style',
'inline_content_template' => true,
'choices' => array(
'top left' => Translations::escHtml( 'top_left' ),
'top center' => Translations::escHtml( 'top_center' ),
'top right' => Translations::escHtml( 'top_right' ),
'center left' => Translations::escHtml( 'center_left' ),
'center center' => Translations::escHtml( 'center_center' ),
'center right' => Translations::escHtml( 'center_right' ),
'bottom left' => Translations::escHtml( 'bottom_left' ),
'bottom center' => Translations::escHtml( 'bottom_center' ),
'bottom right' => Translations::escHtml( 'bottom_right' ),
),
),
'css_output' => array(
array(
'selector' => $this->selector,
'media' => CSSOutput::NO_MEDIA,
'property' => 'background-position',
),
),
'active_rules' => array(
array(
'setting' => "{$prefix}style.background.type",
'operator' => '=',
'value' => 'image',
),
),
),
"{$image_prefix}attachment" => array(
'default' => Defaults::get( "{$image_prefix}attachment", '' ),
'control' => array(
'label' => Translations::escHtml( 'attachment' ),
'inline_content_template' => true,
'type' => 'select',
'section' => 'hero',
'colibri_tab' => 'style',
'choices' => array(
'scroll' => Translations::escHtml( 'scroll' ),
'fixed' => Translations::escHtml( 'fixed' ),
),
),
'css_output' => array(
array(
'selector' => $this->selector,
'media' => CSSOutput::NO_MEDIA,
'property' => 'background-attachment',
),
array(
'selector' => static::getSelector(),
'media' => CSSOutput::mobileMedia(),
'property' => 'background-attachment',
'value_pattern' => 'none',
),
),
'active_rules' => array(
array(
'setting' => "{$prefix}style.background.type",
'operator' => '=',
'value' => 'image',
),
),
),
"{$image_prefix}repeat" => array(
'default' => Defaults::get( "{$image_prefix}repeat", 'no-repeat' ),
'control' => array(
'label' => Translations::escHtml( 'repeat', '' ),
'inline_content_template' => true,
'type' => 'select',
'section' => 'hero',
'colibri_tab' => 'style',
'choices' => array(
'no-repeat' => Translations::escHtml( 'no-repeat' ),
'repeat' => Translations::escHtml( 'repeat', '' ),
'repeat-x' => Translations::escHtml( 'repeat', 'X' ),
'repeat-y' => Translations::escHtml( 'repeat', 'Y' ),
),
),
'css_output' => array(
array(
'selector' => $this->selector,
'media' => CSSOutput::NO_MEDIA,
'property' => 'background-repeat',
),
),
'active_rules' => array(
array(
'setting' => "{$prefix}style.background.type",
'operator' => '=',
'value' => 'image',
),
),
),
"{$image_prefix}size" => array(
'default' => Defaults::get( "{$image_prefix}size", 'cover' ),
'control' => array(
'label' => Translations::escHtml( 'size' ),
'inline_content_template' => true,
'type' => 'select',
'section' => 'hero',
'colibri_tab' => 'style',
'choices' => array(
'auto' => Translations::escHtml( 'auto' ),
'cover' => Translations::escHtml( 'cover' ),
'contain' => Translations::escHtml( 'contain' ),
),
),
'css_output' => array(
array(
'selector' => $this->selector,
'media' => CSSOutput::NO_MEDIA,
'property' => 'background-size',
),
),
'active_rules' => array(
array(
'setting' => "{$prefix}style.background.type",
'operator' => '=',
'value' => 'image',
),
),
),
);
}
protected function getGradientSettings( $prefix ) {
$gradient_prefix = "{$prefix}style.background.image.0.";
return array(
"{$gradient_prefix}source.gradient" => array(
'default' => Defaults::get( "{$gradient_prefix}source.gradient" ),
'control' => array(
'label' => Translations::escHtml( 'gradient' ),
'type' => 'gradient',
'section' => 'hero',
'colibri_tab' => 'style',
'choices' => Defaults::get( 'gradients', '' ),
),
'css_output' => array(
array(
'selector' => static::getSelector(),
'media' => CSSOutput::NO_MEDIA,
'property' => 'background-image',
'value_pattern' => CSSOutput::GRADIENT_VALUE_PATTERN,
),
),
'active_rules' => array(
array(
'setting' => "{$prefix}style.background.type",
'operator' => '=',
'value' => 'gradient',
),
),
),
);
}
protected function getSpacingSettings( $prefix ) {
return array(
"{$prefix}hero.separator1" => array(
'default' => '',
'control' => array(
'label' => '',
'type' => 'separator',
'section' => 'hero',
'colibri_tab' => 'style',
),
'active_rules' => array(
array(
'setting' => "{$prefix}full_height",
'operator' => '=',
'value' => false,
),
),
),
"{$prefix}style.padding.top.value" => array(
'default' => Defaults::get( "{$prefix}style.padding.top.value", 150 ),
'transport' => 'postMessage',
'control' => array(
'label' => Translations::escHtml( 'spacing_top' ),
'colibri_tab' => 'style',
'type' => 'slider',
'section' => 'hero',
'min' => 0,
'max' => 300,
'step' => 1,
'active_rules' => array(
array(
'setting' => "{$prefix}full_height",
'operator' => '=',
'value' => false,
),
),
),
'css_output' => array(
array(
'selector' => $this->selector,
'media' => CSSOutput::NO_MEDIA,
'property' => 'padding-top',
'value_pattern' => '%spx',
),
),
),
"{$prefix}style.padding.bottom.value" => array(
'default' => Defaults::get( "{$prefix}style.padding.bottom.value", 150 ),
'transport' => 'postMessage',
'control' => array(
'label' => Translations::escHtml( 'spacing_bottom' ),
'colibri_tab' => 'style',
'type' => 'slider',
'section' => 'hero',
'min' => 0,
'max' => 300,
'step' => 1,
'active_rules' => array(
array(
'setting' => "{$prefix}full_height",
'operator' => '=',
'value' => false,
),
),
),
'css_output' => array(
array(
'selector' => $this->selector,
'media' => CSSOutput::NO_MEDIA,
'property' => 'padding-bottom',
'value_pattern' => '%spx',
),
),
),
);
}
}