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 / Elementor / Widgets / ProductLineItemNote.php
surecart / app / src / Integrations / Elementor / Widgets Last commit date
AddToCartButton.php 3 months ago CartMenuIcon.php 1 year ago CollectionTags.php 1 year ago Media.php 1 year ago PriceChooser.php 1 year ago Product.php 1 year ago ProductCard.php 1 year ago ProductContent.php 7 months ago ProductLineItemNote.php 10 months ago ProductPricing.php 1 year ago ProductQuickAddButton.php 7 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 1 year ago ReusableFormWidget.php 1 year ago SaleBadge.php 1 year ago SelectedPriceAdHocAmount.php 1 year ago VariantPills.php 6 months ago
ProductLineItemNote.php
373 lines
1 <?php
2
3 namespace SureCart\Integrations\Elementor\Widgets;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit; // Exit if accessed directly.
7 }
8
9 /**
10 * Product Line Item Note widget.
11 */
12 class ProductLineItemNote extends \Elementor\Widget_Base {
13 /**
14 * Get widget name.
15 *
16 * @return string
17 */
18 public function get_name() {
19 return 'surecart-product-line-item-note';
20 }
21
22 /**
23 * Get widget title.
24 *
25 * @return string
26 */
27 public function get_title() {
28 return esc_html__( 'Product Note', 'surecart' );
29 }
30
31 /**
32 * Get widget icon.
33 *
34 * @return string
35 */
36 public function get_icon() {
37 return 'eicon-pencil';
38 }
39
40 /**
41 * Get style dependencies.
42 */
43 public function get_style_depends() {
44 return array( 'surecart-form-control' );
45 }
46
47 /**
48 * Get the widget keywords.
49 *
50 * @return array
51 */
52 public function get_keywords() {
53 return array( 'surecart', 'note', 'comment', 'message', 'product' );
54 }
55
56 /**
57 * Get the widget categories.
58 *
59 * @return array
60 */
61 public function get_categories() {
62 return array( 'surecart-elementor-elements' );
63 }
64
65 /**
66 * Register the widget content settings.
67 *
68 * @return void
69 */
70 protected function register_content_settings() {
71 $this->start_controls_section(
72 'section_content',
73 [
74 'label' => esc_html__( 'Content', 'surecart' ),
75 ]
76 );
77
78 $this->add_control(
79 'label',
80 [
81 'label' => esc_html__( 'Label', 'surecart' ),
82 'type' => \Elementor\Controls_Manager::TEXT,
83 'placeholder' => esc_html__( 'Note', 'surecart' ),
84 'default' => 'Note',
85 ]
86 );
87
88 $this->add_control(
89 'placeholder',
90 [
91 'label' => esc_html__( 'Placeholder', 'surecart' ),
92 'type' => \Elementor\Controls_Manager::TEXT,
93 'placeholder' => esc_html__( 'Add a note (optional)', 'surecart' ),
94 'default' => esc_html__( 'Add a note (optional)', 'surecart' ),
95 ]
96 );
97
98 $this->add_control(
99 'help_text',
100 [
101 'label' => esc_html__( 'Help text', 'surecart' ),
102 'type' => \Elementor\Controls_Manager::TEXT,
103 'placeholder' => esc_html__( 'Enter help text (optional)', 'surecart' ),
104 'description' => esc_html__( 'Optional text that appears below the note field to provide additional guidance.', 'surecart' ),
105 ]
106 );
107
108 $this->end_controls_section();
109 }
110
111 /**
112 * Register the widget label style settings.
113 *
114 * @return void
115 */
116 protected function register_label_style_settings() {
117 $note_selector = '{{WRAPPER}} .wp-block-surecart-product-line-item-note';
118
119 $this->start_controls_section(
120 'section_label_style',
121 array(
122 'label' => esc_html__( 'Label', 'surecart' ),
123 'tab' => \Elementor\Controls_Manager::TAB_STYLE,
124 )
125 );
126
127 $this->add_control(
128 'label_text_color',
129 array(
130 'label' => esc_html__( 'Text color', 'surecart' ),
131 'type' => \Elementor\Controls_Manager::COLOR,
132 'selectors' => [
133 $note_selector => 'color: {{VALUE}}',
134 $note_selector . ' .sc-form-label' => 'color: {{VALUE}}',
135 ],
136 'default' => '#000000',
137 )
138 );
139
140 $this->add_group_control(
141 \Elementor\Group_Control_Typography::get_type(),
142 array(
143 'name' => 'label_typography',
144 'label' => esc_html__( 'Typography', 'surecart' ),
145 'selector' => $note_selector . ' label',
146 'fields_options' => [
147 'typography' => [ 'default' => 'yes' ],
148 'font_size' => [
149 'default' => [
150 'unit' => 'px',
151 'size' => 16,
152 ],
153 ],
154 ],
155 )
156 );
157
158 $this->end_controls_section();
159 }
160
161 /**
162 * Register the widget textarea style settings.
163 *
164 * @return void
165 */
166 protected function register_textarea_style_settings() {
167 $textarea_selector = '{{WRAPPER}} .wp-block-surecart-product-line-item-note .sc-form-control';
168
169 $this->start_controls_section(
170 'section_textarea_style',
171 array(
172 'label' => esc_html__( 'Input field', 'surecart' ),
173 'tab' => \Elementor\Controls_Manager::TAB_STYLE,
174 )
175 );
176
177 $this->add_group_control(
178 \Elementor\Group_Control_Typography::get_type(),
179 array(
180 'name' => 'textarea_typography',
181 'label' => esc_html__( 'Typography', 'surecart' ),
182 'selector' => $textarea_selector,
183 'fields_options' => [
184 'typography' => [ 'default' => 'yes' ],
185 'font_size' => [
186 'default' => [
187 'unit' => 'px',
188 'size' => 14,
189 ],
190 ],
191 ],
192 )
193 );
194
195 $this->add_responsive_control(
196 'textarea_width',
197 array(
198 'label' => esc_html__( 'Width', 'surecart' ),
199 'type' => \Elementor\Controls_Manager::SLIDER,
200 'size_units' => [ 'px', 'em', '%' ],
201 'selectors' => array(
202 $textarea_selector => 'width: {{SIZE}}{{UNIT}};',
203 ),
204 'default' => [
205 'size' => 100,
206 'unit' => '%',
207 ],
208 'range' => [
209 'px' => [
210 'min' => 0,
211 'max' => 1000,
212 ],
213 'em' => [
214 'min' => 0,
215 'step' => 0.1,
216 'max' => 10,
217 ],
218 ],
219 )
220 );
221
222 $this->add_group_control(
223 \Elementor\Group_Control_Border::get_type(),
224 [
225 'name' => 'textarea_border',
226 'selector' => $textarea_selector,
227 ]
228 );
229
230 $this->add_responsive_control(
231 'textarea_border_radius',
232 [
233 'label' => esc_html__( 'Border Radius', 'surecart' ),
234 'type' => \Elementor\Controls_Manager::DIMENSIONS,
235 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ],
236 'selectors' => [
237 $textarea_selector => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
238 ],
239 ]
240 );
241
242 $this->add_responsive_control(
243 'textarea_padding',
244 [
245 'label' => esc_html__( 'Padding', 'surecart' ),
246 'type' => \Elementor\Controls_Manager::DIMENSIONS,
247 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ],
248 'selectors' => [
249 $textarea_selector => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
250 ],
251 ]
252 );
253
254 $this->end_controls_section();
255 }
256
257 /**
258 * Register the widget help text style settings.
259 *
260 * @return void
261 */
262 protected function register_help_text_style_settings() {
263 $help_text_selector = '{{WRAPPER}} .wp-block-surecart-product-line-item-note .sc-help-text';
264
265 $this->start_controls_section(
266 'section_help_text_style',
267 array(
268 'label' => esc_html__( 'Help Text', 'surecart' ),
269 'tab' => \Elementor\Controls_Manager::TAB_STYLE,
270 )
271 );
272
273 $this->add_control(
274 'help_text_color',
275 array(
276 'label' => esc_html__( 'Text Color', 'surecart' ),
277 'type' => \Elementor\Controls_Manager::COLOR,
278 'selectors' => [
279 $help_text_selector => 'color: {{VALUE}}',
280 ],
281 )
282 );
283
284 $this->add_group_control(
285 \Elementor\Group_Control_Typography::get_type(),
286 array(
287 'name' => 'help_text_typography',
288 'label' => esc_html__( 'Typography', 'surecart' ),
289 'selector' => $help_text_selector,
290 'fields_options' => [
291 'typography' => [ 'default' => 'yes' ],
292 'font_size' => [
293 'default' => [
294 'unit' => 'px',
295 'size' => 12,
296 ],
297 ],
298 ],
299 )
300 );
301
302 $this->add_responsive_control(
303 'help_text_margin',
304 [
305 'label' => esc_html__( 'Margin', 'surecart' ),
306 'type' => \Elementor\Controls_Manager::DIMENSIONS,
307 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ],
308 'selectors' => [
309 $help_text_selector => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
310 ],
311 ]
312 );
313
314 $this->end_controls_section();
315 }
316
317 /**
318 * Register the widget controls.
319 *
320 * @return void
321 */
322 protected function register_controls() {
323 $this->register_content_settings();
324 $this->register_label_style_settings();
325 $this->register_textarea_style_settings();
326 $this->register_help_text_style_settings();
327 }
328
329 /**
330 * Render the widget output on the frontend.
331 *
332 * @return void
333 */
334 protected function render() {
335 $settings = $this->get_settings_for_display();
336
337 if ( \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
338 ?>
339 <div class="wp-block-surecart-product-line-item-note">
340 <?php if ( ! empty( $settings['label'] ) ) : ?>
341 <label class="sc-form-label" for="sc_product_note">
342 <?php echo esc_html( $settings['label'] ); ?>
343 </label>
344 <?php endif; ?>
345
346 <textarea
347 class="sc-form-control"
348 name="sc_product_note"
349 id="sc_product_note"
350 placeholder="<?php echo esc_attr( $settings['placeholder'] ?? __( 'Add a note (optional)', 'surecart' ) ); ?>"
351 rows="1"
352 onfocus="this.rows=3"
353 maxlength="485"
354 ></textarea>
355
356 <?php if ( ! empty( $settings['help_text'] ) ) : ?>
357 <div class="sc-help-text">
358 <?php echo esc_html( $settings['help_text'] ); ?>
359 </div>
360 <?php endif; ?>
361 </div>
362 <?php
363 return;
364 }
365
366 ?>
367 <div <?php $this->print_render_attribute_string( 'wrapper' ); ?>>
368 <!-- wp:surecart/product-line-item-note { "label" : "<?php echo esc_attr( $settings['label'] ?? '' ); ?>", "placeholder" : "<?php echo esc_attr( $settings['placeholder'] ?? '' ); ?>", "help_text" : "<?php echo esc_attr( $settings['help_text'] ?? '' ); ?>"} /-->
369 </div>
370 <?php
371 }
372 }
373