PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 2.1.5
JetFormBuilder — Dynamic Blocks Form Builder v2.1.5
3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / includes / compatibility / jet-engine / blocks / map-field.php
jetformbuilder / includes / compatibility / jet-engine / blocks Last commit date
map-field.php 3 years ago map-tools.php 3 years ago
map-field.php
127 lines
1 <?php
2
3
4 namespace Jet_Form_Builder\Compatibility\Jet_Engine\Blocks;
5
6 use Jet_Engine\Modules\Maps_Listings\Base_Provider;
7 use Jet_Engine\Modules\Maps_Listings\Module;
8 use Jet_Form_Builder\Blocks\Render\Base as RenderBase;
9 use Jet_Form_Builder\Blocks\Types\Base;
10 use Jet_Form_Builder\Compatibility\Jet_Engine\Preset_Sources\Preset_Source_Options_Page;
11 use Jet_Form_Builder\Presets\Sources\Base_Source;
12
13 class Map_Field extends Base {
14
15 /**
16 * @return string
17 */
18 public function get_name() {
19 return 'map-field';
20 }
21
22 public function get_field_settings(): array {
23 return array(
24 'height' => $this->block_attrs['height'] ?? 300,
25 'format' => $this->block_attrs['format'] ?? Map_Tools::STRING,
26 'field_prefix' => $this->block_attrs['name'] ?? '',
27 );
28 }
29
30 public function get_extra_fields( Base_Source $source ): array {
31 if ( is_a( $source, Preset_Source_Options_Page::class ) ) {
32 return array(
33 'self' => '%prop%',
34 'lat' => '%prop|md5%_lat',
35 'lng' => '%prop|md5%_lng',
36 );
37 }
38
39 return array(
40 'self' => '%key%',
41 'lat' => '%key|md5%_lat',
42 'lng' => '%key|md5%_lng',
43 );
44 }
45
46 public function expected_preset_type(): array {
47 return array( self::PRESET_EXACTLY );
48 }
49
50 protected function get_value_from_repeater( array $row, string $name ) {
51 if ( ! isset( $row[ $name ] ) ) {
52 return false;
53 }
54
55 return array(
56 'self' => $row[ $name ],
57 'lat' => $row[ $name . '_lat' ],
58 'lng' => $row[ $name . '_lng' ],
59 );
60 }
61
62 protected function render_field( array $attrs, $content = null, $wp_block = null ): string {
63 if ( ! Map_Tools::is_supported() ) {
64 return Map_Tools::get_help_message();
65 }
66
67 return parent::render_field( $attrs, $content, $wp_block );
68 }
69
70 /**
71 * @param null $wp_block
72 *
73 * @return mixed
74 */
75 public function get_block_renderer( $wp_block = null ) {
76 /** @var Base_Provider $provider */
77 $provider = Module::instance()->providers->get_active_map_provider();
78
79 $provider->register_public_assets();
80 $provider->public_assets( null, array( 'marker_clustering' => false ), null );
81
82 wp_enqueue_script(
83 'jet-fb-map-field',
84 jet_form_builder()->plugin_url( 'assets/js/map-field.js' ),
85 array( 'jquery', 'wp-api-fetch' ),
86 jet_form_builder()->get_version(),
87 true
88 );
89
90 wp_localize_script(
91 'jet-fb-map-field',
92 'JetMapFieldsSettings',
93 array(
94 'api' => jet_engine()->api->get_route( 'get-map-point-data' ),
95 'apiHash' => jet_engine()->api->get_route( 'get-map-location-hash' ),
96 'nonce' => wp_create_nonce( 'jet-map-field' ),
97 'i18n' => array(
98 'loading' => esc_html__( 'Loading ...', 'jet-form-builder' ),
99 'notFound' => esc_html__( 'Address not found', 'jet-form-builder' ),
100 'resetBtn' => esc_html__( 'Reset location', 'jet-form-builder' ),
101 'descTitle' => esc_html__( 'Lat and Lng are separately stored in the following fields', 'jet-form-builder' ),
102 ),
103 )
104 );
105
106 return ( new class( $this ) extends RenderBase {
107 public function get_name() {
108 return 'map-field';
109 }
110 } )->render();
111 }
112
113 public function block_data( $editor, $handle ) {
114 wp_localize_script(
115 $handle,
116 'JetFBMapField',
117 array(
118 'formats' => Map_Tools::get_formats(),
119 'image' => jet_form_builder()->plugin_url( 'assets/img/map-placeholder.png' ),
120 'is_supported' => Map_Tools::is_supported(),
121 'help' => Map_Tools::get_help_message(),
122 )
123 );
124 }
125
126 }
127