PluginProbe ʕ •ᴥ•ʔ
SureForms – Contact Form Builder, AI Forms, Payment Form, Survey & Quiz / 2.12.5
SureForms – Contact Form Builder, AI Forms, Payment Form, Survey & Quiz v2.12.5
2.12.6 2.12.5 2.12.4 2.12.3 2.12.2 2.12.1 2.12.0 2.11.1 2.11.0 2.10.1 2.10.0 2.9.1 2.9.0 2.8.2 2.8.1 2.7.0 2.7.1 2.8.0 trunk 0.0.10 0.0.11 0.0.12 0.0.13 0.0.2 0.0.3 0.0.4 0.0.5 0.0.6 0.0.7 0.0.8 0.0.9 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.1.0 1.1.1 1.1.2 1.10.0 1.10.1 1.11.0 1.12.0 1.12.1 1.12.2 1.12.3 1.13.0 1.13.1 1.13.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.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.5.0 1.5.1 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.8.0 1.9.0 1.9.1 2.0.0 2.0.1 2.0.2 2.1.0 2.1.1 2.2.0 2.2.1 2.2.2 2.3.0 2.4.0 2.5.0 2.5.2 2.6.0
sureforms / modules / gutenberg / dist / blocks / separator / class-spec-separator.php
sureforms / modules / gutenberg / dist / blocks / separator Last commit date
class-spec-separator.php 2 years ago
class-spec-separator.php
461 lines
1 <?php
2 /**
3 * Sureforms - Separator.
4 *
5 * @package Sureforms
6 */
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit; // Exit if accessed directly.
10 }
11
12 if ( ! class_exists( 'Spec_Separator' ) ) {
13
14 /**
15 * Class Spec_Separator.
16 */
17 class Spec_Separator {
18
19 /**
20 * Member Variable
21 *
22 * @var instance
23 */
24 private static $instance;
25
26 /**
27 * Initiator
28 */
29 public static function get_instance() {
30 if ( ! isset( self::$instance ) ) {
31 self::$instance = new self();
32 }
33 return self::$instance;
34 }
35
36 /**
37 * Constructor
38 */
39 public function __construct() {
40
41 // Activation hook.
42 add_action( 'init', [ $this, 'register_blocks' ] );
43 }
44
45 /**
46 * Registers the `core/latest-posts` block on server.
47 *
48 * @since 0.0.1
49 */
50 public function register_blocks() {
51
52 // Check if the register function exists.
53 if ( ! function_exists( 'register_block_type' ) ) {
54 return;
55 }
56
57 $attr = [
58 'block_id' =>
59 [
60 'type' => 'string',
61 ],
62 'isPreview' =>
63 [
64 'type' => 'boolean',
65 'default' => false,
66 ],
67 'separatorAlign' =>
68 [
69 'type' => 'string',
70 'default' => 'center',
71 ],
72 'separatorAlignTablet' =>
73 [
74 'type' => 'string',
75 'default' => 'center',
76 ],
77 'separatorAlignMobile' =>
78 [
79 'type' => 'string',
80 'default' => 'center',
81 ],
82 'separatorStyle' =>
83 [
84 'type' => 'string',
85 'default' => 'solid',
86 ],
87 'separatorWidth' =>
88 [
89 'type' => 'number',
90 'default' => 100,
91 ],
92 'separatorWidthTablet' =>
93 [
94 'type' => 'number',
95 'default' => 100,
96 ],
97 'separatorWidthMobile' =>
98 [
99 'type' => 'number',
100 'default' => 100,
101 ],
102 'separatorWidthType' =>
103 [
104 'type' => 'string',
105 'default' => '%',
106 ],
107 'separatorBorderHeight' =>
108 [
109 'type' => 'number',
110 'default' => 3,
111 ],
112 'separatorBorderHeightMobile' =>
113 [
114 'type' => 'number',
115 'default' => 3,
116 ],
117 'separatorBorderHeightTablet' =>
118 [
119 'type' => 'number',
120 'default' => 3,
121 ],
122 'separatorBorderHeightUnit' =>
123 [
124 'type' => 'string',
125 'default' => 'px',
126 ],
127 'separatorSize' =>
128 [
129 'type' => 'number',
130 'default' => 5,
131 ],
132 'separatorSizeMobile' =>
133 [
134 'type' => 'number',
135 'default' => 5,
136 ],
137 'separatorSizeTablet' =>
138 [
139 'type' => 'number',
140 'default' => 5,
141 ],
142 'separatorSizeType' =>
143 [
144 'default' => 'px',
145 ],
146 'separatorColor' =>
147 [
148 'type' => 'string',
149 'default' => '#000',
150 ],
151 'separatorHeight' =>
152 [
153 'type' => 'number',
154 'default' => 10,
155 ],
156 'separatorHeightMobile' =>
157 [
158 'type' => 'number',
159 'default' => 10,
160 ],
161 'separatorHeightTablet' =>
162 [
163 'type' => 'number',
164 'default' => 10,
165 ],
166 'separatorHeightType' =>
167 [
168 'type' => 'string',
169 'default' => 'px',
170 ],
171 'separatorBottomPadding' =>
172 [
173 'type' => 'number',
174 ],
175 'separatorPaddingTopTablet' =>
176 [
177 'type' => 'number',
178 ],
179 'separatorPaddingRightTablet' =>
180 [
181 'type' => 'number',
182 ],
183 'separatorPaddingBottomTablet' =>
184 [
185 'type' => 'number',
186 ],
187 'separatorPaddingLeftTablet' =>
188 [
189 'type' => 'number',
190 ],
191 'separatorPaddingTopMobile' =>
192 [
193 'type' => 'number',
194 ],
195 'separatorPaddingRightMobile' =>
196 [
197 'type' => 'number',
198 ],
199 'separatorPaddingBottomMobile' =>
200 [
201 'type' => 'number',
202 ],
203 'separatorPaddingLeftMobile' =>
204 [
205 'type' => 'number',
206 ],
207 'separatorPaddingUnit' =>
208 [
209 'type' => 'number',
210 'default' => 'px',
211 ],
212 'separatorMobilePaddingUnit' =>
213 [
214 'type' => 'number',
215 'default' => 'px',
216 ],
217 'separatorTabletPaddingUnit' =>
218 [
219 'type' => 'number',
220 'default' => 'px',
221 ],
222 'separatorPaddingLink' =>
223 [
224 'type' => 'boolean',
225 'default' => true,
226 ],
227 'elementType' =>
228 [
229 'type' => 'string',
230 'default' => 'none',
231 ],
232 'separatorText' =>
233 [
234 'type' => 'string',
235 'default' => __( 'Divider', 'sureforms' ),
236 ],
237 'separatorTextTag' =>
238 [
239 'type' => 'string',
240 'default' => 'h4',
241 ],
242 'separatorIcon' =>
243 [
244 'type' => 'string',
245 'default' => 'circle-check',
246 ],
247 'elementPosition' =>
248 [
249 'type' => 'string',
250 'default' => 'center',
251 ],
252 'elementSpacing' =>
253 [
254 'type' => 'number',
255 'default' => 15,
256 ],
257 'elementSpacingTablet' =>
258 [
259 'type' => 'number',
260 'default' => 15,
261 ],
262 'elementSpacingMobile' =>
263 [
264 'type' => 'number',
265 'default' => 15,
266 ],
267 'elementSpacingUnit' =>
268 [
269 'type' => 'string',
270 'default' => 'px',
271 ],
272 'elementTextLoadGoogleFonts' =>
273 [
274 'type' => 'boolean',
275 'default' => false,
276 ],
277 'elementTextFontFamily' =>
278 [
279 'type' => 'string',
280 'default' => 'Default',
281 ],
282 'elementTextFontWeight' =>
283 [
284 'type' => 'string',
285 ],
286 'elementTextFontSize' =>
287 [
288 'type' => 'number',
289 ],
290 'elementTextFontSizeType' =>
291 [
292 'type' => 'string',
293 'default' => 'px',
294 ],
295 'elementTextFontSizeTablet' =>
296 [
297 'type' => 'number',
298 ],
299 'elementTextFontSizeMobile' =>
300 [
301 'type' => 'number',
302 ],
303 'elementTextLineHeightType' =>
304 [
305 'type' => 'string',
306 'default' => 'em',
307 ],
308 'elementTextLineHeight' =>
309 [
310 'type' => 'number',
311 'default' => 1,
312 ],
313 'elementTextLineHeightTablet' =>
314 [
315 'type' => 'number',
316 'default' => 1,
317 ],
318 'elementTextLineHeightMobile' =>
319 [
320 'type' => 'number',
321 'default' => 1,
322 ],
323 'elementTextFontStyle' =>
324 [
325 'type' => 'string',
326 'default' => 'normal',
327 ],
328 'elementTextLetterSpacing' =>
329 [
330 'type' => 'number',
331 ],
332 'elementTextLetterSpacingTablet' =>
333 [
334 'type' => 'number',
335 ],
336 'elementTextLetterSpacingMobile' =>
337 [
338 'type' => 'number',
339 ],
340 'elementTextLetterSpacingType' =>
341 [
342 'type' => 'string',
343 'default' => 'px',
344 ],
345 'elementTextDecoration' =>
346 [
347 'type' => 'string',
348 ],
349 'elementTextTransform' =>
350 [
351 'type' => 'string',
352 ],
353 'elementColor' =>
354 [
355 'type' => 'string',
356 'default' => '#000',
357 ],
358 'elementIconWidth' =>
359 [
360 'type' => 'number',
361 'default' => 30,
362 ],
363 'elementIconWidthTablet' =>
364 [
365 'type' => 'number',
366 'default' => 30,
367 ],
368 'elementIconWidthMobile' =>
369 [
370 'type' => 'number',
371 'default' => 30,
372 ],
373 'elementIconWidthType' =>
374 [
375 'type' => 'string',
376 'default' => 'px',
377 ],
378 ];
379
380 $attributes = apply_filters( 'srfm_gutenberg_separator_attributes_filters', $attr );
381
382 register_block_type(
383 'srfm/separator',
384 [
385 'attributes' => $attributes,
386 'render_callback' => [ $this, 'render_html' ],
387 ]
388 );
389 }
390
391 /**
392 * Render CF HTML.
393 *
394 * @param array $attributes Array of block attributes.
395 *
396 * @since 0.0.1
397 */
398 public function render_html( $attributes ) {
399
400 $block_id = '';
401
402 if ( isset( $attributes['block_id'] ) ) {
403 $block_id = $attributes['block_id'];
404 }
405
406 $custom_svg = [
407 'rectangles' => 'url("data:image/svg+xml,%3Csvg width=\'16\' height=\'16\' viewBox=\'0 0 16 16\' fill=\'none\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Cpath d=\'M6.4 0H16L9.6 16H0L6.4 0Z\' fill=\'black\'/%3E%3C/svg%3E")',
408 'parallelogram' => 'url("data:image/svg+xml,%3Csvg width=\'8\' height=\'16\' viewBox=\'0 0 8 16\' fill=\'none\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Crect width=\'8\' height=\'16\' fill=\'black\'/%3E%3C/svg%3E")',
409 'slash' => 'url("data:image/svg+xml,%3Csvg width=\'16\' height=\'16\' viewBox=\'0 0 16 16\' fill=\'none\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Cpath d=\'M6.29312 16.9999L17 6.29302M14.2931 16.9999L17 14.293M-0.707031 15.9999L16.0002 -0.707153M8.00017 -0.707153L-0.706882 7.9999\' stroke=\'black\'/%3E%3C/svg%3E")',
410 'leaves' => 'url("data:image/svg+xml,%3Csvg width=\'16\' height=\'16\' viewBox=\'0 0 16 16\' fill=\'none\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Cg clip-path=\'url(%23clip0_2356_5631)\'%3E%3Cpath d=\'M15 1C10.5 1 9 2.5 9 7C13.5 7 15 5.5 15 1Z\' stroke=\'black\'/%3E%3Cpath d=\'M1 1C5.5 1 7 2.5 7 7C2.5 7 1 5.5 1 1Z\' stroke=\'black\'/%3E%3Cpath d=\'M15 15C10.5 15 9 13.5 9 9C13.5 9 15 10.5 15 15Z\' stroke=\'black\'/%3E%3Cpath d=\'M1 15C5.5 15 7 13.5 7 9C2.5 9 1 10.5 1 15Z\' stroke=\'black\'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id=\'clip0_2356_5631\'%3E%3Crect width=\'16\' height=\'16\' fill=\'white\'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")',
411 ];
412
413 $separator_icon = isset( $attributes['separatorIcon'] ) ? $attributes['separatorIcon'] : '';
414 $separator_style = isset( $attributes['separatorStyle'] ) ? $attributes['separatorStyle'] : '';
415 $element_type = isset( $attributes['elementType'] ) ? $attributes['elementType'] : '';
416 $element_type_css = $element_type ? 'wp-block-uagb-separator--' . $attributes['elementType'] : '';
417 $separator_text_tag = isset( $attributes['separatorTextTag'] ) ? $attributes['separatorTextTag'] : '';
418 $svg_pattern = isset( $custom_svg[ $separator_style ] ) ? $custom_svg[ $separator_style ] : '';
419
420 $main_classes = [
421 'wp-block-uagb-separator',
422 'uagb-block',
423 'uagb-block-' . $block_id,
424 $element_type_css,
425 ];
426
427 if ( isset( $attributes['className'] ) ) {
428 $main_classes[] = $attributes['className'];
429 }
430
431 $custom_tag = '<' . $separator_text_tag . ' class="uagb-html-tag">' . $attributes['separatorText'] . '</' . $separator_text_tag . '>';
432
433 ob_start();
434 ?>
435 <div class = "<?php echo esc_attr( implode( ' ', $main_classes ) ); ?>" style="--my-background-image: <?php echo esc_attr( $svg_pattern ); ?>;" >
436 <div class="wp-block-uagb-separator-wrapper">
437 <div class="wp-block-uagb-separator__inner">
438 <div class="wp-block-uagb-separator-element">
439 <?php
440 if ( 'icon' === $element_type ) {
441 Spec_Gb_Helper::render_svg_html( $separator_icon );
442 } elseif ( 'text' === $element_type ) {
443 echo wp_kses_post( $custom_tag );
444 }
445 ?>
446 </div>
447 </div>
448 </div>
449 </div>
450 <?php
451 return ob_get_clean();
452 }
453 }
454
455 /**
456 * Prepare if class 'Spec_Separator' exist.
457 * Kicking this off by calling 'get_instance()' method
458 */
459 Spec_Separator::get_instance();
460 }
461