Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../themes/Divi/includes/builder
File: class-et-builder-element.php
'midEnd' => $motion->getEndMiddle( $value ),
[13000] Fix | Delete
'end' => $motion->getEndLimit( $value ),
[13001] Fix | Delete
'startValue' => (float) $motion->getStartValue( $value ),
[13002] Fix | Delete
'midValue' => (float) $motion->getMiddleValue( $value ),
[13003] Fix | Delete
'endValue' => (float) $motion->getEndValue( $value ),
[13004] Fix | Delete
'resolver' => $option['resolver'],
[13005] Fix | Delete
'module_type' => esc_html( $function_name ),
[13006] Fix | Delete
'trigger_start' => $trigger_start,
[13007] Fix | Delete
'trigger_end' => $trigger_end,
[13008] Fix | Delete
);
[13009] Fix | Delete
[13010] Fix | Delete
$transform_class = ET_Builder_Module_Fields_Factory::get( 'Transform' );
[13011] Fix | Delete
$transform_class->set_props( $this->props + array( 'transforms_important' => true ) );
[13012] Fix | Delete
[13013] Fix | Delete
$elements = $transform_class->get_elements( $device );
[13014] Fix | Delete
[13015] Fix | Delete
// Process transforms if defined
[13016] Fix | Delete
if ( !empty( $elements ) && !empty( $elements['transform'] ) ) {
[13017] Fix | Delete
$item['transforms'] = $elements['transform'];
[13018] Fix | Delete
}
[13019] Fix | Delete
[13020] Fix | Delete
if ( 'on' === $grid_motion ) {
[13021] Fix | Delete
$item['grid_motion'] = $grid_motion;
[13022] Fix | Delete
$item['children_count'] = in_array( $function_name, $grid_modules ) ? $this->prop( 'posts_number', 10 ) : 0;
[13023] Fix | Delete
$item['module_index'] = self::_get_index( array( self::INDEX_MODULE_ORDER, $function_name ) );
[13024] Fix | Delete
}
[13025] Fix | Delete
[13026] Fix | Delete
if ( $this->child_slug && 'on' === $grid_motion ) {
[13027] Fix | Delete
self::$parent_motion_effects[ $id ] = $item;
[13028] Fix | Delete
unset(self::$parent_motion_effects[ $id ]['id'], self::$parent_motion_effects[ $id ]['grid_motion'], self::$parent_motion_effects[ $id ]['children_count'], self::$parent_motion_effects[ $id ]['module_index']);
[13029] Fix | Delete
[13030] Fix | Delete
$item['child_slug'] = $this->child_slug;
[13031] Fix | Delete
}
[13032] Fix | Delete
[13033] Fix | Delete
if ( $is_child_element ) {
[13034] Fix | Delete
if ( !empty( self::$parent_motion_effects[ $id ] ) ) {
[13035] Fix | Delete
$additional_item = self::$parent_motion_effects[ $id ];
[13036] Fix | Delete
$additional_item['id'] = $item['id'];
[13037] Fix | Delete
[13038] Fix | Delete
self::$_scroll_effects_fields[ $device ][] = $additional_item;
[13039] Fix | Delete
}
[13040] Fix | Delete
} else if ( 'on' !== $grid_motion ) {
[13041] Fix | Delete
self::$parent_motion_effects = array();
[13042] Fix | Delete
}
[13043] Fix | Delete
}
[13044] Fix | Delete
[13045] Fix | Delete
self::$_scroll_effects_fields[ $device ][] = $item;
[13046] Fix | Delete
}
[13047] Fix | Delete
}
[13048] Fix | Delete
}
[13049] Fix | Delete
[13050] Fix | Delete
public function process_height_options( $function_name ) {
[13051] Fix | Delete
if ( ! is_array( self::$_->array_get( $this->advanced_fields, 'height' ) ) ) {
[13052] Fix | Delete
return;
[13053] Fix | Delete
}
[13054] Fix | Delete
[13055] Fix | Delete
$hover = et_pb_hover_options();
[13056] Fix | Delete
$responsive = et_pb_responsive_options();
[13057] Fix | Delete
$settings = self::$_->array_get( $this->advanced_fields, "height", array() );
[13058] Fix | Delete
$fields = array_merge( array( '' => $settings ), self::$_->array_get( $settings, 'extra', array() ) );
[13059] Fix | Delete
[13060] Fix | Delete
foreach ( $fields as $prefix => $settings ) {
[13061] Fix | Delete
$prefix = et_builder_add_prefix( $prefix, '' );
[13062] Fix | Delete
$default_selector = self::$_->array_get( $settings, "css.main", $this->main_css_element );
[13063] Fix | Delete
$helpers = array(
[13064] Fix | Delete
'height' => et_pb_height_options( $prefix ),
[13065] Fix | Delete
'min_height' => et_pb_min_height_options( $prefix ),
[13066] Fix | Delete
'max_height' => et_pb_max_height_options( $prefix ),
[13067] Fix | Delete
);
[13068] Fix | Delete
[13069] Fix | Delete
foreach ( $helpers as $key => $helper ) {
[13070] Fix | Delete
if ( ! self::$_->array_get( $settings, "use_{$key}", true ) ) {
[13071] Fix | Delete
continue;
[13072] Fix | Delete
}
[13073] Fix | Delete
[13074] Fix | Delete
$slug = $helper->get_field( $prefix );
[13075] Fix | Delete
$field = self::$_->array_get( $this->fields_unprocessed, $slug, array() );
[13076] Fix | Delete
$css_props = $this->field_to_css_prop( $key );
[13077] Fix | Delete
$selector = self::$_->array_get( $settings, "css.{$key}", $default_selector );
[13078] Fix | Delete
[13079] Fix | Delete
if ( $responsive->is_enabled( $slug, $this->props ) ) {
[13080] Fix | Delete
$values = array();
[13081] Fix | Delete
foreach ( $responsive->get_modes() as $mode ) {
[13082] Fix | Delete
$default_field = $mode == ET_Builder_Module_Helper_ResponsiveOptions::DESKTOP ? 'default' : "default_$mode";
[13083] Fix | Delete
$default = self::$_->array_get( $field, $default_field );
[13084] Fix | Delete
$values[ $mode ] = $responsive->get_value( $slug, $this->props, $mode, $default );
[13085] Fix | Delete
}
[13086] Fix | Delete
[13087] Fix | Delete
et_pb_generate_responsive_css( $values, $selector, $css_props, $function_name );
[13088] Fix | Delete
} else {
[13089] Fix | Delete
$default = self::$_->array_get( $field, 'default' );
[13090] Fix | Delete
$value = $helper->get_value( $this->props, $default );
[13091] Fix | Delete
[13092] Fix | Delete
if ( $value !== '' && $value !== $default ) {
[13093] Fix | Delete
self::set_style( $function_name,
[13094] Fix | Delete
array(
[13095] Fix | Delete
'selector' => $selector,
[13096] Fix | Delete
'declaration' => sprintf( '%1$s: %2$s;', $css_props, esc_attr( $value ) ),
[13097] Fix | Delete
) );
[13098] Fix | Delete
}
[13099] Fix | Delete
}
[13100] Fix | Delete
[13101] Fix | Delete
if ( $hover->is_enabled( $slug, $this->props ) ) {
[13102] Fix | Delete
$default = self::$_->array_get( $field, 'default' );
[13103] Fix | Delete
$value = $helper->get_value( $this->props, $default );
[13104] Fix | Delete
$hover_value = $hover->get_value( $slug, $this->props, $value );
[13105] Fix | Delete
$selector = $hover->add_hover_to_selectors( $selector );
[13106] Fix | Delete
[13107] Fix | Delete
if ( $hover_value !== '' && $hover_value !== $value ) {
[13108] Fix | Delete
self::set_style( $function_name,
[13109] Fix | Delete
array(
[13110] Fix | Delete
'selector' => $selector,
[13111] Fix | Delete
'declaration' => sprintf( '%1$s: %2$s;', $css_props, esc_attr( $hover_value ) ),
[13112] Fix | Delete
) );
[13113] Fix | Delete
}
[13114] Fix | Delete
}
[13115] Fix | Delete
}
[13116] Fix | Delete
}
[13117] Fix | Delete
}
[13118] Fix | Delete
[13119] Fix | Delete
public function process_overflow_options( $function_name ) {
[13120] Fix | Delete
if ( ! is_array( self::$_->array_get( $this->advanced_fields, 'overflow', array() ) ) ) {
[13121] Fix | Delete
return;
[13122] Fix | Delete
}
[13123] Fix | Delete
[13124] Fix | Delete
$overflow = et_pb_overflow();
[13125] Fix | Delete
$hover = et_pb_hover_options();
[13126] Fix | Delete
$responsive = et_pb_responsive_options();
[13127] Fix | Delete
$selector = self::$_->array_get(
[13128] Fix | Delete
$this->advanced_fields,
[13129] Fix | Delete
'overflow.css.main',
[13130] Fix | Delete
$this->main_css_element
[13131] Fix | Delete
);
[13132] Fix | Delete
$fields = array(
[13133] Fix | Delete
'overflow-x' => $overflow->get_field_x(),
[13134] Fix | Delete
'overflow-y' => $overflow->get_field_y(),
[13135] Fix | Delete
);
[13136] Fix | Delete
$controls = ET_Builder_Module_Fields_Factory::get( 'Overflow' )->get_fields( array(), true );
[13137] Fix | Delete
[13138] Fix | Delete
// Rebuilt template if template id is returned by get_fields()
[13139] Fix | Delete
if ( self::$option_template->is_enabled() && is_string( $controls ) ) {
[13140] Fix | Delete
$controls = self::$option_template->rebuild_field_template( $controls );
[13141] Fix | Delete
}
[13142] Fix | Delete
[13143] Fix | Delete
foreach ( $fields as $prop => $field ) {
[13144] Fix | Delete
$default_value = self::$_->array_get( $controls[ $field ], 'default', '' );
[13145] Fix | Delete
$overflow_values = et_pb_responsive_options()->get_property_values( $this->props, $field, $default_value );
[13146] Fix | Delete
et_pb_responsive_options()->generate_responsive_css( $overflow_values, $selector, $field, $function_name, '', 'overflow' );
[13147] Fix | Delete
[13148] Fix | Delete
if ( $hover->is_enabled( $field, $this->props ) ) {
[13149] Fix | Delete
$value = $hover->get_value( $field, $this->props, '' );
[13150] Fix | Delete
[13151] Fix | Delete
if ( '' !== $value ) {
[13152] Fix | Delete
self::set_style( $function_name,
[13153] Fix | Delete
array(
[13154] Fix | Delete
'selector' => $hover->add_hover_to_selectors( $selector ),
[13155] Fix | Delete
'declaration' => sprintf( '%1$s: %2$s;', $field, esc_attr( $value ) ),
[13156] Fix | Delete
) );
[13157] Fix | Delete
}
[13158] Fix | Delete
}
[13159] Fix | Delete
}
[13160] Fix | Delete
}
[13161] Fix | Delete
[13162] Fix | Delete
function process_advanced_custom_margin_options( $function_name ) {
[13163] Fix | Delete
// Disable if module doesn't set advanced_fields property and has no VB support
[13164] Fix | Delete
if ( ! $this->has_vb_support() && ! $this->has_advanced_fields ) {
[13165] Fix | Delete
return;
[13166] Fix | Delete
}
[13167] Fix | Delete
[13168] Fix | Delete
if ( ! self::$_->array_get( $this->advanced_fields, 'margin_padding', false ) ) {
[13169] Fix | Delete
return;
[13170] Fix | Delete
}
[13171] Fix | Delete
[13172] Fix | Delete
$hover = et_pb_hover_options();
[13173] Fix | Delete
$style = '';
[13174] Fix | Delete
$style_padding = '';
[13175] Fix | Delete
$style_margin = '';
[13176] Fix | Delete
$style_mobile = array();
[13177] Fix | Delete
$style_mobile_padding = array();
[13178] Fix | Delete
$style_mobile_margin = array();
[13179] Fix | Delete
$important_options = array();
[13180] Fix | Delete
$is_important_set = isset( $this->advanced_fields['margin_padding']['css']['important'] );
[13181] Fix | Delete
$use_global_important = $is_important_set && 'all' === $this->advanced_fields['margin_padding']['css']['important'];
[13182] Fix | Delete
$css = isset( $this->advanced_fields['margin_padding']['css'] ) ? $this->advanced_fields['margin_padding']['css'] : array();
[13183] Fix | Delete
$item_mappings = array(
[13184] Fix | Delete
'top' => 0,
[13185] Fix | Delete
'right' => 1,
[13186] Fix | Delete
'bottom' => 2,
[13187] Fix | Delete
'left' => 3,
[13188] Fix | Delete
);
[13189] Fix | Delete
[13190] Fix | Delete
if ( $is_important_set && is_array( $this->advanced_fields['margin_padding']['css']['important'] ) ) {
[13191] Fix | Delete
$important_options = $this->advanced_fields['margin_padding']['css']['important'];
[13192] Fix | Delete
}
[13193] Fix | Delete
[13194] Fix | Delete
$custom_margin = $this->advanced_fields['margin_padding']['use_margin'] ? $this->props['custom_margin'] : '';
[13195] Fix | Delete
$custom_padding = $this->advanced_fields['margin_padding']['use_padding'] ? $this->props['custom_padding'] : '';
[13196] Fix | Delete
[13197] Fix | Delete
$custom_margin_responsive_active = isset( $this->props['custom_margin_last_edited'] ) ? et_pb_get_responsive_status( $this->props['custom_margin_last_edited'] ) : false;
[13198] Fix | Delete
$custom_margin_mobile = $custom_margin_responsive_active && $this->advanced_fields['margin_padding']['use_margin'] && ( isset( $this->props['custom_margin_tablet'] ) || isset( $this->props['custom_margin_phone'] ) )
[13199] Fix | Delete
? array (
[13200] Fix | Delete
'tablet' => isset( $this->props['custom_margin_tablet'] ) ? $this->props['custom_margin_tablet'] : '',
[13201] Fix | Delete
'phone' => isset( $this->props['custom_margin_phone'] ) ? $this->props['custom_margin_phone'] : '',
[13202] Fix | Delete
)
[13203] Fix | Delete
: '';
[13204] Fix | Delete
[13205] Fix | Delete
$custom_padding_responsive_active = isset( $this->props['custom_padding_last_edited'] ) ? et_pb_get_responsive_status( $this->props['custom_padding_last_edited'] ) : false;
[13206] Fix | Delete
$custom_padding_mobile = $custom_padding_responsive_active && $this->advanced_fields['margin_padding']['use_padding'] && ( isset( $this->props['custom_padding_tablet'] ) || isset( $this->props['custom_padding_phone'] ) )
[13207] Fix | Delete
? array (
[13208] Fix | Delete
'tablet' => isset( $this->props['custom_padding_tablet'] ) ? $this->props['custom_padding_tablet'] : '',
[13209] Fix | Delete
'phone' => isset( $this->props['custom_padding_phone'] ) ? $this->props['custom_padding_phone'] : '',
[13210] Fix | Delete
)
[13211] Fix | Delete
: '';
[13212] Fix | Delete
[13213] Fix | Delete
if ( '' !== $custom_padding || ! empty( $custom_padding_mobile ) ) {
[13214] Fix | Delete
$important = in_array( 'custom_padding', $important_options ) || $use_global_important ? true : false;
[13215] Fix | Delete
$has_padding_selector = isset( $this->advanced_fields['margin_padding']['css'] ) && isset( $this->advanced_fields['margin_padding']['css']['padding'] );
[13216] Fix | Delete
$padding_styling = '' !== $custom_padding ? et_builder_get_element_style_css( $custom_padding, 'padding', $important ) : '';
[13217] Fix | Delete
[13218] Fix | Delete
if ( $has_padding_selector ) {
[13219] Fix | Delete
$style_padding .= $padding_styling;
[13220] Fix | Delete
} else {
[13221] Fix | Delete
$style .= $padding_styling;
[13222] Fix | Delete
}
[13223] Fix | Delete
[13224] Fix | Delete
if ( ! empty( $custom_padding_mobile ) ) {
[13225] Fix | Delete
foreach ( $custom_padding_mobile as $device => $settings ) {
[13226] Fix | Delete
$padding_mobile_styling = '' !== $settings ? et_builder_get_element_style_css( $settings, 'padding', $important ) : '';
[13227] Fix | Delete
[13228] Fix | Delete
if ( $has_padding_selector ) {
[13229] Fix | Delete
$style_mobile_padding[ $device ][] = $padding_mobile_styling;
[13230] Fix | Delete
} else {
[13231] Fix | Delete
$style_mobile[ $device ][] = $padding_mobile_styling;
[13232] Fix | Delete
}
[13233] Fix | Delete
}
[13234] Fix | Delete
}
[13235] Fix | Delete
[13236] Fix | Delete
// Selective Paddings
[13237] Fix | Delete
$selective_paddings = array_filter( array(
[13238] Fix | Delete
'top' => isset( $css['padding-top'] ) ? $css['padding-top'] : false,
[13239] Fix | Delete
'right' => isset( $css['padding-right'] ) ? $css['padding-right'] : false,
[13240] Fix | Delete
'bottom' => isset( $css['padding-bottom'] ) ? $css['padding-bottom'] : false,
[13241] Fix | Delete
'left' => isset( $css['padding-left'] ) ? $css['padding-left'] : false,
[13242] Fix | Delete
) );
[13243] Fix | Delete
[13244] Fix | Delete
// Only run the following if selective-padding selector is defined
[13245] Fix | Delete
if ( ! empty( $selective_paddings ) ) {
[13246] Fix | Delete
[13247] Fix | Delete
// Loop each padding sides. Selective padding works by creating filtered custom_margin value on the fly, then pass it to existin declaration builder
[13248] Fix | Delete
// Ie custom_padding = 10px|10px|10px|10px. Selective padding for padding-top works by creating 10px||| value on the fly then pass it to declaration builder
[13249] Fix | Delete
foreach ( $selective_paddings as $corner => $selective_padding_selectors ) {
[13250] Fix | Delete
// Default selective padding value: empty on all sides
[13251] Fix | Delete
$selective_padding = array( '', '', '', '' );
[13252] Fix | Delete
[13253] Fix | Delete
// Get padding order key. Expected order: top|right|bottom|left
[13254] Fix | Delete
$selective_padding_key = $item_mappings[ $corner ];
[13255] Fix | Delete
[13256] Fix | Delete
// Explode custom padding value into array
[13257] Fix | Delete
$selective_padding_array = explode( '|', $custom_padding );
[13258] Fix | Delete
[13259] Fix | Delete
// Pick current padding side's value
[13260] Fix | Delete
$selective_padding_value = isset( $selective_padding_array[ $selective_padding_key ] ) ? $selective_padding_array[ $selective_padding_key ] : '';
[13261] Fix | Delete
[13262] Fix | Delete
// Set selective padding value to $selective_padding
[13263] Fix | Delete
$selective_padding[ $selective_padding_key ] = $selective_padding_value;
[13264] Fix | Delete
[13265] Fix | Delete
// If selective padding for current side is found, set style for it
[13266] Fix | Delete
$selective_padding_filtered = array_filter( $selective_padding );
[13267] Fix | Delete
if ( ! empty( $selective_padding_filtered ) ) {
[13268] Fix | Delete
self::set_style( $function_name, array(
[13269] Fix | Delete
'selector' => $selective_padding_selectors,
[13270] Fix | Delete
'declaration' => rtrim( et_builder_get_element_style_css( implode( '|', $selective_padding ), 'padding' ) ),
[13271] Fix | Delete
'priority' => $this->_style_priority,
[13272] Fix | Delete
) );
[13273] Fix | Delete
}
[13274] Fix | Delete
[13275] Fix | Delete
// Check wheter responsive padding is activated and padding has mobile value
[13276] Fix | Delete
if ( $custom_padding_responsive_active && is_array( $custom_padding_mobile ) ) {
[13277] Fix | Delete
// Assume no mobile padding value first
[13278] Fix | Delete
$has_selective_padding_mobile = false;
[13279] Fix | Delete
[13280] Fix | Delete
// Set default selective padding mobile
[13281] Fix | Delete
$selective_padding_mobile = array(
[13282] Fix | Delete
'tablet' => array( '', '', '', '' ),
[13283] Fix | Delete
'phone' => array( '', '', '', '' ),
[13284] Fix | Delete
);
[13285] Fix | Delete
[13286] Fix | Delete
// Loop padding mobile. This results per-breakpoint padding value
[13287] Fix | Delete
foreach ( $custom_padding_mobile as $breakpoint => $custom_padding_device ) {
[13288] Fix | Delete
// Explode per-breakpoint padding value into array
[13289] Fix | Delete
$custom_padding_device_array = explode( '|', $custom_padding_device );
[13290] Fix | Delete
[13291] Fix | Delete
// Get current padding side value on current breakpoint
[13292] Fix | Delete
$selective_padding_mobile_value = isset( $custom_padding_device_array[ $selective_padding_key ] ) ? $custom_padding_device_array[ $selective_padding_key ] : '';
[13293] Fix | Delete
[13294] Fix | Delete
// Set picked value into current padding side on current breakpoint
[13295] Fix | Delete
$selective_padding_mobile[ $breakpoint ][ $selective_padding_key ] = $selective_padding_mobile_value;
[13296] Fix | Delete
[13297] Fix | Delete
// If the side of padding on current breakpoint has value, build CSS declaration for it mark selective padding mobile as exist
[13298] Fix | Delete
$selective_padding_mobile[ $breakpoint ] = array_filter( $selective_padding_mobile[ $breakpoint ] );
[13299] Fix | Delete
if ( ! empty( $selective_padding_mobile[ $breakpoint ] ) ) {
[13300] Fix | Delete
$selective_padding_mobile[ $breakpoint ] = array( et_builder_get_element_style_css( implode( '|', $selective_padding_mobile[ $breakpoint ] ), 'padding' ) );
[13301] Fix | Delete
[13302] Fix | Delete
$has_selective_padding_mobile = true;
[13303] Fix | Delete
}
[13304] Fix | Delete
}
[13305] Fix | Delete
[13306] Fix | Delete
// Set style for selective padding on mobile
[13307] Fix | Delete
if ( $has_selective_padding_mobile ) {
[13308] Fix | Delete
$this->process_advanced_mobile_margin_options(
[13309] Fix | Delete
$function_name,
[13310] Fix | Delete
$selective_padding_mobile,
[13311] Fix | Delete
$selective_padding_selectors
[13312] Fix | Delete
);
[13313] Fix | Delete
}
[13314] Fix | Delete
}
[13315] Fix | Delete
}
[13316] Fix | Delete
}
[13317] Fix | Delete
}
[13318] Fix | Delete
[13319] Fix | Delete
if ( '' !== $custom_margin || ! empty( $custom_margin_mobile ) ) {
[13320] Fix | Delete
$important = in_array( 'custom_margin', $important_options ) || $use_global_important ? true : false;
[13321] Fix | Delete
$has_margin_selector = isset( $this->advanced_fields['margin_padding']['css'] ) && isset( $this->advanced_fields['margin_padding']['css']['margin'] );
[13322] Fix | Delete
$margin_styling = '' !== $custom_margin ? et_builder_get_element_style_css( $custom_margin, 'margin', $important ) : '';
[13323] Fix | Delete
[13324] Fix | Delete
if ( $has_margin_selector ) {
[13325] Fix | Delete
$style_margin .= $margin_styling;
[13326] Fix | Delete
} else {
[13327] Fix | Delete
$style .= $margin_styling;
[13328] Fix | Delete
}
[13329] Fix | Delete
[13330] Fix | Delete
if ( ! empty( $custom_margin_mobile ) ) {
[13331] Fix | Delete
foreach ( $custom_margin_mobile as $device => $settings ) {
[13332] Fix | Delete
$margin_mobile_styling = '' !== $settings ? et_builder_get_element_style_css( $settings, 'margin', $important ) : '';
[13333] Fix | Delete
[13334] Fix | Delete
if ( $has_margin_selector ) {
[13335] Fix | Delete
$style_mobile_margin[ $device ][] = $margin_mobile_styling;
[13336] Fix | Delete
} else {
[13337] Fix | Delete
$style_mobile[ $device ][] = $margin_mobile_styling;
[13338] Fix | Delete
}
[13339] Fix | Delete
}
[13340] Fix | Delete
}
[13341] Fix | Delete
}
[13342] Fix | Delete
[13343] Fix | Delete
if ( '' !== $style_padding ) {
[13344] Fix | Delete
$css_element_padding = $this->advanced_fields['margin_padding']['css']['padding'];
[13345] Fix | Delete
[13346] Fix | Delete
self::set_style( $function_name, array(
[13347] Fix | Delete
'selector' => $css_element_padding,
[13348] Fix | Delete
'declaration' => rtrim( $style_padding ),
[13349] Fix | Delete
'priority' => $this->_style_priority,
[13350] Fix | Delete
) );
[13351] Fix | Delete
}
[13352] Fix | Delete
[13353] Fix | Delete
if ( '' !== $style_margin ) {
[13354] Fix | Delete
$css_element_margin = $this->advanced_fields['margin_padding']['css']['margin'];
[13355] Fix | Delete
[13356] Fix | Delete
self::set_style( $function_name, array(
[13357] Fix | Delete
'selector' => $css_element_margin,
[13358] Fix | Delete
'declaration' => rtrim( $style_margin ),
[13359] Fix | Delete
'priority' => $this->_style_priority,
[13360] Fix | Delete
) );
[13361] Fix | Delete
}
[13362] Fix | Delete
[13363] Fix | Delete
if ( '' !== $style ) {
[13364] Fix | Delete
$css_element = ! empty( $this->advanced_fields['margin_padding']['css']['main'] ) ? $this->advanced_fields['margin_padding']['css']['main'] : $this->main_css_element;
[13365] Fix | Delete
[13366] Fix | Delete
self::set_style( $function_name, array(
[13367] Fix | Delete
'selector' => $css_element,
[13368] Fix | Delete
'declaration' => rtrim( $style ),
[13369] Fix | Delete
'priority' => $this->_style_priority,
[13370] Fix | Delete
) );
[13371] Fix | Delete
}
[13372] Fix | Delete
[13373] Fix | Delete
if ( ! empty( $style_mobile_padding ) ) {
[13374] Fix | Delete
$this->process_advanced_mobile_margin_options(
[13375] Fix | Delete
$function_name,
[13376] Fix | Delete
$style_mobile_padding,
[13377] Fix | Delete
$this->advanced_fields['margin_padding']['css']['padding']
[13378] Fix | Delete
);
[13379] Fix | Delete
}
[13380] Fix | Delete
[13381] Fix | Delete
if ( ! empty( $style_mobile_margin ) ) {
[13382] Fix | Delete
$this->process_advanced_mobile_margin_options(
[13383] Fix | Delete
$function_name,
[13384] Fix | Delete
$style_mobile_margin,
[13385] Fix | Delete
$this->advanced_fields['margin_padding']['css']['margin']
[13386] Fix | Delete
);
[13387] Fix | Delete
}
[13388] Fix | Delete
[13389] Fix | Delete
if ( ! empty( $style_mobile ) ) {
[13390] Fix | Delete
$css_element = ! empty( $this->advanced_fields['margin_padding']['css']['main'] ) ? $this->advanced_fields['margin_padding']['css']['main'] : $this->main_css_element;
[13391] Fix | Delete
[13392] Fix | Delete
$this->process_advanced_mobile_margin_options(
[13393] Fix | Delete
$function_name,
[13394] Fix | Delete
$style_mobile,
[13395] Fix | Delete
$css_element
[13396] Fix | Delete
);
[13397] Fix | Delete
}
[13398] Fix | Delete
[13399] Fix | Delete
// Hover styles
[13400] Fix | Delete
$custom_margin_hover = $hover->get_value( 'custom_margin', $this->props );
[13401] Fix | Delete
[13402] Fix | Delete
if ( '' !== $custom_margin_hover && et_builder_is_hover_enabled( 'custom_margin', $this->props ) ) {
[13403] Fix | Delete
$css_element_margin = self::$_->array_get( $this->advanced_fields, 'margin_padding.css.margin', $this->main_css_element );
[13404] Fix | Delete
[13405] Fix | Delete
self::set_style( $function_name, array(
[13406] Fix | Delete
'selector' => $this->add_hover_to_order_class( $css_element_margin ),
[13407] Fix | Delete
'declaration' => rtrim( et_builder_get_element_style_css( $custom_margin_hover, 'margin', true ) ),
[13408] Fix | Delete
'priority' => 20,
[13409] Fix | Delete
) );
[13410] Fix | Delete
}
[13411] Fix | Delete
[13412] Fix | Delete
$custom_padding_hover = $hover->get_value( 'custom_padding', $this->props, '' );
[13413] Fix | Delete
[13414] Fix | Delete
if ( '' !== $custom_padding_hover && et_builder_is_hover_enabled( 'custom_padding', $this->props ) ) {
[13415] Fix | Delete
$css_element_padding = self::$_->array_get( $this->advanced_fields, 'margin_padding.css.padding', $this->main_css_element );
[13416] Fix | Delete
self::set_style( $function_name, array(
[13417] Fix | Delete
'selector' => $this->add_hover_to_order_class( $css_element_padding ),
[13418] Fix | Delete
'declaration' => rtrim( et_builder_get_element_style_css( $custom_padding_hover, 'padding', true ) ),
[13419] Fix | Delete
'priority' => 20,
[13420] Fix | Delete
) );
[13421] Fix | Delete
}
[13422] Fix | Delete
}
[13423] Fix | Delete
[13424] Fix | Delete
function process_advanced_mobile_margin_options( $function_name, $style_mobile, $css_element ) {
[13425] Fix | Delete
foreach( $style_mobile as $device => $style ) {
[13426] Fix | Delete
if ( ! empty( $style ) ) {
[13427] Fix | Delete
$current_media_query = 'tablet' === $device ? 'max_width_980' : 'max_width_767';
[13428] Fix | Delete
$current_media_css = '';
[13429] Fix | Delete
foreach( $style as $css_code ) {
[13430] Fix | Delete
$current_media_css .= $css_code;
[13431] Fix | Delete
}
[13432] Fix | Delete
if ( '' === $current_media_css ) {
[13433] Fix | Delete
continue;
[13434] Fix | Delete
}
[13435] Fix | Delete
[13436] Fix | Delete
self::set_style( $function_name, array(
[13437] Fix | Delete
'selector' => $css_element,
[13438] Fix | Delete
'declaration' => rtrim( $current_media_css ),
[13439] Fix | Delete
'priority' => $this->_style_priority,
[13440] Fix | Delete
'media_query' => ET_Builder_Element::get_media_query( $current_media_query ),
[13441] Fix | Delete
) );
[13442] Fix | Delete
}
[13443] Fix | Delete
}
[13444] Fix | Delete
}
[13445] Fix | Delete
[13446] Fix | Delete
protected function get_hover_value( $option ) {
[13447] Fix | Delete
$enabled_option = $option === 'background_color' ? 'background' : $option;
[13448] Fix | Delete
$original_value = self::$_->array_get( $this->props, $option );
[13449] Fix | Delete
$hover_enabled = et_pb_hover_options()->is_enabled( $enabled_option, $this->props );
[13450] Fix | Delete
$value = et_pb_hover_options()->get_value( $option, $this->props );
[13451] Fix | Delete
[13452] Fix | Delete
return ( ! $hover_enabled || $original_value === $value ) ? null : $value;
[13453] Fix | Delete
}
[13454] Fix | Delete
[13455] Fix | Delete
/**
[13456] Fix | Delete
* Process advanced button options.
[13457] Fix | Delete
*
[13458] Fix | Delete
* @since 3.23 Add support to generate responsive styles of padding and button alignment.
[13459] Fix | Delete
*
[13460] Fix | Delete
* @param string $function_name Module slug.
[13461] Fix | Delete
*/
[13462] Fix | Delete
function process_advanced_button_options( $function_name ) {
[13463] Fix | Delete
// Disable if module doesn't set advanced_fields property and has no VB support
[13464] Fix | Delete
if ( ! $this->has_advanced_fields ) {
[13465] Fix | Delete
return;
[13466] Fix | Delete
}
[13467] Fix | Delete
[13468] Fix | Delete
if ( ! self::$_->array_get( $this->advanced_fields, 'button', false ) ) {
[13469] Fix | Delete
return;
[13470] Fix | Delete
}
[13471] Fix | Delete
[13472] Fix | Delete
$hover = et_pb_hover_options();
[13473] Fix | Delete
[13474] Fix | Delete
foreach ( $this->advanced_fields['button'] as $option_name => $option_settings ) {
[13475] Fix | Delete
$button_custom = $this->props["custom_{$option_name}"];
[13476] Fix | Delete
$button_use_icon = isset( $this->props["{$option_name}_use_icon"] ) ? $this->props["{$option_name}_use_icon"] : 'on';
[13477] Fix | Delete
[13478] Fix | Delete
// Button Icon.
[13479] Fix | Delete
$button_icon_values = et_pb_responsive_options()->get_property_values( $this->props, "{$option_name}_icon" );
[13480] Fix | Delete
$button_icon = isset( $button_icon_values['desktop'] ) ? $button_icon_values['desktop'] : '';
[13481] Fix | Delete
$button_icon_tablet = isset( $button_icon_values['tablet'] ) ? $button_icon_values['tablet'] : '';
[13482] Fix | Delete
$button_icon_phone = isset( $button_icon_values['phone'] ) ? $button_icon_values['phone'] : '';
[13483] Fix | Delete
$important = et_()->array_get( $option_settings, 'css.important', false ) ?
[13484] Fix | Delete
' !important' : '';
[13485] Fix | Delete
[13486] Fix | Delete
// Button Icon Placement.
[13487] Fix | Delete
$button_icon_placement_values = et_pb_responsive_options()->get_property_values( $this->props, "{$option_name}_icon_placement" );
[13488] Fix | Delete
$button_icon_placement = isset( $button_icon_placement_values['desktop'] ) ? $button_icon_placement_values['desktop'] : 'right';
[13489] Fix | Delete
$button_icon_placement_tablet = isset( $button_icon_placement_values['tablet'] ) ? $button_icon_placement_values['tablet'] : '';
[13490] Fix | Delete
$button_icon_placement_phone = isset( $button_icon_placement_values['phone'] ) ? $button_icon_placement_values['phone'] : '';
[13491] Fix | Delete
[13492] Fix | Delete
// Button Icon On Hover.
[13493] Fix | Delete
$button_on_hover_values = et_pb_responsive_options()->get_property_values( $this->props, "{$option_name}_on_hover" );
[13494] Fix | Delete
$button_on_hover = isset( $button_on_hover_values['desktop'] ) ? $button_on_hover_values['desktop'] : '';
[13495] Fix | Delete
$button_on_hover_tablet = isset( $button_on_hover_values['tablet'] ) ? $button_on_hover_values['tablet'] : '';
[13496] Fix | Delete
$button_on_hover_phone = isset( $button_on_hover_values['phone'] ) ? $button_on_hover_values['phone'] : '';
[13497] Fix | Delete
[13498] Fix | Delete
// Button Text Size.
[13499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function