PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.3
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 1 year ago CollectionTag.php 1 year ago CollectionTags.php 1 year ago Media.php 1 year ago PriceChoiceTemplate.php 1 year ago PriceChooser.php 1 year ago PriceData.php 1 year ago Product.php 1 year ago ProductCard.php 1 year ago ProductData.php 1 year ago Quantity.php 1 year ago SaleBadge.php 1 year ago SelectedPriceAdHocAmount.php 1 year ago VariantPill.php 1 year ago VariantPills.php 1 year ago
ProductCard.php
202 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 ],
125 [
126 'name' => 'post-title',
127 'settings' => [
128 'tag' => 'h2',
129 '_typography' => [
130 'font-size' => '15px',
131 'font-weight' => 'normal',
132 'font-style' => 'normal',
133 'line-height' => '1',
134 ],
135 '_margin' => [
136 'bottom' => '5',
137 ],
138 ],
139 ],
140 array(
141 'name' => 'block',
142 'label' => esc_html__( 'Pricing', 'surecart' ),
143 'settings' => array(
144 '_direction' => 'row',
145 '_columnGap' => '5',
146 '_rowGap' => '5',
147 '_typography' => array(
148 'font-size' => '18px',
149 'font-weight' => '600',
150 'line-height' => '1',
151 ),
152 ),
153 'children' => [
154 [
155 'name' => 'text-basic',
156 'label' => esc_html__( 'Scratch Price', 'surecart' ),
157 'settings' => [
158 'text' => '{sc_product_scratch_price}',
159 '_typography' => [
160 'text-decoration' => 'line-through',
161 ],
162 '_conditions' => [
163 [
164 [
165 'key' => 'dynamic_data',
166 'compare' => 'empty_not',
167 'dynamic_data' => '{sc_product_scratch_price}',
168 ],
169 ],
170 ],
171 ],
172 ],
173 [
174 'name' => 'text-basic',
175 'label' => esc_html__( 'Price', 'surecart' ),
176 'settings' => [
177 'text' => '{sc_product_price}',
178 ],
179 ],
180 ],
181 ),
182 ];
183 }
184
185 /**
186 * Render element.
187 *
188 * @return void
189 */
190 public function render() {
191 if ( $this->settings['linkToPost'] ) {
192 echo '<a href="' . esc_url( get_permalink() ) . '">'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
193 }
194
195 echo $this->html( [], \Bricks\Frontend::render_children( $this ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
196
197 if ( $this->settings['linkToPost'] ) {
198 echo '</a>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
199 }
200 }
201 }
202