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 / SelectedPriceAdHocAmount.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
SelectedPriceAdHocAmount.php
281 lines
1 <?php
2
3 namespace SureCart\Integrations\Elementor\Widgets;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit; // Exit if accessed directly.
7 }
8
9 use SureCart\Models\Account as AccountModel;
10
11 /**
12 * Selected Price Ad Hoc Amount widget.
13 */
14 class SelectedPriceAdHocAmount extends \Elementor\Widget_Base {
15 /**
16 * Get widget name.
17 *
18 * @return string
19 */
20 public function get_name() {
21 return 'surecart-selected-price-ad-hoc-amount';
22 }
23
24 /**
25 * Get widget title.
26 *
27 * @return string
28 */
29 public function get_title() {
30 return esc_html__( 'Custom Amount', 'surecart' );
31 }
32
33 /**
34 * Get widget icon.
35 *
36 * @return string
37 */
38 public function get_icon() {
39 return 'eicon-pencil';
40 }
41
42 /**
43 * Get style dependencies.
44 */
45 public function get_style_depends() {
46 return array( 'surecart-form-control', 'surecart-input-group' );
47 }
48
49 /**
50 * Get the widget keywords.
51 *
52 * @return array
53 */
54 public function get_keywords() {
55 return array( 'surecart', 'custom', 'amount' );
56 }
57
58 /**
59 * Get the widget categories.
60 *
61 * @return array
62 */
63 public function get_categories() {
64 return array( 'surecart-elementor-elements' );
65 }
66
67 /**
68 * Register the widget content settings.
69 *
70 * @return void
71 */
72 protected function register_content_settings() {
73 $this->start_controls_section(
74 'section_content',
75 [
76 'label' => esc_html__( 'Content', 'surecart' ),
77 ]
78 );
79
80 $this->add_control(
81 'label',
82 [
83 'label' => esc_html__( 'Label', 'surecart' ),
84 'type' => \Elementor\Controls_Manager::TEXT,
85 'placeholder' => esc_html__( 'Enter an amount', 'surecart' ),
86 'default' => esc_html__( 'Enter an amount', 'surecart' ),
87 ]
88 );
89
90 $this->end_controls_section();
91 }
92
93 /**
94 * Register the widget label style settings.
95 *
96 * @return void
97 */
98 protected function register_label_style_settings() {
99 $amount_selector = '{{WRAPPER}} .wp-block-surecart-product-selected-price-ad-hoc-amount';
100
101 $this->start_controls_section(
102 'section_label_style',
103 array(
104 'label' => esc_html__( 'Label', 'surecart' ),
105 'tab' => \Elementor\Controls_Manager::TAB_STYLE,
106 )
107 );
108
109 $this->add_control(
110 'label_text_color',
111 array(
112 'label' => esc_html__( 'Text Color', 'surecart' ),
113 'type' => \Elementor\Controls_Manager::COLOR,
114 'selectors' => [
115 $amount_selector => 'color: {{VALUE}}',
116 $amount_selector . ' .sc-form-label' => 'color: {{VALUE}}',
117 ],
118 )
119 );
120
121 $this->add_group_control(
122 \Elementor\Group_Control_Typography::get_type(),
123 array(
124 'name' => 'label_typography',
125 'label' => esc_html__( 'Typography', 'surecart' ),
126 'selector' => $amount_selector . ' label',
127 )
128 );
129
130 $this->end_controls_section();
131 }
132
133 /**
134 * Register the widget input style settings.
135 *
136 * @return void
137 */
138 protected function register_input_style_settings() {
139 $input_group_selector = '{{WRAPPER}} .wp-block-surecart-product-selected-price-ad-hoc-amount .sc-input-group';
140
141 $this->start_controls_section(
142 'section_amount_style',
143 array(
144 'label' => esc_html__( 'Input', 'surecart' ),
145 'tab' => \Elementor\Controls_Manager::TAB_STYLE,
146 )
147 );
148
149 $this->add_group_control(
150 \Elementor\Group_Control_Typography::get_type(),
151 array(
152 'name' => 'selected_amount_typography',
153 'label' => esc_html__( 'Typography', 'surecart' ),
154 'selector' => $input_group_selector . '>*',
155 )
156 );
157
158 $this->add_responsive_control(
159 'selected_amount_width',
160 array(
161 'label' => esc_html__( 'Width', 'surecart' ),
162 'type' => \Elementor\Controls_Manager::SLIDER,
163 'size_units' => [ 'px', 'em', '%' ],
164 'selectors' => array(
165 $input_group_selector => 'width: {{SIZE}}{{UNIT}};',
166 ),
167 'default' => [
168 'size' => 100,
169 'unit' => '%',
170 ],
171 'range' => [
172 'px' => [
173 'min' => 0,
174 'max' => 1000,
175 ],
176 'em' => [
177 'min' => 0,
178 'step' => 0.1,
179 'max' => 10,
180 ],
181 ],
182 )
183 );
184
185 $this->add_group_control(
186 \Elementor\Group_Control_Border::get_type(),
187 [
188 'name' => 'selected_amount_border',
189 'selector' => $input_group_selector,
190 ]
191 );
192
193 $this->add_responsive_control(
194 'selected_amount_border_radius',
195 [
196 'label' => esc_html__( 'Border Radius', 'surecart' ),
197 'type' => \Elementor\Controls_Manager::DIMENSIONS,
198 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ],
199 'selectors' => [
200 $input_group_selector => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
201 ],
202 ]
203 );
204
205 $this->end_controls_section();
206 }
207
208 /**
209 * Register the widget controls.
210 *
211 * @return void
212 */
213 protected function register_controls() {
214 $this->register_content_settings();
215 $this->register_label_style_settings();
216 $this->register_input_style_settings();
217 }
218
219 /**
220 * Render the widget output on the frontend.
221 *
222 * @return void
223 */
224 protected function render() {
225 $settings = $this->get_settings_for_display();
226
227 if ( \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
228 ?>
229 <div class="wp-block-surecart-product-selected-price-ad-hoc-amount">
230 <label for="sc-product-custom-amount" class="sc-form-label">
231 <?php echo esc_html( $settings['label'] ); ?>
232 </label>
233
234 <div class="sc-input-group">
235 <span class="sc-input-group-text" id="basic-addon1"><?php echo esc_html( strtoupper( ( AccountModel::find() )->currency ?? '$' ) ); ?></span>
236 <input
237 class="sc-form-control"
238 id="sc-product-custom-amount"
239 type="number"
240 step="0.01"
241 />
242 </div>
243 <?php
244 return;
245 }
246
247 ?>
248 <div <?php $this->print_render_attribute_string( 'wrapper' ); ?>>
249 <!-- wp:surecart/product-selected-price-ad-hoc-amount { "label" : "<?php echo esc_attr( $settings['label'] ); ?>"} /-->
250 </div>
251 <?php
252 }
253
254 /**
255 * Render the widget output on the editor.
256 *
257 * @return void
258 */
259 protected function content_template() {
260 $currency = strtoupper( ( AccountModel::find() )->currency ?? '$' );
261 ?>
262 <div class="wp-block-surecart-product-selected-price-ad-hoc-amount">
263 <label for="sc-product-custom-amount" class="sc-form-label">
264 {{{ settings.label }}}
265 </label>
266
267 <div class="sc-input-group">
268 <span class="sc-input-group-text" id="basic-addon1"><?php echo esc_html( $currency ); ?></span>
269
270 <input
271 class="sc-form-control"
272 id="sc-product-custom-amount"
273 type="number"
274 step="0.01"
275 />
276 </div>
277 </div>
278 <?php
279 }
280 }
281