PluginProbe
WP Directory Kit / 1.1.8
WP Directory Kit v1.1.8
1.5.9 1.5.7 1.5.6 1.5.5 1.5.4 1.5.3 trunk 1.1.0 1.1.6 1.1.8 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.8 All 37 releases
wpdirectorykit / elementor-extensions / class-contact-form.php

class-contact-form.php in WP Directory Kit 1.1.8, at elementor-extensions/class-contact-form.php

380 lines 19.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Wdk\Elementor\Extensions;
4
5
6 use Wdk\Elementor\Widgets\WdkElementorBase;
7 use Elementor\Widget_Base;
8 use Elementor\Controls_Manager;
9 use Elementor\Utils;
10 use Elementor\Typography;
11 use Elementor\Editor;
12 use Elementor\Plugin;
13 use Elementor\Repeater;
14 use Elementor\Core\Schemes;
15 use Elementor\Icons_Manager;
16 use Elementor\Group_Control_Typography;
17 use Elementor\Group_Control_Border;
18 use Elementor\Group_Control_Box_Shadow;
19
20 if (!defined('ABSPATH'))
21 exit; // Exit if accessed directly
22
23 /**
24 * @since 1.1.0
25 */
26 class WdkContactFormExt extends \ElementinvaderAddonsForElementor\Widgets\EliContact_Form {
27 public $field_types = array();
28
29 public function __construct($data = array(), $args = null) {
30 parent::__construct($data, $args);
31 }
32
33 /**
34 * Retrieve the widget name.
35 *
36 * @since 1.1.0
37 *
38 * @access public
39 *
40 * @return string Widget name.
41 */
42 public function get_name() {
43 return 'wdk-class-contact-form';
44 }
45
46 /**
47 * Retrieve the list of categories the widget belongs to.
48 *
49 * Used to determine where to display the widget in the editor.
50 *
51 * Note that currently Elementor supports only one category.
52 * When multiple categories passed, Elementor uses the first one.
53 *
54 * @since 1.1.0
55 *
56 * @access public
57 *
58 * @return array Widget categories.
59 */
60 public function get_categories() {
61 return [ 'wdk-elementor-listing-preview' ];
62 }
63
64 /**
65 * Retrieve the widget title.
66 *
67 * @since 1.1.0
68 *
69 * @access public
70 *
71 * @return string Widget title.
72 */
73 public function get_title() {
74 return esc_html__('Wdk Contact Form', 'wpdirectorykit');
75 }
76
77 /**
78 * Retrieve the widget icon.
79 *
80 * @since 1.1.0
81 *
82 * @access public
83 *
84 * @return string Widget icon.
85 */
86 public function get_icon() {
87 return 'eicon-mail';
88 }
89
90 /**
91 * Register the widget controls.
92 *
93 * Adds different input fields to allow the user to change and customize the widget settings.
94 *
95 * @since 1.1.0
96 *
97 * @access protected
98 */
99 protected function register_controls() {
100 //$this->field_types ['user_id'] = esc_html__('Hidden Field Agent ID', 'wpdirectorykit');
101 parent::register_controls();
102
103 $items = [
104 [
105 'key'=>'button_booking',
106 'label'=> esc_html__('Button Booking', 'wpdirectorykit'),
107 'selector'=>'.elementinvader_contact_form .wdk-booking',
108 'options'=>'full',
109 ],
110 ];
111
112 foreach ($items as $item) {
113 $this->start_controls_section(
114 $item['key'].'_section',
115 [
116 'label' => $item['label'],
117 'tab' => Controls_Manager::TAB_STYLE,
118 ]
119 );
120
121 $this->add_responsive_control(
122 $item['key'].'_hide',
123 [
124 'label' => esc_html__('Hide Element', 'wpdirectorykit'),
125 'type' => Controls_Manager::SWITCHER,
126 'none' => esc_html__('Hide', 'wpdirectorykit'),
127 'block' => esc_html__('Show', 'wpdirectorykit'),
128 'return_value' => 'none',
129 'default' => '',
130 'selectors' => [
131 '{{WRAPPER}} '.$item['selector'] => 'display: {{VALUE}};',
132 ],
133 ]
134 );
135
136 $selectors = array(
137 'normal' => '{{WRAPPER}} '.$item['selector'],
138 'hover'=>'{{WRAPPER}} '.$item['selector'].'%1$s'
139 );
140
141 $this->generate_renders_tabs($selectors, $item['key'].'_dynamic', $item['options']);
142
143 $this->end_controls_section();
144 }
145
146 $this->start_controls_section(
147 'booking_section',
148 [
149 'label' => esc_html__('Booking', 'wpdirectorykit'),
150 'tab' => 'fields_tab',
151 ]
152 );
153
154 $this->add_control(
155 'booking_hide_if_сhildrens_allowed_field',
156 [
157 'label' => esc_html__('Childrens allowed field hide', 'wpdirectorykit'),
158 'type' => Controls_Manager::SWITCHER,
159 'none' => esc_html__('Yes', 'wpdirectorykit'),
160 'block' => esc_html__('No', 'wpdirectorykit'),
161 'return_value' => 'yes',
162 'default' => '',
163 ]
164 );
165
166 $this->add_control(
167 'booking_hide_if_pets_allowed_field',
168 [
169 'label' => esc_html__('Pets allowed field hide', 'wpdirectorykit'),
170 'type' => Controls_Manager::SWITCHER,
171 'none' => esc_html__('Yes', 'wpdirectorykit'),
172 'block' => esc_html__('No', 'wpdirectorykit'),
173 'return_value' => 'yes',
174 'default' => '',
175 ]
176 );
177 $this->end_controls_section();
178 }
179
180 /**
181 * Render the widget output on the frontend.
182 *
183 * Written in PHP and used to generate the final HTML.
184 *
185 * @since 1.1.0
186 *
187 * @access protected
188 */
189 protected function render() {
190 $settings = $this->get_settings();
191 global $wdk_listing_id;
192
193 $validation_form_email = false;
194 $validation_form_message = false;
195
196 foreach ($settings['form_fields'] as $field) {
197 if(strtolower($field['field_label']) == 'email') {
198 $validation_form_email = true;
199 }
200
201 if(strtolower($field['field_label']) == 'message') {
202 $validation_form_message = true;
203 }
204 }
205
206 if(!$validation_form_email || !$validation_form_message) {
207 $this->content ['wlisting_fields'] .= '<div class="elementinvader_addons_for_elementor_f_group elementinvader_addons_for_elementor_f_group_el_guests" style="width: 100%;-webkit-flex: 0 0 100%;flex: 0 0 100%;">';
208 $this->content ['wlisting_fields'] .= '<div role="alert" class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger">'.esc_html__('Field with label "email" and "message" should be exists, for save in db','wpdirectorykit').'</div>';
209 $this->content ['wlisting_fields'] .= '</div>';
210 }
211
212
213 $post_id = get_the_ID();
214 if(isset($wdk_listing_id)){
215 $this->content ['wlisting_fields'] .= '<input name="listing_id" type="hidden" value="'.$wdk_listing_id.'" >';
216 $this->content ['wlisting_fields'] .= '<input name="listing_link" type="hidden" value="'.get_permalink(wmvc_show_data('post_id', $post_id)) .'" >';
217 }
218 wp_enqueue_script( 'wdk-booking-calculator-price' );
219 if(function_exists('run_wdk_bookings')) {
220 global $Winter_MVC_wdk_bookings;
221
222 $Winter_MVC_wdk_bookings->model('calendar_m');
223 $Winter_MVC_wdk_bookings->model('reservation_m');
224 $calendar = $Winter_MVC_wdk_bookings->calendar_m->get_pagination(NULL, NULL, array('post_id' => $wdk_listing_id));
225
226 $dates = $Winter_MVC_wdk_bookings->reservation_m->get_enabled_dates($wdk_listing_id);
227 $dates = (str_replace("'",'',join(' ',$dates)));
228
229 /* booking price selector */
230 $this->content ['wlisting_fields'] ='<div class="elementinvader_addons_for_elementor_f_group elementinvader_addons_for_elementor_f_group_el_guests" style="width: 100%;-webkit-flex: 0 0 100%;flex: 0 0 100%;">
231 <div class="wdk_booking_auto_calculate_price"></div>
232 </div>'. $this->content ['wlisting_fields'];
233
234 if( $calendar && isset($calendar[0]) )
235 if( !is_user_logged_in() && ((isset($settings['booking_hide_if_not_login']) && !$settings['booking_hide_if_not_login'] == 'yes') || wmvc_show_data('is_disable_for_not_login',$calendar[0],false, TRUE, TRUE))){
236 $this->content ['wlisting_fields'] .= '<div class="elementinvader_addons_for_elementor_f_group elementinvader_addons_for_elementor_f_group_el_guests" style="width: 100%;-webkit-flex: 0 0 100%;flex: 0 0 100%;">
237 <a href="'.wdk_login_url(wdk_current_url()).'" class="wdk-booking">
238 '.esc_html__('For Booking please login','wpdirectorykit').'
239 </div></a>';
240 } else {
241 $calendar = $calendar[0];
242
243 if(intval(wdk_get_option('wdk_bookings_max_guests')) > 0) {
244 $options = range(1, intval(wdk_get_option('wdk_bookings_max_guests')));
245 } else {
246 $options = range(1, 10);
247 }
248
249 if(empty($calendar->is_guests_disabled)) {
250
251 $output ='<div class="elementinvader_addons_for_elementor_f_group elementinvader_addons_for_elementor_f_group_el_guests" style="width: 50%;-webkit-flex: 0 0 50%;flex: 0 0 50%;">';
252 $output .='<select name="guests_number_adults" id="guests_number_adults" type="select" class="elementinvader_addons_for_elementor_f_field" value="'.wmvc_show_data('guests_number', $_GET).'">';
253 $output .= '<option value="">'.esc_html__('Adults','wpdirectorykit').'</option>';
254 foreach ($options as $key => $option){
255 if(!next($options)) {
256 $output .= '<option value="'.esc_attr($option).'+">'.esc_html($option).'+</option>';
257 }else {
258 $output .= '<option value="'.esc_attr($option).'">'.esc_html($option).'</option>';
259 }
260 }
261 $output .='</select>
262 </div>';
263
264 $output .='<div class="elementinvader_addons_for_elementor_f_group elementinvader_addons_for_elementor_f_group_el_guests" style="width: 50%;-webkit-flex: 0 0 50%;flex: 0 0 50%;">';
265 $output .='<select name="guests_number_childs" id="guests_number_childs" type="select" class="elementinvader_addons_for_elementor_f_field" value="'.wmvc_show_data('guests_number', $_GET).'">';
266 $output .= '<option value="">'.esc_html__('Childs','wpdirectorykit').'</option>';
267 foreach ($options as $key => $option){
268 if(!next($options)) {
269 $output .= '<option value="'.esc_attr($option).'+">'.esc_html($option).'+</option>';
270 } else {
271 $output .= '<option value="'.esc_attr($option).'">'.esc_html($option).'</option>';
272 }
273 }
274 $output .='</select>
275 </div>';
276 $this->content ['wlisting_fields'] .= $output;
277 }
278
279
280 $attr = '';
281 if(get_option('wdk_bookings_calendar_single')) {
282 $attr = "data-wdksingle = 'true'";
283 }
284
285 if(!wmvc_show_data('is_hour_enabled',$calendar, false)){
286 $this->content ['wlisting_fields'] .= ' <div class="elementinvader_addons_for_elementor_f_group text elementinvader_addons_for_elementor_f_group_el_1" style="width: 50%;-webkit-flex: 0 0 50%;flex: 0 0 50%;">
287 <input '.$attr.' data-allowdates="'.$dates.'" name="date_from" id="date_from" type="text" class="date_from wdk-fielddate_range elementinvader_addons_for_elementor_f_field" placeholder="'.esc_html__('Date Range','wpdirectorykit').'">
288 </div>
289 ';
290 $this->content ['wlisting_fields'] .= ' <div class="elementinvader_addons_for_elementor_f_group text elementinvader_addons_for_elementor_f_group_el_1" style="width: 50%;-webkit-flex: 0 0 50%;flex: 0 0 50%;">
291 <input '.$attr.' data-allowdates="'.$dates.'" name="date_to" id="date_to" type="text" class="date_to wdk-fielddate_range elementinvader_addons_for_elementor_f_field" placeholder="'.esc_html__('Date Range','wpdirectorykit').'">
292 </div>
293 ';
294 } else {
295 $this->content ['wlisting_fields'] .= ' <div class="elementinvader_addons_for_elementor_f_group text elementinvader_addons_for_elementor_f_group_el_1" style="width: 50%;-webkit-flex: 0 0 50%;flex: 0 0 50%;">
296 <input '.$attr.' data-allowdates="'.$dates.'" name="date_from" id="date_from" type="text" class="date_from wdk-fielddatetime_range elementinvader_addons_for_elementor_f_field" placeholder="'.esc_html__('Date Range','wpdirectorykit').'">
297 </div>
298 ';
299 $this->content ['wlisting_fields'] .= ' <div class="elementinvader_addons_for_elementor_f_group text elementinvader_addons_for_elementor_f_group_el_1" style="width: 50%;-webkit-flex: 0 0 50%;flex: 0 0 50%;">
300 <input '.$attr.' data-allowdates="'.$dates.'" name="date_to" id="date_to" type="text" class="date_to wdk-fielddatetime_range elementinvader_addons_for_elementor_f_field" placeholder="'.esc_html__('Date Range','wpdirectorykit').'">
301 </div>
302 ';
303 }
304
305 if(true && function_exists('wdk_booking_currency_symbol')){
306 if(!empty($calendar->json_data_fees))
307 $calendar_fees = json_decode($calendar->json_data_fees );
308
309 if(!empty($calendar_fees)) {
310
311 foreach ($calendar_fees as $fee) {
312 if(!wmvc_show_data('is_activated', $fee, false,TRUE,TRUE)) continue;
313
314 $field = str_replace(' ','_',strtolower(esc_html(wmvc_show_data('title', $fee,'-',TRUE,TRUE))));
315
316 $readonly = '';
317 if(wmvc_show_data('is_required', $fee, false,TRUE,TRUE)) {
318 $readonly = 'readonly disabled';
319 }
320
321 $this->content ['wlisting_fields'] .='<div class="elementinvader_addons_for_elementor_f_group checkbox fee_group" style="width: 100%;-webkit-flex: 0 0 100%;flex: 0 0 100%;">
322 <label for="'.esc_attr($field).'">
323 <input name="fee_'.esc_attr($field).'" checked="checked" '.esc_attr($readonly).' id="'.esc_attr($field).'" type="checkbox" class="elementinvader_addons_for_elementor_f_field_checkbox fees_checkbox" value="yes" placeholder="'.esc_attr(wmvc_show_data('title', $fee,'-',TRUE,TRUE)).'" >
324 '.esc_html(wmvc_show_data('title', $fee,'-',TRUE,TRUE)).'<span class="fee_price"> ('.esc_html(wmvc_show_data('value', $fee,'-',TRUE,TRUE)).esc_html(apply_filters( 'wdk-currency-conversion/convert/symbol', wdk_booking_currency_symbol())).'/'.
325 ((isset($Winter_MVC_wdk_bookings->calendar_m->calculation_base[wmvc_show_data('calculation_base', $fee,'-',TRUE,TRUE)])) ? $Winter_MVC_wdk_bookings->calendar_m->calculation_base[wmvc_show_data('calculation_base', $fee,'-',TRUE,TRUE)] : 'per stay').')</span>
326 </label>
327 </div>';
328 }
329 }
330 }
331
332 if($settings['booking_hide_if_сhildrens_allowed_field'] != 'yes') {
333 $this->content ['wlisting_fields'] .='<div class="elementinvader_addons_for_elementor_f_group checkbox elementinvader_addons_for_elementor_f_group_el_сhildrens" style="width: 100%;-webkit-flex: 0 0 100%;flex: 0 0 100%;">
334 <label for="сhildrens_allowed">
335 <input name="сhildrens_allowed" id="сhildrens_allowed" type="checkbox" class="elementinvader_addons_for_elementor_f_field_checkbox" value="yes" placeholder="'.esc_attr__('Childrens allowed ','wpdirectorykit').'" >
336 '.esc_html__('Childrens ','wpdirectorykit').'
337 </label>
338 </div>';
339 }
340
341
342 if ($settings['booking_hide_if_pets_allowed_field'] != 'yes') {
343 $this->content ['wlisting_fields'] .='<div class="elementinvader_addons_for_elementor_f_group checkbox elementinvader_addons_for_elementor_f_group_el_pets" style="width: 100%;-webkit-flex: 0 0 100%;flex: 0 0 100%;">
344 <label for="pets_allowed">
345 <input name="pets_allowed" id="pets_allowed" type="checkbox" class="elementinvader_addons_for_elementor_f_field_checkbox" value="yes" placeholder="'.esc_attr__('Pets allowed ', 'wpdirectorykit').'" >
346 '.esc_html__('Pets ', 'wpdirectorykit').'
347 </label>
348 </div>';
349 }
350
351 wp_enqueue_script( 'daterangepicker-moment' );
352
353 wp_enqueue_script( 'daterangepicker' );
354 wp_enqueue_style('daterangepicker');
355
356
357 }
358 }
359
360 if( is_user_logged_in()) {
361 wp_enqueue_script( 'wdk-notify' );
362 $data_user = get_userdata(get_current_user_id());
363 $custom_js ="
364 jQuery('document').ready(function($){
365 $('#elementinvader_addons_for_elementor_".esc_html($this->get_id_int())." #namename').val('".esc_js(wdk_show_data('display_name', $data_user, '' , TRUE, TRUE))."').attr('data-default','".esc_js(wdk_show_data('display_name', $data_user, '' , TRUE, TRUE))."');
366 $('#elementinvader_addons_for_elementor_".esc_html($this->get_id_int())." #emailemail').val('".esc_js(wdk_show_data('user_email', $data_user, '' , TRUE, TRUE))."').attr('data-default','".esc_js(wdk_show_data('user_email', $data_user, '' , TRUE, TRUE))."');
367 $('#elementinvader_addons_for_elementor_".esc_html($this->get_id_int())." [name=\"Phone\"]').val('".esc_js(wdk_show_data('wdk_phone', $data_user, '' , TRUE, TRUE))."').attr('data-default','".esc_js(wdk_show_data('wdk_phone', $data_user, '' , TRUE, TRUE))."');
368 $('#elementinvader_addons_for_elementor_".esc_html($this->get_id_int())." #messagemessage').val('".esc_js(esc_html__('Interested for listing', 'wpdirectorykit'))."').attr('data-default','".esc_js(esc_html__('Interested for listing', 'wpdirectorykit'))."');
369 })
370 ";
371 wp_add_inline_script( 'wdk-notify', $custom_js );
372 }
373
374
375 parent::render();
376 }
377
378 }
379
380