PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.0.8
JetFormBuilder — Dynamic Blocks Form Builder v3.0.8
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
143 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\Manager;
9 use Jet_Form_Builder\Blocks\Render\Base as RenderBase;
10 use Jet_Form_Builder\Blocks\Types\Base;
11 use Jet_Form_Builder\Compatibility\Jet_Engine\Preset_Sources\Preset_Source_Options_Page;
12 use Jet_Form_Builder\Presets\Sources\Base_Source;
13
14 class Map_Field extends Base {
15
16 const HANDLE = 'jet-fb-map-field';
17
18 /**
19 * @return string
20 */
21 public function get_name() {
22 return 'map-field';
23 }
24
25 public function register_block_type() {
26 parent::register_block_type();
27
28 add_action( 'wp_enqueue_scripts', array( $this, 'register_scripts' ) );
29 add_action( 'jet_plugins/frontend/register_scripts', array( $this, 'register_scripts' ) );
30 }
31
32 public function register_scripts() {
33 wp_register_script(
34 self::HANDLE,
35 jet_form_builder()->plugin_url( 'assets/js/frontend/map.field{min}.js' ),
36 array(
37 Manager::MAIN_SCRIPT_HANDLE
38 ),
39 jet_form_builder()->get_version(),
40 true
41 );
42
43 wp_localize_script(
44 self::HANDLE,
45 'JetMapFieldsSettings',
46 array(
47 'api' => jet_engine()->api->get_route( 'get-map-point-data' ),
48 'apiHash' => jet_engine()->api->get_route( 'get-map-location-hash' ),
49 'nonce' => wp_create_nonce( 'jet-map-field' ),
50 'i18n' => array(
51 'loading' => esc_html__( 'Loading ...', 'jet-form-builder' ),
52 'notFound' => esc_html__( 'Address not found', 'jet-form-builder' ),
53 'resetBtn' => esc_html__( 'Reset location', 'jet-form-builder' ),
54 'descTitle' => esc_html__( 'Lat and Lng are separately stored in the following fields', 'jet-form-builder' ),
55 ),
56 )
57 );
58 }
59
60 public function get_field_settings(): array {
61 return array(
62 'height' => $this->block_attrs['height'] ?? 300,
63 'format' => $this->block_attrs['format'] ?? Map_Tools::STRING,
64 'field_prefix' => $this->block_attrs['name'] ?? '',
65 );
66 }
67
68 public function get_extra_fields( Base_Source $source ): array {
69 if ( is_a( $source, Preset_Source_Options_Page::class ) ) {
70 return array(
71 'self' => '%prop%',
72 'lat' => '%prop|md5%_lat',
73 'lng' => '%prop|md5%_lng',
74 );
75 }
76
77 return array(
78 'self' => '%key%',
79 'lat' => '%key|md5%_lat',
80 'lng' => '%key|md5%_lng',
81 );
82 }
83
84 public function expected_preset_type(): array {
85 return array( self::PRESET_EXACTLY );
86 }
87
88 protected function get_value_from_repeater( array $row, string $name ) {
89 if ( ! isset( $row[ $name ] ) ) {
90 return false;
91 }
92
93 return array(
94 'self' => $row[ $name ],
95 'lat' => $row[ $name . '_lat' ],
96 'lng' => $row[ $name . '_lng' ],
97 );
98 }
99
100 protected function render_field( array $attrs, $content = null, $wp_block = null ): string {
101 if ( ! Map_Tools::is_supported() ) {
102 return Map_Tools::get_help_message();
103 }
104
105 return parent::render_field( $attrs, $content, $wp_block );
106 }
107
108 /**
109 * @param null $wp_block
110 *
111 * @return mixed
112 */
113 public function get_block_renderer( $wp_block = null ) {
114 /** @var Base_Provider $provider */
115 $provider = Module::instance()->providers->get_active_map_provider();
116
117 $provider->register_public_assets();
118 $provider->public_assets( null, array( 'marker_clustering' => false ), null );
119
120 wp_enqueue_script( self::HANDLE );
121
122 return ( new class( $this ) extends RenderBase {
123 public function get_name() {
124 return 'map-field';
125 }
126 } )->render();
127 }
128
129 public function block_data( $editor, $handle ) {
130 wp_localize_script(
131 $handle,
132 'JetFBMapField',
133 array(
134 'formats' => Map_Tools::get_formats(),
135 'image' => jet_form_builder()->plugin_url( 'assets/img/map-placeholder.png' ),
136 'is_supported' => Map_Tools::is_supported(),
137 'help' => Map_Tools::get_help_message(),
138 )
139 );
140 }
141
142 }
143