Version Description
- Changes in all versions:
- Translation. Finnish translation [99% completed] by Tero Janhunen
- Translation. German translation [99% completed] by Martin Klewer
- Support Fix compatibility with Gutenberg 4.1- 4.3( or newer ). Before this having JavaScript error " ReferenceError: jQuery is not defined" at edit post page, because of weird behavior with 'edit_form_advanced' hook, while activated Gutenberg. (8.4.2.10)
- Support Additional help info about import .ics feed by set up CRON script at your server for "pseudo" automatic import of events. (8.4.2.12)
- Fix issue of checkboxes and radio buttons height in new Firefox updates in admin panel, otherwise sometimes, there exist weird artefact (8.4.2.6)
- Fix issue of not ability to save time-slots in Booking Calendar Free version or during using Simple mode for booking form, when clicking on "+Add New Field" nothing was happend.(8.4.2.7)
- Changes in Personal / Business Small / Business Medium / Business Large / MultiUser versions:
- New. Duplicate Booking, when clicking on "Edit booking" button in Booking Listing page. Its useful, in case of creation of new booking from returning customer. So you can edit exist booking, and just reselect dates in calendar, for creation new booking with all filled details. (8.4.2.9) ( Personal, Business Small/Medium/Large, MultiUser)
- New. Shortcode [estimate_day_cost_hint] for booking form at Booking > Settings > Form page, which is show estimate cost per day, using this formula: [cost_hint] / days_number_hint ( Business Small/Medium/Large, MultiUser)
- Improvement Show timeslots in AM/PM format in Booking Listing and in email template (shortcode [content}), if was configured used AM/PM time format at the Booking > Settings General page. (8.4.2.7)
- Improvement Add Notes section of booking to print layout during printing. (8.4.2.2) ( Business Small/Medium/Large, MultiUser)
- Improvement During cancellation of booking by visitor, disable all booking form fields for showing only cancel booking button. (8.4.2.5) (Personal Business Small/Medium/Large, MultiUser)
- Fix issue of not changing booking HASH during deleting booking by user, who made the booking. (8.4.2.4) (Personal Business Small/Medium/Large, MultiUser)
- Fix issue of showing times popover hint in some themes in widgetes (8.4.2.3) (Business Small/Medium/Large, MultiUser)
- Fix issue of showing currency symbols in booking pipeline in Timeline and in Calendar Overview pages, for example, while showing additional cost hints or booking cost in booking pipeline (8.4.2.8) (Business Small/Medium/Large, MultiUser)
- Fix issue of not ability to add additional cost for the rangetime, if times format was set as AM/PM (8.4.2.11) (Business Medium/Large, MultiUser)
- Under Hood Ability to ncustomize of showing cost/days hints, just after first click on days, if activated "range days selection mode using 2 mouse clicks". You can customiaze it at ../inc/js/biz_m.js file / by replacing is_show_cost_after_first_click
Download this release
Release Info
Developer | wpdevelop |
Plugin | Booking Calendar |
Version | 8.4.2 |
Comparing to | |
See all releases |
Code changes from version 8.4 to 8.4.2
- core/admin/page-form-timeslots.php +3 -3
- core/admin/page-ics-import.php +32 -3
- core/admin/wpbc-class-listing.php +2 -1
- core/admin/wpbc-class-timeline.php +8 -2
- core/admin/wpbc-toolbar-tiny.php +2 -1
- core/any/css/admin-support.css +2 -2
- core/lib/wpbc-booking-new.php +28 -7
- core/lib/wpbc_all_translations.php +40 -2
- core/lib/wpdev-booking-widget.php +1 -1
- core/wpbc-constants.php +2 -2
- core/wpbc-dates.php +25 -1
- core/wpbc-functions.php +32 -9
- js/client.js +172 -8
- js/wpbc-gutenberg.js +3 -2
- languages/booking-ar_SA.mo +0 -0
- languages/booking-be_BY.mo +0 -0
- languages/booking-bg_BG.mo +0 -0
- languages/booking-ca.mo +0 -0
- languages/booking-cs_CZ.mo +0 -0
- languages/booking-da_DK.mo +0 -0
- languages/booking-de_DE.mo +0 -0
- languages/booking-el.mo +0 -0
- languages/booking-es_ES.mo +0 -0
- languages/booking-fi.mo +0 -0
- languages/booking-fr_FR.mo +0 -0
- languages/booking-gl_ES.mo +0 -0
- languages/booking-he_IL.mo +0 -0
- languages/booking-hr.mo +0 -0
- languages/booking-hu_HU.mo +0 -0
- languages/booking-it_IT.mo +0 -0
- languages/booking-nb_NO.mo +0 -0
- languages/booking-nl_NL.mo +0 -0
- languages/booking-pl_PL.mo +0 -0
- languages/booking-pt_BR.mo +0 -0
- languages/booking-pt_PT.mo +0 -0
- languages/booking-ru_RU.mo +0 -0
- languages/booking-sk_SK.mo +0 -0
- languages/booking-sl_SI.mo +0 -0
- languages/booking-sv_SE.mo +0 -0
- languages/booking-th_TH.mo +0 -0
- languages/booking-tr_TR.mo +0 -0
- languages/booking-uk_UK.mo +0 -0
- languages/booking-zh_CN.mo +0 -0
- languages/booking-zh_TW.mo +0 -0
- readme.txt +36 -8
- wpdev-booking.php +1 -1
core/admin/page-form-timeslots.php
CHANGED
@@ -504,9 +504,9 @@ function wpbc_timeslots_table_config_js() {
|
|
504 |
|
505 |
// Get parsed time-slots rows with labels, if exist
|
506 |
for ( var i = 0; i < size; i++ ){
|
507 |
-
time_s = jQuery( "select[name='timeslotS[" + i + "]'" ).val();
|
508 |
-
time_e = jQuery( "select[name='timeslotE[" + i + "]'" ).val();
|
509 |
-
time_label = jQuery( "input[name='form_field_timeslot_label[" + i + "]'" ).val();
|
510 |
time_label = time_label.trim();
|
511 |
|
512 |
if ( time_label.length > 0 ){
|
504 |
|
505 |
// Get parsed time-slots rows with labels, if exist
|
506 |
for ( var i = 0; i < size; i++ ){
|
507 |
+
time_s = jQuery( "select[name='timeslotS[" + i + "]']" ).val(); //FixIn: 8.4.2.7
|
508 |
+
time_e = jQuery( "select[name='timeslotE[" + i + "]']" ).val(); //FixIn: 8.4.2.7
|
509 |
+
time_label = jQuery( "input[name='form_field_timeslot_label[" + i + "]']" ).val(); //FixIn: 8.4.2.7
|
510 |
time_label = time_label.trim();
|
511 |
|
512 |
if ( time_label.length > 0 ){
|
core/admin/page-ics-import.php
CHANGED
@@ -543,8 +543,37 @@ function wpbc_ics_import_export__show_help_info( $is_import = true ) {
|
|
543 |
echo $message_ics;
|
544 |
?>
|
545 |
</div>
|
546 |
-
<div style="height:30px;" class="clear"></div>
|
547 |
<?php if ( $is_import ) { ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
548 |
<h4 style="font-size:1.1em;">
|
549 |
<?php
|
550 |
$message_ics = sprintf( __( 'How to start import of .ics feeds (files)?', 'booking' ) );
|
@@ -570,7 +599,7 @@ function wpbc_ics_import_export__show_help_info( $is_import = true ) {
|
|
570 |
$message_ics = sprintf( __( 'Using such shortcodes in pages give a great flexibility to import from different .ics feeds (sources) into the same resource.%sAlso its possible to define different CRON parameters for accessing such different pages with different time intervals.', 'booking' )
|
571 |
, '<br/>'
|
572 |
);
|
573 |
-
$message_ics = str_replace( array( '.ics', 'CRON' ), array( '<strong>.ics</strong>', '<a target="_blank" href="https://wpbookingcalendar.com/faq/cron/"><strong>CRON</strong></a>' ), $message_ics );
|
574 |
echo $message_ics;
|
575 |
?>
|
576 |
</div>
|
@@ -586,7 +615,7 @@ function wpbc_ics_import_export__show_help_info( $is_import = true ) {
|
|
586 |
$message_ics = sprintf( __( 'If you have inserted import shortcodes from %s, then you can configure your CRON for periodically access these pages and import .ics feeds.', 'booking' )
|
587 |
, '<a target="_blank" href="https://wordpress.org/plugins/booking-manager/"><strong>Booking Manager</strong></a> <code>[booking-manager-import ...]</code>'
|
588 |
);
|
589 |
-
$message_ics = str_replace( array( '.ics', 'CRON' ), array( '<strong>.ics</strong>', '<a target="_blank" href="https://wpbookingcalendar.com/faq/cron/"><strong>CRON</strong></a>' ), $message_ics );
|
590 |
echo $message_ics;
|
591 |
?>
|
592 |
</li>
|
543 |
echo $message_ics;
|
544 |
?>
|
545 |
</div>
|
|
|
546 |
<?php if ( $is_import ) { ?>
|
547 |
+
<h4 style="font-size:1.1em;">
|
548 |
+
<?php
|
549 |
+
// FixIn: 8.4.2.12
|
550 |
+
$message_ics = sprintf( __( 'Is it automatic process?', 'booking' ) );
|
551 |
+
$message_ics = str_replace( array( '.ics', 'iCalendar' ), array( '<strong>.ics</strong>', '<strong>iCalendar</strong>' ), $message_ics );
|
552 |
+
echo $message_ics;
|
553 |
+
?>
|
554 |
+
</h4>
|
555 |
+
<div class="wpbc-settings-notice notice-warning"
|
556 |
+
style="text-align:left;border-top:1px solid #f0f0f0;border-right:1px solid #f0f0f0; line-height: 2em;padding: 5px 20px;"
|
557 |
+
>
|
558 |
+
<?php
|
559 |
+
$message_ics = sprintf(
|
560 |
+
__( 'By default .ics import is not automatic process. You need to set up CRON script on your server to periodically access front-end page(s) with import .ics feeds shortcodes.', 'booking' )
|
561 |
+
, '<br/>' /*
|
562 |
+
'<br/><em>(<strong><a href="https://www.airbnb.com/help/article/99/how-do-i-sync-my-airbnb-calendar-with-another-calendar" target="_blank">Airbnb</a></strong>, '
|
563 |
+
. '<strong><a href="https://partnersupport.booking.com/hc/en-us/articles/213424709-How-do-I-export-my-calendar-" target="_blank">Booking.com</a></strong>, '
|
564 |
+
. '<strong><a href="https://help.homeaway.com/articles/How-do-I-export-my-calendar-data-to-a-Google-calendar" target="_blank">HomeAway</a></strong>, '
|
565 |
+
. '<strong><a href="https://rentalsupport.tripadvisor.com/articles/FAQ/noc-How-does-calendar-sync-work" target="_blank">TripAdvisor</a></strong>, '
|
566 |
+
. '<strong><a href="https://help.vrbo.com/articles/How-do-I-export-my-calendar-data-to-a-Google-calendar" target="_blank">VRBO</a></strong>, '
|
567 |
+
. '<strong><a href="https://helpcenter.flipkey.com/articles/FAQ/noc-How-does-calendar-sync-work" target="_blank">FlipKey</a></strong> '
|
568 |
+
. str_replace( array( '.ics', 'iCalendar' ), array( '<strong>.ics</strong>', '<strong>iCalendar</strong>' ),
|
569 |
+
__( 'and any other calendar that uses .ics format', 'booking' )
|
570 |
+
)
|
571 |
+
. ')</em>.<br/>' */
|
572 |
+
);
|
573 |
+
$message_ics = str_replace( array( '.ics', 'iCalendar' , 'CRON'), array( '<strong>.ics</strong>', '<strong>iCalendar</strong>' , '<a target="_blank" href="https://wpbookingcalendar.com/faq/cron-script/"><strong>CRON</strong></a>' ), $message_ics );
|
574 |
+
echo $message_ics;
|
575 |
+
?>
|
576 |
+
</div>
|
577 |
<h4 style="font-size:1.1em;">
|
578 |
<?php
|
579 |
$message_ics = sprintf( __( 'How to start import of .ics feeds (files)?', 'booking' ) );
|
599 |
$message_ics = sprintf( __( 'Using such shortcodes in pages give a great flexibility to import from different .ics feeds (sources) into the same resource.%sAlso its possible to define different CRON parameters for accessing such different pages with different time intervals.', 'booking' )
|
600 |
, '<br/>'
|
601 |
);
|
602 |
+
$message_ics = str_replace( array( '.ics', 'CRON' ), array( '<strong>.ics</strong>', '<a target="_blank" href="https://wpbookingcalendar.com/faq/cron-script/"><strong>CRON</strong></a>' ), $message_ics );
|
603 |
echo $message_ics;
|
604 |
?>
|
605 |
</div>
|
615 |
$message_ics = sprintf( __( 'If you have inserted import shortcodes from %s, then you can configure your CRON for periodically access these pages and import .ics feeds.', 'booking' )
|
616 |
, '<a target="_blank" href="https://wordpress.org/plugins/booking-manager/"><strong>Booking Manager</strong></a> <code>[booking-manager-import ...]</code>'
|
617 |
);
|
618 |
+
$message_ics = str_replace( array( '.ics', 'CRON' ), array( '<strong>.ics</strong>', '<a target="_blank" href="https://wpbookingcalendar.com/faq/cron-script/"><strong>CRON</strong></a>' ), $message_ics );
|
619 |
echo $message_ics;
|
620 |
?>
|
621 |
</li>
|
core/admin/wpbc-class-listing.php
CHANGED
@@ -259,7 +259,7 @@ class WPBC_Booking_Listing_Table {
|
|
259 |
, array()
|
260 |
, $row_data['id']
|
261 |
, $row_data['is_approved']
|
262 |
-
, $row_data['form_show']
|
263 |
, $row_data['resource_name']
|
264 |
, $row_data['is_paid']
|
265 |
, $row_data['pay_print_status']
|
@@ -336,6 +336,7 @@ class WPBC_Booking_Listing_Table {
|
|
336 |
// Data
|
337 |
?><div class="wpbc-listing-collumn col-sm-<?php echo ( $is_free ) ? '5' : '6'; ?> col-xs-12 wpbc-text-justify field-content wpbc_column_4"> <?php //FixIn: 7.1.2.5 ?>
|
338 |
<?php echo $row_data['form_show']; ?>
|
|
|
339 |
</div><?php
|
340 |
|
341 |
//Dates
|
259 |
, array()
|
260 |
, $row_data['id']
|
261 |
, $row_data['is_approved']
|
262 |
+
, $row_data['form_show'] . ( ! empty($row_data['remark'] ) ? ( "<br/>" . $row_data['remark'] ) : '' ) //FixIn: 8.4.2.2
|
263 |
, $row_data['resource_name']
|
264 |
, $row_data['is_paid']
|
265 |
, $row_data['pay_print_status']
|
336 |
// Data
|
337 |
?><div class="wpbc-listing-collumn col-sm-<?php echo ( $is_free ) ? '5' : '6'; ?> col-xs-12 wpbc-text-justify field-content wpbc_column_4"> <?php //FixIn: 7.1.2.5 ?>
|
338 |
<?php echo $row_data['form_show']; ?>
|
339 |
+
<?php // echo ( ! empty($row_data['remark'] ) ? ( "<br/>" . $row_data['remark'] ) : '' ); //FixIn: 8.4.2.2 // Its will add the Notes section to the listing at Booking Listing page?>
|
340 |
</div><?php
|
341 |
|
342 |
//Dates
|
core/admin/wpbc-class-timeline.php
CHANGED
@@ -1491,7 +1491,7 @@ class WPBC_Timeline {
|
|
1491 |
// if the booking take for the several days, so then do not show title in the other days
|
1492 |
$my_bk_info = $this->wpbc_get_booking_info_4_tooltip( $bk_id, $bookings, $booking_types, $title_in_day, $title, $title_hint );
|
1493 |
|
1494 |
-
$title_in_day = $my_bk_info[0];
|
1495 |
$title = $my_bk_info[1];
|
1496 |
$title_hint = $my_bk_info[2];
|
1497 |
$is_approved = $my_bk_info[3];
|
@@ -1604,7 +1604,7 @@ class WPBC_Timeline {
|
|
1604 |
|
1605 |
$my_bk_info = $this->wpbc_get_booking_info_4_tooltip( $bk_id, $bookings, $booking_types, $title_in_day, $title, $title_hint );
|
1606 |
|
1607 |
-
$title_in_day = $my_bk_info[0];
|
1608 |
$title = $my_bk_info[1];
|
1609 |
$title_hint = $my_bk_info[2];
|
1610 |
$is_approved = $my_bk_info[3];
|
@@ -2157,6 +2157,12 @@ class WPBC_Timeline {
|
|
2157 |
}
|
2158 |
$header_title .= '<div class=\'popover-title-id\' > ID: ' . $bk_id . '</div>'; // ID
|
2159 |
|
|
|
|
|
|
|
|
|
|
|
|
|
2160 |
// Buttons
|
2161 |
$header_title .= '<div class=\'control-group timeline_info_bk_actionsbar_' . $bk_id . '\' >';
|
2162 |
$is_can = true; //current_user_can( 'edit_posts' );
|
1491 |
// if the booking take for the several days, so then do not show title in the other days
|
1492 |
$my_bk_info = $this->wpbc_get_booking_info_4_tooltip( $bk_id, $bookings, $booking_types, $title_in_day, $title, $title_hint );
|
1493 |
|
1494 |
+
$title_in_day = htmlspecialchars_decode( $my_bk_info[0] ); //FixIn: 8.4.2.8
|
1495 |
$title = $my_bk_info[1];
|
1496 |
$title_hint = $my_bk_info[2];
|
1497 |
$is_approved = $my_bk_info[3];
|
1604 |
|
1605 |
$my_bk_info = $this->wpbc_get_booking_info_4_tooltip( $bk_id, $bookings, $booking_types, $title_in_day, $title, $title_hint );
|
1606 |
|
1607 |
+
$title_in_day = htmlspecialchars_decode( $my_bk_info[0] ); //FixIn: 8.4.2.8
|
1608 |
$title = $my_bk_info[1];
|
1609 |
$title_hint = $my_bk_info[2];
|
1610 |
$is_approved = $my_bk_info[3];
|
2157 |
}
|
2158 |
$header_title .= '<div class=\'popover-title-id\' > ID: ' . $bk_id . '</div>'; // ID
|
2159 |
|
2160 |
+
//$header_title .= '<div class=\'popover-title-id\' > ' .
|
2161 |
+
//(! empty($bookings[$bk_id]->form_data['_all_fields_']['name']) ? $bookings[$bk_id]->form_data['_all_fields_']['name'] : '' ) . ' '
|
2162 |
+
//. (! empty($bookings[$bk_id]->form_data['_all_fields_']['secondname']) ? $bookings[$bk_id]->form_data['_all_fields_']['secondname'] : '' )
|
2163 |
+
//. '</div>'; // ID
|
2164 |
+
|
2165 |
+
|
2166 |
// Buttons
|
2167 |
$header_title .= '<div class=\'control-group timeline_info_bk_actionsbar_' . $bk_id . '\' >';
|
2168 |
$is_can = true; //current_user_can( 'edit_posts' );
|
core/admin/wpbc-toolbar-tiny.php
CHANGED
@@ -68,7 +68,8 @@ class WPBC_TinyMCE_Buttons {
|
|
68 |
else add_filter( 'mce_buttons_' . $this->settings['tiny_btn_row'] , array( $this, 'add_tiny_button' ) );
|
69 |
|
70 |
// Add the old style button to the non-TinyMCE editor views
|
71 |
-
|
|
|
72 |
add_action( 'edit_page_form', array( $this, 'add_html_button' ) );
|
73 |
|
74 |
add_action( 'admin_head', array( $this, 'insert_button') );
|
68 |
else add_filter( 'mce_buttons_' . $this->settings['tiny_btn_row'] , array( $this, 'add_tiny_button' ) );
|
69 |
|
70 |
// Add the old style button to the non-TinyMCE editor views
|
71 |
+
//Fix: 8.4.2.10 - compatibility with Gutenberg 4.1- 4.3 ( or newer ) at edit post page.
|
72 |
+
//add_action( 'edit_form_advanced', array( $this, 'add_html_button' ) ); // Fires after 'normal' context meta boxes have been output
|
73 |
add_action( 'edit_page_form', array( $this, 'add_html_button' ) );
|
74 |
|
75 |
add_action( 'admin_head', array( $this, 'insert_button') );
|
core/any/css/admin-support.css
CHANGED
@@ -436,10 +436,10 @@ html[xmlns] .clearfix-height.hidden_items {
|
|
436 |
/* Hack to fix checkbox height in Firefox, otherwise sometimes, there exist weird artefact */
|
437 |
@-moz-document url-prefix() {
|
438 |
.wpbc_page input[type='checkbox'] {
|
439 |
-
height: auto
|
440 |
}
|
441 |
.wpbc_page input[type='radio'] {
|
442 |
-
height: auto
|
443 |
/*height: 32px;*/
|
444 |
}
|
445 |
}
|
436 |
/* Hack to fix checkbox height in Firefox, otherwise sometimes, there exist weird artefact */
|
437 |
@-moz-document url-prefix() {
|
438 |
.wpbc_page input[type='checkbox'] {
|
439 |
+
/*height: auto;*/ /* FixIn: 8.4.2.6 */
|
440 |
}
|
441 |
.wpbc_page input[type='radio'] {
|
442 |
+
/*height: auto;*/ /* FixIn: 8.4.2.6 */
|
443 |
/*height: 32px;*/
|
444 |
}
|
445 |
}
|
core/lib/wpbc-booking-new.php
CHANGED
@@ -238,12 +238,14 @@ function wpdev_bk_insert_new_booking() {
|
|
238 |
// )
|
239 |
//
|
240 |
function wpbc_add_new_booking( $params , $is_edit_booking = false ){
|
241 |
-
|
|
|
|
|
242 |
if ( $is_edit_booking !== false ) { // Edit booking
|
243 |
|
244 |
$booking_id = $is_edit_booking['booking_id'];
|
245 |
$bktype = $is_edit_booking['booking_type'];
|
246 |
-
|
247 |
} else { // New booking
|
248 |
if (! isset($params[ "bktype" ]))
|
249 |
return false; // Error: Unknown booking resources
|
@@ -260,8 +262,21 @@ function wpbc_add_new_booking( $params , $is_edit_booking = false ){
|
|
260 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
261 |
global $wpdb;
|
262 |
|
263 |
-
$formdata = escape_any_xss( $params[ "form" ] );
|
|
|
|
|
|
|
264 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
265 |
$my_modification_date = "'" . date_i18n( 'Y-m-d H:i:s' ) ."'" ; // Localize booking modification date
|
266 |
|
267 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
@@ -334,8 +349,11 @@ function wpbc_add_new_booking( $params , $is_edit_booking = false ){
|
|
334 |
$additional_fields = ", sync_gid" ;
|
335 |
$additional_fields_vlaues = ", '" . wpbc_clean_parameter($params["sync_gid"]) . "'" ;
|
336 |
}
|
337 |
-
|
338 |
-
|
|
|
|
|
|
|
339 |
|
340 |
////////////////////////////////////////////////////////////////////////////
|
341 |
// Add new booking
|
@@ -367,7 +385,7 @@ function wpbc_add_new_booking( $params , $is_edit_booking = false ){
|
|
367 |
if ( count($slct_sql_results) > 0 ) {
|
368 |
$is_approved_dates = $slct_sql_results[0]->approved;
|
369 |
}
|
370 |
-
|
371 |
$delete_sql = "DELETE FROM {$wpdb->prefix}bookingdates WHERE booking_id IN ({$booking_id})";
|
372 |
if ( false === $wpdb->query( $delete_sql ) ){
|
373 |
?> <script type="text/javascript"> if ( jQuery('#submiting<?php echo $bktype; ?>' ).length ) { document.getElementById('submiting<?php echo $bktype; ?>').innerHTML = '<div style="height:20px;width:100%;text-align:center;margin:15px auto;"><?php debuge_error('Error during updating exist booking for deleting dates in DB' ,__FILE__,__LINE__); ?></div>'; }</script> <?php
|
@@ -398,7 +416,10 @@ function wpbc_add_new_booking( $params , $is_edit_booking = false ){
|
|
398 |
else $is_send_emeils = 1;
|
399 |
|
400 |
|
401 |
-
|
|
|
|
|
|
|
402 |
|
403 |
if ( $is_send_emeils != 0 ) {
|
404 |
// wpbc_send_email_new_REPLACED( $booking_id, $bktype, $formdata ) ; // Old Sending emails.
|
238 |
// )
|
239 |
//
|
240 |
function wpbc_add_new_booking( $params , $is_edit_booking = false ){
|
241 |
+
|
242 |
+
$is_duplicate_booking = false; //FixIn: 8.4.2.9
|
243 |
+
|
244 |
if ( $is_edit_booking !== false ) { // Edit booking
|
245 |
|
246 |
$booking_id = $is_edit_booking['booking_id'];
|
247 |
$bktype = $is_edit_booking['booking_type'];
|
248 |
+
|
249 |
} else { // New booking
|
250 |
if (! isset($params[ "bktype" ]))
|
251 |
return false; // Error: Unknown booking resources
|
262 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
263 |
global $wpdb;
|
264 |
|
265 |
+
$formdata = escape_any_xss( $params[ "form" ] );
|
266 |
+
|
267 |
+
//FixIn: 8.4.2.9
|
268 |
+
if ( $is_edit_booking ) {
|
269 |
|
270 |
+
$formdata_array = explode( '~', $formdata );
|
271 |
+
$formdata_array_count = count( $formdata_array );
|
272 |
+
for ( $i = 0; $i < $formdata_array_count; $i ++ ) {
|
273 |
+
$elemnts = explode( '^', $formdata_array[ $i ] );
|
274 |
+
if ( ( 'wpbc_other_action' == $elemnts[1] ) && ( 'duplicate_booking' == $elemnts[2] ) ) {
|
275 |
+
$is_duplicate_booking = true;
|
276 |
+
break;
|
277 |
+
}
|
278 |
+
}
|
279 |
+
}
|
280 |
$my_modification_date = "'" . date_i18n( 'Y-m-d H:i:s' ) ."'" ; // Localize booking modification date
|
281 |
|
282 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
349 |
$additional_fields = ", sync_gid" ;
|
350 |
$additional_fields_vlaues = ", '" . wpbc_clean_parameter($params["sync_gid"]) . "'" ;
|
351 |
}
|
352 |
+
|
353 |
+
//FixIn: 8.4.2.9
|
354 |
+
if ( ( $is_edit_booking === false )
|
355 |
+
|| ( true === $is_duplicate_booking )
|
356 |
+
) {
|
357 |
|
358 |
////////////////////////////////////////////////////////////////////////////
|
359 |
// Add new booking
|
385 |
if ( count($slct_sql_results) > 0 ) {
|
386 |
$is_approved_dates = $slct_sql_results[0]->approved;
|
387 |
}
|
388 |
+
//$is_approved_dates = '0';
|
389 |
$delete_sql = "DELETE FROM {$wpdb->prefix}bookingdates WHERE booking_id IN ({$booking_id})";
|
390 |
if ( false === $wpdb->query( $delete_sql ) ){
|
391 |
?> <script type="text/javascript"> if ( jQuery('#submiting<?php echo $bktype; ?>' ).length ) { document.getElementById('submiting<?php echo $bktype; ?>').innerHTML = '<div style="height:20px;width:100%;text-align:center;margin:15px auto;"><?php debuge_error('Error during updating exist booking for deleting dates in DB' ,__FILE__,__LINE__); ?></div>'; }</script> <?php
|
416 |
else $is_send_emeils = 1;
|
417 |
|
418 |
|
419 |
+
//FixIn: 8.4.2.9
|
420 |
+
if ( ( $is_edit_booking === false )
|
421 |
+
|| ( true === $is_duplicate_booking )
|
422 |
+
) {
|
423 |
|
424 |
if ( $is_send_emeils != 0 ) {
|
425 |
// wpbc_send_email_new_REPLACED( $booking_id, $bktype, $formdata ) ; // Old Sending emails.
|
core/lib/wpbc_all_translations.php
CHANGED
@@ -99,6 +99,8 @@
|
|
99 |
$wpbc_all_translations[] = __('Check this box if you want to show help hints on the admin panel.', 'booking');
|
100 |
$wpbc_all_translations[] = __('Allow unlimited bookings per same day(s)', 'booking');
|
101 |
$wpbc_all_translations[] = __('Check this box, if you want to %sset any days as available%s in calendar. Your visitors will be able to make %sunlimited bookings per same date(s) in calendar and do not see any booked date(s)%s of other visitors.', 'booking');
|
|
|
|
|
102 |
$wpbc_all_translations[] = __('Checking to prevent double booking, during submitting booking', 'booking');
|
103 |
$wpbc_all_translations[] = __('Check this box, if you want to %sre-check if the selected dates available during submitting booking%s.', 'booking');
|
104 |
$wpbc_all_translations[] = __('This feature useful to prevent double booking of the same date(s) or time(s), if several visitors try to book the same date(s) in same calendar during the same time.', 'booking');
|
@@ -759,8 +761,6 @@
|
|
759 |
$wpbc_all_translations[] = __('Check this box to display the available number of booking resources with a tooltip, when mouse hovers over each day on the calendar(s).', 'booking');
|
760 |
$wpbc_all_translations[] = __('Availability Title', 'booking');
|
761 |
$wpbc_all_translations[] = __('Type your %savailability%s description', 'booking');
|
762 |
-
$wpbc_all_translations[] = __('Use pending days as available', 'booking');
|
763 |
-
$wpbc_all_translations[] = __('Check this box if you want to show the pending days as available in calendars', 'booking');
|
764 |
$wpbc_all_translations[] = __('Auto-cancel bookings', 'booking');
|
765 |
$wpbc_all_translations[] = __('Auto Cancel all pending bookings for the specific date(s), if some booking is approved for these date(s)', 'booking');
|
766 |
$wpbc_all_translations[] = __('Warning!!! After you approved the specific booking(s), all your pending bookings of the same booking resource as an approved booking for the dates, which are intersect with dates of approved booking, will be automatically canceled!', 'booking');
|
@@ -1719,4 +1719,42 @@
|
|
1719 |
$wpbc_all_translations[] = __('Set Early / Late Booking Amount', 'booking');
|
1720 |
$wpbc_all_translations[] = __('Set Early / Late booking discount', 'booking');
|
1721 |
$wpbc_all_translations[] = __('Early / Late', 'booking');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1722 |
}
|
99 |
$wpbc_all_translations[] = __('Check this box if you want to show help hints on the admin panel.', 'booking');
|
100 |
$wpbc_all_translations[] = __('Allow unlimited bookings per same day(s)', 'booking');
|
101 |
$wpbc_all_translations[] = __('Check this box, if you want to %sset any days as available%s in calendar. Your visitors will be able to make %sunlimited bookings per same date(s) in calendar and do not see any booked date(s)%s of other visitors.', 'booking');
|
102 |
+
$wpbc_all_translations[] = __('Use pending days as available', 'booking');
|
103 |
+
$wpbc_all_translations[] = __('Check this box if you want to show the pending days as available in calendars', 'booking');
|
104 |
$wpbc_all_translations[] = __('Checking to prevent double booking, during submitting booking', 'booking');
|
105 |
$wpbc_all_translations[] = __('Check this box, if you want to %sre-check if the selected dates available during submitting booking%s.', 'booking');
|
106 |
$wpbc_all_translations[] = __('This feature useful to prevent double booking of the same date(s) or time(s), if several visitors try to book the same date(s) in same calendar during the same time.', 'booking');
|
761 |
$wpbc_all_translations[] = __('Check this box to display the available number of booking resources with a tooltip, when mouse hovers over each day on the calendar(s).', 'booking');
|
762 |
$wpbc_all_translations[] = __('Availability Title', 'booking');
|
763 |
$wpbc_all_translations[] = __('Type your %savailability%s description', 'booking');
|
|
|
|
|
764 |
$wpbc_all_translations[] = __('Auto-cancel bookings', 'booking');
|
765 |
$wpbc_all_translations[] = __('Auto Cancel all pending bookings for the specific date(s), if some booking is approved for these date(s)', 'booking');
|
766 |
$wpbc_all_translations[] = __('Warning!!! After you approved the specific booking(s), all your pending bookings of the same booking resource as an approved booking for the dates, which are intersect with dates of approved booking, will be automatically canceled!', 'booking');
|
1719 |
$wpbc_all_translations[] = __('Set Early / Late Booking Amount', 'booking');
|
1720 |
$wpbc_all_translations[] = __('Set Early / Late booking discount', 'booking');
|
1721 |
$wpbc_all_translations[] = __('Early / Late', 'booking');
|
1722 |
+
$wpbc_all_translations[] = __('Show a booking form, availability calendar or other elements from Booking Calendar plugin.', 'booking');
|
1723 |
+
$wpbc_all_translations[] = __('Configure Booking Calendar Block', 'booking');
|
1724 |
+
$wpbc_all_translations[] = __('Click to Preview Block', 'booking');
|
1725 |
+
$wpbc_all_translations[] = __('Visible months number', 'booking');
|
1726 |
+
$wpbc_all_translations[] = __('Start month', 'booking');
|
1727 |
+
$wpbc_all_translations[] = __('Custom booking form', 'booking');
|
1728 |
+
$wpbc_all_translations[] = __('Unavailable dates from other booking resources', 'booking');
|
1729 |
+
$wpbc_all_translations[] = __('Availability Calendar', 'booking');
|
1730 |
+
$wpbc_all_translations[] = __('Timeline', 'booking');
|
1731 |
+
$wpbc_all_translations[] = __('Booking resource(s)', 'booking');
|
1732 |
+
$wpbc_all_translations[] = __('Show from/to', 'booking');
|
1733 |
+
$wpbc_all_translations[] = __('All booking resources', 'booking');
|
1734 |
+
$wpbc_all_translations[] = __('Selection of Resources', 'booking');
|
1735 |
+
$wpbc_all_translations[] = __('Selected booking resource (by default)', 'booking');
|
1736 |
+
$wpbc_all_translations[] = __('Title of first option in list', 'booking');
|
1737 |
+
$wpbc_all_translations[] = __('Custom booking form for all booking resources', 'booking');
|
1738 |
+
$wpbc_all_translations[] = __('Booking Form (without calendar)', 'booking');
|
1739 |
+
$wpbc_all_translations[] = __('Date for submit booking', 'booking');
|
1740 |
+
$wpbc_all_translations[] = __('Search Availability form', 'booking');
|
1741 |
+
$wpbc_all_translations[] = __('Show search results on other page', 'booking');
|
1742 |
+
$wpbc_all_translations[] = __('Search results page must have this shortcode', 'booking');
|
1743 |
+
$wpbc_all_translations[] = __('Show search results in the same page', 'booking');
|
1744 |
+
$wpbc_all_translations[] = __('Search Results Title', 'booking');
|
1745 |
+
$wpbc_all_translations[] = __('Title, if no search results', 'booking');
|
1746 |
+
$wpbc_all_translations[] = __('Search in booking resources of WP users', 'booking');
|
1747 |
+
$wpbc_all_translations[] = __('Show search results on this page, after redirection from search form at other page.', 'booking');
|
1748 |
+
$wpbc_all_translations[] = __('System Block', 'booking');
|
1749 |
+
$wpbc_all_translations[] = __('Booking Calendar Editing', 'booking');
|
1750 |
+
$wpbc_all_translations[] = __('This block required for ability to edit, cancel the booking by visitor, who made the booking, or for ability to show payment form, after sending payment request.', 'booking');
|
1751 |
+
$wpbc_all_translations[] = __('Link to this page must be defined', 'booking');
|
1752 |
+
$wpbc_all_translations[] = __('at this option', 'booking');
|
1753 |
+
$wpbc_all_translations[] = __('You can not open this page directly. Please, use links in ', 'booking');
|
1754 |
+
$wpbc_all_translations[] = __('If you open this page directly, then you will see this error', 'booking');
|
1755 |
+
$wpbc_all_translations[] = __('Customer Bookings Listing', 'booking');
|
1756 |
+
$wpbc_all_translations[] = __('Visitors of your website, can view previous (own) bookings, by clicking on secret link in email, which is sending after booking created.', 'booking');
|
1757 |
+
$wpbc_all_translations[] = __('Show Info of Booking Resource', 'booking');
|
1758 |
+
$wpbc_all_translations[] = __('Click to edit', 'booking');
|
1759 |
+
$wpbc_all_translations[] = __('This is not real preview. Its configuration block of "Booking Calendar".', 'booking');
|
1760 |
}
|
core/lib/wpdev-booking-widget.php
CHANGED
@@ -44,7 +44,7 @@ class BookingWidget extends WP_Widget {
|
|
44 |
|
45 |
if ($booking_widget_title != '') echo $before_title . htmlspecialchars_decode($booking_widget_title) . $after_title;
|
46 |
|
47 |
-
echo "<div class='widget_wpdev_booking months_num_in_row_1'>";
|
48 |
if ($booking_widget_show == 'booking_form') {
|
49 |
// do_action('wpdev_bk_add_form', $booking_widget_type , $booking_widget_calendar_count);
|
50 |
$my_booking_form_name = apply_bk_filter('wpbc_get_default_custom_form', 'standard', $booking_widget_type);
|
44 |
|
45 |
if ($booking_widget_title != '') echo $before_title . htmlspecialchars_decode($booking_widget_title) . $after_title;
|
46 |
|
47 |
+
echo "<div class='widget_wpdev_booking wpdevelop months_num_in_row_1'>"; //FixIn: 8.4.2.3
|
48 |
if ($booking_widget_show == 'booking_form') {
|
49 |
// do_action('wpdev_bk_add_form', $booking_widget_type , $booking_widget_calendar_count);
|
50 |
$my_booking_form_name = apply_bk_filter('wpbc_get_default_custom_form', 'standard', $booking_widget_type);
|
core/wpbc-constants.php
CHANGED
@@ -26,8 +26,8 @@ if ( ! defined( 'WP_BK_CHECK_OUT_MINUS_DAY_SEARCH' ) ) { define( 'WP_BK_C
|
|
26 |
////////////////////////////////////////////////////////////
|
27 |
// SYSTEM CONSTANTS //////////////
|
28 |
////////////////////////////////////////////////////////////
|
29 |
-
if ( ! defined( 'WP_BK_VERSION_NUM' ) ) { define( 'WP_BK_VERSION_NUM', '8.4' ); }
|
30 |
-
if ( ! defined( 'WP_BK_MINOR_UPDATE' ) ) { define( 'WP_BK_MINOR_UPDATE',
|
31 |
if ( ! defined( 'WP_BK_RESPONSE' ) ) { define( 'WP_BK_RESPONSE', false ); }
|
32 |
if ( ! defined( 'WP_BK_BETA_DATA_FILL' ) ) { define( 'WP_BK_BETA_DATA_FILL', 0 ); } // Set 0 for no filling or 2 for 241 bookings or more for more
|
33 |
|
26 |
////////////////////////////////////////////////////////////
|
27 |
// SYSTEM CONSTANTS //////////////
|
28 |
////////////////////////////////////////////////////////////
|
29 |
+
if ( ! defined( 'WP_BK_VERSION_NUM' ) ) { define( 'WP_BK_VERSION_NUM', '8.4.2' ); }
|
30 |
+
if ( ! defined( 'WP_BK_MINOR_UPDATE' ) ) { define( 'WP_BK_MINOR_UPDATE', true ); }
|
31 |
if ( ! defined( 'WP_BK_RESPONSE' ) ) { define( 'WP_BK_RESPONSE', false ); }
|
32 |
if ( ! defined( 'WP_BK_BETA_DATA_FILL' ) ) { define( 'WP_BK_BETA_DATA_FILL', 0 ); } // Set 0 for no filling or 2 for 241 bookings or more for more
|
33 |
|
core/wpbc-dates.php
CHANGED
@@ -298,7 +298,7 @@ if ( false ) //2018-04-21 - if use times in paid so comment it
|
|
298 |
|
299 |
|
300 |
/**
|
301 |
-
|
302 |
*
|
303 |
* @param string $dates_in_sql_format - '2015-02-29 00:00:00, 2015-02-30 00:00:00'
|
304 |
* @return string - Formated Dates to show for visitor
|
@@ -373,6 +373,30 @@ function wpbc_time_slot_in_format( $timeslot, $time_format = false ){
|
|
373 |
}
|
374 |
|
375 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
376 |
/**
|
377 |
* Get dates from DB of specific booking
|
378 |
*
|
298 |
|
299 |
|
300 |
/**
|
301 |
+
* Change Dates format from SQL Dates to predefined settings Date/Time format
|
302 |
*
|
303 |
* @param string $dates_in_sql_format - '2015-02-29 00:00:00, 2015-02-30 00:00:00'
|
304 |
* @return string - Formated Dates to show for visitor
|
373 |
}
|
374 |
|
375 |
|
376 |
+
//FixIn: 8.4.2.11
|
377 |
+
/**
|
378 |
+
* Convert timeslot "10:00" to specfic timeformat, like "10:00 AM"
|
379 |
+
* @param string $timeslot - "10:00"
|
380 |
+
* @param string $time_format = "g:i A"
|
381 |
+
*/
|
382 |
+
function wpbc_time_in_format( $timeslot, $time_format = false ){
|
383 |
+
|
384 |
+
if ( empty( $time_format ) ) {
|
385 |
+
$time_format = get_bk_option( 'booking_time_format' ); // get from Booking Calendar
|
386 |
+
if ( empty( $time_format ) ) {
|
387 |
+
$time_format = get_option( 'time_format' ); // Get WordPress default
|
388 |
+
}
|
389 |
+
}
|
390 |
+
|
391 |
+
$timeslot = trim( $timeslot );
|
392 |
+
$s_tm = explode( ':', $timeslot );
|
393 |
+
|
394 |
+
$s_tm = date_i18n( $time_format, mktime( intval( $s_tm[0] ), intval( $s_tm[1] ) ) );
|
395 |
+
|
396 |
+
return $s_tm;
|
397 |
+
}
|
398 |
+
|
399 |
+
|
400 |
/**
|
401 |
* Get dates from DB of specific booking
|
402 |
*
|
core/wpbc-functions.php
CHANGED
@@ -434,6 +434,18 @@ function wpbc_replace_params_for_booking_func( $replace, $booking_id, $bktype, $
|
|
434 |
if ( ! isset( $replace['modification_seconds'] ) ) {
|
435 |
$replace['modification_seconds'] = date_i18n( 's', strtotime( $modification_date ) );
|
436 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
437 |
// $booking_id
|
438 |
|
439 |
//FixIn: 8.2.1.25
|
@@ -446,7 +458,7 @@ function wpbc_replace_params_for_booking_func( $replace, $booking_id, $bktype, $
|
|
446 |
}
|
447 |
}
|
448 |
}
|
449 |
-
|
450 |
return $replace;
|
451 |
}
|
452 |
add_filter( 'wpbc_replace_params_for_booking', 'wpbc_replace_params_for_booking_func', 10, 4 );
|
@@ -990,11 +1002,11 @@ $is_old = false;
|
|
990 |
if ( ($type_name == 'visitors') || ($type == 'visitors') ) $visitors_count = $value;
|
991 |
|
992 |
//FixIn: TimeFreeGenerator //FixIn: 8.2.1.26 - only for Booking Calendar Free version show times in AM/PM fomrat or other depend from time format at the WordPress > Settings > General page.
|
993 |
-
if ( ! class_exists('wpdev_bk_personal') ) {
|
994 |
-
if ( ( $type_name == 'rangetime' ) || ( $type == 'rangetime' ) ) {
|
995 |
-
$value = wpbc_time_slot_in_format( $value );
|
996 |
-
}
|
997 |
-
}
|
998 |
|
999 |
if ($type == 'checkbox') {
|
1000 |
//debuge($type_name , $type, $element_name, $value);
|
@@ -1040,8 +1052,19 @@ $is_old = false;
|
|
1040 |
|
1041 |
$check_box_selected_items[$type_name] = $current_checkbox_value;
|
1042 |
} else {
|
1043 |
-
|
1044 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1045 |
}
|
1046 |
$is_skip_replace = false; //FixIn: 7.0.1.45
|
1047 |
if ( ( $type == 'radio' ) && empty( $value ) )
|
@@ -1050,7 +1073,7 @@ $is_old = false;
|
|
1050 |
$booking_form_show = str_replace( '['. $type_name .']', $value ,$booking_form_show);
|
1051 |
}
|
1052 |
|
1053 |
-
|
1054 |
if (! isset($all_fields_array_without_types[ 'booking_resource_id' ])) $all_fields_array_without_types[ 'booking_resource_id' ] = $bktype;
|
1055 |
if (! isset($all_fields_array_without_types[ 'resource_id' ])) $all_fields_array_without_types[ 'resource_id' ] = $bktype;
|
1056 |
if (! isset($all_fields_array_without_types[ 'type_id' ])) $all_fields_array_without_types[ 'type_id' ] = $bktype;
|
434 |
if ( ! isset( $replace['modification_seconds'] ) ) {
|
435 |
$replace['modification_seconds'] = date_i18n( 's', strtotime( $modification_date ) );
|
436 |
}
|
437 |
+
|
438 |
+
//FixIn: 8.4.2.11
|
439 |
+
if ( isset( $replace['rangetime'] ) ) {
|
440 |
+
$replace['rangetime'] = wpbc_time_slot_in_format( $replace['rangetime'] );
|
441 |
+
}
|
442 |
+
if ( isset( $replace['starttime'] ) ) {
|
443 |
+
$replace['starttime'] = wpbc_time_in_format( $replace['starttime'] );
|
444 |
+
}
|
445 |
+
if ( isset( $replace['endtime'] ) ) {
|
446 |
+
$replace['endtime'] = wpbc_time_in_format( $replace['endtime'] );
|
447 |
+
}
|
448 |
+
|
449 |
// $booking_id
|
450 |
|
451 |
//FixIn: 8.2.1.25
|
458 |
}
|
459 |
}
|
460 |
}
|
461 |
+
//debuge($replace);
|
462 |
return $replace;
|
463 |
}
|
464 |
add_filter( 'wpbc_replace_params_for_booking', 'wpbc_replace_params_for_booking_func', 10, 4 );
|
1002 |
if ( ($type_name == 'visitors') || ($type == 'visitors') ) $visitors_count = $value;
|
1003 |
|
1004 |
//FixIn: TimeFreeGenerator //FixIn: 8.2.1.26 - only for Booking Calendar Free version show times in AM/PM fomrat or other depend from time format at the WordPress > Settings > General page.
|
1005 |
+
// if ( ! class_exists('wpdev_bk_personal') ) { //FixIn: 8.4.2.7
|
1006 |
+
// if ( ( $type_name == 'rangetime' ) || ( $type == 'rangetime' ) ) { //FixIn: 8.4.2.11
|
1007 |
+
// $value = wpbc_time_slot_in_format( $value );
|
1008 |
+
// }
|
1009 |
+
// }
|
1010 |
|
1011 |
if ($type == 'checkbox') {
|
1012 |
//debuge($type_name , $type, $element_name, $value);
|
1052 |
|
1053 |
$check_box_selected_items[$type_name] = $current_checkbox_value;
|
1054 |
} else {
|
1055 |
+
|
1056 |
+
//FixIn: 8.4.2.11
|
1057 |
+
$all_fields_array_without_types[ substr( str_replace('[]','',(string) $element_name), 0 , -1*strlen( $bktype ) ) ] = $value;
|
1058 |
+
/**
|
1059 |
+
['_all_'] => $all_fields_array, CONVERT to " AM/PM "
|
1060 |
+
['_all_fields_'] => $all_fields_array_without_types => in " 24 hour " format - for ability correct calculate Booking > Resources > Advanced cost page.
|
1061 |
+
*/
|
1062 |
+
if ( ( $type_name == 'rangetime' ) || ( $type == 'rangetime' ) ) {
|
1063 |
+
$value = wpbc_time_slot_in_format( $value );
|
1064 |
+
}
|
1065 |
+
$all_fields_array[ str_replace('[]','',(string) $element_name) ] = $value;
|
1066 |
+
//FixIn: 8.4.2.11
|
1067 |
+
|
1068 |
}
|
1069 |
$is_skip_replace = false; //FixIn: 7.0.1.45
|
1070 |
if ( ( $type == 'radio' ) && empty( $value ) )
|
1073 |
$booking_form_show = str_replace( '['. $type_name .']', $value ,$booking_form_show);
|
1074 |
}
|
1075 |
|
1076 |
+
//debuge($all_fields_array,$all_fields_array_without_types);
|
1077 |
if (! isset($all_fields_array_without_types[ 'booking_resource_id' ])) $all_fields_array_without_types[ 'booking_resource_id' ] = $bktype;
|
1078 |
if (! isset($all_fields_array_without_types[ 'resource_id' ])) $all_fields_array_without_types[ 'resource_id' ] = $bktype;
|
1079 |
if (! isset($all_fields_array_without_types[ 'type_id' ])) $all_fields_array_without_types[ 'type_id' ] = $bktype;
|
js/client.js
CHANGED
@@ -578,6 +578,9 @@ function setReservedSelectedDates( bk_type ){
|
|
578 |
// Check fields at form and then send request
|
579 |
function mybooking_submit( submit_form , bk_type, wpdev_active_locale){
|
580 |
|
|
|
|
|
|
|
581 |
|
582 |
//Show message if no selected days
|
583 |
if (document.getElementById('date_booking' + bk_type).value == '') {
|
@@ -965,10 +968,10 @@ function send_ajax_submit(bk_type,formdata,captcha_chalange,user_captcha,is_send
|
|
965 |
|
966 |
// Show Error Message in Booking Form at Front End
|
967 |
function showErrorMessage( element , errorMessage) {
|
968 |
-
|
969 |
-
if(typeof( bk_form_step_click ) == 'function') {
|
970 |
-
|
971 |
-
}
|
972 |
|
973 |
makeScroll( element );
|
974 |
|
@@ -1015,10 +1018,10 @@ function showErrorMessage( element , errorMessage) {
|
|
1015 |
* @param {type} message_type "" | "alert-danger" | "alert-success" | "alert-info"
|
1016 |
*/
|
1017 |
function showMessageUnderElement( element , errorMessage , message_type) {
|
1018 |
-
|
1019 |
-
if(typeof( bk_form_step_click ) == 'function') {
|
1020 |
-
|
1021 |
-
}
|
1022 |
|
1023 |
makeScroll( element );
|
1024 |
|
@@ -1169,3 +1172,164 @@ function wpbc_unselect_all_days( bk_type ){ //FixIn: 8.0.1.2
|
|
1169 |
jQuery.datepick._updateDatepick( inst );
|
1170 |
}
|
1171 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
578 |
// Check fields at form and then send request
|
579 |
function mybooking_submit( submit_form , bk_type, wpdev_active_locale){
|
580 |
|
581 |
+
//FixIn: 8.4.0.2
|
582 |
+
var is_error = wpbc_check_errors_in_booking_form( bk_type );
|
583 |
+
if ( is_error ) { return false; }
|
584 |
|
585 |
//Show message if no selected days
|
586 |
if (document.getElementById('date_booking' + bk_type).value == '') {
|
968 |
|
969 |
// Show Error Message in Booking Form at Front End
|
970 |
function showErrorMessage( element , errorMessage) {
|
971 |
+
//FixIn: 8.4.0.2
|
972 |
+
// if(typeof( bk_form_step_click ) == 'function') {
|
973 |
+
// bk_form_step_click(); // rollback to 1st step, if system will show warning and booking form is using this customization: in the Exmaple #2 here: https://wpbookingcalendar.com/faq/customize-booking-form-for-having-several-steps-of-reservation/
|
974 |
+
// }
|
975 |
|
976 |
makeScroll( element );
|
977 |
|
1018 |
* @param {type} message_type "" | "alert-danger" | "alert-success" | "alert-info"
|
1019 |
*/
|
1020 |
function showMessageUnderElement( element , errorMessage , message_type) {
|
1021 |
+
//FixIn: 8.4.0.2
|
1022 |
+
// if(typeof( bk_form_step_click ) == 'function') {
|
1023 |
+
// bk_form_step_click(); // rollback to 1st step, if system will show warning and booking form is using this customization: in the Exmaple #2 here: https://wpbookingcalendar.com/faq/customize-booking-form-for-having-several-steps-of-reservation/
|
1024 |
+
// }
|
1025 |
|
1026 |
makeScroll( element );
|
1027 |
|
1172 |
jQuery.datepick._updateDatepick( inst );
|
1173 |
}
|
1174 |
}
|
1175 |
+
|
1176 |
+
|
1177 |
+
|
1178 |
+
//FixIn: 8.4.0.2
|
1179 |
+
/**
|
1180 |
+
* Check errors in booking form fields, and show warnings if some errors exist.
|
1181 |
+
* Check errors, like not selected dates or not filled requred form fields, or not correct entering email or phone fields, etc...
|
1182 |
+
*
|
1183 |
+
* @param bk_type int (ID of booking resource)
|
1184 |
+
*/
|
1185 |
+
function wpbc_check_errors_in_booking_form( bk_type ) {
|
1186 |
+
|
1187 |
+
var is_error_in_field = false; // By default all is good - no error
|
1188 |
+
|
1189 |
+
var my_form = jQuery( '#booking_form' + bk_type );
|
1190 |
+
|
1191 |
+
if ( my_form.length ) {
|
1192 |
+
|
1193 |
+
// Pseudo-selector that get form elements <input , <textarea , <select, <button...
|
1194 |
+
my_form.find( ':input' ).each( function( index, el ) {
|
1195 |
+
|
1196 |
+
// Skip some elements
|
1197 |
+
var skip_elements = [ 'hidden', 'button' ];
|
1198 |
+
|
1199 |
+
if ( -1 == skip_elements.indexOf( jQuery( el ).attr( 'type' ) ) ){
|
1200 |
+
|
1201 |
+
// Check Calendar Dates Selection
|
1202 |
+
if ( ( 'date_booking' + bk_type ) == jQuery( el ).attr( 'name' ) ) {
|
1203 |
+
|
1204 |
+
// Show Warning only if the calendar visible ( we are at step with calendar)
|
1205 |
+
if ( ( jQuery( '#calendar_booking4' ).is( ':visible' ) ) && ( '' == jQuery( el ).val() ) ) {
|
1206 |
+
showMessageUnderElement( '#date_booking' + bk_type, message_verif_selectdts, '' );
|
1207 |
+
is_error_in_field = true; // Error
|
1208 |
+
}
|
1209 |
+
}
|
1210 |
+
|
1211 |
+
// Check only visible elements at this step
|
1212 |
+
if ( jQuery( el ).is( ':visible' ) ){
|
1213 |
+
// console.log( '|id, type, val, visible|::', jQuery( el ).attr( 'name' ), '|' + jQuery( el ).attr( 'type' ) + '|', jQuery( el ).val(), jQuery( el ).is( ':visible' ) );
|
1214 |
+
|
1215 |
+
// Is Required
|
1216 |
+
if ( jQuery( el ).hasClass( 'wpdev-validates-as-required' ) ){
|
1217 |
+
|
1218 |
+
// Checkboxes
|
1219 |
+
if ( 'checkbox' == jQuery( el ).attr( 'type' ) ){
|
1220 |
+
|
1221 |
+
if ( !jQuery( el ).is( ':checked' ) ){
|
1222 |
+
showErrorMessage( el, message_verif_requred_for_check_box );
|
1223 |
+
is_error_in_field = true; // Error
|
1224 |
+
}
|
1225 |
+
|
1226 |
+
// Radio boxes
|
1227 |
+
} else if ( 'radio' == jQuery( el ).attr( 'type' ) ){
|
1228 |
+
|
1229 |
+
if ( !jQuery( ':radio[name="' + jQuery( el ).attr( 'name' ) + '"]', my_form ).is( ':checked' ) ){
|
1230 |
+
showErrorMessage( el, message_verif_requred_for_radio_box );
|
1231 |
+
is_error_in_field = true; // Error
|
1232 |
+
}
|
1233 |
+
|
1234 |
+
// Other elements
|
1235 |
+
} else {
|
1236 |
+
|
1237 |
+
var inp_value = jQuery( el ).val();
|
1238 |
+
|
1239 |
+
if ( '' === jQuery.trim( inp_value ) ){
|
1240 |
+
showErrorMessage( el, message_verif_requred );
|
1241 |
+
is_error_in_field = true; // Error
|
1242 |
+
}
|
1243 |
+
}
|
1244 |
+
}
|
1245 |
+
|
1246 |
+
// Validate Email
|
1247 |
+
if ( jQuery( el ).hasClass( 'wpdev-validates-as-email' ) ){
|
1248 |
+
var inp_value = jQuery( el ).val();
|
1249 |
+
inp_value = inp_value.replace( /^\s+|\s+$/gm, '' ); // Trim white space //FixIn: 5.4.5
|
1250 |
+
var reg = /^([A-Za-z0-9_\-\.\+])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,})$/;
|
1251 |
+
if ( (inp_value != '') && (reg.test( inp_value ) == false) ){
|
1252 |
+
showErrorMessage( el, message_verif_emeil );
|
1253 |
+
is_error_in_field = true; // Error
|
1254 |
+
}
|
1255 |
+
}
|
1256 |
+
|
1257 |
+
// Validate For digit entering - for example for - Phone
|
1258 |
+
// <p>Digit Field:<br />[text* dig_field class:validate_as_digit] </p>
|
1259 |
+
// <p>Phone:<br />[text* phone class:validate_digit_8] </p>
|
1260 |
+
|
1261 |
+
var classList = jQuery( el ).attr( 'class' );
|
1262 |
+
|
1263 |
+
if ( classList ){
|
1264 |
+
|
1265 |
+
classList = classList.split( /\s+/ );
|
1266 |
+
|
1267 |
+
jQuery.each( classList, function ( cl_index, cl_item ){
|
1268 |
+
|
1269 |
+
////////////////////////////////////////////////////////////////////////////////////////////
|
1270 |
+
|
1271 |
+
// Validate field value as "Date" [CSS class - 'validate_as_digit']
|
1272 |
+
if ( 'validate_as_date' === cl_item ) {
|
1273 |
+
|
1274 |
+
// Valid values: 09-25-2018, 09/25/2018, 09-25-2018, 31-9-1918 --- m/d/Y, m.d.Y, m-d-Y, d/m/Y, d.m.Y, d-m-Y
|
1275 |
+
var regex = new RegExp( '^[0-3]?\\d{1}[\\/\\.\\-]+[0-3]?\\d{1}[\\/\\.\\-]+[0-2]+\\d{3}$' ); // Check for Date 09/25/2018
|
1276 |
+
var message_verif_phone = 'This field must be valid date like this ' + '09/25/2018';
|
1277 |
+
var inp_value = jQuery( el ).val();
|
1278 |
+
|
1279 |
+
if ( ( inp_value != '' ) && ( regex.test( inp_value ) == false ) ){
|
1280 |
+
showErrorMessage( el, message_verif_phone );
|
1281 |
+
is_error_in_field = true; // Error
|
1282 |
+
}
|
1283 |
+
}
|
1284 |
+
|
1285 |
+
////////////////////////////////////////////////////////////////////////////////////////////
|
1286 |
+
|
1287 |
+
// Validate field value as "DIGIT" [CSS class - 'validate_as_digit']
|
1288 |
+
if ( 'validate_as_digit' === cl_item ) {
|
1289 |
+
|
1290 |
+
var regex = new RegExp( '^[0-9]+\\.?[0-9]*$' ); // Check for digits
|
1291 |
+
var message_verif_phone = 'This field must contain only digits';
|
1292 |
+
var inp_value = jQuery( el ).val();
|
1293 |
+
|
1294 |
+
if ( ( inp_value != '' ) && ( regex.test( inp_value ) == false ) ){
|
1295 |
+
showErrorMessage( el, message_verif_phone );
|
1296 |
+
is_error_in_field = true; // Error
|
1297 |
+
}
|
1298 |
+
}
|
1299 |
+
|
1300 |
+
////////////////////////////////////////////////////////////////////////////////////////////
|
1301 |
+
|
1302 |
+
// Validate field value as "Phone" number or any other valid number wth specific number of digits [CSS class - 'validate_digit_8' || 'validate_digit_10' ]
|
1303 |
+
var is_validate_digit = cl_item.substring( 0, 15 );
|
1304 |
+
|
1305 |
+
// Check if class start with 'validate_digit_'
|
1306 |
+
if ( 'validate_digit_' === is_validate_digit ){
|
1307 |
+
|
1308 |
+
// Get number of digit in class: validate_digit_8 => 8 or validate_digit_10 => 10
|
1309 |
+
var digits_to_check = parseInt( cl_item.substring( 15 ) );
|
1310 |
+
|
1311 |
+
// Check about any errors in
|
1312 |
+
if ( !isNaN( digits_to_check ) ){
|
1313 |
+
|
1314 |
+
var regex = new RegExp( '^\\d{' + digits_to_check + '}$' ); // We was valid it as parseInt - only integer variable - digits_to_check
|
1315 |
+
var message_verif_phone = 'This field must contain ' + digits_to_check + ' digits';
|
1316 |
+
var inp_value = jQuery( el ).val();
|
1317 |
+
|
1318 |
+
if ( ( inp_value != '' ) && ( regex.test( inp_value ) == false ) ){
|
1319 |
+
showErrorMessage( el, message_verif_phone );
|
1320 |
+
is_error_in_field = true; // Error
|
1321 |
+
}
|
1322 |
+
}
|
1323 |
+
}
|
1324 |
+
|
1325 |
+
////////////////////////////////////////////////////////////////////////////////////////////
|
1326 |
+
|
1327 |
+
});
|
1328 |
+
}
|
1329 |
+
}
|
1330 |
+
}
|
1331 |
+
} );
|
1332 |
+
|
1333 |
+
}
|
1334 |
+
return is_error_in_field;
|
1335 |
+
}
|
js/wpbc-gutenberg.js
CHANGED
@@ -281,8 +281,9 @@ console.log( 'WPBC-Gb :: wpbc_send_text_to_gutenberg' , shortcode_text, block_se
|
|
281 |
//Its does not work for automatic generating "Edit" event :((( , so we make some workarround in Edit block event
|
282 |
jQuery( 'div[data-block="' + block_section_id + '"] .wpbc_gb_text_shortcode' ).focus().trigger( 'change' );
|
283 |
|
284 |
-
|
285 |
-
|
|
|
286 |
'<a href="javascript:void" class="button wpbc-gutenberg-update-preview-btn" ' +
|
287 |
'>' + wp.i18n.__( 'Click to Preview Block' ) + '</a></div>'
|
288 |
);
|
281 |
//Its does not work for automatic generating "Edit" event :((( , so we make some workarround in Edit block event
|
282 |
jQuery( 'div[data-block="' + block_section_id + '"] .wpbc_gb_text_shortcode' ).focus().trigger( 'change' );
|
283 |
|
284 |
+
//FixIn: 8.4.2.10
|
285 |
+
jQuery( 'div[data-block="' + block_section_id + '"]' ).parent().parent().before(
|
286 |
+
'<div class="editor-block-list__block wpbc-gutenberg-update-view" style="cursor: pointer;text-align: center;">' +
|
287 |
'<a href="javascript:void" class="button wpbc-gutenberg-update-preview-btn" ' +
|
288 |
'>' + wp.i18n.__( 'Click to Preview Block' ) + '</a></div>'
|
289 |
);
|
languages/booking-ar_SA.mo
CHANGED
Binary file
|
languages/booking-be_BY.mo
CHANGED
Binary file
|
languages/booking-bg_BG.mo
CHANGED
Binary file
|
languages/booking-ca.mo
CHANGED
Binary file
|
languages/booking-cs_CZ.mo
CHANGED
Binary file
|
languages/booking-da_DK.mo
CHANGED
Binary file
|
languages/booking-de_DE.mo
CHANGED
Binary file
|
languages/booking-el.mo
CHANGED
Binary file
|
languages/booking-es_ES.mo
CHANGED
Binary file
|
languages/booking-fi.mo
CHANGED
Binary file
|
languages/booking-fr_FR.mo
CHANGED
Binary file
|
languages/booking-gl_ES.mo
CHANGED
Binary file
|
languages/booking-he_IL.mo
CHANGED
Binary file
|
languages/booking-hr.mo
CHANGED
Binary file
|
languages/booking-hu_HU.mo
CHANGED
Binary file
|
languages/booking-it_IT.mo
CHANGED
Binary file
|
languages/booking-nb_NO.mo
CHANGED
Binary file
|
languages/booking-nl_NL.mo
CHANGED
Binary file
|
languages/booking-pl_PL.mo
CHANGED
Binary file
|
languages/booking-pt_BR.mo
CHANGED
Binary file
|
languages/booking-pt_PT.mo
CHANGED
Binary file
|
languages/booking-ru_RU.mo
CHANGED
Binary file
|
languages/booking-sk_SK.mo
CHANGED
Binary file
|
languages/booking-sl_SI.mo
CHANGED
Binary file
|
languages/booking-sv_SE.mo
CHANGED
Binary file
|
languages/booking-th_TH.mo
CHANGED
Binary file
|
languages/booking-tr_TR.mo
CHANGED
Binary file
|
languages/booking-uk_UK.mo
CHANGED
Binary file
|
languages/booking-zh_CN.mo
CHANGED
Binary file
|
languages/booking-zh_TW.mo
CHANGED
Binary file
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: booking calendar, booking system, availability calendar, events calendar,
|
|
5 |
Requires at least: 4.0
|
6 |
Requires PHP: 5.2.4
|
7 |
Tested up to: 5.0
|
8 |
-
Stable tag: 8.4
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -167,7 +167,8 @@ Please see [FAQ](https://wpbookingcalendar.com/faq/).
|
|
167 |
= Support Languages =
|
168 |
|
169 |
- English
|
170 |
-
- German [
|
|
|
171 |
- Dutch [97% Completed]
|
172 |
- Danish [97% Completed]
|
173 |
- Greek [97% Completed]
|
@@ -175,7 +176,6 @@ Please see [FAQ](https://wpbookingcalendar.com/faq/).
|
|
175 |
- Hungarian [97% Completed]
|
176 |
- Polish [97% Completed]
|
177 |
- Turkish [97% Completed]
|
178 |
-
- Finnish [97% Completed]
|
179 |
- Italian [96% Completed]
|
180 |
- Swedish [96% Completed]
|
181 |
- Spanish [94% Completed]
|
@@ -187,12 +187,12 @@ Please see [FAQ](https://wpbookingcalendar.com/faq/).
|
|
187 |
- Norwegian [89% Completed]
|
188 |
- Brazilian Portuguese [89% Completed]
|
189 |
- Hebrew [89% Completed]
|
190 |
-
- Ukrainian [
|
191 |
- Chinese [88% Completed]
|
192 |
- Chinese (Taiwan) [89% Completed]
|
193 |
- French [89% Completed]
|
194 |
-
- Czech [
|
195 |
-
- Slovak [
|
196 |
- Croatian [76% Completed]
|
197 |
- Catalan [75% Completed]
|
198 |
- Arabic [75% Completed]
|
@@ -225,6 +225,34 @@ Please see [Video Guides](https://wpbookingcalendar.com/help/).
|
|
225 |
13. **Time Slots**. Simple configuration of **time slots** selection in booking form.
|
226 |
|
227 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
= 8.4 =
|
229 |
- Changes in **all** versions:
|
230 |
* **New**. Support Gutenberg editor. New Booking Calendar blocks for integration with new Gutenberg editor in posts and pages. ( 8.3.3.99 )
|
@@ -465,5 +493,5 @@ Please see [Video Guides](https://wpbookingcalendar.com/help/).
|
|
465 |
For more information, see the [full release notes](https://wpbookingcalendar.com/changelog/).
|
466 |
|
467 |
== Upgrade Notice ==
|
468 |
-
= 8.
|
469 |
-
|
5 |
Requires at least: 4.0
|
6 |
Requires PHP: 5.2.4
|
7 |
Tested up to: 5.0
|
8 |
+
Stable tag: 8.4.2
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
167 |
= Support Languages =
|
168 |
|
169 |
- English
|
170 |
+
- German [99% Completed]
|
171 |
+
- Finnish [99% Completed]
|
172 |
- Dutch [97% Completed]
|
173 |
- Danish [97% Completed]
|
174 |
- Greek [97% Completed]
|
176 |
- Hungarian [97% Completed]
|
177 |
- Polish [97% Completed]
|
178 |
- Turkish [97% Completed]
|
|
|
179 |
- Italian [96% Completed]
|
180 |
- Swedish [96% Completed]
|
181 |
- Spanish [94% Completed]
|
187 |
- Norwegian [89% Completed]
|
188 |
- Brazilian Portuguese [89% Completed]
|
189 |
- Hebrew [89% Completed]
|
190 |
+
- Ukrainian [88% Completed]
|
191 |
- Chinese [88% Completed]
|
192 |
- Chinese (Taiwan) [89% Completed]
|
193 |
- French [89% Completed]
|
194 |
+
- Czech [75% Completed]
|
195 |
+
- Slovak [75% Completed]
|
196 |
- Croatian [76% Completed]
|
197 |
- Catalan [75% Completed]
|
198 |
- Arabic [75% Completed]
|
225 |
13. **Time Slots**. Simple configuration of **time slots** selection in booking form.
|
226 |
|
227 |
== Changelog ==
|
228 |
+
= 8.4.2 =
|
229 |
+
- Changes in **all** versions:
|
230 |
+
* **Translation**. Finnish translation [99% completed] by Tero Janhunen
|
231 |
+
* **Translation**. German translation [99% completed] by Martin Klewer
|
232 |
+
* **Support** Fix compatibility with Gutenberg 4.1- 4.3( or newer ). Before this having JavaScript error " ReferenceError: jQuery is not defined" at edit post page, because of weird behavior with 'edit_form_advanced' hook, while activated Gutenberg. (8.4.2.10)
|
233 |
+
* **Support** Additional help info about import .ics feed by set up CRON script at your server for "pseudo" automatic import of events. (8.4.2.12)
|
234 |
+
* **Fix** issue of checkboxes and radio buttons height in new Firefox updates in admin panel, otherwise sometimes, there exist weird artefact (8.4.2.6)
|
235 |
+
* **Fix** issue of not ability to save time-slots in Booking Calendar Free version or during using Simple mode for booking form, when clicking on "+Add New Field" nothing was happend.(8.4.2.7)
|
236 |
+
- Changes in **Personal / Business Small / Business Medium / Business Large / MultiUser** versions:
|
237 |
+
* **New**. **Duplicate Booking**, when clicking on "Edit booking" button in Booking Listing page. Its useful, in case of creation of new booking from returning customer. So you can edit exist booking, and just reselect dates in calendar, for creation new booking with all filled details. (8.4.2.9) *( Personal, Business Small/Medium/Large, MultiUser)*
|
238 |
+
* **New**. Shortcode [estimate_day_cost_hint] for booking form at Booking > Settings > Form page, which is show estimate cost per day, using this formula: [cost_hint] / [days_number_hint] (8.4.2.1) *( Business Small/Medium/Large, MultiUser)*
|
239 |
+
* **Improvement** Show timeslots in AM/PM format in Booking Listing and in email template (shortcode [content}), if was configured used AM/PM time format at the Booking > Settings General page. (8.4.2.7)
|
240 |
+
* **Improvement** Add Notes section of booking to print layout during printing. (8.4.2.2) *( Business Small/Medium/Large, MultiUser)*
|
241 |
+
* **Improvement** During cancellation of booking by visitor, disable all booking form fields for showing only cancel booking button. (8.4.2.5) *(Personal Business Small/Medium/Large, MultiUser)*
|
242 |
+
* **Fix** issue of not changing booking HASH during deleting booking by user, who made the booking. (8.4.2.4) *(Personal Business Small/Medium/Large, MultiUser)*
|
243 |
+
* **Fix** issue of showing times popover hint in some themes in widgetes (8.4.2.3) *(Business Small/Medium/Large, MultiUser)*
|
244 |
+
* **Fix** issue of showing currency symbols in booking pipeline in Timeline and in Calendar Overview pages, for example, while showing additional cost hints or booking cost in booking pipeline (8.4.2.8) *(Business Small/Medium/Large, MultiUser)*
|
245 |
+
* **Fix** issue of not ability to add additional cost for the rangetime, if times format was set as AM/PM (8.4.2.11) *(Business Medium/Large, MultiUser)*
|
246 |
+
* **Under Hood** Ability to ncustomize of showing cost/days hints, just after first click on days, if activated "range days selection mode using 2 mouse clicks". You can customiaze it at ../inc/js/biz_m.js file / by replacing is_show_cost_after_first_click = ! true; to is_show_cost_after_first_click = true; / (8.4.2.6)
|
247 |
+
|
248 |
+
= 8.4.1 =
|
249 |
+
- Changes in **Personal / Business Small / Business Medium / Business Large / MultiUser** versions:
|
250 |
+
* **New**. Ability to validate booking field as Phone number, or even any Digit number field that support only specific number of digits to enter. Its require to configure shortcode in booking form field with CSS class like validate_digit_8 or validate_digit_10 Example: [text phone class:validate_digit_8] (8.4.0.2) *(Personal Business Small/Medium/Large, MultiUser)*
|
251 |
+
* **New**. Ability to validate field as Digit number. Configuration at Booking > Settings > Form page require CSS class for field shortcode: validate_as_digit Example: [text dignum class:validate_as_digit] (8.4.0.2) *(Personal Business Small/Medium/Large, MultiUser)*
|
252 |
+
* **New**. Ability to validate field as Date. Configuration at Booking > Settings > Form page require CSS class for field shortcode: validate_as_date Example: [text mydate class:validate_as_date] Valid values: 09-25-2018, 09/25/2018, 09-25-2018, 31-9-1918 e.g: m/d/Y, m.d.Y, m-d-Y, d/m/Y, d.m.Y, d-m-Y (8.4.0.2) *(Personal Business Small/Medium/Large, MultiUser)*
|
253 |
+
* **Improvement** More clever workflow of checking required fields and other form fields validation, if using "Wizard (several steps)" form template. Showing warning messages, just after clicking Next or Previous step buttons, instead of showing theme at Submit of booking form. (8.4.0.2) *(Personal Business Small/Medium/Large, MultiUser)*
|
254 |
+
* **Fix**. Showing Stripe payment form during payment request. (Update 8.4 had issue of not ability to show Stripe payment form during payment request) (8.4.0.3) *( Business Small/Medium/Large, MultiUser)*
|
255 |
+
|
256 |
= 8.4 =
|
257 |
- Changes in **all** versions:
|
258 |
* **New**. Support Gutenberg editor. New Booking Calendar blocks for integration with new Gutenberg editor in posts and pages. ( 8.3.3.99 )
|
493 |
For more information, see the [full release notes](https://wpbookingcalendar.com/changelog/).
|
494 |
|
495 |
== Upgrade Notice ==
|
496 |
+
= 8.4 =
|
497 |
+
Support Gutenberg editor. New Booking Calendar blocks for integration with new Gutenberg editor in posts and pages.
|
wpdev-booking.php
CHANGED
@@ -7,7 +7,7 @@ Author: wpdevelop, oplugins
|
|
7 |
Author URI: https://wpbookingcalendar.com/
|
8 |
Text Domain: booking
|
9 |
Domain Path: /languages/
|
10 |
-
Version: 8.4
|
11 |
*/
|
12 |
|
13 |
/* Copyright 2009 - 2018 www.wpbookingcalendar.com (email: info@wpbookingcalendar.com),
|
7 |
Author URI: https://wpbookingcalendar.com/
|
8 |
Text Domain: booking
|
9 |
Domain Path: /languages/
|
10 |
+
Version: 8.4.2
|
11 |
*/
|
12 |
|
13 |
/* Copyright 2009 - 2018 www.wpbookingcalendar.com (email: info@wpbookingcalendar.com),
|