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.
155 lines
4.2 KiB
PHTML
155 lines
4.2 KiB
PHTML
8 months ago
|
<?php
|
||
|
|
||
|
class ET_Builder_Module_Settings_Migration_RowCustomWidthToSizing extends ET_Builder_Module_Settings_Migration {
|
||
|
|
||
|
public $version = '3.22';
|
||
|
|
||
|
public function get_modules() {
|
||
|
return array( 'et_pb_row', 'et_pb_section' );
|
||
|
}
|
||
|
|
||
|
public function get_fields() {
|
||
|
$fields = array(
|
||
|
'module_class' => array(
|
||
|
'affected_fields' => array(
|
||
|
'make_fullwidth' => $this->get_modules(),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
|
||
|
foreach ( $this->get_modules() as $module ) {
|
||
|
foreach ( $this->get_keys() as $key ) {
|
||
|
$field = $module === 'et_pb_section' ? "inner_$key" : $key;
|
||
|
$fields[ $field ] = array(
|
||
|
'affected_fields' => array(
|
||
|
'make_fullwidth' => array( $module ),
|
||
|
'use_custom_width' => array( $module ),
|
||
|
'width_unit' => array( $module ),
|
||
|
'custom_width_px' => array( $module ),
|
||
|
'custom_width_px__hover' => array( $module ),
|
||
|
'custom_width_px__hover_enabled' => array( $module ),
|
||
|
'custom_width_percent' => array( $module ),
|
||
|
'custom_width_percent__hover' => array( $module ),
|
||
|
'custom_width_percent__hover_enabled' => array( $module ),
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $fields;
|
||
|
}
|
||
|
|
||
|
public function migrate(
|
||
|
$field_name,
|
||
|
$current_value,
|
||
|
$module_slug,
|
||
|
$saved_value,
|
||
|
$saved_field_name,
|
||
|
$attrs,
|
||
|
$content,
|
||
|
$module_address
|
||
|
) {
|
||
|
$raw_field = str_replace( 'inner_', '', $field_name );
|
||
|
|
||
|
if ( et_builder_module_prop( 'use_custom_width', $attrs, '' ) === 'on' ) {
|
||
|
$percent = et_builder_module_prop( 'width_unit', $attrs, '' ) === 'off';
|
||
|
$field = $percent ? 'custom_width_percent' : 'custom_width_px';
|
||
|
|
||
|
switch ( $raw_field ) {
|
||
|
// If the field is set to % only the max-width is defined
|
||
|
case 'width':
|
||
|
return ! $percent ? $saved_value : et_builder_module_prop( $field, $attrs, '' );
|
||
|
case 'width__hover':
|
||
|
return ! $percent ? $saved_value : et_builder_module_prop( "{$field}__hover", $attrs, '' );
|
||
|
case 'width__hover_enabled':
|
||
|
return ! $percent ? $saved_value : et_builder_module_prop( "{$field}__hover_enabled", $attrs, '' );
|
||
|
|
||
|
case 'max_width':
|
||
|
return et_builder_module_prop( $field, $attrs, $percent ? '80%' : '' );
|
||
|
case 'max_width__hover':
|
||
|
return et_builder_module_prop( "{$field}__hover", $attrs, '' );
|
||
|
case 'max_width__hover_enabled':
|
||
|
return et_builder_module_prop( "{$field}__hover_enabled", $attrs, '' );
|
||
|
default:
|
||
|
return $saved_value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( et_builder_module_prop( 'make_fullwidth', $attrs, '' ) === 'on' ) {
|
||
|
$gutter = (int) et_builder_module_prop( 'gutter_width', $attrs, '' );
|
||
|
|
||
|
switch ( $raw_field ) {
|
||
|
case 'module_class':
|
||
|
return $saved_value . ' ' . $this->class_name( $module_slug );
|
||
|
case 'width_last_edited':
|
||
|
case 'max_width_last_edited':
|
||
|
return 'on|desktop';
|
||
|
case 'width_tablet':
|
||
|
case 'max_width_tablet':
|
||
|
return 1 === $gutter ? '100%' : '80%';
|
||
|
case 'width':
|
||
|
case 'max_width':
|
||
|
return $this->get_width( $gutter );
|
||
|
}
|
||
|
|
||
|
if ( et_builder_module_prop( 'gutter_width__hover_enabled', $attrs, '' ) === 'on' ) {
|
||
|
$gutter = (int) et_builder_module_prop( 'gutter_width__hover', $attrs, '' );
|
||
|
|
||
|
switch ( $raw_field ) {
|
||
|
case 'width__hover_enabled':
|
||
|
case 'max_width__hover_enabled':
|
||
|
return 'on';
|
||
|
case 'width__hover':
|
||
|
case 'max_width__hover':
|
||
|
return $this->get_width( $gutter );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $saved_value;
|
||
|
}
|
||
|
|
||
|
private function get_keys() {
|
||
|
return array_merge( $this->to_fields( 'width' ), $this->to_fields( 'max_width' ) );
|
||
|
}
|
||
|
|
||
|
private function to_fields( $field ) {
|
||
|
return array(
|
||
|
$field,
|
||
|
"{$field}_tablet",
|
||
|
"{$field}_phone",
|
||
|
"{$field}_last_edited",
|
||
|
"{$field}__hover",
|
||
|
"{$field}__hover_enabled",
|
||
|
);
|
||
|
}
|
||
|
|
||
|
private function get_width( $gutter ) {
|
||
|
switch ( $gutter ) {
|
||
|
case 1:
|
||
|
return '100%';
|
||
|
case 2:
|
||
|
return '94%';
|
||
|
case 3:
|
||
|
return '89%';
|
||
|
case 4:
|
||
|
return '86%';
|
||
|
default:
|
||
|
return '89%';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private function class_name( $module ) {
|
||
|
switch ( $module ) {
|
||
|
case 'et_pb_row':
|
||
|
return 'et_pb_row_fullwidth';
|
||
|
case 'et_pb_section':
|
||
|
return 'et_pb_specialty_fullwidth';
|
||
|
default:
|
||
|
return '';
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return new ET_Builder_Module_Settings_Migration_RowCustomWidthToSizing();
|