PluginProbe
Tiered Pricing Table for WooCommerce / 8.1.0
Tiered Pricing Table for WooCommerce v8.1.0
8.1.0 8.0.2 7.1.7 7.1.5 7.1.4 7.1.1 6.5.0 6.4.0 6.1.0 trunk 1.0 1.1 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.2.3 2.3.0 2.3.1 2.3.2 All 92 releases
tier-pricing-table / src / Addons / GlobalTieredPricing / CPT / Form / FormTab.php

FormTab.php in Tiered Pricing Table for WooCommerce 8.1.0, at src/Addons/GlobalTieredPricing/CPT/Form/FormTab.php

298 lines 8.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php namespace TierPricingTable\Addons\GlobalTieredPricing\CPT\Form;
2
3 use TierPricingTable\Addons\GlobalTieredPricing\GlobalPricingRule;
4 use TierPricingTable\Core\ServiceContainerTrait;
5
6 abstract class FormTab {
7
8 use ServiceContainerTrait;
9
10 /**
11 * Form
12 *
13 * @var Form
14 */
15 protected $form;
16
17 public function __construct( Form $form ) {
18 $this->form = $form;
19 }
20
21 abstract public function getId();
22
23 abstract public function getTitle();
24
25 abstract public function getDescription();
26
27 abstract public function getIcon(): string;
28
29 abstract public function render( GlobalPricingRule $pricingRule );
30
31 public function renderRadioOptions( $args = array(), $inline = false ) {
32 ?>
33 <div class="tiered-pricing-form-block">
34 <label for="tpt_tiered_pricing_type">
35 <?php echo esc_html( $args['title'] ); ?>
36 </label>
37 <div style="min-height: 25px">
38 <?php if ( $inline ) : ?>
39
40 <?php foreach ( $args['options'] as $optionId => $optionLabel ) : ?>
41 <span style="margin-right:15px">
42 <label style="margin:0; float:none; font-size: 12px;">
43 <input style="margin-right:3px;"
44 type="radio"
45 name="<?php echo esc_attr( $args['id'] ); ?>"
46 value="<?php echo esc_attr( $optionId ); ?>"
47 <?php checked( $optionId, $args['value'] ); ?>
48 >
49 <?php echo esc_html( $optionLabel ); ?>
50 </label>
51 </span>
52 <?php endforeach; ?>
53
54 <?php else : ?>
55 <ul style="margin:0">
56 <?php foreach ( $args['options'] as $optionId => $optionLabel ) : ?>
57 <li style="margin-bottom: 10px">
58 <label style="margin:0;float:none;font-size: 12px;">
59 <input style="margin-right:3px;"
60 type="radio"
61 name="<?php echo esc_attr( $args['id'] ); ?>"
62 value="<?php echo esc_attr( $optionId ); ?>"
63 <?php checked( $optionId, $args['value'] ); ?>
64 >
65 <?php echo esc_html( $optionLabel ); ?>
66 </label>
67 </li>
68 <?php endforeach; ?>
69 </ul>
70 <?php endif; ?>
71 </div>
72
73 </div>
74 <?php
75 }
76
77 public function renderCheckbox( $args = array() ) {
78
79 $args = wp_parse_args( $args, array(
80 'title' => '',
81 'id' => '',
82 'value' => '',
83 'label' => '',
84 'description' => '',
85 ) );
86
87 ?>
88 <div class="tiered-pricing-form-block">
89 <label for="tpt_tiered_pricing_type">
90 <?php echo esc_html( $args['title'] ); ?>
91 </label>
92 <div style="min-height: 25px">
93 <label style="margin:0; float:none; font-size: 12px;">
94 <input style="margin-right:3px;"
95 type="checkbox"
96 name="<?php echo esc_attr( $args['id'] ); ?>"
97 value="<?php echo esc_attr( $args['value'] ); ?>"
98 <?php checked( $args['value'] ); ?>
99 >
100 <?php echo esc_html( $args['label'] ); ?>
101 </label>
102 </div>
103
104 <?php if ( $args['description'] ) : ?>
105 <p class="description" style="margin:0">
106 <?php echo esc_html( $args['description'] ); ?>
107 </p>
108 <?php endif; ?>
109 </div>
110 <?php
111 }
112
113 public function renderSectionTitle( $sectionTitle, $args = array() ) {
114
115 $args = wp_parse_args( $args, array(
116 'description' => '',
117 'only_for_premium' => false,
118 ) );
119
120 ?>
121
122 <div class="tpt-global-pricing-title">
123 <?php echo esc_attr( $sectionTitle ); ?>
124 <?php
125 if ( $args['description'] ) {
126 echo wc_help_tip( $args['description'] );
127 }
128
129 if ( $args['only_for_premium'] && ! tpt_fs()->can_use_premium_code() ) {
130 ?>
131 <a href="<?php echo esc_attr( tpt_fs_activation_url() ); ?>" target="_blank" style="text-decoration: none; margin-left: 5px;
132 vertical-align: text-top;">
133 <span style="
134 border: 1px solid #d63638;
135 color: #d63638;
136 padding: 3px 8px;
137 border-radius: 3px;
138 letter-spacing: normal;
139 font-weight: 500;
140 font-size: 12px;">
141 <?php esc_html_e( 'Premium feature', 'tier-pricing-table' ); ?>
142 </span>
143 </a>
144 <span>•</span>
145 <a href="<?php echo esc_attr( tpt_fs_activation_url() ); ?>"
146 target="_blank"
147 style="letter-spacing: normal; font-weight: normal; font-size: 13px;">
148 <?php esc_html_e( 'Upgrade plan', 'tier-pricing-table' ); ?>
149 </a>
150 <?php
151 }
152
153 if ( isset( $args['subtitle'] ) ) {
154 ?>
155 <div style="font-size: 12px; color: #666; margin-top: 5px;">
156 <?php echo esc_html( $args['subtitle'] ); ?>
157 </div>
158 <?php
159 }
160 ?>
161 </div>
162 <?php
163 }
164
165 public function renderSelect( $args = array() ) {
166
167 $args = wp_parse_args( $args, array(
168 'title' => '',
169 'id' => '',
170 'value' => '',
171 'options' => array(),
172 'description' => '',
173 'disabled' => false,
174 ) );
175
176 ?>
177 <div class="tiered-pricing-form-block">
178 <label for="<?php echo esc_attr( $args['id'] ); ?>">
179 <?php echo esc_html( $args['title'] ); ?>
180 </label>
181 <div style="min-height: 25px">
182 <select name="<?php echo esc_attr( $args['id'] ); ?>" id="<?php echo esc_attr( $args['id'] ); ?>" <?php disabled( $args['disabled'] ); ?>>
183 <?php foreach ( $args['options'] as $optionValue => $optionLabel ) : ?>
184 <option value="<?php echo esc_attr( $optionValue ); ?>" <?php selected( $args['value'], $optionValue ); ?>>
185 <?php echo esc_html( $optionLabel ); ?>
186 </option>
187 <?php endforeach; ?>
188 </select>
189 </div>
190
191 <?php if ( $args['description'] ) : ?>
192 <p class="description" style="margin:0">
193 <?php echo esc_html( $args['description'] ); ?>
194 </p>
195 <?php endif; ?>
196 </div>
197 <?php
198 }
199
200 public function renderSelect2( $args = array() ) {
201
202 $args = wp_parse_args( $args, array(
203 'id' => '',
204 'search_action' => '',
205 'value' => '',
206 'options' => null,
207 'placeholder' => '',
208 'multiple' => true,
209 'width' => '100%',
210 'description' => '',
211 'desc_tip' => true,
212 'minimum_input_length' => 1,
213 'css_class' => 'wc-product-search',
214 ) );
215
216 ?>
217 <div class="tiered-pricing-form-block">
218 <label for="<?php echo esc_attr( $args['id'] ); ?>">
219 <?php echo esc_html( $args['label'] ); ?>
220 </label>
221
222 <select class="<?php echo esc_attr( $args['css_class'] ); ?>" <?php echo esc_attr( $args['multiple'] ? 'multiple="multiple"' : '' ); ?>
223 style="width: <?php echo esc_attr( $args['width'] ); ?>"
224 id="<?php echo esc_attr( $args['id'] ); ?>"
225 name="<?php echo esc_attr( $args['multiple'] ? $args['id'] . '[]' : $args['id'] ); ?>"
226 data-placeholder="<?php echo esc_attr( $args['placeholder'] ); ?>"
227 <?php if ( $args['search_action'] ) : // preloaded lists (roles) have no search action and filter locally ?>
228 data-action="<?php echo esc_attr( $args['search_action'] ); ?>"
229 data-minimum_input_length="<?php echo esc_attr( $args['minimum_input_length'] ); ?>"
230 <?php endif; ?>
231 >
232 <?php if ( $args['options'] ) : ?>
233
234 <?php foreach ( $args['options'] as $optionId => $label ) : ?>
235 <option
236 <?php selected( in_array( $optionId, $args['value'] ) ); ?>
237 value="<?php echo esc_attr( $optionId ); ?>">
238 <?php echo esc_attr( $label ); ?>
239 </option>
240 <?php endforeach; ?>
241
242 <?php else : ?>
243
244 <?php foreach ( $args['value'] as $optionId => $label ) : ?>
245 <option selected
246 value="<?php echo esc_attr( $optionId ); ?>">
247 <?php echo esc_attr( $label ); ?>
248 </option>
249 <?php endforeach; ?>
250 <?php endif; ?>
251 </select>
252
253 <?php if ( $args['description'] ) : ?>
254 <?php if ( $args['desc_tip'] ) : ?>
255 <?php echo wp_kses_post( wc_help_tip( $args['description'] ) ); ?>
256 <?php elseif ( is_callable( $args['description'] ) ): ?>
257 <?php call_user_func( $args['description'] ); ?>
258 <?php else : ?>
259 <p class="description" style="margin:0">
260 <?php echo esc_html( $args['description'] ); ?>
261 </p>
262 <?php endif; ?>
263 <?php endif; ?>
264 </div>
265 <?php
266 }
267
268 public function renderHint( $hint, $args = array() ) {
269
270 $args = wp_parse_args( $args, array(
271 'only_for_new_rules' => false,
272 'show_icon' => true,
273 'custom_class' => '',
274 ) );
275
276 if ( ! $hint ) {
277 return;
278 }
279
280 if ( $args['only_for_new_rules'] && ! $this->form->isNewRule() ) {
281 return;
282 }
283
284 ?>
285 <div class="tpt-global-pricing-rule-hint <?php echo esc_attr( $args['custom_class'] ); ?>">
286 <?php if ( $args['show_icon'] ) : ?>
287 <div class="tpt-global-pricing-rule-hint__icon">
288 <span class="dashicons dashicons-editor-help"></span>
289 </div>
290 <?php endif; ?>
291 <div class="tpt-global-pricing-rule-hint__content">
292 <?php echo wp_kses_post( $hint ); ?>
293 </div>
294 </div>
295 <?php
296 }
297 }
298