PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.0
4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Integrations / Bricks / Elements / ProductCard.php
surecart / app / src / Integrations / Bricks / Elements Last commit date
BuyButton.php 3 months ago CartMenuIcon.php 5 months ago CollectionTag.php 1 year ago CollectionTags.php 1 year ago Media.php 1 year ago PriceChoiceTemplate.php 1 year ago PriceChooser.php 4 months ago PriceData.php 1 year ago Product.php 4 months ago ProductCard.php 10 months ago ProductContent.php 10 months ago ProductData.php 1 year ago ProductLineItemNote.php 10 months ago ProductQuickAddButton.php 10 months ago ProductReviewAverageRatingStars.php 4 months ago ProductReviewAverageRatingValue.php 4 months ago ProductReviewBreakdown.php 4 months ago ProductReviewContent.php 4 months ago ProductReviewList.php 2 months ago ProductReviewRating.php 4 months ago ProductReviewTotalRating.php 4 months ago ProductReviews.php 4 months ago Quantity.php 10 months ago SaleBadge.php 1 year ago SelectedPriceAdHocAmount.php 1 year ago VariantPill.php 6 months ago VariantPills.php 1 year ago
ProductCard.php
258 lines
1 <?php
2
3 namespace SureCart\Integrations\Bricks\Elements;
4
5 use SureCart\Integrations\Bricks\Concerns\ConvertsBlocks;
6
7 if ( ! defined( 'ABSPATH' ) ) {
8 exit; // Exit if accessed directly.
9 }
10
11 /**
12 * Product element.
13 */
14 class ProductCard extends \Bricks\Element {
15 use ConvertsBlocks; // we have to use a trait since we can't extend the bricks class.
16
17 /**
18 * Element category.
19 *
20 * @var string
21 */
22 public $category = 'SureCart Layout';
23
24 /**
25 * Element name.
26 *
27 * @var string
28 */
29 public $name = 'surecart-product-card';
30
31 /**
32 * Element block name.
33 *
34 * @var string
35 */
36 public $block_name = 'surecart/product-page';
37
38 /**
39 * Element icon.
40 *
41 * @var string
42 */
43 public $icon = 'ion-md-list-box';
44
45 /**
46 * This is nestable.
47 *
48 * @var bool
49 */
50 public $nestable = true;
51
52 /**
53 * Get element label.
54 *
55 * @return string
56 */
57 public function get_label() {
58 return esc_html__( 'Product Card', 'surecart' );
59 }
60
61 /**
62 * Set controls.
63 *
64 * @return void
65 */
66 public function set_controls() {
67 $this->controls['linkToPost'] = [
68 'tab' => 'content',
69 'label' => esc_html__( 'Link to product', 'surecart' ),
70 'type' => 'checkbox',
71 'default' => true,
72 ];
73 }
74
75 /**
76 * Get nestable children.
77 *
78 * @return array
79 */
80 public function get_nestable_children() {
81 return [
82 [
83 'name' => 'block',
84 'label' => esc_html__( 'Product Image', 'surecart' ),
85 'settings' => [
86 '_position' => 'relative',
87 '_background' => [
88 'color' => [ 'hex' => '#f3f4f6' ],
89 ],
90 '_margin' => [
91 'bottom' => '10',
92 ],
93 '_overflow' => 'hidden',
94 '_border' => [
95 'radius' => [
96 'top' => '10',
97 'bottom' => '10',
98 'left' => '10',
99 'right' => '10',
100 ],
101 ],
102 ],
103 'children' => [
104 [
105 'name' => 'image',
106 'settings' => [
107 'image' => [
108 'useDynamicData' => '{featured_image}',
109 ],
110 '_aspectRatio' => '3 / 4',
111 '_objectFit' => 'cover',
112 '_objectPosition' => 'center center',
113 ],
114 ],
115 [
116 'name' => 'surecart-product-sale-badge',
117 'settings' => [
118 '_position' => 'absolute',
119 '_top' => '20px',
120 '_right' => '20px',
121 ],
122 ],
123 [
124 'name' => 'div',
125 'settings' => [
126 '_position' => 'absolute',
127 '_top' => '20px',
128 '_left' => '20px',
129 ],
130 'children' => [
131 [
132 'name' => 'surecart-product-quick-add-button',
133 'settings' => [
134 'label' => 'Add',
135 'icon_position' => 'before',
136 'quick_view_button_type' => 'both',
137 'direct_add_to_cart' => true,
138 'width' => '100',
139 '_justifyContent' => 'center',
140 '_border' => [
141 'radius' => [
142 'top' => '4',
143 'right' => '4',
144 'bottom' => '4',
145 'left' => '4',
146 ],
147 ],
148 '_width' => '100%',
149 '_typography' => [
150 'text-wrap' => 'nowrap',
151 'font-size' => '12',
152 'font-weight' => '500',
153 'color' => [
154 'hex' => '#212121',
155 'id' => '7c9a5b',
156 'name' => 'Color #6',
157 ],
158 ],
159 '_padding' => [
160 'top' => '7',
161 'bottom' => '7',
162 ],
163 '_background' => [
164 'color' => [
165 'hex' => '#f5f5f5',
166 'id' => 'ceb2be',
167 'name' => 'Color #1',
168 ],
169 ],
170 'icon' => [
171 'library' => 'fontawesomeSolid',
172 'icon' => 'fas fa-plus',
173 ],
174 ],
175
176 ],
177 ],
178 ],
179 ],
180 ],
181 [
182 'name' => 'post-title',
183 'settings' => [
184 'tag' => 'h2',
185 '_typography' => [
186 'font-size' => '15px',
187 'font-weight' => 'normal',
188 'font-style' => 'normal',
189 'line-height' => '1',
190 ],
191 '_margin' => [
192 'bottom' => '5',
193 ],
194 ],
195 ],
196 array(
197 'name' => 'block',
198 'label' => esc_html__( 'Pricing', 'surecart' ),
199 'settings' => array(
200 '_direction' => 'row',
201 '_columnGap' => '5',
202 '_rowGap' => '5',
203 '_typography' => array(
204 'font-size' => '18px',
205 'font-weight' => '600',
206 'line-height' => '1',
207 ),
208 ),
209 'children' => [
210 [
211 'name' => 'text-basic',
212 'label' => esc_html__( 'Scratch Price', 'surecart' ),
213 'settings' => [
214 'text' => '{sc_product_scratch_price}',
215 '_typography' => [
216 'text-decoration' => 'line-through',
217 ],
218 '_conditions' => [
219 [
220 [
221 'key' => 'dynamic_data',
222 'compare' => 'empty_not',
223 'dynamic_data' => '{sc_product_scratch_price}',
224 ],
225 ],
226 ],
227 ],
228 ],
229 [
230 'name' => 'text-basic',
231 'label' => esc_html__( 'Price', 'surecart' ),
232 'settings' => [
233 'text' => '{sc_product_price}',
234 ],
235 ],
236 ],
237 ),
238 ];
239 }
240
241 /**
242 * Render element.
243 *
244 * @return void
245 */
246 public function render() {
247 if ( ! empty( $this->settings['linkToPost'] ) ) {
248 echo '<a href="' . esc_url( get_permalink() ) . '">'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
249 }
250
251 echo $this->html( [], \Bricks\Frontend::render_children( $this ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
252
253 if ( ! empty( $this->settings['linkToPost'] ) ) {
254 echo '</a>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
255 }
256 }
257 }
258