PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.14.0
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.14.0
2.14.0 2.13.0 2.13.1 2.12.0 2.11.1 2.11.0 2.10.0 2.9.0 2.7.4 2.7.5 2.7.6 2.7.7 2.8.0 2.8.1 2.9.1 trunk 1.0 1.0-beta1 1.0-beta2 1.0-beta3 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 All 81 releases
ablocks / includes / blocks / storeengine-funnel-offer / block.php

block.php in aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder 2.14.0, at includes/blocks/storeengine-funnel-offer/block.php

272 lines 13.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ABlocks\Blocks\StoreengineFunnelOffer;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit;
7 }
8
9 use ABlocks\Classes\BlockBaseAbstract;
10 use ABlocks\Classes\CssGenerator;
11 use ABlocks\Helper;
12 use ABlocks\Controls\Typography;
13 use ABlocks\Controls\Background;
14 use ABlocks\Controls\Border;
15 use ABlocks\Controls\Dimensions;
16 use ABlocks\Controls\Range;
17 use ABlocks\Classes\CssGeneratorV2;
18 use ABlocks\Controls\Color;
19
20 class Block extends BlockBaseAbstract {
21 protected $block_name = 'storeengine-funnel-offer';
22
23 public function build_css_v1( $attributes ) {
24 $css_generator = new CssGenerator( $attributes );
25 return $css_generator->generate_css();
26 }
27
28 public function build_css_v2( $attributes ) {
29 $css_generator = new CssGenerator( $attributes, $this->block_name );
30
31 // error_log(print_r($attributes));
32
33 $css_generator->add_class_styles(
34 '{{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-funnel-offer__title',
35 $this->get_order_details_css( $attributes ),
36 $this->get_order_details_css( $attributes, 'Tablet' ),
37 $this->get_order_details_css( $attributes, 'Mobile' ),
38 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_order_details_css( $attributes, $device ); } )
39 );
40
41 $css_generator->add_class_styles(
42 '{{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-funnel-offer__title:hover',
43 $this->get_order_details_hover_css( $attributes ),
44 $this->get_order_details_hover_css( $attributes, 'Tablet' ),
45 $this->get_order_details_hover_css( $attributes, 'Mobile' ),
46 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_order_details_hover_css( $attributes, $device ); } )
47 );
48 $css_generator->add_class_styles(
49 '{{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-order-item__content img',
50 $this->get_order_details_image_css( $attributes ),
51 $this->get_order_details_image_css( $attributes, 'Tablet' ),
52 $this->get_order_details_image_css( $attributes, 'Mobile' ),
53 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_order_details_image_css( $attributes, $device ); } )
54 );
55 $css_generator->add_class_styles(
56 '{{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-order-item__content .storeengine-order-item__title h6 a',
57 $this->get_order_details_product_title_css( $attributes ),
58 $this->get_order_details_product_title_css( $attributes, 'Tablet' ),
59 $this->get_order_details_product_title_css( $attributes, 'Mobile' ),
60 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_order_details_product_title_css( $attributes, $device ); } )
61 );
62 $css_generator->add_class_styles(
63 '{{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-order-item__content .storeengine-order-item__title h6 a:hover',
64 $this->get_order_details_product_title_hover_css( $attributes ),
65 $this->get_order_details_product_title_hover_css( $attributes, 'Tablet' ),
66 $this->get_order_details_product_title_hover_css( $attributes, 'Mobile' ),
67 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_order_details_product_title_hover_css( $attributes, $device ); } )
68 );
69
70 $css_generator->add_class_styles(
71 '{{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-funnel-offer__price',
72 $this->get_order_details_price_css( $attributes ),
73 $this->get_order_details_price_css( $attributes, 'Tablet' ),
74 $this->get_order_details_price_css( $attributes, 'Mobile' ),
75 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_order_details_price_css( $attributes, $device ); } )
76 );
77 $css_generator->add_class_styles(
78 '{{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-funnel-offer__price:hover',
79 $this->get_order_details_price_hover_css( $attributes ),
80 $this->get_order_details_price_hover_css( $attributes, 'Tablet' ),
81 $this->get_order_details_price_hover_css( $attributes, 'Mobile' ),
82 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_order_details_price_hover_css( $attributes, $device ); } )
83 );
84 $css_generator->add_class_styles(
85 '{{WRAPPER}} .storeengine-order-summary-shortcode .storeengine-order-summary__item .storeengine-order-item-entry-right .storeengine-order-item__price .storeengine-order-item__price-regular',
86 $this->get_order_details_regular_price_css( $attributes ),
87 $this->get_order_details_regular_price_css( $attributes, 'Tablet' ),
88 $this->get_order_details_regular_price_css( $attributes, 'Mobile' ),
89 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_order_details_regular_price_css( $attributes, $device ); } )
90 );
91 $css_generator->add_class_styles(
92 '{{WRAPPER}} .storeengine-order-summary-shortcode .storeengine-order-summary__item .storeengine-order-item-entry-right .storeengine-order-item__price .storeengine-order-item__price-regular:hover',
93 $this->get_order_details_price_regular_hover_css( $attributes ),
94 $this->get_order_details_price_regular_hover_css( $attributes, 'Tablet' ),
95 $this->get_order_details_price_regular_hover_css( $attributes, 'Mobile' ),
96 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_order_details_price_regular_hover_css( $attributes, $device ); } )
97 );
98 $css_generator->add_class_styles(
99 '{{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-order-item__content .storeengine-order-item__title p,
100 {{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-order-item__content .storeengine-order-item__title p span',
101 $this->get_order_details_quality_css( $attributes ),
102 $this->get_order_details_quality_css( $attributes, 'Tablet' ),
103 $this->get_order_details_quality_css( $attributes, 'Mobile' ),
104 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_order_details_quality_css( $attributes, $device ); } )
105 );
106 $css_generator->add_class_styles(
107 '{{WRAPPER}} .storeengine-order-summary-shortcode .storeengine-order-summary__item .storeengine-order-item-entry-right .storeengine-order-item__qty:hover,
108 {{WRAPPER}} .storeengine-order-summary-shortcode .storeengine-order-summary__item .storeengine-order-item-entry-right .storeengine-order-item__qty span:hover',
109 $this->get_order_details_quality_hover_css( $attributes ),
110 $this->get_order_details_quality_hover_css( $attributes, 'Tablet' ),
111 $this->get_order_details_quality_hover_css( $attributes, 'Mobile' ),
112 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_order_details_quality_hover_css( $attributes, $device ); } )
113 );
114 $css_generator->add_class_styles(
115 '{{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-funnel-offer__desc,
116 {{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-funnel-offer__desc p',
117 $this->get_table_text_css( $attributes ),
118 $this->get_table_text_css( $attributes, 'Tablet' ),
119 $this->get_table_text_css( $attributes, 'Mobile' ),
120 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_table_text_css( $attributes, $device ); } )
121 );
122 $css_generator->add_class_styles(
123 '{{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-funnel-offer__desc:hover,
124 {{WRAPPER}} .storeengine-funnel-offer-shortcode .storeengine-funnel-offer__desc p:hover',
125 $this->get_table_text_hover_css( $attributes ),
126 $this->get_table_text_hover_css( $attributes, 'Tablet' ),
127 $this->get_table_text_hover_css( $attributes, 'Mobile' ),
128 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_table_text_hover_css( $attributes, $device ); } )
129 );
130
131 return $css_generator->generate_css();
132 }
133
134 public function build_css( $attributes ) {
135 if ( isset( $attributes['blockVersion'] ) && (int) $attributes['blockVersion'] === 2 ) {
136 return $this->build_css_v2( $attributes );
137 }
138 return $this->build_css_v1( $attributes );
139 }
140
141 public function get_order_details_css( $attributes, $device = '' ) {
142 $title_typography_css = ! empty( $attributes['titleTypography'] ) ? $attributes['titleTypography'] : [];
143 $typographyGlobal = ( isset( $attributes['titleTypographyGlobal'] ) ? $attributes['titleTypographyGlobal'] : '' );
144
145 return array_merge(
146 [ 'color' => Color::get_css( isset( $attributes['titleColor'] ) ? $attributes['titleColor'] : '' ) ],
147 Typography::get_css( $title_typography_css, '', $device, $typographyGlobal )
148 );
149 }
150
151 public function get_order_details_hover_css( $attributes, $device = '' ) {
152 return array_merge(
153 [ 'color' => Color::get_css( isset( $attributes['titleColorH'] ) ? $attributes['titleColorH'] : '' ) ],
154 );
155 }
156
157 public function get_order_details_image_css( $attributes, $device = '' ) {
158 return array_merge(
159 Range::get_css([
160 'attributeValue' => $attributes['imageWidth'],
161 'attribute_object_key' => 'value',
162 'isResponsive' => true,
163 'defaultValue' => 100,
164 'hasUnit' => true,
165 'unitDefaultValue' => 'px',
166 'property' => 'width',
167 'device' => $device,
168 ]),
169 Range::get_css([
170 'attributeValue' => $attributes['imageHeight'],
171 'attribute_object_key' => 'value',
172 'isResponsive' => true,
173 'defaultValue' => 100,
174 'hasUnit' => true,
175 'unitDefaultValue' => 'px',
176 'property' => 'height',
177 'device' => $device,
178 ]),
179 );
180
181 }
182
183 public function get_order_details_product_title_css( $attributes, $device = '' ) {
184 $title_typography_css = ! empty( $attributes['ProductTitleTypography'] ) ? $attributes['ProductTitleTypography'] : [];
185 $typographyGlobal = ( isset( $attributes['ProductTitleTypographyGlobal'] ) ? $attributes['ProductTitleTypographyGlobal'] : '' );
186
187 return array_merge(
188 [ 'color' => Color::get_css( isset( $attributes['productTitleColor'] ) ? $attributes['productTitleColor'] : '' ) ],
189 Typography::get_css( $title_typography_css, '', $device, $typographyGlobal )
190 );
191 }
192
193 public function get_order_details_product_title_hover_css( $attributes, $device = '' ) {
194 return [ 'color' => Color::get_css( isset( $attributes['productTitleColorH'] ) ? $attributes['productTitleColorH'] : '' ) ];
195 }
196
197 public function get_order_details_price_css( $attributes, $device = '' ) {
198 $typography_value = isset( $attributes['discountPriceTypography'] ) ? $attributes['discountPriceTypography'] : [];
199 $typographyGlobal = ( isset( $attributes['discountPriceTypographyGlobal'] ) ? $attributes['discountPriceTypographyGlobal'] : '' );
200 return array_merge(
201 [ 'color' => Color::get_css( isset( $attributes['discountPriceColor'] ) ? $attributes['discountPriceColor'] : '' ) ],
202 Typography::get_css( $typography_value, '', $device, $typographyGlobal )
203 );
204 }
205
206 public function get_order_details_price_hover_css( $attributes, $device = '' ) {
207 return [ 'color' => Color::get_css( isset( $attributes['discountPriceColorH'] ) ? $attributes['discountPriceColorH'] : '' ) ];
208
209 }
210
211 public function get_order_details_regular_price_css( $attributes, $device = '' ) {
212 $typography_value = isset( $attributes['regularPriceTypography'] ) ? $attributes['regularPriceTypography'] : [];
213 $typographyGlobal = ( isset( $attributes['regularPriceTypographyGlobal'] ) ? $attributes['regularPriceTypographyGlobal'] : '' );
214
215 return array_merge(
216 [ 'color' => Color::get_css( isset( $attributes['regularPriceColor'] ) ? $attributes['regularPriceColor'] : '' ) ],
217 Typography::get_css( $typography_value, '', $device, $typographyGlobal )
218 );
219 }
220
221 public function get_order_details_price_regular_hover_css( $attributes, $device = '' ) {
222 return [ 'color' => Color::get_css( isset( $attributes['regularPriceColorH'] ) ? $attributes['regularPriceColorH'] : '' ) ];
223
224 }
225
226 public function get_order_details_quality_css( $attributes, $device = '' ) {
227 $typography_value = isset( $attributes['qualityTypography'] ) ? $attributes['qualityTypography'] : [];
228 $typographyGlobal = ( isset( $attributes['qualityTypographyGlobal'] ) ? $attributes['qualityTypographyGlobal'] : '' );
229
230 return array_merge(
231 [ 'color' => Color::get_css( isset( $attributes['qualityColor'] ) ? $attributes['qualityColor'] : '' ) ],
232 Typography::get_css( $typography_value, '', $device, $typographyGlobal )
233 );
234 }
235
236 public function get_order_details_quality_hover_css( $attributes, $device = '' ) {
237 return [ 'color' => Color::get_css( isset( $attributes['qualityColorH'] ) ? $attributes['qualityColorH'] : '' ) ];
238
239 }
240
241 public function get_table_text_css( $attributes, $device = '' ) {
242 $typography_value = isset( $attributes['tableTextTypography'] ) ? $attributes['tableTextTypography'] : [];
243 $typographyGlobal = ( isset( $attributes['tableTextTypographyGlobal'] ) ? $attributes['tableTextTypographyGlobal'] : '' );
244
245 return array_merge(
246 [ 'color' => Color::get_css( isset( $attributes['tableTextColor'] ) ? $attributes['tableTextColor'] : '' ) ],
247 Typography::get_css( $typography_value, '', $device, $typographyGlobal )
248 );
249 }
250 public function get_table_text_hover_css( $attributes, $device = '' ) {
251
252 return [ 'color' => Color::get_css( isset( $attributes['tableTextColorH'] ) ? $attributes['tableTextColorH'] : '#000' ) ];
253 }
254
255
256 public function render_block_content( $attributes, $content, $block_instance ) {
257 $attr_array = [
258 'title' => Helper::get_attribute_value( $attributes, 'offerTitle' ),
259 'description' => Helper::get_attribute_value( $attributes, 'offerDescription' ),
260 ];
261
262 // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.MissingUnslash
263 if ( isset( $_GET['context'] ) && 'edit' === sanitize_text_field( $_GET['context'] ) ) {
264 $attr_array['dummy'] = true;
265 }
266
267 $shortcode = '[storeengine_funnel_offer ' . Helper::attr_shortcode( $attr_array ) . ']';
268 echo do_shortcode( $shortcode );
269 }
270 }
271
272