← All changes
|
includes/widgets/Woo_Checkout_Steps/Woo_Checkout_Steps.php
+28
-7
51.1.75
→
51.1.87
View file →
| @@ -58,9 +58,9 @@ | ||
| 58 | 58 | * @return string |
| 59 | 59 | */ |
| 60 | 60 | public function get_icon(): string |
| 61 | 61 | { |
| 62 | - return 'eicon-editor-list-ol'; | |
| 62 | + return 'king-addons-icon king-addons-woo-checkout-steps'; | |
| 63 | 63 | } |
| 64 | 64 | |
| 65 | 65 | /** |
| 66 | 66 | * Widget categories. |
| @@ -171,8 +171,9 @@ | ||
| 171 | 171 | 'prev_text', |
| 172 | 172 | [ |
| 173 | 173 | 'label' => esc_html__('Previous text', 'king-addons'), |
| 174 | 174 | 'type' => Controls_Manager::TEXT, |
| 175 | + 'dynamic' => ['active' => true], | |
| 175 | 176 | 'default' => esc_html__('Previous', 'king-addons'), |
| 176 | 177 | 'condition' => [ |
| 177 | 178 | 'show_nav' => 'yes', |
| 178 | 179 | ], |
| @@ -183,8 +184,9 @@ | ||
| 183 | 184 | 'next_text', |
| 184 | 185 | [ |
| 185 | 186 | 'label' => esc_html__('Next text', 'king-addons'), |
| 186 | 187 | 'type' => Controls_Manager::TEXT, |
| 188 | + 'dynamic' => ['active' => true], | |
| 187 | 189 | 'default' => esc_html__('Next', 'king-addons'), |
| 188 | 190 | 'condition' => [ |
| 189 | 191 | 'show_nav' => 'yes', |
| 190 | 192 | ], |
| @@ -224,8 +226,13 @@ | ||
| 224 | 226 | |
| 225 | 227 | $settings = $this->get_settings_for_display(); |
| 226 | 228 | $steps = $settings['steps'] ?? []; |
| 227 | 229 | if (empty($steps)) { |
| 230 | + if (\Elementor\Plugin::$instance->editor->is_edit_mode()) { | |
| 231 | + echo '<div class="king-addons-woo-builder-notice">' | |
| 232 | + . esc_html__('Add at least one step, each pointing at a section of the checkout.', 'king-addons') | |
| 233 | + . '</div>'; | |
| 234 | + } | |
| 228 | 235 | return; |
| 229 | 236 | } |
| 230 | 237 | |
| 231 | 238 | $scroll = (!empty($settings['scroll_to_section']) && 'yes' === $settings['scroll_to_section']) ? 'yes' : 'no'; |
| @@ -230,20 +237,34 @@ | ||
| 230 | 237 | |
| 231 | 238 | $scroll = (!empty($settings['scroll_to_section']) && 'yes' === $settings['scroll_to_section']) ? 'yes' : 'no'; |
| 232 | 239 | $auto_scroll = (!empty($settings['auto_scroll']) && 'yes' === $settings['auto_scroll']) ? 'yes' : 'no'; |
| 233 | 240 | $show_nav = (!empty($settings['show_nav']) && 'yes' === $settings['show_nav']); |
| 234 | - $prev_text = $settings['prev_text'] ?? esc_html__('Previous', 'king-addons'); | |
| 235 | - $next_text = $settings['next_text'] ?? esc_html__('Next', 'king-addons'); | |
| 241 | + // ?: not ??: a cleared field is '' rather than null, which left the | |
| 242 | + // navigation buttons unlabelled. The values are escaped at output, so | |
| 243 | + // the fallbacks must not be pre-escaped. | |
| 244 | + $prev_text = ($settings['prev_text'] ?? null) ?: __('Previous', 'king-addons'); | |
| 245 | + $next_text = ($settings['next_text'] ?? null) ?: __('Next', 'king-addons'); | |
| 236 | 246 | |
| 237 | 247 | echo '<div class="ka-woo-checkout-steps-wrapper" data-enable-nav="' . ($show_nav ? 'true' : 'false') . '" data-auto-scroll="' . esc_attr($auto_scroll) . '">'; |
| 238 | 248 | echo '<ol class="ka-woo-checkout-steps ka-woo-checkout-steps--pro" role="list" data-scroll-top="' . esc_attr($scroll) . '" data-prev-text="' . esc_attr($prev_text) . '" data-next-text="' . esc_attr($next_text) . '">'; |
| 239 | - foreach ($steps as $index => $step) { | |
| 249 | + $fallback_targets = [ | |
| 250 | + '.woocommerce-billing-fields', | |
| 251 | + '.woocommerce-shipping-fields', | |
| 252 | + '#payment', | |
| 253 | + '.woocommerce-checkout-review-order-table', | |
| 254 | + ]; | |
| 255 | + $step_i = 0; | |
| 256 | + foreach ($steps as $step) { | |
| 240 | 257 | $label = $step['label'] ?? ''; |
| 241 | - $target = $step['target'] ?? ''; | |
| 242 | - echo '<li class="ka-woo-checkout-step" data-step="' . esc_attr((string) ($index + 1)) . '" data-target="' . esc_attr($target) . '">'; | |
| 243 | - echo '<span class="ka-woo-checkout-step__number">' . esc_html((string) ($index + 1)) . '</span>'; | |
| 258 | + $target = trim((string) ($step['target'] ?? '')); | |
| 259 | + if ($target === '') { | |
| 260 | + $target = $fallback_targets[$step_i] ?? ''; | |
| 261 | + } | |
| 262 | + echo '<li class="ka-woo-checkout-step" data-step="' . esc_attr((string) ($step_i + 1)) . '" data-target="' . esc_attr($target) . '">'; | |
| 263 | + echo '<span class="ka-woo-checkout-step__number">' . esc_html((string) ($step_i + 1)) . '</span>'; | |
| 244 | 264 | echo '<span class="ka-woo-checkout-step__label">' . esc_html($label) . '</span>'; |
| 245 | 265 | echo '</li>'; |
| 266 | + $step_i++; | |
| 246 | 267 | } |
| 247 | 268 | echo '</ol>'; |
| 248 | 269 | if ($show_nav) { |
| 249 | 270 | echo '<div class="ka-woo-checkout-steps__nav">'; |