PluginProbe
YayMail – WooCommerce Email Customizer / trunk
YayMail – WooCommerce Email Customizer vtrunk
4.4.4 4.4.3 4.4.2 4.4.1 trunk 1.9.6 2.1.4 2.1.5 3.2.2 3.2.6 3.2.7.1 3.2.8.1 3.2.9 3.3 3.3.1 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4 3.4.1 3.4.2 3.4.3 All 55 releases
yaymail / templates / elements / order-progress.php

order-progress.php in YayMail – WooCommerce Email Customizer trunk, at templates/elements/order-progress.php

105 lines 3.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 defined( 'ABSPATH' ) || exit;
4
5 use YayMail\Utils\TemplateHelpers;
6
7 if ( empty( $args['element'] ) ) {
8 return;
9 }
10
11 $element = $args['element'];
12 $data = $element['data'];
13 $render_data = isset( $args['render_data'] ) && is_array( $args['render_data'] ) ? $args['render_data'] : [];
14
15 $steps = isset( $data['steps'] ) && is_array( $data['steps'] ) ? $data['steps'] : [];
16 if ( empty( $steps ) ) {
17 return;
18 }
19
20 $current_step_index = isset( $data['current_step_index'] ) ? (int) $data['current_step_index'] : 0;
21
22 /**
23 * Filter to resolve the active step index based on WooCommerce order status.
24 *
25 * Return null to keep the manual value from the element settings.
26 *
27 * @param int|null $resolved_step_index Resolved index.
28 * @param WC_Order|null $wc_order WooCommerce order instance (if available).
29 * @param array $element Element data.
30 */
31 $wc_order = isset( $render_data['order'] ) ? $render_data['order'] : null;
32 $resolved_step_index = apply_filters( 'yaymail_order_progress_step_index', null, $wc_order, $element );
33 if ( null !== $resolved_step_index ) {
34 $current_step_index = (int) $resolved_step_index;
35 }
36
37 $current_step_index = max( 0, min( $current_step_index, count( $steps ) - 1 ) );
38
39 $align = 'center';
40
41 $display_style = isset( $data['display_style'] ) ? (string) $data['display_style'] : 'step_marker';
42
43 $wrapper_style = TemplateHelpers::get_style(
44 [
45 'word-break' => 'break-word',
46 'text-align' => $align,
47 'background-color' => $data['background_color'] ?? '#ffffff',
48 'padding' => TemplateHelpers::get_spacing_value( isset( $data['padding'] ) ? $data['padding'] : [] ),
49 ]
50 );
51
52 $table_style = TemplateHelpers::get_style(
53 [
54 'width' => '100%',
55 'table-layout' => 'auto',
56 'border-collapse' => 'collapse',
57 'border-spacing' => 0,
58 'mso-table-lspace' => '0pt',
59 'mso-table-rspace' => '0pt',
60 ]
61 );
62
63 $connector_height = (int) ( $data['connector_height'] ?? 2 );
64 $connector_height = max( 1, min( $connector_height, 10 ) );
65
66 $connector_active_color = TemplateHelpers::replace_color_paths(
67 (string) ( $data['connector_active_color'] ?? '#873eff' )
68 );
69 $connector_inactive_color = TemplateHelpers::replace_color_paths(
70 (string) ( $data['connector_inactive_color'] ?? '#E2E6EE' )
71 );
72
73 $icon_size = (int) ( $data['icon_size'] ?? 18 );
74 $icon_size = max( 10, min( $icon_size, 80 ) );
75
76 $label_font_size = (int) ( $data['label_font_size'] ?? 14 );
77 $label_font_size = max( 8, min( $label_font_size, 24 ) );
78
79 $label_font_family = TemplateHelpers::get_font_family_value(
80 ! empty( $data['font_family'] ) ? $data['font_family'] : YAYMAIL_DEFAULT_FAMILY
81 );
82
83 // Backward compatible fallbacks (older versions used global label colors + per-step label_color override).
84 // Use opinionated defaults close to design: dark text for active, grey for inactive.
85 $legacy_label_active_color = $data['label_active_color'] ?? '#111827';
86 $legacy_label_inactive_color = $data['label_inactive_color'] ?? '#9CA3AF';
87
88 ob_start();
89 ?>
90 <?php
91 switch ( $display_style ) {
92 case 'filled_bar':
93 include __DIR__ . '/order-progress/variants/filled-bar.php';
94 break;
95 case 'step_marker':
96 default:
97 include __DIR__ . '/order-progress/variants/step-marker.php';
98 break;
99 }
100 ?>
101 <?php
102 $element_content = ob_get_clean();
103
104 TemplateHelpers::wrap_element_content( $element_content, $element, $wrapper_style );
105