| 1 |
<?php |
| 2 |
defined( 'ABSPATH' ) || exit; |
| 3 |
use YayMail\Utils\TemplateHelpers; |
| 4 |
use YayMail\Constants\AttributesData; |
| 5 |
/** |
| 6 |
* $args includes |
| 7 |
* $element |
| 8 |
* $render_data |
| 9 |
* $is_nested |
| 10 |
*/ |
| 11 |
if ( empty( $args['element'] ) ) { |
| 12 |
return; |
| 13 |
} |
| 14 |
|
| 15 |
$element = $args['element']; |
| 16 |
$data = $element['data']; |
| 17 |
|
| 18 |
$default_button_padding = [ |
| 19 |
'top' => '12', |
| 20 |
'right' => '20', |
| 21 |
'bottom' => '12', |
| 22 |
'left' => '20', |
| 23 |
]; |
| 24 |
|
| 25 |
$border = isset( $data['border'] ) ? $data['border'] : AttributesData::BORDER_DEFAULT; |
| 26 |
$border_style = TemplateHelpers::get_border_css_value( $border ); |
| 27 |
|
| 28 |
$wrapper_style = TemplateHelpers::get_style( |
| 29 |
[ |
| 30 |
'width' => '100%', |
| 31 |
'text-align' => 'center', |
| 32 |
'background-color' => $data['background_color'], |
| 33 |
] |
| 34 |
); |
| 35 |
|
| 36 |
$width = isset($data['width']) ? $data['width'] : 'auto'; |
| 37 |
$custom_width = isset($data['custom_width']) ? $data['custom_width'] : '50'; |
| 38 |
|
| 39 |
if ($width === 'custom') { |
| 40 |
$parsed_width = $custom_width . '%'; |
| 41 |
} elseif (in_array($width, ['auto', '25%', '50%', '75%', '100%'])) { |
| 42 |
$parsed_width = $width; |
| 43 |
} else { |
| 44 |
$parsed_width = $width . '%'; |
| 45 |
} |
| 46 |
|
| 47 |
$margin_value = isset( $data['margin'] ) && 'center' === $data['margin'] ? '0 auto' : 'auto'; |
| 48 |
$float_value = in_array( $data['align'], [ 'left', 'right' ], true ) ? $data['align'] : 'unset'; |
| 49 |
$button_holder_style = TemplateHelpers::get_style( |
| 50 |
[ |
| 51 |
'width' => $parsed_width, |
| 52 |
'min-width' => $parsed_width === 'auto' ? 'auto' : $parsed_width, |
| 53 |
'margin' => $margin_value, |
| 54 |
'padding' => TemplateHelpers::get_spacing_value( isset( $data['padding'] ) ? $data['padding'] : [] ), |
| 55 |
'float' => $float_value, |
| 56 |
'border-spacing' => '0', |
| 57 |
// Make sure this will work when inject css not working |
| 58 |
] |
| 59 |
); |
| 60 |
|
| 61 |
|
| 62 |
$border_radius = $data['border_radius']; |
| 63 |
|
| 64 |
$container_style = TemplateHelpers::get_style( |
| 65 |
[ |
| 66 |
'display' => 'inline-block', |
| 67 |
'width' => '100%', |
| 68 |
'box-sizing' => 'border-box', |
| 69 |
'border-radius' => TemplateHelpers::get_border_radius_value( $border_radius, 'px' ), |
| 70 |
'background-color' => $data['button_background_color'], |
| 71 |
'word-break' => 'break-word', |
| 72 |
] |
| 73 |
) . $border_style; |
| 74 |
|
| 75 |
$link_style = TemplateHelpers::get_style( |
| 76 |
[ |
| 77 |
'text-decoration' => 'none', |
| 78 |
] |
| 79 |
); |
| 80 |
|
| 81 |
$text_style = TemplateHelpers::get_style( |
| 82 |
[ |
| 83 |
'display' => 'block', |
| 84 |
'font-family' => TemplateHelpers::get_font_family_value( $data['font_family'] ), |
| 85 |
'line-height' => "{$data['height']}px", |
| 86 |
'color' => $data['text_color'], |
| 87 |
'font-size' => "{$data['font_size']}px", |
| 88 |
'font-weight' => $data['weight'], |
| 89 |
'padding' => TemplateHelpers::get_spacing_value( isset( $data['button_padding'] ) ? $data['button_padding'] : $default_button_padding ), |
| 90 |
'text-align' => 'center', |
| 91 |
] |
| 92 |
); |
| 93 |
|
| 94 |
ob_start(); |
| 95 |
?> |
| 96 |
|
| 97 |
<table class="yaymail-element-button" style="<?php echo esc_attr( $button_holder_style ); ?>"> |
| 98 |
<tbody> |
| 99 |
<tr> |
| 100 |
<td style="padding: 0;"> |
| 101 |
<div style="<?php echo esc_attr( $container_style ); ?>"> |
| 102 |
<a |
| 103 |
href="<?php echo esc_url( do_shortcode( $data['url'] ) ); ?>" |
| 104 |
style="<?php echo esc_attr( $link_style ); ?>" |
| 105 |
target="_blank" |
| 106 |
rel="noreferrer" |
| 107 |
> |
| 108 |
<span style="<?php echo esc_attr( $text_style ); ?>"><?php yaymail_kses_post_e( do_shortcode( $data['text'] ) ); ?></span> |
| 109 |
</a> |
| 110 |
</div> |
| 111 |
</td> |
| 112 |
</tr> |
| 113 |
</tbody> |
| 114 |
</table> |
| 115 |
|
| 116 |
<?php |
| 117 |
$element_content = ob_get_clean(); |
| 118 |
TemplateHelpers::wrap_element_content( $element_content, $element, $wrapper_style ); |
| 119 |
|