/
home
/
techb158
/
balacoffee.com
/
wp-content
/
plugins
/
woocommerce
/
src
/
Blocks
/
BlockTypes
/
/home/techb158/balacoffee.com/wp-content/plugins/woocommerce/src/Blocks/BlockTypes
mkdir
upload
Name
Size
Mode
Actions
Accordion/
-
0755
rm
AddToCartWithOptions/
-
0755
rm
OrderConfirmation/
-
0755
rm
ProductCollection/
-
0755
rm
Reviews/
-
0755
rm
AbstractBlock.php
15979
0644
edit
dl
rm
AbstractDynamicBlock.php
1892
0644
edit
dl
rm
AbstractInnerBlock.php
1785
0644
edit
dl
rm
AbstractProductGrid.php
22667
0644
edit
dl
rm
ActiveFilters.php
226
0644
edit
dl
rm
AddToCartForm.php
9507
0644
edit
dl
rm
AllProducts.php
2040
0644
edit
dl
rm
AllReviews.php
1317
0644
edit
dl
rm
AtomicBlock.php
910
0644
edit
dl
rm
AttributeFilter.php
1536
0644
edit
dl
rm
Breadcrumbs.php
2761
0644
edit
dl
rm
Cart.php
13380
0644
edit
dl
rm
CartAcceptedPaymentMethodsBlock.php
288
0644
edit
dl
rm
CartCrossSellsBlock.php
251
0644
edit
dl
rm
CartCrossSellsProductsBlock.php
276
0644
edit
dl
rm
CartExpressPaymentBlock.php
507
0644
edit
dl
rm
CartItemsBlock.php
235
0644
edit
dl
rm
CartLineItemsBlock.php
248
0644
edit
dl
rm
CartLink.php
1588
0644
edit
dl
rm
CartOrderSummaryBlock.php
2736
0644
edit
dl
rm
CartOrderSummaryCouponFormBlock.php
289
0644
edit
dl
rm
CartOrderSummaryDiscountBlock.php
282
0644
edit
dl
rm
CartOrderSummaryFeeBlock.php
267
0644
edit
dl
rm
CartOrderSummaryHeadingBlock.php
279
0644
edit
dl
rm
CartOrderSummaryShippingBlock.php
282
0644
edit
dl
rm
CartOrderSummarySubtotalBlock.php
282
0644
edit
dl
rm
CartOrderSummaryTaxesBlock.php
273
0644
edit
dl
rm
CartOrderSummaryTotalsBlock.php
276
0644
edit
dl
rm
CartTotalsBlock.php
238
0644
edit
dl
rm
CatalogSorting.php
1518
0644
edit
dl
rm
CategoryDescription.php
1743
0644
edit
dl
rm
CategoryTitle.php
2412
0644
edit
dl
rm
Checkout.php
27330
0644
edit
dl
rm
CheckoutActionsBlock.php
1003
0644
edit
dl
rm
CheckoutAdditionalInformationBlock.php
296
0644
edit
dl
rm
CheckoutBillingAddressBlock.php
275
0644
edit
dl
rm
CheckoutContactInformationBlock.php
287
0644
edit
dl
rm
CheckoutExpressPaymentBlock.php
4232
0644
edit
dl
rm
CheckoutFieldsBlock.php
250
0644
edit
dl
rm
CheckoutOrderNoteBlock.php
260
0644
edit
dl
rm
CheckoutOrderSummaryBlock.php
2807
0644
edit
dl
rm
CheckoutOrderSummaryCartItemsBlock.php
298
0644
edit
dl
rm
CheckoutOrderSummaryCouponFormBlock.php
301
0644
edit
dl
rm
CheckoutOrderSummaryDiscountBlock.php
294
0644
edit
dl
rm
CheckoutOrderSummaryFeeBlock.php
279
0644
edit
dl
rm
CheckoutOrderSummaryShippingBlock.php
294
0644
edit
dl
rm
CheckoutOrderSummarySubtotalBlock.php
294
0644
edit
dl
rm
CheckoutOrderSummaryTaxesBlock.php
285
0644
edit
dl
rm
CheckoutOrderSummaryTotalsBlock.php
288
0644
edit
dl
rm
CheckoutPaymentBlock.php
253
0644
edit
dl
rm
CheckoutPickupOptionsBlock.php
272
0644
edit
dl
rm
CheckoutShippingAddressBlock.php
278
0644
edit
dl
rm
CheckoutShippingMethodBlock.php
275
0644
edit
dl
rm
CheckoutShippingMethodsBlock.php
278
0644
edit
dl
rm
CheckoutTermsBlock.php
247
0644
edit
dl
rm
CheckoutTotalsBlock.php
250
0644
edit
dl
rm
ClassicShortcode.php
3105
0644
edit
dl
rm
ClassicTemplate.php
12923
0644
edit
dl
rm
ComingSoon.php
3670
0644
edit
dl
rm
CouponCode.php
8163
0644
edit
dl
rm
CustomerAccount.php
14784
0644
edit
dl
rm
EmailContent.php
3311
0644
edit
dl
rm
EmptyCartBlock.php
235
0644
edit
dl
rm
EmptyMiniCartContentsBlock.php
1834
0644
edit
dl
rm
EnableBlockJsonAssetsTrait.php
775
0644
edit
dl
rm
FeaturedCategory.php
2781
0644
edit
dl
rm
FeaturedItem.php
14212
0644
edit
dl
rm
FeaturedProduct.php
3406
0644
edit
dl
rm
FilledCartBlock.php
238
0644
edit
dl
rm
FilledMiniCartContentsBlock.php
3530
0644
edit
dl
rm
FilterWrapper.php
376
0644
edit
dl
rm
HandpickedProducts.php
1936
0644
edit
dl
rm
MiniCart.php
35909
0644
edit
dl
rm
MiniCartCartButtonBlock.php
2296
0644
edit
dl
rm
MiniCartCheckoutButtonBlock.php
2016
0644
edit
dl
rm
MiniCartContents.php
6780
0644
edit
dl
rm
MiniCartFooterBlock.php
5762
0644
edit
dl
rm
MiniCartItemsBlock.php
1548
0644
edit
dl
rm
MiniCartProductsTableBlock.php
13104
0644
edit
dl
rm
MiniCartShoppingButtonBlock.php
2073
0644
edit
dl
rm
MiniCartTitleBlock.php
1534
0644
edit
dl
rm
MiniCartTitleItemsCounterBlock.php
2331
0644
edit
dl
rm
MiniCartTitleLabelBlock.php
1587
0644
edit
dl
rm
NextPreviousButtons.php
3438
0644
edit
dl
rm
PageContentWrapper.php
705
0644
edit
dl
rm
PaymentMethodIcons.php
6319
0644
edit
dl
rm
PriceFilter.php
1275
0644
edit
dl
rm
ProceedToCheckoutBlock.php
783
0644
edit
dl
rm
ProductAverageRating.php
2130
0644
edit
dl
rm
ProductBestSellers.php
444
0644
edit
dl
rm
ProductButton.php
12765
0644
edit
dl
rm
ProductCategories.php
13059
0644
edit
dl
rm
ProductCategory.php
733
0644
edit
dl
rm
ProductDescription.php
2541
0644
edit
dl
rm
ProductDetails.php
16419
0644
edit
dl
rm
ProductFilterActive.php
2567
0644
edit
dl
rm
ProductFilterAttribute.php
13041
0644
edit
dl
rm
ProductFilterCheckboxList.php
5782
0644
edit
dl
rm
ProductFilterChips.php
4801
0644
edit
dl
rm
ProductFilterClearButton.php
1488
0644
edit
dl
rm
ProductFilterPrice.php
7135
0644
edit
dl
rm
ProductFilterPriceSlider.php
5485
0644
edit
dl
rm
ProductFilterRating.php
7270
0644
edit
dl
rm
ProductFilterRemovableChips.php
3879
0644
edit
dl
rm
ProductFilters.php
10169
0644
edit
dl
rm
ProductFilterStatus.php
6782
0644
edit
dl
rm
ProductFilterTaxonomy.php
18911
0644
edit
dl
rm
ProductGallery.php
6645
0644
edit
dl
rm
ProductGalleryLargeImage.php
8189
0644
edit
dl
rm
ProductGalleryThumbnails.php
4278
0644
edit
dl
rm
ProductImage.php
8973
0644
edit
dl
rm
ProductImageGallery.php
3638
0644
edit
dl
rm
ProductMeta.php
1009
0644
edit
dl
rm
ProductNew.php
448
0644
edit
dl
rm
ProductOnSale.php
761
0644
edit
dl
rm
ProductPrice.php
4836
0644
edit
dl
rm
ProductQuery.php
28470
0644
edit
dl
rm
ProductRating.php
6240
0644
edit
dl
rm
ProductRatingCounter.php
5593
0644
edit
dl
rm
ProductRatingStars.php
3855
0644
edit
dl
rm
ProductResultsCount.php
1812
0644
edit
dl
rm
ProductSaleBadge.php
2753
0644
edit
dl
rm
ProductsByAttribute.php
2104
0644
edit
dl
rm
ProductSearch.php
3569
0644
edit
dl
rm
ProductSKU.php
3391
0644
edit
dl
rm
ProductSpecifications.php
5817
0644
edit
dl
rm
ProductStockIndicator.php
6104
0644
edit
dl
rm
ProductSummary.php
7512
0644
edit
dl
rm
ProductTag.php
2284
0644
edit
dl
rm
ProductTemplate.php
5928
0644
edit
dl
rm
ProductTitle.php
619
0644
edit
dl
rm
ProductTopRated.php
424
0644
edit
dl
rm
RatingFilter.php
704
0644
edit
dl
rm
RelatedProducts.php
5289
0644
edit
dl
rm
ReviewsByCategory.php
1339
0644
edit
dl
rm
ReviewsByProduct.php
1336
0644
edit
dl
rm
SingleProduct.php
7316
0644
edit
dl
rm
StockFilter.php
1370
0644
edit
dl
rm
StoreNotices.php
1742
0644
edit
dl
rm
Edit:
/home/techb158/balacoffee.com/wp-content/plugins/woocommerce/src/Blocks/BlockTypes/CouponCode.php
(8163B)
<?php declare(strict_types=1); namespace Automattic\WooCommerce\Blocks\BlockTypes; use Automattic\WooCommerce\EmailEditor\Email_Editor_Container; use Automattic\WooCommerce\EmailEditor\Engine\Renderer\ContentRenderer\Rendering_Context; use Automattic\WooCommerce\EmailEditor\Engine\Theme_Controller; use Automattic\WooCommerce\EmailEditor\Integrations\Utils\Styles_Helper; use Automattic\WooCommerce\EmailEditor\Integrations\Utils\Table_Wrapper_Helper; use WP_Block; /** * CouponCode block for displaying coupon codes in emails. * * @since 10.5.0 */ class CouponCode extends AbstractBlock { /** * Block name. * * @var string */ protected $block_name = 'coupon-code'; /** * Default styles for the coupon code element. */ private const DEFAULT_STYLES = array( 'font-size' => '1.2em', 'padding' => '12px 20px', 'display' => 'inline-block', 'border' => '2px dashed #cccccc', 'border-radius' => '4px', 'box-sizing' => 'border-box', 'color' => '#000000', 'background-color' => '#f5f5f5', 'text-align' => 'center', 'font-weight' => 'bold', 'letter-spacing' => '1px', ); /** * Get the editor script handle for this block type. * * @param string|null $key Data to get. Valid keys: "handle", "path", "dependencies". * @return array|string|null */ protected function get_block_type_editor_script( $key = null ) { $script = array( 'handle' => 'wc-' . $this->block_name . '-block', 'path' => $this->asset_api->get_block_asset_build_path( $this->block_name ), 'dependencies' => array( 'wc-blocks' ), ); return null === $key ? $script : ( $script[ $key ] ?? null ); } /** * Get the frontend style handle for this block type. * * @return null */ protected function get_block_type_style() { return null; } /** * Render the coupon code block. * * @param array $attributes Block attributes. * @param string $content Block content. * @param WP_Block|null $block Block instance. * @return string */ protected function render( $attributes, $content, $block ) { $parsed_block = $block instanceof WP_Block ? $block->parsed_block : array(); $attributes = $this->get_block_attributes( $parsed_block, $attributes ); $coupon_code = $this->get_coupon_code( $attributes ); if ( empty( $coupon_code ) ) { return ''; } $rendering_context = $this->get_rendering_context( $block ); $coupon_html = $this->build_coupon_html( $coupon_code, $attributes, $rendering_context ); return $this->wrap_for_email( $coupon_html, $parsed_block ); } /** * Get block attributes from parsed block or fallback. * * @param array $parsed_block Parsed block data. * @param array $fallback Fallback attributes. * @return array */ private function get_block_attributes( array $parsed_block, $fallback ): array { $attributes = $parsed_block['attrs'] ?? $fallback ?? array(); return is_array( $attributes ) ? $attributes : array(); } /** * Extract coupon code from attributes. * * @param array $attributes Block attributes. * @return string */ private function get_coupon_code( array $attributes ): string { $coupon_code = $attributes['couponCode'] ?? ''; return is_string( $coupon_code ) ? $coupon_code : ''; } /** * Get rendering context from block or create a new one. * * @param WP_Block|null $block Block instance. * @return Rendering_Context */ private function get_rendering_context( $block ): Rendering_Context { if ( $block instanceof WP_Block && isset( $block->context['renderingContext'] ) && $block->context['renderingContext'] instanceof Rendering_Context ) { return $block->context['renderingContext']; } $theme_controller = Email_Editor_Container::container()->get( Theme_Controller::class ); return new Rendering_Context( $theme_controller->get_theme(), array() ); } /** * Build the coupon code HTML element with styles. * * @param string $coupon_code Coupon code text. * @param array $attributes Block attributes. * @param Rendering_Context $rendering_context Rendering context for style resolution. * @return string */ private function build_coupon_html( string $coupon_code, array $attributes, Rendering_Context $rendering_context ): string { $block_styles = Styles_Helper::get_block_styles( $attributes, $rendering_context, array( 'border', 'background-color', 'color', 'typography', 'spacing' ) ); $declarations = $block_styles['declarations'] ?? array(); if ( ! $this->has_valid_background_color( $declarations ) ) { $declarations['background-color'] = $this->resolve_background_color( $attributes, $rendering_context ); } $merged_styles = array_merge( self::DEFAULT_STYLES, $declarations ); $css = \WP_Style_Engine::compile_css( $merged_styles, '' ); return sprintf( '<span class="woocommerce-coupon-code" style="%s">%s</span>', esc_attr( $css ), esc_html( $coupon_code ) ); } /** * Check if declarations contain a valid CSS background color. * * @param array $declarations CSS declarations. * @return bool */ private function has_valid_background_color( array $declarations ): bool { if ( empty( $declarations['background-color'] ) ) { return false; } return $this->is_css_color_value( $declarations['background-color'] ); } /** * Resolve background color from attributes, translating color slugs if needed. * * @param array $attributes Block attributes. * @param Rendering_Context $rendering_context Rendering context. * @return string Resolved color value or default. */ private function resolve_background_color( array $attributes, Rendering_Context $rendering_context ): string { if ( empty( $attributes['backgroundColor'] ) ) { return self::DEFAULT_STYLES['background-color']; } $color_slug = $attributes['backgroundColor']; // Try to get color from normalized styles (handles slug translation). $normalized = Styles_Helper::get_normalized_block_styles( $attributes, $rendering_context ); $color = $normalized['color']['background'] ?? ''; if ( $this->is_css_color_value( $color ) ) { return $color; } // Fallback: try direct translation if normalization returned the slug unchanged. $translated = $rendering_context->translate_slug_to_color( $color_slug ); if ( $this->is_css_color_value( $translated ) ) { return $translated; } return self::DEFAULT_STYLES['background-color']; } /** * Check if a string is a valid CSS color value (hex, rgb, or hsl). * * @param string $value Value to check. * @return bool */ private function is_css_color_value( string $value ): bool { return str_starts_with( $value, '#' ) || str_starts_with( $value, 'rgb' ) || str_starts_with( $value, 'hsl' ); } /** * Wrap coupon HTML in an email-compatible table structure. * * @param string $coupon_html Coupon HTML content. * @param array $parsed_block Parsed block data. * @return string */ private function wrap_for_email( string $coupon_html, array $parsed_block ): string { $align = $this->get_alignment( $parsed_block ); $table_attrs = array( 'style' => \WP_Style_Engine::compile_css( array( 'border-collapse' => 'collapse', 'width' => '100%', ), '' ), 'width' => '100%', ); $cell_attrs = array( 'class' => 'email-coupon-code-cell', 'style' => \WP_Style_Engine::compile_css( array( 'padding' => '10px 0', 'text-align' => $align, ), '' ), 'align' => $align, ); return Table_Wrapper_Helper::render_table_wrapper( $coupon_html, $table_attrs, $cell_attrs ); } /** * Get alignment from parsed block attributes. * * @param array $parsed_block Parsed block data. * @return string */ private function get_alignment( array $parsed_block ): string { $allowed = array( 'left', 'center', 'right' ); $align = $parsed_block['attrs']['align'] ?? 'center'; if ( ! is_string( $align ) || ! in_array( $align, $allowed, true ) ) { return 'center'; } return $align; } }
Save
cmd:
run