Version Description
- Changes in all versions:
- New. Update styles of calendar skins. More clear and modern look. Defined minimum width for calendars. Adding padding between months in multi months view modes. (9.3.1.4)
- New. 2 new calendar skins without outer border. (9.3.1.4)
- Improvement. Showing calendars at mobile devices, while defined size of calendar in shortcode parameter. (9.3.1.5)
- New. Parameter strong_width for definition of calendar width in shortcode for option parameter. Please check more here https://wpbookingcalendar.com/faq/shortcode-booking-form/#booking-options (9.3.1.6)
- Improvement. Removed meta tags from the email templates to prevent marked bookings emails as spam in some servers. (9.3.1.3)
- Improvement. During validation when submitting the booking form, focus on the first field that requires action. This will help complete the booking form. (9.3.1.9)
- Under Hood. New WPBC_AJX__REQUEST class for sanitizing, saving and helping working with user requests. (9.3.1.2)
- Fix. Fix dashboard/agenda links of showing "New | Pending | Today " bookings, in a new ajax Booking Listing page. (9.3.1.7)
- Fix. Fix border width issue in Chrome browser in calendars. (9.3.1.8)
- Changes in Personal / Business Small / Business Medium / Business Large / MultiUser versions:
- Improvement. Disable booked time slots, for predefined selected date in the booking form (it's shortcode for booking form, without the calendar) (9.3.1.1)
- Fix. Update text in settings. (9.3.1.8)
Download this release
Release Info
Developer | wpdevelop |
Plugin | Booking Calendar |
Version | 9.4 |
Comparing to | |
See all releases |
Code changes from version 9.3 to 9.4
- core/admin/page-new.php +1 -0
- core/admin/wpbc-dashboard.php +9 -9
- core/admin/wpbc-settings-functions.php +5 -4
- core/admin/wpbc-toolbars.php +6 -7
- core/any/emails_tpl/plain-html-tpl.php +2 -2
- core/any/emails_tpl/standard-html-tpl.php +4 -4
- core/class/wpbc-class-welcome.php +167 -80
- core/lib/wpdev-booking-class.php +31 -15
- core/wpbc-activation.php +4 -4
- core/wpbc-constants.php +0 -1
- core/wpbc-include.php +5 -0
- css/calendar.css +219 -84
- css/client.css +4 -4
- css/skins/black-2.css +23 -32
- css/skins/black.css +17 -25
- css/skins/multidays.css +17 -24
- css/skins/premium-black.css +26 -27
- css/skins/premium-light-noborder.css +258 -0
- css/skins/premium-light.css +17 -24
- css/skins/premium-marine.css +16 -24
- css/skins/premium-steel-noborder.css +258 -0
- css/skins/premium-steel.css +16 -23
- css/skins/standard.css +16 -23
- css/skins/traditional-light.css +20 -27
- css/skins/traditional-times.css +274 -0
- css/skins/traditional.css +16 -23
- includes/_feedback/feedback_01.php +1 -1
- includes/_request/wpbc_request.php +744 -0
- includes/page-availability/_out/availability_calendar.css +0 -0
- includes/page-availability/_out/availability_calendar.js +2 -0
- includes/page-availability/_out/availability_calendar.min.css +2 -0
- includes/page-availability/_src/availability_calendar.css +0 -0
- includes/page-availability/_src/availability_calendar.js +0 -0
- includes/page-availability/availability__class.php +148 -0
- includes/page-availability/availability__page.php +24 -157
- includes/page-bookings/bookings__actions.php +26 -8
- includes/page-bookings/bookings__listing.php +9 -75
- includes/page-bookings/bookings__page.php +22 -151
- includes/page-bookings/bookings__sql.php +84 -469
- js/client.js +30 -7
- js/wpbc_times.js +5 -5
- readme.txt +53 -34
- wpdev-booking.php +6 -3
core/admin/page-new.php
CHANGED
@@ -135,6 +135,7 @@ class WPBC_Page_AddNewBooking extends WPBC_Page_Structure {
|
|
135 |
if ( ! empty( $user_calendar_options['calendar_width'] ) ) {
|
136 |
$unit_value = ( esc_attr( $user_calendar_options['calendar_widthunits'] ) == 'percent' ) ? '%' : esc_attr( $user_calendar_options['calendar_widthunits'] );
|
137 |
$option_width = ' width=' . intval( $user_calendar_options['calendar_width'] ) . $unit_value;
|
|
|
138 |
} else $option_width = '';
|
139 |
|
140 |
if ( ! empty( $user_calendar_options['calendar_cell_height'] ) ) {
|
135 |
if ( ! empty( $user_calendar_options['calendar_width'] ) ) {
|
136 |
$unit_value = ( esc_attr( $user_calendar_options['calendar_widthunits'] ) == 'percent' ) ? '%' : esc_attr( $user_calendar_options['calendar_widthunits'] );
|
137 |
$option_width = ' width=' . intval( $user_calendar_options['calendar_width'] ) . $unit_value;
|
138 |
+
$option_width .= ' strong_width=' . intval( $user_calendar_options['calendar_width'] ) . $unit_value; //FixIn: 9.3.1.6
|
139 |
} else $option_width = '';
|
140 |
|
141 |
if ( ! empty( $user_calendar_options['calendar_cell_height'] ) ) {
|
core/admin/wpbc-dashboard.php
CHANGED
@@ -518,19 +518,19 @@ function wpbc_dashboard_section_version() {
|
|
518 |
|
519 |
/** Dashboard Statistic Section */
|
520 |
function wpbc_dashboard_section_statistic( $counter ) {
|
521 |
-
|
522 |
$bk_admin_url = wpbc_get_bookings_url() . '&wh_approved=';
|
523 |
?>
|
524 |
<div class="wpbc_dashboard_section bk_right">
|
525 |
<span class="bk_header"><?php _e('Statistic' ,'booking');?>:</span>
|
526 |
<table class="bk_table">
|
527 |
<tr class="first">
|
528 |
-
<td class="first"> <a href="<?php echo $bk_admin_url,'&
|
529 |
-
<td class=""> <a href="<?php echo $bk_admin_url,'&
|
530 |
</tr>
|
531 |
<tr>
|
532 |
-
<td class="first"> <a href="<?php echo $bk_admin_url,'&wh_approved=0&wh_booking_date=3&view_mode=vm_listing'; ?>"><span class=""><?php echo $counter['pending']; ?></span></a></td>
|
533 |
-
<td class="pending"><a href="<?php echo $bk_admin_url,'&wh_approved=0&wh_booking_date=3&view_mode=vm_listing'; ?>" class=""><?php _e('Pending booking(s)' ,'booking');?></a></td>
|
534 |
</tr>
|
535 |
</table>
|
536 |
</div>
|
@@ -538,12 +538,12 @@ function wpbc_dashboard_section_statistic( $counter ) {
|
|
538 |
<span class="bk_header"><?php _e('Agenda' ,'booking');?>:</span>
|
539 |
<table class="bk_table">
|
540 |
<tr class="first">
|
541 |
-
<td class="first"> <a href="<?php echo $bk_admin_url,'&wh_modification_date=1&wh_booking_date=3&view_mode=vm_listing'; ?>"><span><?php echo $counter['was_made_today']; ?></span></a> </td>
|
542 |
-
<td class="new-bookings"><a href="<?php echo $bk_admin_url,'&wh_modification_date=1&wh_booking_date=3&view_mode=vm_listing'; ?>" class=""><?php _e('New booking(s) made today' ,'booking');?></a> </td>
|
543 |
</tr>
|
544 |
<tr>
|
545 |
-
<td class="first"> <a href="<?php echo $bk_admin_url,'&wh_booking_date=1&view_mode=vm_listing'; ?>"><span><?php echo $counter['booking_today']; ?></span></a> </td>
|
546 |
-
<td class="actual-bookings"> <a href="<?php echo $bk_admin_url,'&wh_booking_date=1&view_mode=vm_listing'; ?>" class=""><?php _e('Bookings for today' ,'booking');?></a> </td>
|
547 |
</tr>
|
548 |
</table>
|
549 |
</div>
|
518 |
|
519 |
/** Dashboard Statistic Section */
|
520 |
function wpbc_dashboard_section_statistic( $counter ) {
|
521 |
+
//FixIn: 9.3.1.7
|
522 |
$bk_admin_url = wpbc_get_bookings_url() . '&wh_approved=';
|
523 |
?>
|
524 |
<div class="wpbc_dashboard_section bk_right">
|
525 |
<span class="bk_header"><?php _e('Statistic' ,'booking');?>:</span>
|
526 |
<table class="bk_table">
|
527 |
<tr class="first">
|
528 |
+
<td class="first"> <a href="<?php echo $bk_admin_url,'&wh_what_bookings=new&wh_booking_date[]=3&view_mode=vm_listing&overwrite=1'; ?>"><span class=""><?php echo $counter['new']; ?></span></a> </td>
|
529 |
+
<td class=""> <a href="<?php echo $bk_admin_url,'&wh_what_bookings=new&wh_booking_date[]=3&view_mode=vm_listing&overwrite=1'; ?>"><?php _e('New (unverified) booking(s)' ,'booking');?></a></td>
|
530 |
</tr>
|
531 |
<tr>
|
532 |
+
<td class="first"> <a href="<?php echo $bk_admin_url,'&wh_approved=0&wh_booking_date[]=3&view_mode=vm_listing&overwrite=1'; ?>"><span class=""><?php echo $counter['pending']; ?></span></a></td>
|
533 |
+
<td class="pending"><a href="<?php echo $bk_admin_url,'&wh_approved=0&wh_booking_date[]=3&view_mode=vm_listing&overwrite=1'; ?>" class=""><?php _e('Pending booking(s)' ,'booking');?></a></td>
|
534 |
</tr>
|
535 |
</table>
|
536 |
</div>
|
538 |
<span class="bk_header"><?php _e('Agenda' ,'booking');?>:</span>
|
539 |
<table class="bk_table">
|
540 |
<tr class="first">
|
541 |
+
<td class="first"> <a href="<?php echo $bk_admin_url,'&wh_modification_date[]=1&wh_booking_date[]=3&view_mode=vm_listing&overwrite=1'; ?>"><span><?php echo $counter['was_made_today']; ?></span></a> </td>
|
542 |
+
<td class="new-bookings"><a href="<?php echo $bk_admin_url,'&wh_modification_date[]=1&wh_booking_date[]=3&view_mode=vm_listing&overwrite=1'; ?>" class=""><?php _e('New booking(s) made today' ,'booking');?></a> </td>
|
543 |
</tr>
|
544 |
<tr>
|
545 |
+
<td class="first"> <a href="<?php echo $bk_admin_url,'&wh_booking_date[]=1&view_mode=vm_listing&overwrite=1'; ?>"><span><?php echo $counter['booking_today']; ?></span></a> </td>
|
546 |
+
<td class="actual-bookings"> <a href="<?php echo $bk_admin_url,'&wh_booking_date[]=1&view_mode=vm_listing&overwrite=1'; ?>" class=""><?php _e('Bookings for today' ,'booking');?></a> </td>
|
547 |
</tr>
|
548 |
</table>
|
549 |
</div>
|
core/admin/wpbc-settings-functions.php
CHANGED
@@ -351,10 +351,11 @@ function wpbc_settings__system_info__restore_dismissed_windows(){
|
|
351 |
|
352 |
|
353 |
foreach ( $all_plugins as $path => $plugin ) {
|
354 |
-
if ( is_plugin_active( $path ) )
|
355 |
-
|
356 |
-
else
|
357 |
-
|
|
|
358 |
}
|
359 |
|
360 |
// Showing
|
351 |
|
352 |
|
353 |
foreach ( $all_plugins as $path => $plugin ) {
|
354 |
+
if ( is_plugin_active( $path ) ) {
|
355 |
+
$system_info['active_plugins'][ $plugin['Name'] ] = $plugin['Version'];
|
356 |
+
} else {
|
357 |
+
$system_info['inactive_plugins'][ $plugin['Name'] ] = $plugin['Version'];
|
358 |
+
}
|
359 |
}
|
360 |
|
361 |
// Showing
|
core/admin/wpbc-toolbars.php
CHANGED
@@ -2409,6 +2409,9 @@ function wpbc_datepicker_css(){
|
|
2409 |
|
2410 |
?>
|
2411 |
<style type="text/css">
|
|
|
|
|
|
|
2412 |
#datepick-div .datepick-header {
|
2413 |
width: <?php echo $width ?>px !important;
|
2414 |
}
|
@@ -2419,19 +2422,15 @@ function wpbc_datepicker_css(){
|
|
2419 |
display: none;
|
2420 |
}
|
2421 |
#datepick-div {
|
2422 |
-
|
2423 |
-
|
2424 |
-
-webkit-border-radius: 3px;
|
2425 |
-
-webkit-box-shadow: 0 0 2px #888888;
|
2426 |
-
-moz-border-radius: 3px;
|
2427 |
-
-moz-box-shadow: 0 0 2px #888888;
|
2428 |
width: <?php echo $width ?>px !important;
|
2429 |
}
|
2430 |
#datepick-div .datepick .datepick-days-cell a{
|
2431 |
font-size: 12px;
|
2432 |
}
|
2433 |
#datepick-div table.datepick tr td {
|
2434 |
-
border-top: 0 none !important
|
2435 |
/*line-height: 24px;*/
|
2436 |
padding: 0 !important;
|
2437 |
/*width: 24px;*/
|
2409 |
|
2410 |
?>
|
2411 |
<style type="text/css">
|
2412 |
+
#datepick-div {
|
2413 |
+
background: #fff;
|
2414 |
+
}
|
2415 |
#datepick-div .datepick-header {
|
2416 |
width: <?php echo $width ?>px !important;
|
2417 |
}
|
2422 |
display: none;
|
2423 |
}
|
2424 |
#datepick-div {
|
2425 |
+
/*border: 1px solid #ccc; !* FixIn: 9.3.1.4 *!*/
|
2426 |
+
margin-top: 2px;
|
|
|
|
|
|
|
|
|
2427 |
width: <?php echo $width ?>px !important;
|
2428 |
}
|
2429 |
#datepick-div .datepick .datepick-days-cell a{
|
2430 |
font-size: 12px;
|
2431 |
}
|
2432 |
#datepick-div table.datepick tr td {
|
2433 |
+
/*border-top: 0 none !important;*/
|
2434 |
/*line-height: 24px;*/
|
2435 |
padding: 0 !important;
|
2436 |
/*width: 24px;*/
|
core/any/emails_tpl/plain-html-tpl.php
CHANGED
@@ -37,12 +37,12 @@ function wpbc_email_template_plain_html( $fields_values ) {
|
|
37 |
?>
|
38 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
39 |
<html xmlns="http://www.w3.org/1999/xhtml"> <!-- dir="<?php echo is_rtl() ? 'rtl' : 'ltr'?>" -->
|
40 |
-
<head
|
41 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
42 |
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
43 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
44 |
<title></title>
|
45 |
-
|
46 |
<body style="Margin:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;min-width:100%;<?php echo $body_color; ?>" <?php echo is_rtl() ? 'rightmargin="0"' : 'leftmargin="0"'; ?> >
|
47 |
<div class="wrapper" style="table-layout:fixed;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;Margin:0;padding-top:10px;padding-bottom:10px;padding-right:10px;padding-left:10px;<?php echo $body_color; ?>" <?php echo is_rtl() ? 'dir="rtl"' : 'dir="ltr"'?> >
|
48 |
<?php
|
37 |
?>
|
38 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
39 |
<html xmlns="http://www.w3.org/1999/xhtml"> <!-- dir="<?php echo is_rtl() ? 'rtl' : 'ltr'?>" -->
|
40 |
+
<head><?php /* //FixIn: 9.3.1.3 ?>
|
41 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
42 |
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
43 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
44 |
<title></title>
|
45 |
+
<?php */ ?></head>
|
46 |
<body style="Margin:0;padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;min-width:100%;<?php echo $body_color; ?>" <?php echo is_rtl() ? 'rightmargin="0"' : 'leftmargin="0"'; ?> >
|
47 |
<div class="wrapper" style="table-layout:fixed;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;Margin:0;padding-top:10px;padding-bottom:10px;padding-right:10px;padding-left:10px;<?php echo $body_color; ?>" <?php echo is_rtl() ? 'dir="rtl"' : 'dir="ltr"'?> >
|
48 |
<?php
|
core/any/emails_tpl/standard-html-tpl.php
CHANGED
@@ -31,11 +31,11 @@ function wpbc_email_template_standard_html( $fields_values ) {
|
|
31 |
?>
|
32 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
33 |
<html xmlns="http://www.w3.org/1999/xhtml"> <!-- dir="<?php echo is_rtl() ? 'rtl' : 'ltr'?>" -->
|
34 |
-
<head
|
35 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
36 |
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
37 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
38 |
-
|
39 |
<style type="text/css">
|
40 |
body {
|
41 |
Margin: 0;
|
@@ -315,11 +315,11 @@ return;
|
|
315 |
?>
|
316 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
317 |
<html xmlns="http://www.w3.org/1999/xhtml"> <!-- dir="<?php echo is_rtl() ? 'rtl' : 'ltr'?>" -->
|
318 |
-
<head
|
319 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
320 |
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
321 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
322 |
-
|
323 |
<style type="text/css">
|
324 |
body {
|
325 |
Margin: 0;
|
31 |
?>
|
32 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
33 |
<html xmlns="http://www.w3.org/1999/xhtml"> <!-- dir="<?php echo is_rtl() ? 'rtl' : 'ltr'?>" -->
|
34 |
+
<head><?php /* //FixIn: 9.3.1.3 ?>
|
35 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
36 |
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
37 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
38 |
+
<?php */ ?><title></title>
|
39 |
<style type="text/css">
|
40 |
body {
|
41 |
Margin: 0;
|
315 |
?>
|
316 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
317 |
<html xmlns="http://www.w3.org/1999/xhtml"> <!-- dir="<?php echo is_rtl() ? 'rtl' : 'ltr'?>" -->
|
318 |
+
<head><?php /* //FixIn: 9.3.1.3 ?>
|
319 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
320 |
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
321 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
322 |
+
<?php */ ?><title></title>
|
323 |
<style type="text/css">
|
324 |
body {
|
325 |
Margin: 0;
|
core/class/wpbc-class-welcome.php
CHANGED
@@ -439,6 +439,8 @@ class WPBC_Welcome {
|
|
439 |
|
440 |
$this->maintence_section();
|
441 |
|
|
|
|
|
442 |
$this->section_9_3();
|
443 |
|
444 |
$this->section_9_2();
|
@@ -533,68 +535,113 @@ class WPBC_Welcome {
|
|
533 |
$this->expand_section_end( $section_param_arr );
|
534 |
}
|
535 |
|
|
|
536 |
|
537 |
-
|
538 |
-
|
539 |
-
$section_param_arr = array( 'version_num' => '9.2', 'show_expand' => true );
|
540 |
|
541 |
$this->expand_section_start( $section_param_arr );
|
542 |
|
543 |
-
|
544 |
?><div class="feature-section one-col">
|
545 |
<div class="col col-1" style="flex: 1 1 100%;width: 100%;">
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
550 |
</div>
|
551 |
<div class="col col-2 last-feature" style="flex: 1 1 100%;width: 100%;">
|
552 |
<?php echo
|
553 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
554 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**
|
555 |
-
. '<li>' . wpbc_recheck_strong_symbols( '
|
556 |
-
|
557 |
-
. '</ul>';
|
558 |
?>
|
559 |
</div>
|
560 |
</div><?php
|
561 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
562 |
$this->show_separator();
|
563 |
|
564 |
?><div class="feature-section two-col">
|
565 |
<div class="col col-1" style="flex: 1 1 50%;width: 100%;">
|
566 |
<?php echo
|
567 |
-
'<h4>' .wpbc_recheck_strong_symbols( '
|
568 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
569 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**
|
570 |
-
. '<li>' . wpbc_recheck_strong_symbols( '
|
571 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**
|
572 |
. '</ul>' ;
|
573 |
?>
|
574 |
</div>
|
575 |
-
<div class="col col-2 last-feature" style="flex: 1 1 auto;width:
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
580 |
</div>
|
581 |
</div><?php
|
582 |
|
583 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
584 |
|
585 |
?><div class="feature-section two-col">
|
586 |
<div class="col col-1" style="flex: 1 1 75%;width: 100%;">
|
587 |
-
<img src="<?php echo $this->asset_path; ?>9.
|
588 |
style="margin:30px 5px 0;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
589 |
class="wpbc-section-image" />
|
590 |
</div>
|
591 |
-
<div class="col col-2 last-feature" style="flex: 1 1 auto;width:
|
592 |
<?php echo
|
593 |
-
'<h4>' .wpbc_recheck_strong_symbols( '
|
594 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
595 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**
|
596 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**
|
597 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**
|
|
|
598 |
. '</ul>';
|
599 |
?>
|
600 |
</div>
|
@@ -602,21 +649,37 @@ class WPBC_Welcome {
|
|
602 |
|
603 |
$this->show_separator();
|
604 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
605 |
?><div class="feature-section two-col">
|
606 |
<div class="col col-1" style="flex: 1 1 50%;width: 100%;">
|
607 |
<?php echo
|
608 |
-
'<h4>' .wpbc_recheck_strong_symbols( '
|
609 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
610 |
-
. '<li>' . wpbc_recheck_strong_symbols( '
|
611 |
-
. '<li>' . wpbc_recheck_strong_symbols( '
|
612 |
-
|
613 |
|
614 |
-
. '</ul>' ;
|
615 |
?>
|
616 |
</div>
|
617 |
<div class="col col-2 last-feature" style="flex: 1 1 auto;width: 70%;">
|
618 |
|
619 |
-
<img src="<?php echo $this->asset_path; ?>9.
|
620 |
style="margin:30px 5px 0;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
621 |
class="wpbc-section-image" />
|
622 |
</div>
|
@@ -627,28 +690,23 @@ class WPBC_Welcome {
|
|
627 |
|
628 |
|
629 |
?><div class="feature-section two-col">
|
630 |
-
<div class="col col-1" style="flex: 1 1
|
631 |
<?php echo
|
632 |
'<h4>' .wpbc_recheck_strong_symbols( 'Other new features' ) . '</h4>' .
|
633 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
634 |
-
. '<li>' . wpbc_recheck_strong_symbols( '
|
635 |
-
. '<li>' . wpbc_recheck_strong_symbols( 'Ability to define
|
636 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**
|
637 |
|
638 |
. '</ul>' ;
|
639 |
?>
|
640 |
</div>
|
641 |
<div class="col col-2 last-feature" style="flex: 1 1 auto;width: 60%;">
|
642 |
-
<?php echo
|
643 |
-
'<h4>' .wpbc_recheck_strong_symbols( 'CSV Export (paid versions)' ) . '</h4>' .
|
644 |
-
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
645 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**New**. Ability to enter **field names to skip** from the export.' ) . '</li>'
|
646 |
-
. '<li>' . wpbc_recheck_strong_symbols( 'Selection **export of single or all pages** and CSV column separator in pop-up window.' ) . '</li>'
|
647 |
-
. '</ul>'; ?>
|
648 |
<?php echo
|
649 |
'<h4>' .wpbc_recheck_strong_symbols( 'Improvements and fixes' ) . '</h4>' .
|
650 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
651 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**
|
|
|
652 |
. '<li>' . wpbc_recheck_strong_symbols( 'Lots of other improvements and fixes...' ) . '</li>'
|
653 |
. '</ul>'; ?>
|
654 |
</div>
|
@@ -661,65 +719,89 @@ class WPBC_Welcome {
|
|
661 |
$this->expand_section_end( $section_param_arr );
|
662 |
}
|
663 |
|
|
|
664 |
|
665 |
-
|
666 |
-
|
667 |
-
$section_param_arr = array( 'version_num' => '9.3', 'show_expand' => !true );
|
668 |
|
669 |
$this->expand_section_start( $section_param_arr );
|
670 |
|
671 |
-
|
672 |
-
|
673 |
-
|
|
|
|
|
674 |
style="margin:30px 5px 0;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
675 |
class="wpbc-section-image" />
|
676 |
</div>
|
677 |
-
<div class="col col-2 last-feature" style="flex: 1 1
|
678 |
<?php echo
|
679 |
-
'<h4>' .wpbc_recheck_strong_symbols( 'Edit bookings in the Free version' ) . '</h4>' .
|
680 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
681 |
-
. '<li
|
682 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**
|
683 |
-
. '<li>' . wpbc_recheck_strong_symbols( '
|
684 |
-
|
685 |
-
. '</ul>';
|
686 |
?>
|
687 |
</div>
|
688 |
</div><?php
|
689 |
|
690 |
$this->show_separator();
|
691 |
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
<?php if(1) echo
|
697 |
-
'<h4>' .wpbc_recheck_strong_symbols( 'Simulate login in MultiUser version' ) . '</h4>' .
|
698 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
699 |
-
. '<li>' . wpbc_recheck_strong_symbols( '
|
700 |
-
|
|
|
|
|
701 |
?>
|
702 |
-
|
703 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
704 |
class="wpbc-section-image" />
|
705 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
706 |
</div><?php
|
707 |
-
|
|
|
708 |
|
709 |
?><div class="feature-section two-col">
|
710 |
<div class="col col-1" style="flex: 1 1 50%;width: 100%;">
|
711 |
<?php echo
|
712 |
-
|
713 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
714 |
-
. '<li>' . wpbc_recheck_strong_symbols( '
|
715 |
-
. '<li>' . wpbc_recheck_strong_symbols( '
|
716 |
-
|
717 |
|
|
|
718 |
?>
|
719 |
</div>
|
720 |
<div class="col col-2 last-feature" style="flex: 1 1 auto;width: 70%;">
|
721 |
|
722 |
-
<img src="<?php echo $this->asset_path; ?>9.
|
723 |
style="margin:30px 5px 0;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
724 |
class="wpbc-section-image" />
|
725 |
</div>
|
@@ -730,23 +812,28 @@ if(1){
|
|
730 |
|
731 |
|
732 |
?><div class="feature-section two-col">
|
733 |
-
<div class="col col-1" style="flex: 1 1
|
734 |
<?php echo
|
735 |
'<h4>' .wpbc_recheck_strong_symbols( 'Other new features' ) . '</h4>' .
|
736 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
737 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**
|
738 |
-
. '<li>' . wpbc_recheck_strong_symbols( 'Ability to define **
|
739 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**
|
740 |
|
741 |
. '</ul>' ;
|
742 |
?>
|
743 |
</div>
|
744 |
<div class="col col-2 last-feature" style="flex: 1 1 auto;width: 60%;">
|
|
|
|
|
|
|
|
|
|
|
|
|
745 |
<?php echo
|
746 |
'<h4>' .wpbc_recheck_strong_symbols( 'Improvements and fixes' ) . '</h4>' .
|
747 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
748 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**
|
749 |
-
. '<li>' . wpbc_recheck_strong_symbols( '**Fix**. Notice: Undefined index: select_booking_form in class-admin-settings-api.php' ) . '</li>'
|
750 |
. '<li>' . wpbc_recheck_strong_symbols( 'Lots of other improvements and fixes...' ) . '</li>'
|
751 |
. '</ul>'; ?>
|
752 |
</div>
|
439 |
|
440 |
$this->maintence_section();
|
441 |
|
442 |
+
$this->section_9_4();
|
443 |
+
|
444 |
$this->section_9_3();
|
445 |
|
446 |
$this->section_9_2();
|
535 |
$this->expand_section_end( $section_param_arr );
|
536 |
}
|
537 |
|
538 |
+
function section_9_4(){
|
539 |
|
540 |
+
$section_param_arr = array( 'version_num' => '9.4', 'show_expand' => !true );
|
|
|
|
|
541 |
|
542 |
$this->expand_section_start( $section_param_arr );
|
543 |
|
|
|
544 |
?><div class="feature-section one-col">
|
545 |
<div class="col col-1" style="flex: 1 1 100%;width: 100%;">
|
546 |
+
|
547 |
+
<?php echo '<h4>' .wpbc_recheck_strong_symbols( 'Update of calendar skins' ) . '</h4>' ;?>
|
548 |
+
|
549 |
+
<img src="<?php echo $this->asset_path; ?>9.4/skins-03.png"
|
550 |
+
style="margin:20px 5px 0;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
551 |
+
class="wpbc-section-image" />
|
552 |
+
</div>
|
553 |
+
</div><?php
|
554 |
+
|
555 |
+
|
556 |
+
?><div class="feature-section two-col" style="margin-bottom:-30px">
|
557 |
+
<div class="col col-1" style="flex: 1 1 100%;width: 100%;">
|
558 |
+
<?php echo
|
559 |
+
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
560 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'Update styles of all calendar skins. More **modern and crisp look**.' ) . '</li>'
|
561 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Padding between months** in multiple month view modes.' ) . '</li>'
|
562 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'Calendars have a **minimum width** for correct view at small sections.' ) . '</li>'
|
563 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'Added **two new calendar skins** without outer borders.' ) . '</li>'
|
564 |
+
. '</ul>';
|
565 |
+
?>
|
566 |
</div>
|
567 |
<div class="col col-2 last-feature" style="flex: 1 1 100%;width: 100%;">
|
568 |
<?php echo
|
569 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
570 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Improvement** showing calendars **at mobile devices**, while defined size of calendar in shortcode parameter.' ) . '</li>'
|
571 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'New parameter **strong_width** for definition of calendar width in shortcode for option parameter. Please check more at <a href="https://wpbookingcalendar.com/faq/shortcode-booking-form/#booking-options">FAQ</a>' ) . '</li>'
|
572 |
+
. '</ul>';
|
|
|
573 |
?>
|
574 |
</div>
|
575 |
</div><?php
|
576 |
|
577 |
+
|
578 |
+
?><div class="feature-section one-col">
|
579 |
+
<div class="col col-1" style="flex: 1 1 100%;width: 100%;">
|
580 |
+
|
581 |
+
<img src="<?php echo $this->asset_path; ?>9.4/booking_calendar_skin_05.png"
|
582 |
+
style="margin:2px 5px 25px;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
583 |
+
class="wpbc-section-image" />
|
584 |
+
</div>
|
585 |
+
</div><?php
|
586 |
+
|
587 |
$this->show_separator();
|
588 |
|
589 |
?><div class="feature-section two-col">
|
590 |
<div class="col col-1" style="flex: 1 1 50%;width: 100%;">
|
591 |
<?php echo
|
592 |
+
'<h4>' .wpbc_recheck_strong_symbols( 'Improvements and fixes' ) . '</h4>' .
|
593 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
594 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Improvement**. Removed meta tags from the email templates to **prevent marked bookings emails as spam** on some servers.' ) . '</li>'
|
595 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Under Hood**. New WPBC_AJX__REQUEST class for sanitizing, saving and helping working with user requests.' ) . '</li>'
|
596 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Fix**. Fix dashboard/agenda links of showing "New | Pending | Today " bookings, in a new ajax Booking Listing page.' ) . '</li>'
|
597 |
. '</ul>' ;
|
598 |
?>
|
599 |
</div>
|
600 |
+
<div class="col col-2 last-feature" style="flex: 1 1 auto;width: 60%;">
|
601 |
+
<?php /*
|
602 |
+
echo
|
603 |
+
'<h4>' .wpbc_recheck_strong_symbols( 'Improvements in paid versions' ) . '</h4>' .
|
604 |
+
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
605 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Improvement**. Disable booked time slots, for predefined selected date in the booking form (it is shortcode for booking form, without the calendar)' ) . '</li>'
|
606 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Fix**. Update text in settings.' ) . '</li>'
|
607 |
+
. '</ul>';
|
608 |
+
*/ ?>
|
609 |
+
<?php echo
|
610 |
+
'<h4>' .wpbc_recheck_strong_symbols( 'Other changes' ) . '</h4>' .
|
611 |
+
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
612 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Improvement**. Disable booked time slots, for predefined selected date in the booking form (in shortcode for booking form, without the calendar). In Booking Calendar Business Large or higher version.' ) . '</li>'
|
613 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Improvement**. During validation when submitting the booking form, focus on the first field that requires action. This will help complete the booking form.' ) . '</li>'
|
614 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'Lots of other improvements and fixes...' ) . '</li>'
|
615 |
+
. '</ul>'; ?>
|
616 |
</div>
|
617 |
</div><?php
|
618 |
|
619 |
+
|
620 |
+
$this->show_separator();
|
621 |
+
|
622 |
+
$this->expand_section_end( $section_param_arr );
|
623 |
+
}
|
624 |
+
|
625 |
+
function section_9_3(){
|
626 |
+
|
627 |
+
$section_param_arr = array( 'version_num' => '9.3', 'show_expand' => true );
|
628 |
+
|
629 |
+
$this->expand_section_start( $section_param_arr );
|
630 |
|
631 |
?><div class="feature-section two-col">
|
632 |
<div class="col col-1" style="flex: 1 1 75%;width: 100%;">
|
633 |
+
<img src="<?php echo $this->asset_path; ?>9.3/edit-booking-free.png"
|
634 |
style="margin:30px 5px 0;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
635 |
class="wpbc-section-image" />
|
636 |
</div>
|
637 |
+
<div class="col col-2 last-feature" style="flex: 1 1 auto;width: 80%;">
|
638 |
<?php echo
|
639 |
+
'<h4>' .wpbc_recheck_strong_symbols( 'Edit bookings in the Free version' ) . '</h4>' .
|
640 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
641 |
+
. '<li style="margin-bottom:2em;">' . wpbc_recheck_strong_symbols( '**Edit bookings** in the Booking Calendar Free version. <p>You can easily **change booking details** for an existing booking or **re-select booking date(s)** for such booking in a few seconds.</p>' ) . '</li>'
|
642 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Under Hood**. A **hash** field has been added to the booking table in all versions of the Booking Calendar.' ) . '</li>'
|
643 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Under Hood**. Added **creation_date** field to booking table.' ) . '</li>'
|
644 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Under Hood**. An **is_trash** field has been added to the booking table, to indicate the date of the booking was trashed.' ) . '</li>'
|
645 |
. '</ul>';
|
646 |
?>
|
647 |
</div>
|
649 |
|
650 |
$this->show_separator();
|
651 |
|
652 |
+
if(1){
|
653 |
+
?><div class="feature-section one-col">
|
654 |
+
<div class="col col-1" style="flex: 1 1 100%;width: 100%;">
|
655 |
+
<?php //echo '<h4>' .wpbc_recheck_strong_symbols( 'New Booking Listing - modern looking & instant working' ) . '</h4>' ;?>
|
656 |
+
<?php if(1) echo
|
657 |
+
'<h4>' .wpbc_recheck_strong_symbols( 'Simulate login in MultiUser version' ) . '</h4>' .
|
658 |
+
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
659 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'You can now easily **change** booking **form, email** templates or **payment** details **for Regular user**, while you have **logged in as Super Admin**. <p>You can drill down to regular user admin panel on the Booking > Settings > Users page.</p>' ) . '</li>'
|
660 |
+
. '</ul>';
|
661 |
+
?>
|
662 |
+
<img src="<?php echo $this->asset_path; ?>9.3/simulate_login2.png"
|
663 |
+
style="margin:1px 5px 0;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
664 |
+
class="wpbc-section-image" />
|
665 |
+
</div>
|
666 |
+
</div><?php
|
667 |
+
}
|
668 |
+
|
669 |
?><div class="feature-section two-col">
|
670 |
<div class="col col-1" style="flex: 1 1 50%;width: 100%;">
|
671 |
<?php echo
|
672 |
+
//'<h4>' .wpbc_recheck_strong_symbols( 'Simulate login in MultiUser version' ) . '</h4>' .
|
673 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
674 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Simulate the login of a regular user** (user with restricted access only to own resources) from a "super booking administrator" account for ability to change the settings of such a regular activated user in the Booking Calendar MultiUser version.' ) . '</li>'
|
675 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'Receive payments for "Regular User" bookings to the "Super Booking Admin" payment account. Activate this option at the Booking > Settings General page in the "MultiUser" section.' ) . '</li>'
|
676 |
+
. '</ul>' ;
|
677 |
|
|
|
678 |
?>
|
679 |
</div>
|
680 |
<div class="col col-2 last-feature" style="flex: 1 1 auto;width: 70%;">
|
681 |
|
682 |
+
<img src="<?php echo $this->asset_path; ?>9.3/simulate_log_out.png"
|
683 |
style="margin:30px 5px 0;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
684 |
class="wpbc-section-image" />
|
685 |
</div>
|
690 |
|
691 |
|
692 |
?><div class="feature-section two-col">
|
693 |
+
<div class="col col-1" style="flex: 1 1 60%;width: 100%;">
|
694 |
<?php echo
|
695 |
'<h4>' .wpbc_recheck_strong_symbols( 'Other new features' ) . '</h4>' .
|
696 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
697 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**New**. Shortcode in emails **[cost_digits_only]** - to show booking cost without currency.' ) . '</li>'
|
698 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'Ability to define **title of "Search availability" button** in search form at the Booking > Settings > Search page. Use shortcodes like this: **[search_button "Search availability"]**' ) . '</li>'
|
699 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Improvement**. Replaced Stripe php library to newest 9.0.0 version.' ) . '</li>'
|
700 |
|
701 |
. '</ul>' ;
|
702 |
?>
|
703 |
</div>
|
704 |
<div class="col col-2 last-feature" style="flex: 1 1 auto;width: 60%;">
|
|
|
|
|
|
|
|
|
|
|
|
|
705 |
<?php echo
|
706 |
'<h4>' .wpbc_recheck_strong_symbols( 'Improvements and fixes' ) . '</h4>' .
|
707 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
708 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Fix**. Error message in Stripe payment form: "Caught exception: You cannot use line_items.amount, line_items.currency, line_items.name, line_items.description, or line_items.images in this API version."' ) . '</li>'
|
709 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Fix**. Notice: Undefined index: select_booking_form in class-admin-settings-api.php' ) . '</li>'
|
710 |
. '<li>' . wpbc_recheck_strong_symbols( 'Lots of other improvements and fixes...' ) . '</li>'
|
711 |
. '</ul>'; ?>
|
712 |
</div>
|
719 |
$this->expand_section_end( $section_param_arr );
|
720 |
}
|
721 |
|
722 |
+
function section_9_2(){
|
723 |
|
724 |
+
$section_param_arr = array( 'version_num' => '9.2', 'show_expand' => true );
|
|
|
|
|
725 |
|
726 |
$this->expand_section_start( $section_param_arr );
|
727 |
|
728 |
+
|
729 |
+
?><div class="feature-section one-col">
|
730 |
+
<div class="col col-1" style="flex: 1 1 100%;width: 100%;">
|
731 |
+
<?php echo '<h4>' .wpbc_recheck_strong_symbols( 'New Booking Listing - modern looking & instant working' ) . '</h4>' ;?>
|
732 |
+
<img src="<?php echo $this->asset_path; ?>9.2/booking_listing_text_searching_long.png"
|
733 |
style="margin:30px 5px 0;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
734 |
class="wpbc-section-image" />
|
735 |
</div>
|
736 |
+
<div class="col col-2 last-feature" style="flex: 1 1 100%;width: 100%;">
|
737 |
<?php echo
|
|
|
738 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
739 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**New modern toolbar** with handy buttons, dropdown lists and other elements that have been redesigned and rearranged in a new smarter way.' ) . '</li>'
|
740 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Refreshed colors** of labels, icons, buttons and other UI elements for modern and clear look.' ) . '</li>'
|
741 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'Rearranged content of booking details in unified way for all Booking Calendar versions.' ) . '</li>'
|
742 |
+
. '</ul>';
|
|
|
743 |
?>
|
744 |
</div>
|
745 |
</div><?php
|
746 |
|
747 |
$this->show_separator();
|
748 |
|
749 |
+
?><div class="feature-section two-col">
|
750 |
+
<div class="col col-1" style="flex: 1 1 50%;width: 100%;">
|
751 |
+
<?php echo
|
752 |
+
'<h4>' .wpbc_recheck_strong_symbols( 'Instant working without page reloading' ) . '</h4>' .
|
|
|
|
|
753 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
754 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Instant showing booking listing**, using ajax without page reloading when filtering search results. Single page app design.' ) . '</li>'
|
755 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'Immediate **searching** of bookings for a **specific keyword**. Reservations are displayed just after entering a specific keyword without other user actions.' ) . '</li>'
|
756 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Highlighting** certain **keywords** in booking details to make it easier to find specific data when entering keywords.' ) . '</li>'
|
757 |
+
. '</ul>' ;
|
758 |
?>
|
759 |
+
</div>
|
760 |
+
<div class="col col-2 last-feature" style="flex: 1 1 auto;width: 70%;">
|
761 |
+
|
762 |
+
<img src="<?php echo $this->asset_path; ?>9.2/screenshot-01_high_res.gif"
|
763 |
+
style="margin:30px 5px 0;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
764 |
+
class="wpbc-section-image" />
|
765 |
+
</div>
|
766 |
+
</div><?php
|
767 |
+
|
768 |
+
$this->show_separator();
|
769 |
+
|
770 |
+
?><div class="feature-section two-col">
|
771 |
+
<div class="col col-1" style="flex: 1 1 75%;width: 100%;">
|
772 |
+
<img src="<?php echo $this->asset_path; ?>9.2/booking_listing_dates_filtering.png"
|
773 |
+
style="margin:30px 5px 0;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
774 |
class="wpbc-section-image" />
|
775 |
</div>
|
776 |
+
<div class="col col-2 last-feature" style="flex: 1 1 auto;width: 60%;">
|
777 |
+
<?php echo
|
778 |
+
'<h4>' .wpbc_recheck_strong_symbols( 'User Saved Options' ) . '</h4>' .
|
779 |
+
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
780 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Saving** any choice of **filter options** (select-boxes and other UI toolbar elements), toolbar selection or user options **personally for each user**. User will see last configured search filter parameters each time, when open admin panel.' ) . '</li>'
|
781 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Keeping** last selected **filter or actions toolbar**, during each time, when user open booking admin panel. No need to define default state of toolbars in the settings.' ) . '</li>'
|
782 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**New user options toolbar**, where possible to select "Emails sending" on specific actions or "Show notes" by default (in paid versions).' ) . '</li>'
|
783 |
+
. '</ul>';
|
784 |
+
?>
|
785 |
+
</div>
|
786 |
</div><?php
|
787 |
+
|
788 |
+
$this->show_separator();
|
789 |
|
790 |
?><div class="feature-section two-col">
|
791 |
<div class="col col-1" style="flex: 1 1 50%;width: 100%;">
|
792 |
<?php echo
|
793 |
+
'<h4>' .wpbc_recheck_strong_symbols( 'Print functionality' ) . '</h4>' .
|
794 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
795 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'The new **print feature** is available in the **Free version**.' ) . '</li>'
|
796 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'New **print layout** displaying the exact content of the booking listing page.' ) . '</li>'
|
797 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Print any selected bookings**. Possibility to print all bookings / selected bookings / specific single booking.' ) . '</li>'
|
798 |
|
799 |
+
. '</ul>' ;
|
800 |
?>
|
801 |
</div>
|
802 |
<div class="col col-2 last-feature" style="flex: 1 1 auto;width: 70%;">
|
803 |
|
804 |
+
<img src="<?php echo $this->asset_path; ?>9.2/booking_listing_printing.png"
|
805 |
style="margin:30px 5px 0;width: 98%;box-shadow: 0 1px 3px #aaa;border-radius: 2px;"
|
806 |
class="wpbc-section-image" />
|
807 |
</div>
|
812 |
|
813 |
|
814 |
?><div class="feature-section two-col">
|
815 |
+
<div class="col col-1" style="flex: 1 1 50%;width: 100%;">
|
816 |
<?php echo
|
817 |
'<h4>' .wpbc_recheck_strong_symbols( 'Other new features' ) . '</h4>' .
|
818 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
819 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'Added 2 new filter options **Check in today** and **Check out today** to display bookings on the booking list page' ) . '</li>'
|
820 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'Ability to define and **save the locale for each specific booking**. This locale is saved and will exist when the following pages are loaded.' ) . '</li>'
|
821 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Show action** buttons when such actions **can be applied to specific bookings**. You need to select bookings to display additional action buttons like "Confirm" or "Reject", etc...' ) . '</li>'
|
822 |
|
823 |
. '</ul>' ;
|
824 |
?>
|
825 |
</div>
|
826 |
<div class="col col-2 last-feature" style="flex: 1 1 auto;width: 60%;">
|
827 |
+
<?php echo
|
828 |
+
'<h4>' .wpbc_recheck_strong_symbols( 'CSV Export (paid versions)' ) . '</h4>' .
|
829 |
+
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
830 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**New**. Ability to enter **field names to skip** from the export.' ) . '</li>'
|
831 |
+
. '<li>' . wpbc_recheck_strong_symbols( 'Selection **export of single or all pages** and CSV column separator in pop-up window.' ) . '</li>'
|
832 |
+
. '</ul>'; ?>
|
833 |
<?php echo
|
834 |
'<h4>' .wpbc_recheck_strong_symbols( 'Improvements and fixes' ) . '</h4>' .
|
835 |
'<ul style="list-style: disc outside;padding: 20px;margin:0;">'
|
836 |
+
. '<li>' . wpbc_recheck_strong_symbols( '**Improvement**. Smarter structure of request parameters escaping.' ) . '</li>'
|
|
|
837 |
. '<li>' . wpbc_recheck_strong_symbols( 'Lots of other improvements and fixes...' ) . '</li>'
|
838 |
. '</ul>'; ?>
|
839 |
</div>
|
core/lib/wpdev-booking-class.php
CHANGED
@@ -481,7 +481,7 @@ class wpdev_booking {
|
|
481 |
|
482 |
$my_partially = '<div class="wpdev_hint_with_text '.$booking_timeslot_day_bg_as_available.'">';
|
483 |
|
484 |
-
$my_partially .= '<div class="datepick-inline" style="width:30px !important;border: 0;box-shadow: none;float: left;">';
|
485 |
$my_partially .= '<table class="datepick" style=""><tbody><tr>';
|
486 |
if ( wpbc_is_booking_used_check_in_out_time() ) { //FixIn: 8.9.4.10
|
487 |
$my_partially .= '<td class="datepick-days-cell date_available date_approved timespartly check_in_time check_in_time_date_approved" style="height: 30px !important;">';
|
@@ -525,28 +525,36 @@ class wpdev_booking {
|
|
525 |
$bk_otions = parse_calendar_options($bk_otions);
|
526 |
/* options:
|
527 |
[months_num_in_row] => 2
|
528 |
-
[width] => 284px
|
|
|
529 |
[cell_height] => 40px
|
530 |
*/
|
531 |
$width = $months_num_in_row = $cell_height = '';
|
532 |
|
533 |
if (!empty($bk_otions)){
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
543 |
}
|
544 |
|
545 |
if (empty($width)){
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
|
|
550 |
}
|
551 |
|
552 |
if (!empty($cell_height))
|
@@ -678,6 +686,14 @@ class wpdev_booking {
|
|
678 |
, $cal_count
|
679 |
, $start_month_calendar
|
680 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
681 |
// Apply script for the condition days selection, like:
|
682 |
// {select-day condition="season" for="Low season" value="2-5"},{select-day condition="weekday" ...
|
683 |
$start_script_code = apply_bk_filter('wpdev_bk_define_additional_js_options_for_bk_shortcode', $start_script_code, $resource_id, $bk_otions);
|
481 |
|
482 |
$my_partially = '<div class="wpdev_hint_with_text '.$booking_timeslot_day_bg_as_available.'">';
|
483 |
|
484 |
+
$my_partially .= '<div class="datepick-inline" style="width:30px !important;border: 0;box-shadow: none;float: left;min-width: 30px;padding: 0;">'; //FixIn: 9.3.1.4
|
485 |
$my_partially .= '<table class="datepick" style=""><tbody><tr>';
|
486 |
if ( wpbc_is_booking_used_check_in_out_time() ) { //FixIn: 8.9.4.10
|
487 |
$my_partially .= '<td class="datepick-days-cell date_available date_approved timespartly check_in_time check_in_time_date_approved" style="height: 30px !important;">';
|
525 |
$bk_otions = parse_calendar_options($bk_otions);
|
526 |
/* options:
|
527 |
[months_num_in_row] => 2
|
528 |
+
[width] => 284px define: width: 100%; max-width:284px;
|
529 |
+
[strong_width] => 284px define: width:284px;
|
530 |
[cell_height] => 40px
|
531 |
*/
|
532 |
$width = $months_num_in_row = $cell_height = '';
|
533 |
|
534 |
if (!empty($bk_otions)){
|
535 |
+
|
536 |
+
if ( isset( $bk_otions['months_num_in_row'] ) ) {
|
537 |
+
$months_num_in_row = $bk_otions['months_num_in_row'];
|
538 |
+
}
|
539 |
+
|
540 |
+
if ( isset( $bk_otions['width'] ) ) {
|
541 |
+
$width = 'width:100%;max-width:' . $bk_otions['width'] . ';'; //FixIn: 9.3.1.5
|
542 |
+
}
|
543 |
+
if ( isset( $bk_otions['strong_width'] ) ) {
|
544 |
+
$width .= 'width:' . $bk_otions['strong_width'] . ';'; //FixIn: 9.3.1.6
|
545 |
+
}
|
546 |
+
|
547 |
+
if ( isset( $bk_otions['cell_height'] ) ) {
|
548 |
+
$cell_height = $bk_otions['cell_height'];
|
549 |
+
}
|
550 |
}
|
551 |
|
552 |
if (empty($width)){
|
553 |
+
if ( ! empty( $months_num_in_row ) ) {
|
554 |
+
$width = 'width:100%;max-width:' . ( $months_num_in_row * 284 ) . 'px;'; //FixIn: 9.3.1.5
|
555 |
+
} else {
|
556 |
+
$width = 'width:100%;max-width:' . ( $cal_count * 284 ) . 'px;'; //FixIn: 9.3.1.5
|
557 |
+
}
|
558 |
}
|
559 |
|
560 |
if (!empty($cell_height))
|
686 |
, $cal_count
|
687 |
, $start_month_calendar
|
688 |
);
|
689 |
+
|
690 |
+
if ( $my_selected_dates_without_calendar !== '' ) { //FixIn: 9.3.1.1
|
691 |
+
// Disable booked time slots, for predefined selected date in the booking form (it's shortcode for booking form, without the calendar)
|
692 |
+
$start_script_code .= "<script type='text/javascript'> jQuery(document).ready( function(){ ";
|
693 |
+
$start_script_code .= " bkDisableBookedTimeSlots( jQuery( '#date_booking{$resource_id}' ).val(), {$resource_id} ); ";
|
694 |
+
$start_script_code .= " }); </script>";
|
695 |
+
}
|
696 |
+
|
697 |
// Apply script for the condition days selection, like:
|
698 |
// {select-day condition="season" for="Low season" value="2-5"},{select-day condition="weekday" ...
|
699 |
$start_script_code = apply_bk_filter('wpdev_bk_define_additional_js_options_for_bk_shortcode', $start_script_code, $resource_id, $bk_otions);
|
core/wpbc-activation.php
CHANGED
@@ -776,7 +776,7 @@ function wpbc_booking_activate() {
|
|
776 |
}
|
777 |
|
778 |
}
|
779 |
-
|
780 |
|
781 |
////////////////////////////////////////////////////////////////////////////
|
782 |
// Other versions Activation
|
@@ -962,9 +962,9 @@ $mu_option4delete[]= 'booking_timeslot_picker';
|
|
962 |
$mu_option4delete[]= 'booking_timeslot_picker_skin';
|
963 |
|
964 |
$default_options['booking_timeslot_day_bg_as_available'] = ( ( class_exists( 'wpdev_bk_personal' ) ) ? 'Off' : 'On' ); //FixIn: 8.2.1.27
|
965 |
-
if ( ( $is_demo ) && ( class_exists( 'wpdev_bk_biz_s' ) ) && ( ! class_exists( 'wpdev_bk_biz_m' ) ) ) { //FixIn: 8.3.3.15
|
966 |
-
|
967 |
-
}
|
968 |
$mu_option4delete[]='booking_timeslot_day_bg_as_available';
|
969 |
|
970 |
$default_options['booking_form_is_using_bs_css'] = 'On';
|
776 |
}
|
777 |
|
778 |
}
|
779 |
+
make_bk_action( 'wpbc_activation_after_db_actions' ); //FixIn: 9.3.1.2
|
780 |
|
781 |
////////////////////////////////////////////////////////////////////////////
|
782 |
// Other versions Activation
|
962 |
$mu_option4delete[]= 'booking_timeslot_picker_skin';
|
963 |
|
964 |
$default_options['booking_timeslot_day_bg_as_available'] = ( ( class_exists( 'wpdev_bk_personal' ) ) ? 'Off' : 'On' ); //FixIn: 8.2.1.27
|
965 |
+
//if ( ( $is_demo ) && ( class_exists( 'wpdev_bk_biz_s' ) ) && ( ! class_exists( 'wpdev_bk_biz_m' ) ) ) { //FixIn: 8.3.3.15
|
966 |
+
// $default_options['booking_timeslot_day_bg_as_available'] = 'On'; // Set background as available for timeslots only in Business Small demo
|
967 |
+
//}
|
968 |
$mu_option4delete[]='booking_timeslot_day_bg_as_available';
|
969 |
|
970 |
$default_options['booking_form_is_using_bs_css'] = 'On';
|
core/wpbc-constants.php
CHANGED
@@ -26,7 +26,6 @@ if ( ! defined( 'WP_BK_CHECK_OUT_MINUS_DAY_SEARCH' ) ) { define( 'WP_BK_C
|
|
26 |
////////////////////////////////////////////////////////////
|
27 |
// SYSTEM CONSTANTS //////////////
|
28 |
////////////////////////////////////////////////////////////
|
29 |
-
if ( ! defined( 'WP_BK_MINOR_UPDATE' ) ) { define( 'WP_BK_MINOR_UPDATE', !true ); }
|
30 |
if ( ! defined( 'WP_BK_RESPONSE' ) ) { define( 'WP_BK_RESPONSE', false ); }
|
31 |
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
|
32 |
|
26 |
////////////////////////////////////////////////////////////
|
27 |
// SYSTEM CONSTANTS //////////////
|
28 |
////////////////////////////////////////////////////////////
|
|
|
29 |
if ( ! defined( 'WP_BK_RESPONSE' ) ) { define( 'WP_BK_RESPONSE', false ); }
|
30 |
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
|
31 |
|
core/wpbc-include.php
CHANGED
@@ -79,9 +79,12 @@ require_once( WPBC_PLUGIN_DIR . '/core/admin/wpbc-dashboard.php' );
|
|
79 |
|
80 |
if ( WPBC_EXIST_NEW_BOOKING_LISTING ) {
|
81 |
|
|
|
82 |
require_once( WPBC_PLUGIN_DIR . '/includes/_booking_hash/booking_hash.php' ); //FixIn: 9.2.3.3
|
83 |
|
84 |
require_once( WPBC_PLUGIN_DIR . '/includes/_feedback/feedback_01.php'); //FixIn: 9.2.3.6
|
|
|
|
|
85 |
require_once( WPBC_PLUGIN_DIR . '/includes/_toolbar_ui/toolbar_ui.php' );
|
86 |
require_once( WPBC_PLUGIN_DIR . '/includes/_listing_css_js/listing_ui.php' );
|
87 |
require_once( WPBC_PLUGIN_DIR . '/includes/_pagination/pagination.php' );
|
@@ -92,7 +95,9 @@ if ( WPBC_EXIST_NEW_BOOKING_LISTING ) {
|
|
92 |
require_once( WPBC_PLUGIN_DIR . '/includes/page-bookings/bookings__listing.php' );
|
93 |
require_once( WPBC_PLUGIN_DIR . '/includes/page-bookings/bookings__page.php' );
|
94 |
|
|
|
95 |
if ( WPBC_EXIST_NEW_AVAILABILITY ) {
|
|
|
96 |
require_once( WPBC_PLUGIN_DIR . '/includes/page-availability/availability__page.php' );
|
97 |
}
|
98 |
}
|
79 |
|
80 |
if ( WPBC_EXIST_NEW_BOOKING_LISTING ) {
|
81 |
|
82 |
+
require_once( WPBC_PLUGIN_DIR . '/includes/_request/wpbc_request.php' ); //FixIn: 9.3.1.2 // Class for sanitizing $_REQUEST parameters and saving or getting it from DB
|
83 |
require_once( WPBC_PLUGIN_DIR . '/includes/_booking_hash/booking_hash.php' ); //FixIn: 9.2.3.3
|
84 |
|
85 |
require_once( WPBC_PLUGIN_DIR . '/includes/_feedback/feedback_01.php'); //FixIn: 9.2.3.6
|
86 |
+
|
87 |
+
// Booking Listing
|
88 |
require_once( WPBC_PLUGIN_DIR . '/includes/_toolbar_ui/toolbar_ui.php' );
|
89 |
require_once( WPBC_PLUGIN_DIR . '/includes/_listing_css_js/listing_ui.php' );
|
90 |
require_once( WPBC_PLUGIN_DIR . '/includes/_pagination/pagination.php' );
|
95 |
require_once( WPBC_PLUGIN_DIR . '/includes/page-bookings/bookings__listing.php' );
|
96 |
require_once( WPBC_PLUGIN_DIR . '/includes/page-bookings/bookings__page.php' );
|
97 |
|
98 |
+
|
99 |
if ( WPBC_EXIST_NEW_AVAILABILITY ) {
|
100 |
+
require_once( WPBC_PLUGIN_DIR . '/includes/page-availability/availability__class.php' );
|
101 |
require_once( WPBC_PLUGIN_DIR . '/includes/page-availability/availability__page.php' );
|
102 |
}
|
103 |
}
|
css/calendar.css
CHANGED
@@ -6,10 +6,30 @@
|
|
6 |
/* C O N F I G */
|
7 |
/*******************************************************************************/
|
8 |
/* WIDTH: of CALENDARs - its FULL width of Month(s) ROW (its NOT only one month) */
|
9 |
-
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
z-index: 10000;
|
12 |
}
|
|
|
|
|
|
|
13 |
/* HEIGHT: of C E L L S */
|
14 |
.datepick-inline .datepick-title-row th,
|
15 |
.datepick-inline .datepick-days-cell{
|
@@ -71,114 +91,235 @@ div.date-content-bottom{
|
|
71 |
width:100%;
|
72 |
}
|
73 |
/* SIZE: Set width of calendar with several months */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
.datepick-one-month {
|
75 |
-
|
76 |
-
|
77 |
}
|
78 |
.cal_month_num_2 .datepick-one-month {
|
79 |
-
|
80 |
-
|
81 |
}
|
82 |
.cal_month_num_3 .datepick-one-month {
|
83 |
-
|
84 |
-
|
85 |
}
|
86 |
.cal_month_num_4 .datepick-one-month {
|
87 |
-
|
88 |
-
|
89 |
}
|
90 |
.cal_month_num_5 .datepick-one-month {
|
91 |
-
|
92 |
-
|
93 |
}
|
94 |
.cal_month_num_6 .datepick-one-month {
|
95 |
-
|
96 |
-
|
97 |
}
|
98 |
.cal_month_num_7 .datepick-one-month {
|
99 |
-
|
100 |
-
|
101 |
}
|
102 |
.cal_month_num_8 .datepick-one-month {
|
103 |
-
|
104 |
-
|
105 |
}
|
106 |
.cal_month_num_9 .datepick-one-month {
|
107 |
-
|
108 |
-
|
109 |
}
|
110 |
.cal_month_num_10 .datepick-one-month {
|
111 |
-
|
112 |
-
|
113 |
}
|
114 |
.cal_month_num_11 .datepick-one-month {
|
115 |
-
|
116 |
-
|
117 |
}
|
118 |
.cal_month_num_12 .datepick-one-month {
|
119 |
-
|
120 |
-
|
121 |
}
|
122 |
|
123 |
/* CLASS: for setting specific number of months in a row. Please check more in FAQ.*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
.months_num_in_row_1 .datepick-one-month {
|
125 |
-
|
126 |
-
|
127 |
}
|
128 |
.months_num_in_row_2 .datepick-one-month {
|
129 |
-
|
130 |
-
|
131 |
}
|
132 |
.months_num_in_row_3 .datepick-one-month {
|
133 |
-
|
134 |
-
|
135 |
}
|
136 |
.months_num_in_row_4 .datepick-one-month {
|
137 |
-
|
138 |
-
|
139 |
}
|
140 |
.months_num_in_row_5 .datepick-one-month {
|
141 |
-
|
142 |
-
|
143 |
}
|
144 |
.months_num_in_row_6 .datepick-one-month {
|
145 |
-
|
146 |
-
|
147 |
}
|
148 |
|
149 |
/* STRUCTURE: Previous & Next month links */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
.datepick-inline .calendar-links{
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
|
|
|
|
158 |
}
|
159 |
-
.datepick-inline .calendar-links .datepick-prev
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
|
|
|
|
|
|
167 |
}
|
168 |
.datepick-inline .calendar-links .datepick-next{
|
169 |
-
float: right;
|
170 |
text-align: right;
|
171 |
-
|
172 |
-
padding-right:1%;
|
173 |
-
z-index:99;
|
174 |
-
position: relative;
|
175 |
-
line-height: 1.5em;
|
176 |
}
|
177 |
.datepick-inline .calendar-links .datepick-prev a,
|
178 |
.datepick-inline .calendar-links .datepick-next a{
|
179 |
-
|
|
|
|
|
|
|
180 |
}
|
181 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
/* Week Titles height */
|
183 |
div.datepick-inline .datepick-title-row th{
|
184 |
height: auto !important;
|
@@ -201,6 +342,8 @@ div.datepick-inline .datepick-title-row th{
|
|
201 |
text-decoration: none;
|
202 |
cursor: pointer;
|
203 |
box-shadow: none; /* FixIn: 5.4.5.9 */
|
|
|
|
|
204 |
}
|
205 |
.datepick-inline .datepick-days-cell.datepick-unselectable, /* Default cursor for the unvailbale dates */
|
206 |
.datepick-inline .datepick-days-cell.datepick-unselectable a,
|
@@ -213,8 +356,10 @@ div.datepick-inline .datepick-title-row th{
|
|
213 |
.datepick-inline .datepick-header{
|
214 |
text-align: center;
|
215 |
position: relative;
|
216 |
-
|
217 |
-
|
|
|
|
|
218 |
}
|
219 |
/* ALIGN: Cells and set standard width */
|
220 |
.datepick-inline .datepick-title-row th,
|
@@ -643,26 +788,16 @@ div#datepick-div textarea {
|
|
643 |
.check-in-div, .check-out-div {
|
644 |
display: none !important;
|
645 |
}
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
.check-in-div, .check-out-div {
|
650 |
-
display: block !important;
|
651 |
-
}
|
652 |
-
.datepick-days-cell .wpbc-diagonal-el {
|
653 |
-
display: none !important;
|
654 |
-
}
|
655 |
-
.wpbc_change_over_triangle .block_hints .block_check_in_out.check_out_time div.check-out-div, .wpbc_change_over_triangle td.timespartly.check_out_time div.check-out-div {
|
656 |
-
transform: rotate(-135deg) translate(-6px,10%);
|
657 |
-
}
|
658 |
-
.wpbc_change_over_triangle .block_hints .block_check_in_out.check_in_time div.check-in-div, .wpbc_change_over_triangle td.timespartly.check_in_time div.check-in-div {
|
659 |
-
transform: rotate(45deg) translate(-85%,-10%);
|
660 |
-
}
|
661 |
-
/* In calendar skin CSS file, comment this lines:
|
662 |
-
.datepick-inline td.datepick-days-cell.check_in_time,
|
663 |
-
.datepick-inline td.datepick-days-cell.check_out_time {
|
664 |
-
...
|
665 |
-
}
|
666 |
*/
|
667 |
-
|
668 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
/* C O N F I G */
|
7 |
/*******************************************************************************/
|
8 |
/* WIDTH: of CALENDARs - its FULL width of Month(s) ROW (its NOT only one month) */
|
9 |
+
/*
|
10 |
+
.datepick-inline {
|
11 |
+
width:100% !important;
|
12 |
+
z-index: 10000;
|
13 |
+
}
|
14 |
+
*/
|
15 |
+
/* FixIn: 9.3.1.4 */
|
16 |
+
.bk_calendar_frame {
|
17 |
+
position: relative;
|
18 |
+
}
|
19 |
+
.datepick-inline {
|
20 |
+
display: flex;
|
21 |
+
flex-flow: row wrap;
|
22 |
+
justify-content: center;
|
23 |
+
align-items: center;
|
24 |
+
min-width: 221px;
|
25 |
+
|
26 |
+
width:100% !important; /* Override the width of the calendar, which is set datepicker JS */
|
27 |
+
padding: 1px; /* Outer padding in calendar. */
|
28 |
z-index: 10000;
|
29 |
}
|
30 |
+
.datepick-inline .datepick-one-month {
|
31 |
+
padding: 2px; /* Padding between months. */
|
32 |
+
}
|
33 |
/* HEIGHT: of C E L L S */
|
34 |
.datepick-inline .datepick-title-row th,
|
35 |
.datepick-inline .datepick-days-cell{
|
91 |
width:100%;
|
92 |
}
|
93 |
/* SIZE: Set width of calendar with several months */
|
94 |
+
/*
|
95 |
+
.datepick-one-month {
|
96 |
+
width:100%;
|
97 |
+
float:left;
|
98 |
+
}
|
99 |
+
.cal_month_num_2 .datepick-one-month {
|
100 |
+
width:50%;
|
101 |
+
float:left;
|
102 |
+
}
|
103 |
+
.cal_month_num_3 .datepick-one-month {
|
104 |
+
width:33.333333333333333%;
|
105 |
+
float:left;
|
106 |
+
}
|
107 |
+
.cal_month_num_4 .datepick-one-month {
|
108 |
+
width:25%;
|
109 |
+
float:left;
|
110 |
+
}
|
111 |
+
.cal_month_num_5 .datepick-one-month {
|
112 |
+
width:20%;
|
113 |
+
float:left;
|
114 |
+
}
|
115 |
+
.cal_month_num_6 .datepick-one-month {
|
116 |
+
width:16.6666666666666%;
|
117 |
+
float:left;
|
118 |
+
}
|
119 |
+
.cal_month_num_7 .datepick-one-month {
|
120 |
+
width:14.28571429%;
|
121 |
+
float:left;
|
122 |
+
}
|
123 |
+
.cal_month_num_8 .datepick-one-month {
|
124 |
+
width:12.5%;
|
125 |
+
float:left;
|
126 |
+
}
|
127 |
+
.cal_month_num_9 .datepick-one-month {
|
128 |
+
width:11.11111111%;
|
129 |
+
float:left;
|
130 |
+
}
|
131 |
+
.cal_month_num_10 .datepick-one-month {
|
132 |
+
width:10%;
|
133 |
+
float:left;
|
134 |
+
}
|
135 |
+
.cal_month_num_11 .datepick-one-month {
|
136 |
+
width:9.0909090909090909%;
|
137 |
+
float:left;
|
138 |
+
}
|
139 |
+
.cal_month_num_12 .datepick-one-month {
|
140 |
+
width:8.333333333333333%;
|
141 |
+
float:left;
|
142 |
+
}
|
143 |
+
*/
|
144 |
.datepick-one-month {
|
145 |
+
flex: 1 1 100%;
|
146 |
+
min-width:217px;
|
147 |
}
|
148 |
.cal_month_num_2 .datepick-one-month {
|
149 |
+
flex: 1 1 50%;
|
150 |
+
min-width:217px;
|
151 |
}
|
152 |
.cal_month_num_3 .datepick-one-month {
|
153 |
+
flex: 1 1 33.333333333333333%;
|
154 |
+
min-width:217px;
|
155 |
}
|
156 |
.cal_month_num_4 .datepick-one-month {
|
157 |
+
flex: 1 1 25%;
|
158 |
+
min-width:217px;
|
159 |
}
|
160 |
.cal_month_num_5 .datepick-one-month {
|
161 |
+
flex: 1 1 20%;
|
162 |
+
min-width:217px;
|
163 |
}
|
164 |
.cal_month_num_6 .datepick-one-month {
|
165 |
+
flex: 1 1 16.6666666666666%;
|
166 |
+
min-width:217px;
|
167 |
}
|
168 |
.cal_month_num_7 .datepick-one-month {
|
169 |
+
flex: 1 1 14.28571429%;
|
170 |
+
min-width:217px;
|
171 |
}
|
172 |
.cal_month_num_8 .datepick-one-month {
|
173 |
+
flex: 1 1 12.5%;
|
174 |
+
min-width:217px;
|
175 |
}
|
176 |
.cal_month_num_9 .datepick-one-month {
|
177 |
+
flex: 1 1 11.11111111%;
|
178 |
+
min-width:217px;
|
179 |
}
|
180 |
.cal_month_num_10 .datepick-one-month {
|
181 |
+
flex: 1 1 10%;
|
182 |
+
min-width:217px;
|
183 |
}
|
184 |
.cal_month_num_11 .datepick-one-month {
|
185 |
+
flex: 1 1 9.0909090909090909%;
|
186 |
+
min-width:217px;
|
187 |
}
|
188 |
.cal_month_num_12 .datepick-one-month {
|
189 |
+
flex: 1 1 8.333333333333333%;
|
190 |
+
min-width:217px;
|
191 |
}
|
192 |
|
193 |
/* CLASS: for setting specific number of months in a row. Please check more in FAQ.*/
|
194 |
+
/*
|
195 |
+
.months_num_in_row_1 .datepick-one-month {
|
196 |
+
width:100%;
|
197 |
+
float:left;
|
198 |
+
}
|
199 |
+
.months_num_in_row_2 .datepick-one-month {
|
200 |
+
width:50%;
|
201 |
+
float:left;
|
202 |
+
}
|
203 |
+
.months_num_in_row_3 .datepick-one-month {
|
204 |
+
width:33.333333333333333%;
|
205 |
+
float:left;
|
206 |
+
}
|
207 |
+
.months_num_in_row_4 .datepick-one-month {
|
208 |
+
width:25%;
|
209 |
+
float:left;
|
210 |
+
}
|
211 |
+
.months_num_in_row_5 .datepick-one-month {
|
212 |
+
width:20%;
|
213 |
+
float:left;
|
214 |
+
}
|
215 |
+
.months_num_in_row_6 .datepick-one-month {
|
216 |
+
width:16.6666666666666%;
|
217 |
+
float:left;
|
218 |
+
}
|
219 |
+
*/
|
220 |
.months_num_in_row_1 .datepick-one-month {
|
221 |
+
flex: 1 1 100%;
|
222 |
+
min-width:217px;
|
223 |
}
|
224 |
.months_num_in_row_2 .datepick-one-month {
|
225 |
+
flex: 1 1 50%;
|
226 |
+
min-width:217px;
|
227 |
}
|
228 |
.months_num_in_row_3 .datepick-one-month {
|
229 |
+
flex: 1 1 33.333333333333333%;
|
230 |
+
min-width:217px;
|
231 |
}
|
232 |
.months_num_in_row_4 .datepick-one-month {
|
233 |
+
flex: 1 1 25%;
|
234 |
+
min-width:217px;
|
235 |
}
|
236 |
.months_num_in_row_5 .datepick-one-month {
|
237 |
+
flex: 1 1 20%;
|
238 |
+
min-width:217px;
|
239 |
}
|
240 |
.months_num_in_row_6 .datepick-one-month {
|
241 |
+
flex: 1 1 16.6666666666666%;
|
242 |
+
min-width:217px;
|
243 |
}
|
244 |
|
245 |
/* STRUCTURE: Previous & Next month links */
|
246 |
+
/*
|
247 |
+
.datepick-inline .calendar-links{
|
248 |
+
float: left;
|
249 |
+
width: 100%;
|
250 |
+
height: auto;
|
251 |
+
margin-bottom: -2.4em;
|
252 |
+
padding: 0.4em 0;
|
253 |
+
position: relative;
|
254 |
+
text-decoration: none;
|
255 |
+
}
|
256 |
+
.datepick-inline .calendar-links .datepick-prev{
|
257 |
+
float: left;
|
258 |
+
width: 49%;
|
259 |
+
text-align: left;
|
260 |
+
padding-left:1%;
|
261 |
+
z-index:99;
|
262 |
+
position: relative;
|
263 |
+
line-height: 1.5em;
|
264 |
+
}
|
265 |
+
.datepick-inline .calendar-links .datepick-next{
|
266 |
+
float: right;
|
267 |
+
text-align: right;
|
268 |
+
width: 49%;
|
269 |
+
padding-right:1%;
|
270 |
+
z-index:99;
|
271 |
+
position: relative;
|
272 |
+
line-height: 1.5em;
|
273 |
+
}
|
274 |
+
.datepick-inline .calendar-links .datepick-prev a,
|
275 |
+
.datepick-inline .calendar-links .datepick-next a{
|
276 |
+
font-size: 2em;
|
277 |
+
}
|
278 |
+
*/
|
279 |
+
/* FixIn: 9.3.1.4 */
|
280 |
.datepick-inline .calendar-links{
|
281 |
+
display:flex;
|
282 |
+
flex-flow: row nowrap;
|
283 |
+
justify-content: flex-start;
|
284 |
+
align-items: center;
|
285 |
+
|
286 |
+
width:100%;
|
287 |
+
height:40px;
|
288 |
+
|
289 |
+
margin-bottom: -40px;
|
290 |
}
|
291 |
+
.datepick-inline .calendar-links .datepick-prev,
|
292 |
+
.datepick-inline .calendar-links .datepick-next {
|
293 |
+
line-height: 2.8em;
|
294 |
+
flex: 1 1 100%;
|
295 |
+
margin: 0 4px;
|
296 |
+
|
297 |
+
line-height: 2em;
|
298 |
+
display: flex;
|
299 |
+
flex-flow: column nowrap;
|
300 |
+
justify-content: flex-end;
|
301 |
+
align-items: flex-start;
|
302 |
}
|
303 |
.datepick-inline .calendar-links .datepick-next{
|
|
|
304 |
text-align: right;
|
305 |
+
align-items: flex-end
|
|
|
|
|
|
|
|
|
306 |
}
|
307 |
.datepick-inline .calendar-links .datepick-prev a,
|
308 |
.datepick-inline .calendar-links .datepick-next a{
|
309 |
+
font-size: 2em;
|
310 |
+
line-height: 2px;
|
311 |
+
position:absolute;
|
312 |
+
z-index:9999;
|
313 |
}
|
314 |
|
315 |
+
.datepick-inline .datepick-header {
|
316 |
+
line-height: 40px;
|
317 |
+
padding: 0;
|
318 |
+
}
|
319 |
+
.datepick-inline .datepick-header span{
|
320 |
+
font-size: 1.15em;
|
321 |
+
line-height: 1.2em;
|
322 |
+
}
|
323 |
/* Week Titles height */
|
324 |
div.datepick-inline .datepick-title-row th{
|
325 |
height: auto !important;
|
342 |
text-decoration: none;
|
343 |
cursor: pointer;
|
344 |
box-shadow: none; /* FixIn: 5.4.5.9 */
|
345 |
+
outline: none; /* FixIn: 9.3.1.4 */
|
346 |
+
text-shadow: none; /* FixIn: 9.3.1.4 */
|
347 |
}
|
348 |
.datepick-inline .datepick-days-cell.datepick-unselectable, /* Default cursor for the unvailbale dates */
|
349 |
.datepick-inline .datepick-days-cell.datepick-unselectable a,
|
356 |
.datepick-inline .datepick-header{
|
357 |
text-align: center;
|
358 |
position: relative;
|
359 |
+
/* FixIn: 9.3.1.4
|
360 |
+
line-height: 1.71429em;
|
361 |
+
padding: 0.3em 0;
|
362 |
+
*/
|
363 |
}
|
364 |
/* ALIGN: Cells and set standard width */
|
365 |
.datepick-inline .datepick-title-row th,
|
788 |
.check-in-div, .check-out-div {
|
789 |
display: none !important;
|
790 |
}
|
791 |
+
/** // FixIn:9.3.1.8
|
792 |
+
* Fix border width issue in Chrome browser
|
793 |
+
* https://stackoverflow.com/questions/71674803/html-tables-has-a-weird-bold-horizontal-line-due-to-border-collapse-property/71703247#71703247
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
794 |
*/
|
795 |
+
div.datepick-inline table.datepick,
|
796 |
+
div.datepick-inline table.datepick th,
|
797 |
+
div.datepick-inline table.datepick td {
|
798 |
+
border-width: 0.01px;
|
799 |
+
}
|
800 |
+
div.datepick-inline table.datepick {
|
801 |
+
border-collapse: collapse;
|
802 |
+
border-spacing: 0;
|
803 |
+
}
|
css/client.css
CHANGED
@@ -268,10 +268,10 @@ form.booking_form {
|
|
268 |
/* Error Message FixIn: 8.7.11.10 */
|
269 |
.wpdevelop .alert-danger{
|
270 |
background-image: none;
|
271 |
-
background-color: #
|
272 |
border-radius: 0 2px 2px 0;
|
273 |
border-width:1px;
|
274 |
-
border-left:4px solid #
|
275 |
}
|
276 |
/* Warning Messages */
|
277 |
.wpdev-help-message.alert.alert-warning,
|
@@ -591,12 +591,12 @@ form.booking_form {
|
|
591 |
}
|
592 |
@media (max-width: 782px) {
|
593 |
.wpbc_change_over_triangle {
|
594 |
-
width:
|
595 |
}
|
596 |
.wpbc_form_columns_general .wpbc_form_field_general:nth-child(1),
|
597 |
.wpbc_form_columns_general .wpbc_form_field_general:nth-child(2){
|
598 |
min-width: 100%;
|
599 |
-
flex: 1
|
600 |
margin-bottom: 2em;
|
601 |
}
|
602 |
}
|
268 |
/* Error Message FixIn: 8.7.11.10 */
|
269 |
.wpdevelop .alert-danger{
|
270 |
background-image: none;
|
271 |
+
background-color: #fff;
|
272 |
border-radius: 0 2px 2px 0;
|
273 |
border-width:1px;
|
274 |
+
border-left:4px solid #c23b3b;
|
275 |
}
|
276 |
/* Warning Messages */
|
277 |
.wpdev-help-message.alert.alert-warning,
|
591 |
}
|
592 |
@media (max-width: 782px) {
|
593 |
.wpbc_change_over_triangle {
|
594 |
+
width:99%;
|
595 |
}
|
596 |
.wpbc_form_columns_general .wpbc_form_field_general:nth-child(1),
|
597 |
.wpbc_form_columns_general .wpbc_form_field_general:nth-child(2){
|
598 |
min-width: 100%;
|
599 |
+
flex: 1 1 auto;
|
600 |
margin-bottom: 2em;
|
601 |
}
|
602 |
}
|
css/skins/black-2.css
CHANGED
@@ -16,55 +16,46 @@
|
|
16 |
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
-moz-
|
26 |
-
-webkit-
|
27 |
-
|
28 |
-
-
|
29 |
-
-webkit-border-radius:0;
|
30 |
}
|
31 |
/* Background of one calendar month */
|
32 |
.datepick-inline .datepick{
|
33 |
-
background:
|
34 |
-
box-shadow:none;
|
35 |
}
|
36 |
-
.datepick-inline .datepick thead {
|
37 |
-
background:#191919;
|
38 |
-
}
|
39 |
-
|
40 |
/* Previous & Next links and TITLE BACKGROUND */
|
41 |
.datepick-inline .calendar-links {
|
42 |
-
|
43 |
-
|
44 |
-
/*padding:6px 10px 0 20px;*/
|
45 |
}
|
46 |
/* Prev - Next Text */
|
47 |
.datepick-inline .calendar-links .datepick-prev a,
|
48 |
.datepick-inline .calendar-links .datepick-next a,
|
49 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
50 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
51 |
-
color: #
|
52 |
-
|
53 |
-
|
54 |
-
/*margin-top:10px*/
|
55 |
}
|
56 |
/* Month Titles */
|
57 |
.datepick-inline .datepick-header {
|
58 |
-
|
59 |
-
|
|
|
60 |
|
61 |
-
color:#
|
62 |
-
|
63 |
-
/*padding-top:10px ;*/
|
64 |
-
/*padding-bottom:10px;*/
|
65 |
-
text-transform:uppercase;
|
66 |
-
border:1px solid #000000;
|
67 |
}
|
|
|
|
|
68 |
/* Week Titles */
|
69 |
div.datepick-inline .datepick-title-row th{
|
70 |
font-weight: 600;
|
16 |
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
+
background: #1f1f1f; /* FixIn: 9.3.1.4 */
|
20 |
+
border: 1px solid #555;
|
21 |
+
box-shadow: 0 0 3px #444;
|
22 |
+
-moz-box-shadow: 0 0 3px #444;
|
23 |
+
-webkit-box-shadow: 0 0 3px #444;
|
24 |
+
border-radius: 0;
|
25 |
+
-moz-border-radius: 0;
|
26 |
+
-webkit-border-radius: 0;
|
27 |
+
|
28 |
+
text-transform:uppercase;
|
|
|
29 |
}
|
30 |
/* Background of one calendar month */
|
31 |
.datepick-inline .datepick{
|
32 |
+
background: #191919;
|
|
|
33 |
}
|
|
|
|
|
|
|
|
|
34 |
/* Previous & Next links and TITLE BACKGROUND */
|
35 |
.datepick-inline .calendar-links {
|
36 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
37 |
+
background: transparent;
|
|
|
38 |
}
|
39 |
/* Prev - Next Text */
|
40 |
.datepick-inline .calendar-links .datepick-prev a,
|
41 |
.datepick-inline .calendar-links .datepick-next a,
|
42 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
43 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
44 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
45 |
+
text-shadow: none;
|
46 |
+
font-weight: 600;
|
|
|
47 |
}
|
48 |
/* Month Titles */
|
49 |
.datepick-inline .datepick-header {
|
50 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
51 |
+
font-weight: 600;
|
52 |
+
text-shadow: none;
|
53 |
|
54 |
+
background-color:#1f1f1f;
|
55 |
+
text-transform:uppercase;
|
|
|
|
|
|
|
|
|
56 |
}
|
57 |
+
|
58 |
+
|
59 |
/* Week Titles */
|
60 |
div.datepick-inline .datepick-title-row th{
|
61 |
font-weight: 600;
|
css/skins/black.css
CHANGED
@@ -16,46 +16,38 @@
|
|
16 |
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
}
|
28 |
/* Background of one calendar month */
|
29 |
.datepick-inline .datepick{
|
30 |
-
|
31 |
-
box-shadow: 0 1px 2px #999999;
|
32 |
}
|
33 |
/* Previous & Next links and TITLE BACKGROUND */
|
34 |
.datepick-inline .calendar-links {
|
35 |
-
|
36 |
-
|
37 |
-
/*background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ddd), to(#aaa)); /* Safari 4-5, Chrome 1-9 */
|
38 |
-
/*background: -webkit-linear-gradient(top, #aaa, #ddd); /* Safari 5.1, Chrome 10+ */
|
39 |
-
/*background: -moz-linear-gradient(top, #aaa, #ddd); /* Firefox 3.6+ */
|
40 |
-
/*background: -ms-linear-gradient(top, #aaa, #ddd); /* IE 10 */
|
41 |
-
/*background: -o-linear-gradient(top, #aaa, #ddd); /* Opera 11.10+ */
|
42 |
-
|
43 |
-
border-bottom: 1px solid #aaa;
|
44 |
}
|
45 |
/* Prev - Next Text */
|
46 |
.datepick-inline .calendar-links .datepick-prev a,
|
47 |
.datepick-inline .calendar-links .datepick-next a,
|
48 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
49 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
}
|
54 |
/* Month Titles */
|
55 |
.datepick-inline .datepick-header {
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
}
|
60 |
/* Week Titles */
|
61 |
div.datepick-inline .datepick-title-row th{
|
16 |
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
+
background: #f1f0f0; /* FixIn: 9.3.1.4 */
|
20 |
+
border: 1px solid #f3f3f3;
|
21 |
+
box-shadow: 0 0 1px #101010;
|
22 |
+
-moz-box-shadow: 0 0 1px #101010;
|
23 |
+
-webkit-box-shadow: 0 0 1px #101010;
|
24 |
+
border-radius: 0;
|
25 |
+
-moz-border-radius: 0;
|
26 |
+
-webkit-border-radius: 0;
|
27 |
}
|
28 |
/* Background of one calendar month */
|
29 |
.datepick-inline .datepick{
|
30 |
+
background: #686868;
|
|
|
31 |
}
|
32 |
/* Previous & Next links and TITLE BACKGROUND */
|
33 |
.datepick-inline .calendar-links {
|
34 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
35 |
+
background: transparent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
}
|
37 |
/* Prev - Next Text */
|
38 |
.datepick-inline .calendar-links .datepick-prev a,
|
39 |
.datepick-inline .calendar-links .datepick-next a,
|
40 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
41 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
42 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
43 |
+
text-shadow: none;
|
44 |
+
font-weight: 600;
|
45 |
}
|
46 |
/* Month Titles */
|
47 |
.datepick-inline .datepick-header {
|
48 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
49 |
+
font-weight: 600;
|
50 |
+
text-shadow: none;
|
51 |
}
|
52 |
/* Week Titles */
|
53 |
div.datepick-inline .datepick-title-row th{
|
css/skins/multidays.css
CHANGED
@@ -16,45 +16,38 @@
|
|
16 |
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
}
|
28 |
/* Background of one calendar month */
|
29 |
.datepick-inline .datepick{
|
30 |
-
background:
|
31 |
}
|
32 |
/* Previous & Next links and TITLE BACKGROUND */
|
33 |
.datepick-inline .calendar-links {
|
34 |
-
|
35 |
-
|
36 |
-
/*background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#DDDDDD), to(#EEEEFF)); /* Safari 4-5, Chrome 1-9 */
|
37 |
-
/*background: -webkit-linear-gradient(top, #EEEEFF, #DDDDDD); /* Safari 5.1, Chrome 10+ */
|
38 |
-
/*background: -moz-linear-gradient(top, #EEEEFF, #DDDDDD); /* Firefox 3.6+ */
|
39 |
-
/*background: -ms-linear-gradient(top, #EEEEFF, #DDDDDD); /* IE 10 */
|
40 |
-
/*background: -o-linear-gradient(top, #EEEEFF, #DDDDDD); /* Opera 11.10+ */
|
41 |
-
|
42 |
-
border-bottom: 0px solid #aaa;
|
43 |
}
|
44 |
/* Prev - Next Text */
|
45 |
.datepick-inline .calendar-links .datepick-prev a,
|
46 |
.datepick-inline .calendar-links .datepick-next a,
|
47 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
48 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
}
|
53 |
/* Month Titles */
|
54 |
.datepick-inline .datepick-header {
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
}
|
59 |
/* Week Titles */
|
60 |
div.datepick-inline .datepick-title-row th{
|
16 |
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
+
background: #fff; /* FixIn: 9.3.1.4 */
|
20 |
+
border: 1px solid #fefefe;
|
21 |
+
box-shadow: 0 0 1px #7a7a7a;
|
22 |
+
-moz-box-shadow: 0 0 1px #7a7a7a;
|
23 |
+
-webkit-box-shadow: 0 0 1px #7a7a7a;
|
24 |
+
border-radius: 0;
|
25 |
+
-moz-border-radius: 0;
|
26 |
+
-webkit-border-radius: 0;
|
27 |
}
|
28 |
/* Background of one calendar month */
|
29 |
.datepick-inline .datepick{
|
30 |
+
background: transparent;
|
31 |
}
|
32 |
/* Previous & Next links and TITLE BACKGROUND */
|
33 |
.datepick-inline .calendar-links {
|
34 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
35 |
+
background: transparent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
}
|
37 |
/* Prev - Next Text */
|
38 |
.datepick-inline .calendar-links .datepick-prev a,
|
39 |
.datepick-inline .calendar-links .datepick-next a,
|
40 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
41 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
42 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
43 |
+
text-shadow: none;
|
44 |
+
font-weight: 600;
|
45 |
}
|
46 |
/* Month Titles */
|
47 |
.datepick-inline .datepick-header {
|
48 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
49 |
+
font-weight: 600;
|
50 |
+
text-shadow: none;
|
51 |
}
|
52 |
/* Week Titles */
|
53 |
div.datepick-inline .datepick-title-row th{
|
css/skins/premium-black.css
CHANGED
@@ -16,53 +16,52 @@
|
|
16 |
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
/* Background of one calendar month */
|
29 |
.datepick-inline .datepick{
|
30 |
-
background:
|
31 |
}
|
32 |
/* Previous & Next links and TITLE BACKGROUND */
|
33 |
.datepick-inline .calendar-links {
|
34 |
-
|
35 |
-
|
36 |
-
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ddd), to(#aaa)); /* Safari 4-5, Chrome 1-9 */
|
37 |
-
background: -webkit-linear-gradient(top, #aaa, #ddd); /* Safari 5.1, Chrome 10+ */
|
38 |
-
background: -moz-linear-gradient(top, #aaa, #ddd); /* Firefox 3.6+ */
|
39 |
-
background: -ms-linear-gradient(top, #aaa, #ddd); /* IE 10 */
|
40 |
-
background: -o-linear-gradient(top, #aaa, #ddd); /* Opera 11.10+ */
|
41 |
-
|
42 |
-
border-bottom: 1px solid #aaa;
|
43 |
}
|
44 |
/* Prev - Next Text */
|
45 |
.datepick-inline .calendar-links .datepick-prev a,
|
46 |
.datepick-inline .calendar-links .datepick-next a,
|
47 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
48 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
}
|
53 |
/* Month Titles */
|
54 |
.datepick-inline .datepick-header {
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
}
|
59 |
/* Week Titles */
|
60 |
div.datepick-inline .datepick-title-row th{
|
61 |
border: 1px solid #ccc;
|
62 |
font-weight: 600;
|
63 |
text-transform: uppercase;
|
64 |
-
color: #
|
65 |
-
text-shadow:
|
66 |
}
|
67 |
/* Cell border*/
|
68 |
.block_hints .block_free, .block_hints .block_time, .block_hints .block_booked, .block_hints .block_pending, .block_hints .block_check_in_out,
|
16 |
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
+
background: #f8f8f8; /* FixIn: 9.3.1.4 */
|
20 |
+
border: 1px solid #fff;
|
21 |
+
box-shadow: 0 0 1px #5d5d5d;
|
22 |
+
-moz-box-shadow: 0 0 1px #5d5d5d;
|
23 |
+
-webkit-box-shadow: 0 0 1px #5d5d5d;
|
24 |
+
border-radius: 0;
|
25 |
+
-moz-border-radius: 0;
|
26 |
+
-webkit-border-radius: 0;
|
27 |
+
}
|
28 |
+
.datepick-inline {
|
29 |
+
padding: 1px;
|
30 |
+
}
|
31 |
+
.datepick-inline .datepick-one-month {
|
32 |
+
padding: 2px;
|
33 |
+
}
|
34 |
/* Background of one calendar month */
|
35 |
.datepick-inline .datepick{
|
36 |
+
background: #686868;
|
37 |
}
|
38 |
/* Previous & Next links and TITLE BACKGROUND */
|
39 |
.datepick-inline .calendar-links {
|
40 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
41 |
+
background: transparent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
}
|
43 |
/* Prev - Next Text */
|
44 |
.datepick-inline .calendar-links .datepick-prev a,
|
45 |
.datepick-inline .calendar-links .datepick-next a,
|
46 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
47 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
48 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
49 |
+
text-shadow: none;
|
50 |
+
font-weight: 600;
|
51 |
}
|
52 |
/* Month Titles */
|
53 |
.datepick-inline .datepick-header {
|
54 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
55 |
+
font-weight: 600;
|
56 |
+
text-shadow: none;
|
57 |
}
|
58 |
/* Week Titles */
|
59 |
div.datepick-inline .datepick-title-row th{
|
60 |
border: 1px solid #ccc;
|
61 |
font-weight: 600;
|
62 |
text-transform: uppercase;
|
63 |
+
color: #b3b3b3;
|
64 |
+
text-shadow: none;
|
65 |
}
|
66 |
/* Cell border*/
|
67 |
.block_hints .block_free, .block_hints .block_time, .block_hints .block_booked, .block_hints .block_pending, .block_hints .block_check_in_out,
|
css/skins/premium-light-noborder.css
ADDED
@@ -0,0 +1,258 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*******************************************************************************/
|
2 |
+
/* Traditionsl - C O L O R S K I N ****************************/
|
3 |
+
/*******************************************************************************/
|
4 |
+
/* For better compatibility, please change here only folowing properties: */
|
5 |
+
/*
|
6 |
+
* background , background-color, background-repeat, background-image, background-repeat, background-position
|
7 |
+
* border
|
8 |
+
* box-shadow, -moz-box-shadow, -webkit-box-shadow
|
9 |
+
* border-radius, -moz-border-radius, -webkit-border-radius
|
10 |
+
* color
|
11 |
+
* font-weight
|
12 |
+
* text-shadow
|
13 |
+
* text-transform
|
14 |
+
*
|
15 |
+
*/
|
16 |
+
/**********************************************************************************************************************************************************/
|
17 |
+
|
18 |
+
/* Full Calendar Frame */
|
19 |
+
.datepick-inline {
|
20 |
+
background: transparent; /* FixIn: 9.3.1.4 */
|
21 |
+
border: 0px solid #e4e4e4;
|
22 |
+
box-shadow: 0 0 0px #cacaca;
|
23 |
+
-moz-box-shadow: 0 0 0px #cacaca;
|
24 |
+
-webkit-box-shadow: 0 0 0px #cacaca;
|
25 |
+
border-radius: 0;
|
26 |
+
-moz-border-radius: 0;
|
27 |
+
-webkit-border-radius: 0;
|
28 |
+
}
|
29 |
+
/* Background of one calendar month */
|
30 |
+
.datepick-inline .datepick{
|
31 |
+
background: #fff;
|
32 |
+
}
|
33 |
+
/* Previous & Next links and TITLE BACKGROUND */
|
34 |
+
.datepick-inline .calendar-links {
|
35 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
36 |
+
background: transparent;
|
37 |
+
}
|
38 |
+
/* Prev - Next Text */
|
39 |
+
.datepick-inline .calendar-links .datepick-prev a,
|
40 |
+
.datepick-inline .calendar-links .datepick-next a,
|
41 |
+
.datepick-inline .calendar-links .datepick-prev a:hover,
|
42 |
+
.datepick-inline .calendar-links .datepick-next a:hover{
|
43 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
44 |
+
text-shadow: none;
|
45 |
+
font-weight: 600;
|
46 |
+
}
|
47 |
+
/* Month Titles */
|
48 |
+
.datepick-inline .datepick-header {
|
49 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
50 |
+
font-weight: 600;
|
51 |
+
text-shadow: none;
|
52 |
+
}
|
53 |
+
/* Week Titles */
|
54 |
+
div.datepick-inline .datepick-title-row th{
|
55 |
+
border: 1px solid #ccc;
|
56 |
+
color: #555;
|
57 |
+
font-weight: 600;
|
58 |
+
text-transform: uppercase;
|
59 |
+
}
|
60 |
+
/* Cell border*/
|
61 |
+
.block_hints .block_free, .block_hints .block_time, .block_hints .block_booked, .block_hints .block_pending, .block_hints .block_check_in_out,
|
62 |
+
.datepick-inline .datepick-days-cell{
|
63 |
+
border: 1px solid #ccc;
|
64 |
+
color:#aaa;
|
65 |
+
}
|
66 |
+
|
67 |
+
/* Dates Cells **********************************************************/
|
68 |
+
/*******************************************************************************/
|
69 |
+
|
70 |
+
/* A V A I L A B L E - BACKGROUND */
|
71 |
+
.block_hints .block_free,
|
72 |
+
.block_hints .block_time,
|
73 |
+
.block_hints .block_check_in_out div.check-in-div, /* Item for the LEGEND */
|
74 |
+
.block_hints .block_check_in_out div.check-out-div, /* Item for the LEGEND */
|
75 |
+
.datepick-inline .date_available,
|
76 |
+
.datepick-inline .timespartly.check_in_time div.check-in-div, /* Define the COLOR fot the check in / out times the same as available*/
|
77 |
+
.datepick-inline .timespartly.check_out_time div.check-out-div {
|
78 |
+
background: none repeat scroll 0 0 #eee;
|
79 |
+
}
|
80 |
+
/* A V A I L A B L E and UNSELECTABLE - Text */
|
81 |
+
.block_hints .block_free,
|
82 |
+
.datepick-inline .date_available,
|
83 |
+
.datepick-inline .date_available.datepick-unselectable{
|
84 |
+
color: #CCCCCC; /* This style for the uvailbale date, when we are select the dates */
|
85 |
+
text-shadow: 0 1px 0 #ddd; /* This style for the uvailbale date, when we are select the dates */
|
86 |
+
}
|
87 |
+
/* A V A I L A B L E - Text A */
|
88 |
+
.block_hints .block_free a,
|
89 |
+
.block_hints .block_time,
|
90 |
+
.datepick-inline .date_available a {
|
91 |
+
color:#707070;
|
92 |
+
font-weight: 600;
|
93 |
+
text-shadow: 0 1px 0 #eee;
|
94 |
+
}
|
95 |
+
.datepick-inline .date_available.datepick-unselectable span{ /* //FixIn: 8.9.4.13 */
|
96 |
+
text-shadow: none;
|
97 |
+
}
|
98 |
+
/*******************************************************************************/
|
99 |
+
|
100 |
+
/* T I M E S L O T S */
|
101 |
+
.block_hints .block_time,
|
102 |
+
.datepick-inline .timespartly{
|
103 |
+
/*background-image: url("../../assets/img/clock_fill.png");*/ /* //FixIn: 8.9.4.13 */
|
104 |
+
background-repeat: no-repeat;
|
105 |
+
background-position:100% 100%;
|
106 |
+
}
|
107 |
+
/*******************************************************************************/
|
108 |
+
|
109 |
+
/* A P P R O V E D - BACKGROUND */
|
110 |
+
.block_hints .date_approved.block_check_in_out,
|
111 |
+
.block_hints .block_booked,
|
112 |
+
.datepick-inline .date_approved,
|
113 |
+
/* A P P R O V E D - BACKGROUND for Check In Pending & Check Out Approved || Check Out Pending & Check In Approved Dates //FixIn: 6.0.1.2 */
|
114 |
+
td.timespartly.check_in_time.check_out_time.check_in_time_date2approve.check_out_time_date_approved div.check-in-div,
|
115 |
+
td.timespartly.check_in_time.check_out_time.check_out_time_date2approve.check_in_time_date_approved div.check-out-div {
|
116 |
+
background-color: #D2AA8B;
|
117 |
+
}
|
118 |
+
/* A P P R O V E D - T E X T /including partially booked - timeslots/ */
|
119 |
+
.block_hints .date_approved.block_check_in_out,
|
120 |
+
.block_hints .block_booked,
|
121 |
+
.datepick-inline .date_approved,
|
122 |
+
.block_hints .block_booked a,
|
123 |
+
.datepick-inline .date_approved a{
|
124 |
+
color: #AA7D77;
|
125 |
+
font-weight: 600;
|
126 |
+
text-shadow: 0 1px 0 #BBBE87;
|
127 |
+
}
|
128 |
+
/* CHECK IN and CHECK OUT Borders for the approved cells - the COLOR have to be the SAME as BACKGROUND of this cell*/
|
129 |
+
.block_hints .date_approved.block_check_in_out div.check-in-div, /* Item for the LEGEND */
|
130 |
+
.datepick-inline .date_approved.timespartly.check_in_time div.check-in-div{
|
131 |
+
border-right: 1px dotted #D2AA8B;
|
132 |
+
}
|
133 |
+
.block_hints .date_approved.block_check_in_out div.check-out-div, /* Item for the LEGEND */
|
134 |
+
.datepick-inline .date_approved.timespartly.check_out_time div.check-out-div{
|
135 |
+
border-left: 1px dotted #D2AA8B;
|
136 |
+
}
|
137 |
+
/*******************************************************************************/
|
138 |
+
|
139 |
+
/* P E N D I N G - BACKGROUND */
|
140 |
+
.block_hints .date2approve.block_check_in_out,
|
141 |
+
.block_hints .block_pending,
|
142 |
+
.datepick-inline .date2approve,
|
143 |
+
/* P E N D I N G - BACKGROUND for Check In Approved & Check Out Pending || Check Out Approved & Check In Pending Dates //FixIn: 6.0.1.2 */
|
144 |
+
td.timespartly.check_in_time.check_out_time.check_in_time_date_approved.check_out_time_date2approve div.check-in-div,
|
145 |
+
td.timespartly.check_in_time.check_out_time.check_out_time_date_approved.check_in_time_date2approve div.check-out-div {
|
146 |
+
background-color: #F5E5BF;
|
147 |
+
}
|
148 |
+
/* P E N D I N G - T E X T /including partially booked - timeslots/ */
|
149 |
+
.block_hints .date2approve.block_check_in_out,
|
150 |
+
.block_hints .block_pending,
|
151 |
+
.datepick-inline .date2approve,
|
152 |
+
.block_hints .block_pending a,
|
153 |
+
.datepick-inline .date2approve a {
|
154 |
+
color: #DABF8F;
|
155 |
+
font-weight: 600;
|
156 |
+
text-shadow: 0 1px 0 #EEEEEE;
|
157 |
+
}
|
158 |
+
/* CHECK IN and CHECK OUT Borders for the approved cells - the COLOR have to be the SAME as BACKGROUND of this cell*/
|
159 |
+
.block_hints .date2approve.block_check_in_out div.check-in-div, /* Item for the LEGEND */
|
160 |
+
.datepick-inline .date2approve.timespartly.check_in_time div.check-in-div{
|
161 |
+
border-right: 1px dotted #F5E5BF;
|
162 |
+
}
|
163 |
+
.block_hints .date2approve.block_check_in_out div.check-out-div, /* Item for the LEGEND */
|
164 |
+
.datepick-inline .date2approve.timespartly.check_out_time div.check-out-div{
|
165 |
+
border-left: 1px dotted #F5E5BF;
|
166 |
+
}
|
167 |
+
/*******************************************************************************/
|
168 |
+
|
169 |
+
/* S E L E C T E D Dates - Background */
|
170 |
+
.datepick-inline .datepick-one-month .datepick .datepick-current-day {
|
171 |
+
background-color: #889;
|
172 |
+
}
|
173 |
+
/* S E L E C T E D Dates - Text color */
|
174 |
+
.datepick-inline .datepick-one-month .datepick .datepick-current-day .wpbc_time_dots, /* //FixIn: 8.9.4.13 */
|
175 |
+
.datepick-inline .datepick-one-month .datepick .datepick-current-day a{
|
176 |
+
color: #EEEEEE;
|
177 |
+
text-shadow: 0 -1px 0 #7777AA;
|
178 |
+
}
|
179 |
+
/*******************************************************************************/
|
180 |
+
|
181 |
+
/* C e l l O V E R Dates - Background */
|
182 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .times_clock.datepick-days-cell-over,
|
183 |
+
.datepick-inline .datepick .datepick-days-cell-over{
|
184 |
+
background:#bbc;
|
185 |
+
}
|
186 |
+
/* C e l l O V E R Dates - Text color */
|
187 |
+
.datepick-inline .datepick-one-month .datepick .datepick-days-cell-over .wpbc_time_dots, /* //FixIn: 8.9.4.13 */
|
188 |
+
.datepick-inline .datepick-one-month .datepick td.datepick-days-cell-over a:hover,
|
189 |
+
.datepick-inline .datepick-one-month .datepick td.datepick-days-cell-over a{
|
190 |
+
color: #eee;
|
191 |
+
text-shadow: 0 -1px 0 #888;
|
192 |
+
}
|
193 |
+
/*******************************************************************************/
|
194 |
+
/* FixIn: 6.0.1.2 */
|
195 |
+
/* Text style for Check In Approved & Check Out Pending || Check Out Approved & Check In Pending || Check In Pending & Check Out Approved || Check Out Pending & Check In Approved */
|
196 |
+
td.timespartly.check_in_time.check_out_time.check_in_time_date_approved.check_out_time_date2approve span,
|
197 |
+
td.timespartly.check_in_time.check_out_time.check_out_time_date_approved.check_in_time_date2approve span,
|
198 |
+
td.timespartly.check_in_time.check_out_time.check_in_time_date2approve.check_out_time_date_approved span,
|
199 |
+
td.timespartly.check_in_time.check_out_time.check_out_time_date2approve.check_in_time_date_approved span {
|
200 |
+
font-weight: 600;
|
201 |
+
text-shadow: none;
|
202 |
+
}
|
203 |
+
|
204 |
+
/* Show partially (time-slots) booked days with Background color as for available days ********************************/
|
205 |
+
/** //FixIn: 8.2.1.27 Updated 2018-07-04 ****/
|
206 |
+
/* Color as in this section A V A I L A B L E - BACKGROUND */
|
207 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .times_clock {
|
208 |
+
background-color: #eee;
|
209 |
+
}
|
210 |
+
/* Same as in this Section above --- A V A I L A B L E - Text A */
|
211 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .times_clock.date_available a {
|
212 |
+
color:#707070;
|
213 |
+
font-weight: 600;
|
214 |
+
text-shadow: 0 1px 0 #eee;
|
215 |
+
}
|
216 |
+
/* Same as in this Section above --- S E L E C T E D Dates - Text color */
|
217 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .datepick-one-month .datepick .times_clock.date_available.datepick-current-day a{
|
218 |
+
color: #EEEEEE;
|
219 |
+
text-shadow: 0 -1px 0 #7777AA;
|
220 |
+
}
|
221 |
+
/* Same as in this Section above --- A V A I L A B L E and UNSELECTABLE - Text */
|
222 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .date_available {
|
223 |
+
color: #CCCCCC; /* This style for the uvailbale date, when we are select the dates */
|
224 |
+
text-shadow: none; /* This style for the unavailable date, when we are select the dates */
|
225 |
+
}
|
226 |
+
.datepick-inline .date_available span {
|
227 |
+
text-shadow: none;
|
228 |
+
}
|
229 |
+
|
230 |
+
/*******************************************************************************/
|
231 |
+
/* CHECK IN / OUT as P.O.L.Y.G.O.N.S //FixIn: 8.9.4.13 */
|
232 |
+
/*******************************************************************************/
|
233 |
+
/* Fill diagonal check in/out items with AVAILABLE background color */
|
234 |
+
.wpbc-cell-box .wpbc-diagonal-el svg polygon{
|
235 |
+
fill: #eee;
|
236 |
+
}
|
237 |
+
/* Firstly we define background of the day cells background as available */
|
238 |
+
.datepick-inline td.datepick-days-cell.check_in_time,
|
239 |
+
.datepick-inline td.datepick-days-cell.check_out_time {
|
240 |
+
background-color: #eee;
|
241 |
+
}
|
242 |
+
/* Pending */
|
243 |
+
.datepick-inline td.datepick-days-cell.check_in_time.check_in_time_date2approve .wpbc-cell-box .wpbc-co-in svg polygon, /* Check In */
|
244 |
+
.datepick-inline td.datepick-days-cell.check_out_time.check_out_time_date2approve .wpbc-cell-box .wpbc-co-out svg polygon /* Check Out */
|
245 |
+
{
|
246 |
+
fill: #F5E5BF;
|
247 |
+
}
|
248 |
+
/* Approved */
|
249 |
+
.datepick-inline td.datepick-days-cell.check_in_time.check_in_time_date_approved .wpbc-cell-box .wpbc-co-in svg polygon, /* Check In */
|
250 |
+
.datepick-inline td.datepick-days-cell.check_out_time.check_out_time_date_approved .wpbc-cell-box .wpbc-co-out svg polygon /* Check Out */
|
251 |
+
{
|
252 |
+
fill: #D2AA8B;
|
253 |
+
}
|
254 |
+
/* C e l l O V E R Dates */
|
255 |
+
.datepick-inline td.datepick-days-cell.check_in_time.datepick-days-cell-over,
|
256 |
+
.datepick-inline td.datepick-days-cell.check_out_time.datepick-days-cell-over {
|
257 |
+
background-color: #bbc;
|
258 |
+
}
|
css/skins/premium-light.css
CHANGED
@@ -17,45 +17,38 @@
|
|
17 |
|
18 |
/* Full Calendar Frame */
|
19 |
.datepick-inline {
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
}
|
29 |
/* Background of one calendar month */
|
30 |
.datepick-inline .datepick{
|
31 |
-
background:
|
32 |
}
|
33 |
/* Previous & Next links and TITLE BACKGROUND */
|
34 |
.datepick-inline .calendar-links {
|
35 |
-
|
36 |
-
|
37 |
-
/*background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ddd), to(#eee)); /* Safari 4-5, Chrome 1-9 */
|
38 |
-
/*background: -webkit-linear-gradient(top, #ddd, #eee); /* Safari 5.1, Chrome 10+ */
|
39 |
-
/*background: -moz-linear-gradient(top, #ddd, #eee); /* Firefox 3.6+ */
|
40 |
-
/*background: -ms-linear-gradient(top, #ddd, #eee); /* IE 10 */
|
41 |
-
/*background: -o-linear-gradient(top, #ddd, #eee); /* Opera 11.10+ */
|
42 |
-
|
43 |
-
border-bottom: 1px solid #aaa;
|
44 |
}
|
45 |
/* Prev - Next Text */
|
46 |
.datepick-inline .calendar-links .datepick-prev a,
|
47 |
.datepick-inline .calendar-links .datepick-next a,
|
48 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
49 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
}
|
54 |
/* Month Titles */
|
55 |
.datepick-inline .datepick-header {
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
}
|
60 |
/* Week Titles */
|
61 |
div.datepick-inline .datepick-title-row th{
|
17 |
|
18 |
/* Full Calendar Frame */
|
19 |
.datepick-inline {
|
20 |
+
background: #fff; /* FixIn: 9.3.1.4 */
|
21 |
+
border: 1px solid #e4e4e4;
|
22 |
+
box-shadow: 0 0 1px #cacaca;
|
23 |
+
-moz-box-shadow: 0 0 1px #cacaca;
|
24 |
+
-webkit-box-shadow: 0 0 1px #cacaca;
|
25 |
+
border-radius: 0;
|
26 |
+
-moz-border-radius: 0;
|
27 |
+
-webkit-border-radius: 0;
|
28 |
}
|
29 |
/* Background of one calendar month */
|
30 |
.datepick-inline .datepick{
|
31 |
+
background: transparent;
|
32 |
}
|
33 |
/* Previous & Next links and TITLE BACKGROUND */
|
34 |
.datepick-inline .calendar-links {
|
35 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
36 |
+
background: transparent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
}
|
38 |
/* Prev - Next Text */
|
39 |
.datepick-inline .calendar-links .datepick-prev a,
|
40 |
.datepick-inline .calendar-links .datepick-next a,
|
41 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
42 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
43 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
44 |
+
text-shadow: none;
|
45 |
+
font-weight: 600;
|
46 |
}
|
47 |
/* Month Titles */
|
48 |
.datepick-inline .datepick-header {
|
49 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
50 |
+
font-weight: 600;
|
51 |
+
text-shadow: none;
|
52 |
}
|
53 |
/* Week Titles */
|
54 |
div.datepick-inline .datepick-title-row th{
|
css/skins/premium-marine.css
CHANGED
@@ -14,17 +14,16 @@
|
|
14 |
*
|
15 |
*/
|
16 |
|
17 |
-
|
18 |
/* Full Calendar Frame */
|
19 |
.datepick-inline {
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
}
|
29 |
/* Background of one calendar month */
|
30 |
.datepick-inline .datepick{
|
@@ -32,30 +31,23 @@
|
|
32 |
}
|
33 |
/* Previous & Next links and TITLE BACKGROUND */
|
34 |
.datepick-inline .calendar-links {
|
35 |
-
|
36 |
-
|
37 |
-
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ccccce), to(#EFEFEF)); /* Safari 4-5, Chrome 1-9 */
|
38 |
-
background: -webkit-linear-gradient(top, #CCCCCE, #EFEFEF); /* Safari 5.1, Chrome 10+ */
|
39 |
-
background: -moz-linear-gradient(top, #CCCCCE, #EFEFEF); /* Firefox 3.6+ */
|
40 |
-
background: -ms-linear-gradient(top, #CCCCCE, #EFEFEF); /* IE 10 */
|
41 |
-
background: -o-linear-gradient(top, #CCCCCE, #EFEFEF); /* Opera 11.10+ */
|
42 |
-
|
43 |
-
border-bottom: 1px solid #aaa;
|
44 |
}
|
45 |
/* Prev - Next Text */
|
46 |
.datepick-inline .calendar-links .datepick-prev a,
|
47 |
.datepick-inline .calendar-links .datepick-next a,
|
48 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
49 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
}
|
54 |
/* Month Titles */
|
55 |
.datepick-inline .datepick-header {
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
}
|
60 |
/* Week Titles */
|
61 |
div.datepick-inline .datepick-title-row th{
|
14 |
*
|
15 |
*/
|
16 |
|
|
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
+
background: #fff; /* FixIn: 9.3.1.4 */
|
20 |
+
border: 1px solid #e4e4e4;
|
21 |
+
box-shadow: 0 0 1px #cacaca;
|
22 |
+
-moz-box-shadow: 0 0 1px #cacaca;
|
23 |
+
-webkit-box-shadow: 0 0 1px #cacaca;
|
24 |
+
border-radius: 0;
|
25 |
+
-moz-border-radius: 0;
|
26 |
+
-webkit-border-radius: 0;
|
27 |
}
|
28 |
/* Background of one calendar month */
|
29 |
.datepick-inline .datepick{
|
31 |
}
|
32 |
/* Previous & Next links and TITLE BACKGROUND */
|
33 |
.datepick-inline .calendar-links {
|
34 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
35 |
+
background: transparent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
}
|
37 |
/* Prev - Next Text */
|
38 |
.datepick-inline .calendar-links .datepick-prev a,
|
39 |
.datepick-inline .calendar-links .datepick-next a,
|
40 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
41 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
42 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
43 |
+
text-shadow: none;
|
44 |
+
font-weight: 600;
|
45 |
}
|
46 |
/* Month Titles */
|
47 |
.datepick-inline .datepick-header {
|
48 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
49 |
+
font-weight: 600;
|
50 |
+
text-shadow: none;
|
51 |
}
|
52 |
/* Week Titles */
|
53 |
div.datepick-inline .datepick-title-row th{
|
css/skins/premium-steel-noborder.css
ADDED
@@ -0,0 +1,258 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*******************************************************************************/
|
2 |
+
/* Traditionsl - C O L O R S K I N ****************************/
|
3 |
+
/*******************************************************************************/
|
4 |
+
/* For better compatibility, please change here only folowing properties: */
|
5 |
+
/*
|
6 |
+
* background , background-color, background-repeat, background-image, background-repeat, background-position
|
7 |
+
* border
|
8 |
+
* box-shadow, -moz-box-shadow, -webkit-box-shadow
|
9 |
+
* border-radius, -moz-border-radius, -webkit-border-radius
|
10 |
+
* color
|
11 |
+
* font-weight
|
12 |
+
* text-shadow
|
13 |
+
* text-transform
|
14 |
+
*
|
15 |
+
*/
|
16 |
+
/**********************************************************************************************************************************************************/
|
17 |
+
|
18 |
+
/* Full Calendar Frame */
|
19 |
+
.datepick-inline {
|
20 |
+
background: transparent; /* FixIn: 9.3.1.4 */
|
21 |
+
border: 0px solid #e4e4e4;
|
22 |
+
box-shadow: 0 0 0px #cacaca;
|
23 |
+
-moz-box-shadow: 0 0 0px #cacaca;
|
24 |
+
-webkit-box-shadow: 0 0 0px #cacaca;
|
25 |
+
border-radius: 0;
|
26 |
+
-moz-border-radius: 0;
|
27 |
+
-webkit-border-radius: 0;
|
28 |
+
}
|
29 |
+
/* Background of one calendar month */
|
30 |
+
.datepick-inline .datepick{
|
31 |
+
background: #fff;
|
32 |
+
}
|
33 |
+
/* Previous & Next links and TITLE BACKGROUND */
|
34 |
+
.datepick-inline .calendar-links {
|
35 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
36 |
+
background: transparent;
|
37 |
+
}
|
38 |
+
/* Prev - Next Text */
|
39 |
+
.datepick-inline .calendar-links .datepick-prev a,
|
40 |
+
.datepick-inline .calendar-links .datepick-next a,
|
41 |
+
.datepick-inline .calendar-links .datepick-prev a:hover,
|
42 |
+
.datepick-inline .calendar-links .datepick-next a:hover{
|
43 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
44 |
+
text-shadow: none;
|
45 |
+
font-weight: 600;
|
46 |
+
}
|
47 |
+
/* Month Titles */
|
48 |
+
.datepick-inline .datepick-header {
|
49 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
50 |
+
font-weight: 600;
|
51 |
+
text-shadow: none;
|
52 |
+
}
|
53 |
+
/* Week Titles */
|
54 |
+
div.datepick-inline .datepick-title-row th{
|
55 |
+
border: 1px solid #ccc;
|
56 |
+
color: #555;
|
57 |
+
font-weight: 600;
|
58 |
+
text-transform: uppercase;
|
59 |
+
}
|
60 |
+
/* Cell border*/
|
61 |
+
.block_hints .block_free, .block_hints .block_time, .block_hints .block_booked, .block_hints .block_pending, .block_hints .block_check_in_out,
|
62 |
+
.datepick-inline .datepick-days-cell{
|
63 |
+
border: 1px solid #ccc;
|
64 |
+
color:#aaa;
|
65 |
+
}
|
66 |
+
|
67 |
+
/* Dates Cells **********************************************************/
|
68 |
+
/*******************************************************************************/
|
69 |
+
|
70 |
+
/* A V A I L A B L E - BACKGROUND */
|
71 |
+
.block_hints .block_free,
|
72 |
+
.block_hints .block_time,
|
73 |
+
.block_hints .block_check_in_out div.check-in-div, /* Item for the LEGEND */
|
74 |
+
.block_hints .block_check_in_out div.check-out-div, /* Item for the LEGEND */
|
75 |
+
.datepick-inline .date_available,
|
76 |
+
.datepick-inline .timespartly.check_in_time div.check-in-div, /* Define the COLOR fot the check in / out times the same as available*/
|
77 |
+
.datepick-inline .timespartly.check_out_time div.check-out-div {
|
78 |
+
background: none repeat scroll 0 0 #eee;
|
79 |
+
}
|
80 |
+
/* A V A I L A B L E and UNSELECTABLE - Text */
|
81 |
+
.block_hints .block_free,
|
82 |
+
.datepick-inline .date_available,
|
83 |
+
.datepick-inline .date_available.datepick-unselectable{
|
84 |
+
color: #CCCCCC; /* This style for the uvailbale date, when we are select the dates */
|
85 |
+
text-shadow: 0 1px 0 #ddd; /* This style for the uvailbale date, when we are select the dates */
|
86 |
+
}
|
87 |
+
/* A V A I L A B L E - Text A */
|
88 |
+
.block_hints .block_free a,
|
89 |
+
.block_hints .block_time,
|
90 |
+
.datepick-inline .date_available a {
|
91 |
+
color:#707070;
|
92 |
+
font-weight: 600;
|
93 |
+
text-shadow: 0 1px 0 #eee;
|
94 |
+
}
|
95 |
+
.datepick-inline .date_available.datepick-unselectable span{ /* //FixIn: 8.9.4.13 */
|
96 |
+
text-shadow: none;
|
97 |
+
}
|
98 |
+
/*******************************************************************************/
|
99 |
+
|
100 |
+
/* T I M E S L O T S */
|
101 |
+
.block_hints .block_time,
|
102 |
+
.datepick-inline .timespartly{
|
103 |
+
/*background-image: url("../../assets/img/clock_fill.png");*/ /* //FixIn: 8.9.4.13 */
|
104 |
+
background-repeat: no-repeat;
|
105 |
+
background-position:100% 100%;
|
106 |
+
}
|
107 |
+
/*******************************************************************************/
|
108 |
+
|
109 |
+
/* A P P R O V E D - BACKGROUND */
|
110 |
+
.block_hints .date_approved.block_check_in_out,
|
111 |
+
.block_hints .block_booked,
|
112 |
+
.datepick-inline .date_approved,
|
113 |
+
/* A P P R O V E D - BACKGROUND for Check In Pending & Check Out Approved || Check Out Pending & Check In Approved Dates //FixIn: 6.0.1.2 */
|
114 |
+
td.timespartly.check_in_time.check_out_time.check_in_time_date2approve.check_out_time_date_approved div.check-in-div,
|
115 |
+
td.timespartly.check_in_time.check_out_time.check_out_time_date2approve.check_in_time_date_approved div.check-out-div {
|
116 |
+
background-color: #9999A0;
|
117 |
+
}
|
118 |
+
/* A P P R O V E D - T E X T /including partially booked - timeslots/ */
|
119 |
+
.block_hints .date_approved.block_check_in_out,
|
120 |
+
.block_hints .block_booked,
|
121 |
+
.datepick-inline .date_approved,
|
122 |
+
.block_hints .block_booked a,
|
123 |
+
.datepick-inline .date_approved a{
|
124 |
+
color: #777;
|
125 |
+
font-weight: 600;
|
126 |
+
text-shadow: 0 1px 0 #aaa;
|
127 |
+
}
|
128 |
+
/* CHECK IN and CHECK OUT Borders for the approved cells - the COLOR have to be the SAME as BACKGROUND of this cell*/
|
129 |
+
.block_hints .date_approved.block_check_in_out div.check-in-div, /* Item for the LEGEND */
|
130 |
+
.datepick-inline .date_approved.timespartly.check_in_time div.check-in-div{
|
131 |
+
border-right: 1px dotted #9999A0;
|
132 |
+
}
|
133 |
+
.block_hints .date_approved.block_check_in_out div.check-out-div, /* Item for the LEGEND */
|
134 |
+
.datepick-inline .date_approved.timespartly.check_out_time div.check-out-div{
|
135 |
+
border-left: 1px dotted #9999A0;
|
136 |
+
}
|
137 |
+
/*******************************************************************************/
|
138 |
+
|
139 |
+
/* P E N D I N G - BACKGROUND */
|
140 |
+
.block_hints .date2approve.block_check_in_out,
|
141 |
+
.block_hints .block_pending,
|
142 |
+
.datepick-inline .date2approve,
|
143 |
+
/* P E N D I N G - BACKGROUND for Check In Approved & Check Out Pending || Check Out Approved & Check In Pending Dates //FixIn: 6.0.1.2 */
|
144 |
+
td.timespartly.check_in_time.check_out_time.check_in_time_date_approved.check_out_time_date2approve div.check-in-div,
|
145 |
+
td.timespartly.check_in_time.check_out_time.check_out_time_date_approved.check_in_time_date2approve div.check-out-div {
|
146 |
+
background-color: #DDDDE0;
|
147 |
+
}
|
148 |
+
/* P E N D I N G - T E X T /including partially booked - timeslots/ */
|
149 |
+
.block_hints .date2approve.block_check_in_out,
|
150 |
+
.block_hints .block_pending,
|
151 |
+
.datepick-inline .date2approve,
|
152 |
+
.block_hints .block_pending a,
|
153 |
+
.datepick-inline .date2approve a {
|
154 |
+
color: #999;
|
155 |
+
font-weight: 600;
|
156 |
+
text-shadow: 0 1px 0 #ddd;
|
157 |
+
}
|
158 |
+
/* CHECK IN and CHECK OUT Borders for the approved cells - the COLOR have to be the SAME as BACKGROUND of this cell*/
|
159 |
+
.block_hints .date2approve.block_check_in_out div.check-in-div, /* Item for the LEGEND */
|
160 |
+
.datepick-inline .date2approve.timespartly.check_in_time div.check-in-div{
|
161 |
+
border-right: 1px dotted #DDDDE0;
|
162 |
+
}
|
163 |
+
.block_hints .date2approve.block_check_in_out div.check-out-div, /* Item for the LEGEND */
|
164 |
+
.datepick-inline .date2approve.timespartly.check_out_time div.check-out-div{
|
165 |
+
border-left: 1px dotted #DDDDE0;
|
166 |
+
}
|
167 |
+
/*******************************************************************************/
|
168 |
+
|
169 |
+
/* S E L E C T E D Dates - Background */
|
170 |
+
.datepick-inline .datepick-one-month .datepick .datepick-current-day {
|
171 |
+
background-color: #88b;
|
172 |
+
}
|
173 |
+
/* S E L E C T E D Dates - Text color */
|
174 |
+
.datepick-inline .datepick-one-month .datepick .datepick-current-day .wpbc_time_dots, /* //FixIn: 8.9.4.13 */
|
175 |
+
.datepick-inline .datepick-one-month .datepick .datepick-current-day a{
|
176 |
+
color: #EEEEEE;
|
177 |
+
text-shadow: 0 -1px 0 #7777AA;
|
178 |
+
}
|
179 |
+
/*******************************************************************************/
|
180 |
+
|
181 |
+
/* C e l l O V E R Dates - Background */
|
182 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .times_clock.datepick-days-cell-over,
|
183 |
+
.datepick-inline .datepick .datepick-days-cell-over{
|
184 |
+
background:#aae;
|
185 |
+
}
|
186 |
+
/* C e l l O V E R Dates - Text color */
|
187 |
+
.datepick-inline .datepick-one-month .datepick .datepick-days-cell-over .wpbc_time_dots, /* //FixIn: 8.9.4.13 */
|
188 |
+
.datepick-inline .datepick-one-month .datepick td.datepick-days-cell-over a:hover,
|
189 |
+
.datepick-inline .datepick-one-month .datepick td.datepick-days-cell-over a{
|
190 |
+
color: #eee;
|
191 |
+
text-shadow: 0 -1px 0 #888;
|
192 |
+
}
|
193 |
+
/*******************************************************************************/
|
194 |
+
/* FixIn: 6.0.1.2 */
|
195 |
+
/* Text style for Check In Approved & Check Out Pending || Check Out Approved & Check In Pending || Check In Pending & Check Out Approved || Check Out Pending & Check In Approved */
|
196 |
+
td.timespartly.check_in_time.check_out_time.check_in_time_date_approved.check_out_time_date2approve span,
|
197 |
+
td.timespartly.check_in_time.check_out_time.check_out_time_date_approved.check_in_time_date2approve span,
|
198 |
+
td.timespartly.check_in_time.check_out_time.check_in_time_date2approve.check_out_time_date_approved span,
|
199 |
+
td.timespartly.check_in_time.check_out_time.check_out_time_date2approve.check_in_time_date_approved span {
|
200 |
+
font-weight: 600;
|
201 |
+
text-shadow: none;
|
202 |
+
}
|
203 |
+
|
204 |
+
/* Show partially (time-slots) booked days with Background color as for available days ********************************/
|
205 |
+
/** //FixIn: 8.2.1.27 Updated 2018-07-04 ****/
|
206 |
+
/* Color as in this section A V A I L A B L E - BACKGROUND */
|
207 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .times_clock {
|
208 |
+
background-color: #eee;
|
209 |
+
}
|
210 |
+
/* Same as in this Section above --- A V A I L A B L E - Text A */
|
211 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .times_clock.date_available a {
|
212 |
+
color:#707070;
|
213 |
+
font-weight: 600;
|
214 |
+
text-shadow: 0 1px 0 #eee;
|
215 |
+
}
|
216 |
+
/* Same as in this Section above --- S E L E C T E D Dates - Text color */
|
217 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .datepick-one-month .datepick .times_clock.date_available.datepick-current-day a{
|
218 |
+
color: #EEEEEE;
|
219 |
+
text-shadow: 0 -1px 0 #7777AA;
|
220 |
+
}
|
221 |
+
/* Same as in this Section above --- A V A I L A B L E and UNSELECTABLE - Text */
|
222 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .date_available {
|
223 |
+
color: #CCCCCC; /* This style for the uvailbale date, when we are select the dates */
|
224 |
+
text-shadow: none; /* This style for the unavailable date, when we are select the dates */
|
225 |
+
}
|
226 |
+
.datepick-inline .date_available span {
|
227 |
+
text-shadow: none;
|
228 |
+
}
|
229 |
+
|
230 |
+
/*******************************************************************************/
|
231 |
+
/* CHECK IN / OUT as P.O.L.Y.G.O.N.S //FixIn: 8.9.4.13 */
|
232 |
+
/*******************************************************************************/
|
233 |
+
/* Fill diagonal check in/out items with AVAILABLE background color */
|
234 |
+
.wpbc-cell-box .wpbc-diagonal-el svg polygon{
|
235 |
+
fill: #eee;
|
236 |
+
}
|
237 |
+
/* Firstly we define background of the day cells background as available */
|
238 |
+
.datepick-inline td.datepick-days-cell.check_in_time,
|
239 |
+
.datepick-inline td.datepick-days-cell.check_out_time {
|
240 |
+
background-color: #eee;
|
241 |
+
}
|
242 |
+
/* Pending */
|
243 |
+
.datepick-inline td.datepick-days-cell.check_in_time.check_in_time_date2approve .wpbc-cell-box .wpbc-co-in svg polygon, /* Check In */
|
244 |
+
.datepick-inline td.datepick-days-cell.check_out_time.check_out_time_date2approve .wpbc-cell-box .wpbc-co-out svg polygon /* Check Out */
|
245 |
+
{
|
246 |
+
fill: #DDDDE0;
|
247 |
+
}
|
248 |
+
/* Approved */
|
249 |
+
.datepick-inline td.datepick-days-cell.check_in_time.check_in_time_date_approved .wpbc-cell-box .wpbc-co-in svg polygon, /* Check In */
|
250 |
+
.datepick-inline td.datepick-days-cell.check_out_time.check_out_time_date_approved .wpbc-cell-box .wpbc-co-out svg polygon /* Check Out */
|
251 |
+
{
|
252 |
+
fill: #9999A0;
|
253 |
+
}
|
254 |
+
/* C e l l O V E R Dates */
|
255 |
+
.datepick-inline td.datepick-days-cell.check_in_time.datepick-days-cell-over,
|
256 |
+
.datepick-inline td.datepick-days-cell.check_out_time.datepick-days-cell-over {
|
257 |
+
background-color: #aae;
|
258 |
+
}
|
css/skins/premium-steel.css
CHANGED
@@ -17,14 +17,14 @@
|
|
17 |
|
18 |
/* Full Calendar Frame */
|
19 |
.datepick-inline {
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
}
|
29 |
/* Background of one calendar month */
|
30 |
.datepick-inline .datepick{
|
@@ -32,30 +32,23 @@
|
|
32 |
}
|
33 |
/* Previous & Next links and TITLE BACKGROUND */
|
34 |
.datepick-inline .calendar-links {
|
35 |
-
|
36 |
-
|
37 |
-
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ddd), to(#eee)); /* Safari 4-5, Chrome 1-9 */
|
38 |
-
background: -webkit-linear-gradient(top, #ddd, #eee); /* Safari 5.1, Chrome 10+ */
|
39 |
-
background: -moz-linear-gradient(top, #ddd, #eee); /* Firefox 3.6+ */
|
40 |
-
background: -ms-linear-gradient(top, #ddd, #eee); /* IE 10 */
|
41 |
-
background: -o-linear-gradient(top, #ddd, #eee); /* Opera 11.10+ */
|
42 |
-
|
43 |
-
border-bottom: 1px solid #aaa;
|
44 |
}
|
45 |
/* Prev - Next Text */
|
46 |
.datepick-inline .calendar-links .datepick-prev a,
|
47 |
.datepick-inline .calendar-links .datepick-next a,
|
48 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
49 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
}
|
54 |
/* Month Titles */
|
55 |
.datepick-inline .datepick-header {
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
}
|
60 |
/* Week Titles */
|
61 |
div.datepick-inline .datepick-title-row th{
|
17 |
|
18 |
/* Full Calendar Frame */
|
19 |
.datepick-inline {
|
20 |
+
background: #fff; /* FixIn: 9.3.1.4 */
|
21 |
+
border: 1px solid #e4e4e4;
|
22 |
+
box-shadow: 0 0 1px #cacaca;
|
23 |
+
-moz-box-shadow: 0 0 1px #cacaca;
|
24 |
+
-webkit-box-shadow: 0 0 1px #cacaca;
|
25 |
+
border-radius: 0;
|
26 |
+
-moz-border-radius: 0;
|
27 |
+
-webkit-border-radius: 0;
|
28 |
}
|
29 |
/* Background of one calendar month */
|
30 |
.datepick-inline .datepick{
|
32 |
}
|
33 |
/* Previous & Next links and TITLE BACKGROUND */
|
34 |
.datepick-inline .calendar-links {
|
35 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
36 |
+
background: transparent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
}
|
38 |
/* Prev - Next Text */
|
39 |
.datepick-inline .calendar-links .datepick-prev a,
|
40 |
.datepick-inline .calendar-links .datepick-next a,
|
41 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
42 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
43 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
44 |
+
text-shadow: none;
|
45 |
+
font-weight: 600;
|
46 |
}
|
47 |
/* Month Titles */
|
48 |
.datepick-inline .datepick-header {
|
49 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
50 |
+
font-weight: 600;
|
51 |
+
text-shadow: none;
|
52 |
}
|
53 |
/* Week Titles */
|
54 |
div.datepick-inline .datepick-title-row th{
|
css/skins/standard.css
CHANGED
@@ -16,14 +16,14 @@
|
|
16 |
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
}
|
28 |
/* Background of one calendar month */
|
29 |
.datepick-inline .datepick{
|
@@ -31,30 +31,23 @@
|
|
31 |
}
|
32 |
/* Previous & Next links and TITLE BACKGROUND */
|
33 |
.datepick-inline .calendar-links {
|
34 |
-
|
35 |
-
|
36 |
-
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#DDDDDD), to(#EEEEFF)); /* Safari 4-5, Chrome 1-9 */
|
37 |
-
background: -webkit-linear-gradient(top, #EEEEFF, #DDDDDD); /* Safari 5.1, Chrome 10+ */
|
38 |
-
background: -moz-linear-gradient(top, #EEEEFF, #DDDDDD); /* Firefox 3.6+ */
|
39 |
-
background: -ms-linear-gradient(top, #EEEEFF, #DDDDDD); /* IE 10 */
|
40 |
-
background: -o-linear-gradient(top, #EEEEFF, #DDDDDD); /* Opera 11.10+ */
|
41 |
-
|
42 |
-
border-bottom: 1px solid #aaa;
|
43 |
}
|
44 |
/* Prev - Next Text */
|
45 |
.datepick-inline .calendar-links .datepick-prev a,
|
46 |
.datepick-inline .calendar-links .datepick-next a,
|
47 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
48 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
}
|
53 |
/* Month Titles */
|
54 |
.datepick-inline .datepick-header {
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
}
|
59 |
/* Week Titles */
|
60 |
div.datepick-inline .datepick-title-row th{
|
16 |
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
+
background: #fff; /* FixIn: 9.3.1.4 */
|
20 |
+
border: 1px solid #e4e4e4;
|
21 |
+
box-shadow: 0 0 1px #cacaca;
|
22 |
+
-moz-box-shadow: 0 0 1px #cacaca;
|
23 |
+
-webkit-box-shadow: 0 0 1px #cacaca;
|
24 |
+
border-radius: 0;
|
25 |
+
-moz-border-radius: 0;
|
26 |
+
-webkit-border-radius: 0;
|
27 |
}
|
28 |
/* Background of one calendar month */
|
29 |
.datepick-inline .datepick{
|
31 |
}
|
32 |
/* Previous & Next links and TITLE BACKGROUND */
|
33 |
.datepick-inline .calendar-links {
|
34 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
35 |
+
background: transparent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
}
|
37 |
/* Prev - Next Text */
|
38 |
.datepick-inline .calendar-links .datepick-prev a,
|
39 |
.datepick-inline .calendar-links .datepick-next a,
|
40 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
41 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
42 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
43 |
+
text-shadow: none;
|
44 |
+
font-weight: 600;
|
45 |
}
|
46 |
/* Month Titles */
|
47 |
.datepick-inline .datepick-header {
|
48 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
49 |
+
font-weight: 600;
|
50 |
+
text-shadow: none;
|
51 |
}
|
52 |
/* Week Titles */
|
53 |
div.datepick-inline .datepick-title-row th{
|
css/skins/traditional-light.css
CHANGED
@@ -15,14 +15,14 @@
|
|
15 |
*/
|
16 |
/* Full Calendar Frame */
|
17 |
.datepick-inline {
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
}
|
27 |
/* Background of one calendar month */
|
28 |
.datepick-inline .datepick{
|
@@ -30,30 +30,23 @@
|
|
30 |
}
|
31 |
/* Previous & Next links and TITLE BACKGROUND */
|
32 |
.datepick-inline .calendar-links {
|
33 |
-
|
34 |
-
|
35 |
-
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#F5F5F5), to(#FCFCFC)); /* Safari 4-5, Chrome 1-9 */
|
36 |
-
background: -webkit-linear-gradient(top, #F5F5F5, #FCFCFC); /* Safari 5.1, Chrome 10+ */
|
37 |
-
background: -moz-linear-gradient(top, #F5F5F5, #FCFCFC); /* Firefox 3.6+ */
|
38 |
-
background: -ms-linear-gradient(top, #F5F5F5, #FCFCFC); /* IE 10 */
|
39 |
-
background: -o-linear-gradient(top, #F5F5F5, #FCFCFC); /* Opera 11.10+ */
|
40 |
-
|
41 |
-
border-bottom: 1px solid #aaa;
|
42 |
}
|
43 |
/* Prev - Next Text */
|
44 |
.datepick-inline .calendar-links .datepick-prev a,
|
45 |
.datepick-inline .calendar-links .datepick-next a,
|
46 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
47 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
}
|
52 |
/* Month Titles */
|
53 |
.datepick-inline .datepick-header {
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
}
|
58 |
/* Week Titles */
|
59 |
div.datepick-inline .datepick-title-row th{
|
@@ -93,9 +86,9 @@ div.datepick-inline .datepick-title-row th{
|
|
93 |
.block_hints .block_free a,
|
94 |
.block_hints .block_time,
|
95 |
.datepick-inline .date_available a{
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
}
|
100 |
.datepick-inline .date_available.datepick-unselectable span{ /* //FixIn: 8.9.4.13 */
|
101 |
text-shadow: none;
|
@@ -193,7 +186,7 @@ td.timespartly.check_in_time.check_out_time.check_out_time_date_approved.check_i
|
|
193 |
.datepick-inline .datepick-one-month .datepick td.datepick-days-cell-over a:hover,
|
194 |
.datepick-inline .datepick-one-month .datepick td.datepick-days-cell-over a{
|
195 |
color: #eee;
|
196 |
-
text-shadow: 0 -1px 0 #888
|
197 |
}
|
198 |
/*******************************************************************************/
|
199 |
/* FixIn: 6.0.1.2 */
|
15 |
*/
|
16 |
/* Full Calendar Frame */
|
17 |
.datepick-inline {
|
18 |
+
background: #fff; /* FixIn: 9.3.1.4 */
|
19 |
+
border: 1px solid #e4e4e4;
|
20 |
+
box-shadow: 0 0 1px #cacaca;
|
21 |
+
-moz-box-shadow: 0 0 1px #cacaca;
|
22 |
+
-webkit-box-shadow: 0 0 1px #cacaca;
|
23 |
+
border-radius: 0;
|
24 |
+
-moz-border-radius: 0;
|
25 |
+
-webkit-border-radius: 0;
|
26 |
}
|
27 |
/* Background of one calendar month */
|
28 |
.datepick-inline .datepick{
|
30 |
}
|
31 |
/* Previous & Next links and TITLE BACKGROUND */
|
32 |
.datepick-inline .calendar-links {
|
33 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
34 |
+
background: transparent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
36 |
/* Prev - Next Text */
|
37 |
.datepick-inline .calendar-links .datepick-prev a,
|
38 |
.datepick-inline .calendar-links .datepick-next a,
|
39 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
40 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
41 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
42 |
+
text-shadow: none;
|
43 |
+
font-weight: 600;
|
44 |
}
|
45 |
/* Month Titles */
|
46 |
.datepick-inline .datepick-header {
|
47 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
48 |
+
font-weight: 600;
|
49 |
+
text-shadow: none;
|
50 |
}
|
51 |
/* Week Titles */
|
52 |
div.datepick-inline .datepick-title-row th{
|
86 |
.block_hints .block_free a,
|
87 |
.block_hints .block_time,
|
88 |
.datepick-inline .date_available a{
|
89 |
+
color: #fff;
|
90 |
+
font-weight: 600;
|
91 |
+
text-shadow: 0px 0px 1px #43843f;
|
92 |
}
|
93 |
.datepick-inline .date_available.datepick-unselectable span{ /* //FixIn: 8.9.4.13 */
|
94 |
text-shadow: none;
|
186 |
.datepick-inline .datepick-one-month .datepick td.datepick-days-cell-over a:hover,
|
187 |
.datepick-inline .datepick-one-month .datepick td.datepick-days-cell-over a{
|
188 |
color: #eee;
|
189 |
+
/*text-shadow: 0 -1px 0 #888;*/
|
190 |
}
|
191 |
/*******************************************************************************/
|
192 |
/* FixIn: 6.0.1.2 */
|
css/skins/traditional-times.css
ADDED
@@ -0,0 +1,274 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*******************************************************************************/
|
2 |
+
/* Traditionsl - C O L O R S K I N ****************************/
|
3 |
+
/*******************************************************************************/
|
4 |
+
/* For better compatibility, please change here only folowing properties: */
|
5 |
+
/*
|
6 |
+
* background , background-color, background-repeat, background-image, background-repeat, background-position
|
7 |
+
* border
|
8 |
+
* box-shadow, -moz-box-shadow, -webkit-box-shadow
|
9 |
+
* border-radius, -moz-border-radius, -webkit-border-radius
|
10 |
+
* color
|
11 |
+
* font-weight
|
12 |
+
* text-shadow
|
13 |
+
* text-transform
|
14 |
+
*
|
15 |
+
*/
|
16 |
+
|
17 |
+
/* Full Calendar Frame */
|
18 |
+
.datepick-inline {
|
19 |
+
background: transparent; /* FixIn: 9.3.1.4 */
|
20 |
+
border: 0px solid #e4e4e4;
|
21 |
+
box-shadow: 0 0 0px #cacaca;
|
22 |
+
-moz-box-shadow: 0 0 0px #cacaca;
|
23 |
+
-webkit-box-shadow: 0 0 0px #cacaca;
|
24 |
+
border-radius: 0;
|
25 |
+
-moz-border-radius: 0;
|
26 |
+
-webkit-border-radius: 0;
|
27 |
+
}
|
28 |
+
/* Background of one calendar month */
|
29 |
+
.datepick-inline .datepick{
|
30 |
+
background: #fff;
|
31 |
+
}
|
32 |
+
/* Previous & Next links and TITLE BACKGROUND */
|
33 |
+
.datepick-inline .calendar-links {
|
34 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
35 |
+
background: transparent;
|
36 |
+
}
|
37 |
+
/* Prev - Next Text */
|
38 |
+
.datepick-inline .calendar-links .datepick-prev a,
|
39 |
+
.datepick-inline .calendar-links .datepick-next a,
|
40 |
+
.datepick-inline .calendar-links .datepick-prev a:hover,
|
41 |
+
.datepick-inline .calendar-links .datepick-next a:hover{
|
42 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
43 |
+
text-shadow: none;
|
44 |
+
font-weight: 600;
|
45 |
+
}
|
46 |
+
/* Month Titles */
|
47 |
+
.datepick-inline .datepick-header {
|
48 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
49 |
+
font-weight: 600;
|
50 |
+
text-shadow: none;
|
51 |
+
}
|
52 |
+
/* Week Titles */
|
53 |
+
div.datepick-inline .datepick-title-row th{
|
54 |
+
border: 1px solid #ccc;
|
55 |
+
color: #555;
|
56 |
+
font-weight: 600;
|
57 |
+
text-transform: uppercase;
|
58 |
+
}
|
59 |
+
/* Cell border*/
|
60 |
+
.block_hints .block_free, .block_hints .block_time, .block_hints .block_booked, .block_hints .block_pending, .block_hints .block_check_in_out,
|
61 |
+
.datepick-inline .datepick-days-cell{
|
62 |
+
border: 1px solid #ccc;
|
63 |
+
color:#757575;
|
64 |
+
}
|
65 |
+
|
66 |
+
/* Dates Cells **********************************************************/
|
67 |
+
/*******************************************************************************/
|
68 |
+
|
69 |
+
/* A V A I L A B L E - BACKGROUND */
|
70 |
+
.block_hints .block_free,
|
71 |
+
.block_hints .block_time,
|
72 |
+
.block_hints .block_check_in_out div.check-in-div, /* Item for the LEGEND */
|
73 |
+
.block_hints .block_check_in_out div.check-out-div, /* Item for the LEGEND */
|
74 |
+
.datepick-inline .date_available,
|
75 |
+
.datepick-inline .timespartly.check_in_time div.check-in-div, /* Define the COLOR fot the check in / out times the same as available*/
|
76 |
+
.datepick-inline .timespartly.check_out_time div.check-out-div {
|
77 |
+
background: none repeat scroll 0 0 #f5f5f5;
|
78 |
+
}
|
79 |
+
/* A V A I L A B L E and UNSELECTABLE - Text */
|
80 |
+
.block_hints .block_free,
|
81 |
+
.datepick-inline .date_available,
|
82 |
+
.datepick-inline .date_available.datepick-unselectable{
|
83 |
+
color: #CCCCCC; /* This style for the uvailbale date, when we are select the dates */
|
84 |
+
text-shadow: 0 1px 0 #FFFFFF; /* This style for the uvailbale date, when we are select the dates */
|
85 |
+
}
|
86 |
+
/* A V A I L A B L E - Text A */
|
87 |
+
.block_hints .block_free a,
|
88 |
+
.block_hints .block_time,
|
89 |
+
.datepick-inline .date_available a{
|
90 |
+
color:#89a;
|
91 |
+
font-weight: 600;
|
92 |
+
text-shadow: 0 1px 0 #fff;
|
93 |
+
}
|
94 |
+
.datepick-inline .date_available.datepick-unselectable span{ /* //FixIn: 8.9.4.13 */
|
95 |
+
text-shadow: none;
|
96 |
+
}
|
97 |
+
/*******************************************************************************/
|
98 |
+
|
99 |
+
/* T I M E S L O T S */
|
100 |
+
.block_hints .block_time,
|
101 |
+
.datepick-inline .timespartly{
|
102 |
+
/*background-image: url("../../assets/img/clock_fill.png");*/ /* //FixIn: 8.9.4.13 */
|
103 |
+
background-repeat: no-repeat;
|
104 |
+
background-position:100% 100%;
|
105 |
+
}
|
106 |
+
/*******************************************************************************/
|
107 |
+
|
108 |
+
/* A P P R O V E D - BACKGROUND */
|
109 |
+
.block_hints .date_approved.block_check_in_out,
|
110 |
+
.block_hints .block_booked,
|
111 |
+
.datepick-inline .date_approved,
|
112 |
+
/* A P P R O V E D - BACKGROUND for Check In Pending & Check Out Approved || Check Out Pending & Check In Approved Dates //FixIn: 6.0.1.2 */
|
113 |
+
td.timespartly.check_in_time.check_out_time.check_in_time_date2approve.check_out_time_date_approved div.check-in-div,
|
114 |
+
td.timespartly.check_in_time.check_out_time.check_out_time_date2approve.check_in_time_date_approved div.check-out-div {
|
115 |
+
background-color: #C60B0B;
|
116 |
+
}
|
117 |
+
/* A P P R O V E D - T E X T /including partially booked - timeslots/ */
|
118 |
+
.block_hints .date_approved.block_check_in_out,
|
119 |
+
.block_hints .block_booked,
|
120 |
+
.datepick-inline .date_approved,
|
121 |
+
.block_hints .block_booked a,
|
122 |
+
.datepick-inline .date_approved a{
|
123 |
+
color: #5F0000;
|
124 |
+
font-weight: 600;
|
125 |
+
text-shadow: 0 1px 0 #DD0000;
|
126 |
+
}
|
127 |
+
/* CHECK IN and CHECK OUT Borders for the approved cells - the COLOR have to be the SAME as BACKGROUND of this cell*/
|
128 |
+
.block_hints .date_approved.block_check_in_out div.check-in-div, /* Item for the LEGEND */
|
129 |
+
.datepick-inline .date_approved.timespartly.check_in_time div.check-in-div{
|
130 |
+
border-right: 1px dotted #C60B0B;
|
131 |
+
}
|
132 |
+
.block_hints .date_approved.block_check_in_out div.check-out-div, /* Item for the LEGEND */
|
133 |
+
.datepick-inline .date_approved.timespartly.check_out_time div.check-out-div{
|
134 |
+
border-left: 1px dotted #C60B0B;
|
135 |
+
}
|
136 |
+
/*******************************************************************************/
|
137 |
+
|
138 |
+
/* P E N D I N G - BACKGROUND */
|
139 |
+
.block_hints .date2approve.block_check_in_out,
|
140 |
+
.block_hints .block_pending,
|
141 |
+
.datepick-inline .date2approve,
|
142 |
+
/* P E N D I N G - BACKGROUND for Check In Approved & Check Out Pending || Check Out Approved & Check In Pending Dates //FixIn: 6.0.1.2 */
|
143 |
+
td.timespartly.check_in_time.check_out_time.check_in_time_date_approved.check_out_time_date2approve div.check-in-div,
|
144 |
+
td.timespartly.check_in_time.check_out_time.check_out_time_date_approved.check_in_time_date2approve div.check-out-div {
|
145 |
+
background-color: #DF9A00;
|
146 |
+
}
|
147 |
+
/* P E N D I N G - T E X T /including partially booked - timeslots/ */
|
148 |
+
.block_hints .date2approve.block_check_in_out,
|
149 |
+
.block_hints .block_pending,
|
150 |
+
.datepick-inline .date2approve,
|
151 |
+
.block_hints .block_pending a,
|
152 |
+
.datepick-inline .date2approve a {
|
153 |
+
color: #885500;
|
154 |
+
font-weight: 600;
|
155 |
+
text-shadow: 0 1px 0 #FFAA00;
|
156 |
+
}
|
157 |
+
/* TIME SLOTs (partially booked) - BACKGROUND */
|
158 |
+
.datepick-inline .date2approve.timespartly,
|
159 |
+
.datepick-inline .date_approved.timespartly {
|
160 |
+
background-color: #C0C60B;
|
161 |
+
}
|
162 |
+
/* TIME SLOTs (partially booked) - TEXT */
|
163 |
+
.datepick-inline .date2approve.timespartly,
|
164 |
+
.datepick-inline .date_approved.timespartly,
|
165 |
+
.datepick-inline .date2approve.timespartly a,
|
166 |
+
.datepick-inline .date_approved.timespartly a{
|
167 |
+
color: #93980c;
|
168 |
+
font-weight: 600;
|
169 |
+
text-shadow: 0 1px 0px #C3C808;
|
170 |
+
}
|
171 |
+
/* CHECK IN and CHECK OUT Borders for the approved cells - the COLOR have to be the SAME as BACKGROUND of this cell*/
|
172 |
+
.block_hints .date2approve.block_check_in_out div.check-in-div, /* Item for the LEGEND */
|
173 |
+
.datepick-inline .date2approve.timespartly.check_in_time div.check-in-div{
|
174 |
+
border-right: 1px dotted #DF9A00;
|
175 |
+
}
|
176 |
+
.block_hints .date2approve.block_check_in_out div.check-out-div, /* Item for the LEGEND */
|
177 |
+
.datepick-inline .date2approve.timespartly.check_out_time div.check-out-div{
|
178 |
+
border-left: 1px dotted #DF9A00;
|
179 |
+
}
|
180 |
+
/*******************************************************************************/
|
181 |
+
|
182 |
+
/* S E L E C T E D Dates - Background */
|
183 |
+
.datepick-inline .datepick-one-month .datepick .datepick-current-day {
|
184 |
+
background-color: #555;
|
185 |
+
}
|
186 |
+
/* S E L E C T E D Dates - Text color */
|
187 |
+
.datepick-inline .datepick-one-month .datepick .datepick-current-day .wpbc_time_dots, /* //FixIn: 8.9.4.13 */
|
188 |
+
.datepick-inline .datepick-one-month .datepick .datepick-current-day a{
|
189 |
+
color: #EEEEEE;
|
190 |
+
text-shadow: 0 -1px 0 #000000;
|
191 |
+
}
|
192 |
+
/*******************************************************************************/
|
193 |
+
|
194 |
+
/* C e l l O V E R Dates - Background */
|
195 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .times_clock.datepick-days-cell-over,
|
196 |
+
.datepick-inline .datepick .datepick-days-cell-over{
|
197 |
+
background:#aaa;
|
198 |
+
}
|
199 |
+
/* C e l l O V E R Dates - Text color */
|
200 |
+
.datepick-inline .datepick-one-month .datepick .datepick-days-cell-over .wpbc_time_dots, /* //FixIn: 8.9.4.13 */
|
201 |
+
/*.datepick-inline .datepick-one-month .datepick td.datepick-days-cell-over a:hover,*/
|
202 |
+
.datepick-inline .datepick-one-month .datepick td.datepick-days-cell-over a {
|
203 |
+
color: #eee;
|
204 |
+
text-shadow: 0 -1px 0 #888;
|
205 |
+
}
|
206 |
+
.datepick-inline td.datepick-days-cell-over.date_available a {
|
207 |
+
text-shadow: none;
|
208 |
+
}
|
209 |
+
/*******************************************************************************/
|
210 |
+
/* FixIn: 6.0.1.2 */
|
211 |
+
/* Text style for Check In Approved & Check Out Pending || Check Out Approved & Check In Pending || Check In Pending & Check Out Approved || Check Out Pending & Check In Approved */
|
212 |
+
td.timespartly.check_in_time.check_out_time.check_in_time_date_approved.check_out_time_date2approve span,
|
213 |
+
td.timespartly.check_in_time.check_out_time.check_out_time_date_approved.check_in_time_date2approve span,
|
214 |
+
td.timespartly.check_in_time.check_out_time.check_in_time_date2approve.check_out_time_date_approved span,
|
215 |
+
td.timespartly.check_in_time.check_out_time.check_out_time_date2approve.check_in_time_date_approved span {
|
216 |
+
font-weight: 600;
|
217 |
+
text-shadow: none;
|
218 |
+
}
|
219 |
+
|
220 |
+
/* Show partially (time-slots) booked days with Background color as for available days ********************************/
|
221 |
+
/** //FixIn: 8.2.1.27 Updated 2018-07-04 ****/
|
222 |
+
/* Color as in this section A V A I L A B L E - BACKGROUND */
|
223 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .times_clock {
|
224 |
+
background-color: #f5f5f5;
|
225 |
+
}
|
226 |
+
/* Same as in this Section above --- A V A I L A B L E - Text A */
|
227 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .times_clock.date_available a {
|
228 |
+
color:#89a;
|
229 |
+
font-weight: 600;
|
230 |
+
text-shadow: 0 1px 0 #fff;
|
231 |
+
}
|
232 |
+
/* Same as in this Section above --- S E L E C T E D Dates - Text color */
|
233 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .datepick-one-month .datepick .times_clock.date_available.datepick-current-day a{
|
234 |
+
color: #EEEEEE;
|
235 |
+
text-shadow: 0 -1px 0 #000000;
|
236 |
+
}
|
237 |
+
/* Same as in this Section above --- A V A I L A B L E and UNSELECTABLE - Text */
|
238 |
+
.wpbc_timeslot_day_bg_as_available .datepick-inline .date_available {
|
239 |
+
color: #CCCCCC; /* This style for the unavailable date, when we are select the dates */
|
240 |
+
text-shadow: none; /* This style for the unavailable date, when we are select the dates */
|
241 |
+
}
|
242 |
+
.datepick-inline .date_available span {
|
243 |
+
text-shadow: none;
|
244 |
+
}
|
245 |
+
|
246 |
+
/*******************************************************************************/
|
247 |
+
/* CHECK IN / OUT as P.O.L.Y.G.O.N.S //FixIn: 8.9.4.13 */
|
248 |
+
/*******************************************************************************/
|
249 |
+
/* Fill diagonal check in/out items with AVAILABLE background color */
|
250 |
+
.wpbc-cell-box .wpbc-diagonal-el svg polygon{
|
251 |
+
fill: #f5f5f5;
|
252 |
+
}
|
253 |
+
/* Firstly we define background of the day cells background as available */
|
254 |
+
.datepick-inline td.datepick-days-cell.check_in_time,
|
255 |
+
.datepick-inline td.datepick-days-cell.check_out_time {
|
256 |
+
background-color: #F5F5F5;
|
257 |
+
}
|
258 |
+
/* Pending */
|
259 |
+
.datepick-inline td.datepick-days-cell.check_in_time.check_in_time_date2approve .wpbc-cell-box .wpbc-co-in svg polygon, /* Check In */
|
260 |
+
.datepick-inline td.datepick-days-cell.check_out_time.check_out_time_date2approve .wpbc-cell-box .wpbc-co-out svg polygon /* Check Out */
|
261 |
+
{
|
262 |
+
fill: #DF9A00;
|
263 |
+
}
|
264 |
+
/* Approved */
|
265 |
+
.datepick-inline td.datepick-days-cell.check_in_time.check_in_time_date_approved .wpbc-cell-box .wpbc-co-in svg polygon, /* Check In */
|
266 |
+
.datepick-inline td.datepick-days-cell.check_out_time.check_out_time_date_approved .wpbc-cell-box .wpbc-co-out svg polygon /* Check Out */
|
267 |
+
{
|
268 |
+
fill: #C60B0B;
|
269 |
+
}
|
270 |
+
/* C e l l O V E R Dates */
|
271 |
+
.datepick-inline td.datepick-days-cell.check_in_time.datepick-days-cell-over,
|
272 |
+
.datepick-inline td.datepick-days-cell.check_out_time.datepick-days-cell-over {
|
273 |
+
background-color: #aaa;
|
274 |
+
}
|
css/skins/traditional.css
CHANGED
@@ -16,14 +16,14 @@
|
|
16 |
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
}
|
28 |
/* Background of one calendar month */
|
29 |
.datepick-inline .datepick{
|
@@ -31,30 +31,23 @@
|
|
31 |
}
|
32 |
/* Previous & Next links and TITLE BACKGROUND */
|
33 |
.datepick-inline .calendar-links {
|
34 |
-
|
35 |
-
|
36 |
-
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ccc), to(#ddd)); /* Safari 4-5, Chrome 1-9 */
|
37 |
-
background: -webkit-linear-gradient(top, #ddd, #ccc); /* Safari 5.1, Chrome 10+ */
|
38 |
-
background: -moz-linear-gradient(top, #ddd, #ccc); /* Firefox 3.6+ */
|
39 |
-
background: -ms-linear-gradient(top, #ddd, #ccc); /* IE 10 */
|
40 |
-
background: -o-linear-gradient(top, #ddd, #ccc); /* Opera 11.10+ */
|
41 |
-
|
42 |
-
border-bottom: 1px solid #aaa;
|
43 |
}
|
44 |
/* Prev - Next Text */
|
45 |
.datepick-inline .calendar-links .datepick-prev a,
|
46 |
.datepick-inline .calendar-links .datepick-next a,
|
47 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
48 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
}
|
53 |
/* Month Titles */
|
54 |
.datepick-inline .datepick-header {
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
}
|
59 |
/* Week Titles */
|
60 |
div.datepick-inline .datepick-title-row th{
|
16 |
|
17 |
/* Full Calendar Frame */
|
18 |
.datepick-inline {
|
19 |
+
background: #fff; /* FixIn: 9.3.1.4 */
|
20 |
+
border: 1px solid #fff;
|
21 |
+
box-shadow: 0 0 1px #707070;
|
22 |
+
-moz-box-shadow: 0 0 1px #707070;
|
23 |
+
-webkit-box-shadow: 0 0 1px #707070;
|
24 |
+
border-radius: 0;
|
25 |
+
-moz-border-radius: 0;
|
26 |
+
-webkit-border-radius: 0;
|
27 |
}
|
28 |
/* Background of one calendar month */
|
29 |
.datepick-inline .datepick{
|
31 |
}
|
32 |
/* Previous & Next links and TITLE BACKGROUND */
|
33 |
.datepick-inline .calendar-links {
|
34 |
+
border-bottom:none; /* FixIn: 9.3.1.4 */
|
35 |
+
background: transparent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
}
|
37 |
/* Prev - Next Text */
|
38 |
.datepick-inline .calendar-links .datepick-prev a,
|
39 |
.datepick-inline .calendar-links .datepick-next a,
|
40 |
.datepick-inline .calendar-links .datepick-prev a:hover,
|
41 |
.datepick-inline .calendar-links .datepick-next a:hover{
|
42 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
43 |
+
text-shadow: none;
|
44 |
+
font-weight: 600;
|
45 |
}
|
46 |
/* Month Titles */
|
47 |
.datepick-inline .datepick-header {
|
48 |
+
color: #5f5f5f; /* FixIn: 9.3.1.4 */
|
49 |
+
font-weight: 600;
|
50 |
+
text-shadow: none;
|
51 |
}
|
52 |
/* Week Titles */
|
53 |
div.datepick-inline .datepick-title-row th{
|
includes/_feedback/feedback_01.php
CHANGED
@@ -264,7 +264,7 @@ class WPBC_Feedback_01 {
|
|
264 |
$js_css_loading = new WPBC_Feedback_01;
|
265 |
$js_css_loading->init_load_css_js();
|
266 |
}
|
267 |
-
|
268 |
|
269 |
|
270 |
/**
|
264 |
$js_css_loading = new WPBC_Feedback_01;
|
265 |
$js_css_loading->init_load_css_js();
|
266 |
}
|
267 |
+
//delete_option( 'booking_feedback_01' );
|
268 |
|
269 |
|
270 |
/**
|
includes/_request/wpbc_request.php
ADDED
@@ -0,0 +1,744 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php /**
|
2 |
+
* @version 1.0
|
3 |
+
* @description Universal class for REQUEST params cleaning (sanitizing) and saving such data, relative to current WP user.
|
4 |
+
* @category WPBC_AJX__REQUEST Class
|
5 |
+
* @author wpdevelop
|
6 |
+
*
|
7 |
+
* @web-site http://oplugins.com/
|
8 |
+
* @email info@oplugins.com
|
9 |
+
*
|
10 |
+
* @modified 2022-10-29
|
11 |
+
*/
|
12 |
+
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly //FixIn: 9.3.1.2
|
14 |
+
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Class for sanitizing $_REQUEST parameters and saving or getting it in/from DB
|
18 |
+
*
|
19 |
+
*
|
20 |
+
* Example 1:
|
21 |
+
*
|
22 |
+
$user_request = new WPBC_AJX__REQUEST( array(
|
23 |
+
'db_option_name' => 'booking_availability_request_params',
|
24 |
+
'user_id' => wpbc_get_current_user_id(),
|
25 |
+
'request_rules_structure' => WPBC_AJX__Availability::request_rules_structure()
|
26 |
+
)
|
27 |
+
);
|
28 |
+
$escaped_request_params_arr = $user_request->get_sanitized__saved__user_request_params(); // Get Saved
|
29 |
+
|
30 |
+
if ( false === $escaped_request_params_arr ) { // This request was not saved before, then get sanitized direct parameters, like: $_REQUEST['resource_id']
|
31 |
+
|
32 |
+
$request_prefix = false;
|
33 |
+
$escaped_request_params_arr = $user_request->get_sanitized__in_request__value_or_default( $request_prefix ); // Direct: $_REQUEST['resource_id']
|
34 |
+
}
|
35 |
+
*
|
36 |
+
*
|
37 |
+
* Example 2:
|
38 |
+
*
|
39 |
+
$user_request = new WPBC_AJX__REQUEST( array(
|
40 |
+
'db_option_name' => 'booking_availability_request_params',
|
41 |
+
'user_id' => wpbc_get_current_user_id(),
|
42 |
+
'request_rules_structure' => array(
|
43 |
+
'resource_id' => array( 'validate' => 'digit_or_csd', 'default' => 1 )
|
44 |
+
, 'ui_wh_booking_date_checkout' => array( 'validate' => 'digit_or_date', 'default' => '' ) // number | date 2016-07-20
|
45 |
+
, 'wh_modification_date' => array( 'validate' => 'array', 'default' => array( '3' ) ) // number | date 2016-07-20
|
46 |
+
, 'ui_wh_modification_date_radio' => array( 'validate' => 'd', 'default' => 0 ) // '1' | '2' ....
|
47 |
+
, 'keyword' => array( 'validate' => 's', 'default' => '' ) //string
|
48 |
+
, 'wh_cost' => array( 'validate' => 'float_or_empty', 'default' => '' ) // '1' | ''
|
49 |
+
, 'ui_usr__send_emails' => array( 'validate' => array( 'send', 'not_send' ), 'default' => 'send' )
|
50 |
+
)
|
51 |
+
) );
|
52 |
+
*
|
53 |
+
*
|
54 |
+
* OR ******************************************************************************************************************
|
55 |
+
* $user_request = new WPBC_AJX__REQUEST();
|
56 |
+
*
|
57 |
+
* $user_request->set_db_option_name__for_saved_request( 'booking_availability_request_params' );
|
58 |
+
*
|
59 |
+
* $user_request->set_user_id( wpbc_get_current_user_id() );
|
60 |
+
*
|
61 |
+
* $user_request->set_default_request_structure( array(
|
62 |
+
* 'resource_id' => array( 'validate' => 'digit_or_csd', 'default' => array( '1' ) )
|
63 |
+
* ) );
|
64 |
+
* OR:
|
65 |
+
* $user_request->set_default_request_structure( WPBC_AJX__Availability::get__request_params__names_default() );
|
66 |
+
*
|
67 |
+
***********************************************************************************************************************
|
68 |
+
*
|
69 |
+
* $params_arr = $user_request->get_sanitized__saved__user_request_params(); // Initial Load - get params SAVED in DB - user open page with same view as before
|
70 |
+
* OR
|
71 |
+
* $params_arr = $user_request->get_sanitized__in_request__value_or_default( false ); // Direct - $_REQUEST['resource_id']
|
72 |
+
* OR
|
73 |
+
* $params_arr = $user_request->get_sanitized__in_request__value_or_default( 'search_params' ); // In Ajax request - $_REQUEST['search_params']['resource_id']
|
74 |
+
*
|
75 |
+
*
|
76 |
+
***********************************************************************************************************************
|
77 |
+
* Request Rules Structure
|
78 |
+
***********************************************************************************************************************
|
79 |
+
*
|
80 |
+
array(
|
81 |
+
, 'page_num' => array( 'validate' => 'd', 'default' => 1 ) // 1 | 0
|
82 |
+
, 'cost' => array( 'validate' => 'f', 'default' => 1.5 ) // 1.5 | 0
|
83 |
+
, 'wh_cost' => array( 'validate' => 'float_or_empty', 'default' => '' ) // 1.5 | ''
|
84 |
+
, 'wh_num' => array( 'validate' => 'digit_or_empty', 'default' => '' ) // 1 | ''
|
85 |
+
, 'keyword' => array( 'validate' => 's', 'default' => '' ) // string
|
86 |
+
|
87 |
+
, 'wh_booking_date' => array( 'validate' => 'array', 'default' => array( "3" ) ) // Elements of array checked as string
|
88 |
+
, 'ui_wh_booking_date' => array( 'validate' => 'date', 'default' => '' ) // Date e.g.: '2022-05-31' or ''
|
89 |
+
|
90 |
+
// 'digit_or_csd' can check about 'digit_or_csd' in arrays, as well
|
91 |
+
, 'wh_booking_type' => array( 'validate' => 'digit_or_csd', 'default' => array( '0' ) ) // Digit or comma separated digit ( e.g.: '12,a,45,9' => '12,0,45,9' ) // if ['0'] - All booking resources, ['-1'] - lost bookings in deleted resources
|
92 |
+
, 'ui_wh_booking_date_checkout' => array( 'validate' => 'digit_or_date', 'default' => '' ) // digit or Date e.g.: '2022-05-31' or 5 or ''
|
93 |
+
|
94 |
+
, 'ui_wh_start' => array( 'validate' => 'checked_skip_it', 'default' => '' ) // Skip from checking
|
95 |
+
|
96 |
+
, 'ui_usr__is_expand_remarks' => array( 'validate' => array( 'On', 'Off' ), 'default' => 'Off' )
|
97 |
+
);
|
98 |
+
*
|
99 |
+
*
|
100 |
+
*
|
101 |
+
***********************************************************************************************************************
|
102 |
+
* Otherwise possible to use ' Direct Clean Params '
|
103 |
+
***********************************************************************************************************************
|
104 |
+
*
|
105 |
+
$request_params_ajx_booking = array(
|
106 |
+
'page_num' => array( 'validate' => 'd', 'default' => 1 )
|
107 |
+
, 'page_items_count' => array( 'validate' => 'd', 'default' => 10 )
|
108 |
+
, 'sort' => array( 'validate' => array( 'ajx_booking_id' ), 'default' => 'ajx_booking_id' )
|
109 |
+
, 'sort_type' => array( 'validate' => array( 'ASC', 'DESC'),'default' => 'DESC' )
|
110 |
+
, 'status' => array( 'validate' => 's', 'default' => '' )
|
111 |
+
, 'keyword' => array( 'validate' => 's', 'default' => '' )
|
112 |
+
, 'ru_create_date' => array( 'validate' => 'date', 'default' => '' )
|
113 |
+
);
|
114 |
+
$request_params_values = array( // Usually $request_params_values is $_REQUEST
|
115 |
+
'page_num' => 1,
|
116 |
+
'page_items_count' => 3,
|
117 |
+
'sort' => 'ajx_booking_id',
|
118 |
+
'sort_type' => 'DESC',
|
119 |
+
'status' => '',
|
120 |
+
'keyword' => '',
|
121 |
+
'ru_create_date' => ''
|
122 |
+
);
|
123 |
+
$request_params = wpbc_sanitize_params_in_arr( $request_params_values, $request_params_ajx_booking );
|
124 |
+
|
125 |
+
*/
|
126 |
+
class WPBC_AJX__REQUEST {
|
127 |
+
|
128 |
+
private $db_option_name__for_saved_request;
|
129 |
+
private $request_rules_structure;
|
130 |
+
private $user_id;
|
131 |
+
|
132 |
+
public function __construct( $params ) {
|
133 |
+
$defaults = array(
|
134 |
+
'db_option_name' => 'general_booking_request_params',
|
135 |
+
'user_id' => wpbc_get_current_user_id(),
|
136 |
+
'request_rules_structure' => array()
|
137 |
+
);
|
138 |
+
$params = wp_parse_args( $params, $defaults );
|
139 |
+
|
140 |
+
|
141 |
+
if ( ! empty( $params['db_option_name'] ) ) {
|
142 |
+
$this->set_db_option_name__for_saved_request( $params['db_option_name'] );
|
143 |
+
}
|
144 |
+
|
145 |
+
if ( ! empty( $params['user_id'] ) ) {
|
146 |
+
$this->set_user_id( $params['user_id'] );
|
147 |
+
}
|
148 |
+
|
149 |
+
if ( ! empty( $params['request_rules_structure'] ) ) {
|
150 |
+
$this->set_request_rules_structure( $params['request_rules_structure'] );
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
155 |
+
// Setters
|
156 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
157 |
+
|
158 |
+
/**
|
159 |
+
* Set name of option for saving request parameters into DB
|
160 |
+
*
|
161 |
+
* @param string $db_option_name
|
162 |
+
*
|
163 |
+
* @return void
|
164 |
+
*/
|
165 |
+
public function set_db_option_name__for_saved_request( $db_option_name ){
|
166 |
+
$this->db_option_name__for_saved_request = $db_option_name;
|
167 |
+
}
|
168 |
+
|
169 |
+
/**
|
170 |
+
* Set current active user ID
|
171 |
+
*
|
172 |
+
* @param int $user_id
|
173 |
+
*
|
174 |
+
* @return void
|
175 |
+
*/
|
176 |
+
public function set_user_id( $user_id ){
|
177 |
+
$this->user_id = $user_id;
|
178 |
+
}
|
179 |
+
|
180 |
+
/**
|
181 |
+
* Set request structure for validation and default values
|
182 |
+
*
|
183 |
+
* @param array $request_rules_structure array(
|
184 |
+
* 'resource_id' => array( 'validate' => 'digit_or_csd', 'default' => array( '1' ) )
|
185 |
+
* , ...
|
186 |
+
* )
|
187 |
+
*
|
188 |
+
* @return void
|
189 |
+
*/
|
190 |
+
public function set_request_rules_structure( $request_rules_structure ){
|
191 |
+
$this->request_rules_structure = $request_rules_structure;
|
192 |
+
}
|
193 |
+
|
194 |
+
|
195 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
196 |
+
/// Request Structure
|
197 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
198 |
+
|
199 |
+
/**
|
200 |
+
* Get params names for escaping and/or default value of such params
|
201 |
+
*
|
202 |
+
* @param string $structure_type 'validate_and_default' (default) | 'validate' | 'default'
|
203 |
+
*
|
204 |
+
* @return array
|
205 |
+
* if $structure_type == '' array ( 'keyword' => array( 'validate' => 's', 'default' => '' )
|
206 |
+
* , 'wh_booking_date' => array( 'validate' => 'digit_or_date', 'default' => '3' ), ...
|
207 |
+
* if $structure_type == 'validate' array ( 'keyword' => 's'
|
208 |
+
* , 'wh_booking_date' => 'digit_or_date'), ...
|
209 |
+
* if $structure_type == 'default' array ( 'keyword' => '' )
|
210 |
+
* , 'wh_booking_date' => '3' ), ...
|
211 |
+
*/
|
212 |
+
public function get_request_rules_structure( $structure_type = 'validate_and_default' ){
|
213 |
+
|
214 |
+
$params_for_cleaning = $this->request_rules_structure;
|
215 |
+
|
216 |
+
if ( 'validate_and_default' == $structure_type ) {
|
217 |
+
return $params_for_cleaning;
|
218 |
+
}
|
219 |
+
|
220 |
+
$return_simple_arr = array();
|
221 |
+
|
222 |
+
foreach ( $params_for_cleaning as $key => $value ) {
|
223 |
+
$return_simple_arr[ $key ] = $value[ $structure_type ];
|
224 |
+
}
|
225 |
+
return $return_simple_arr;
|
226 |
+
|
227 |
+
}
|
228 |
+
|
229 |
+
|
230 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
231 |
+
// Get user Saved params
|
232 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
233 |
+
|
234 |
+
/**
|
235 |
+
* Get $_REQUEST saved before in DB from user - Sanitized Array
|
236 |
+
*
|
237 |
+
* @return
|
238 |
+
* false - if not saved before
|
239 |
+
* OR
|
240 |
+
* array(
|
241 |
+
* 'page_num' => 1
|
242 |
+
* , 'page_items_count' => 100
|
243 |
+
* , 'sort' => 'ajx_booking_id'
|
244 |
+
* , 'sort_type' => 'DESC'
|
245 |
+
* , 'keyword' => ''
|
246 |
+
* , 'status' => ''
|
247 |
+
* )
|
248 |
+
*/
|
249 |
+
public function get_sanitized__saved__user_request_params() {
|
250 |
+
|
251 |
+
$request_params_values_arr = $this->user_request_params__db_get(); // - $request_params_values_arr - un-serialized here automatically
|
252 |
+
|
253 |
+
if ( false !== $request_params_values_arr ) {
|
254 |
+
|
255 |
+
$request_params_structure = $this->get_request_rules_structure(); /**
|
256 |
+
* array( 'page_num' => array( 'validate' => 'd', 'default' => 1 )
|
257 |
+
* , 'page_items_count' => array( 'validate' => 'd', 'default' => 10 )
|
258 |
+
* , 'sort' => array( 'validate' => array( 'booking_id' ), 'default' => 'booking_id' )
|
259 |
+
* , 'sort_type' => array( 'validate' => array( 'ASC', 'DESC'),'default' => 'DESC' )
|
260 |
+
* , 'keyword' => array( 'validate' => 's', 'default' => '' )
|
261 |
+
* , 'create_date' => array( 'validate' => 'date', 'default' => '' )
|
262 |
+
* )
|
263 |
+
*/
|
264 |
+
|
265 |
+
$escaped_request_params = wpbc_sanitize_params_in_arr( $request_params_values_arr, $request_params_structure ); // Escaping params here
|
266 |
+
|
267 |
+
return $escaped_request_params;
|
268 |
+
|
269 |
+
} else {
|
270 |
+
return false;
|
271 |
+
}
|
272 |
+
}
|
273 |
+
|
274 |
+
|
275 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
276 |
+
// Get sanitized $_REQUEST params | default values
|
277 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
278 |
+
|
279 |
+
/**
|
280 |
+
* Get "sanitized values" from $_REQUEST or "default values", based on rules structure
|
281 |
+
*
|
282 |
+
* @param string | false $prefix_in_request
|
283 |
+
*
|
284 |
+
* default FALSE
|
285 |
+
*
|
286 |
+
* string parameter useful, if request like this (usually in Ajax):
|
287 |
+
*
|
288 |
+
* $_REQUEST (
|
289 |
+
* ['listing_page']['page_num'] => 3
|
290 |
+
* ['listing_page']['page_items_count'] => 20
|
291 |
+
* ['listing_page']['sort'] => 'booking_id'
|
292 |
+
* )
|
293 |
+
*
|
294 |
+
* then we use this: $this->get_sanitized__in_request__value_or_default( 'listing_page' )
|
295 |
+
*
|
296 |
+
*
|
297 |
+
* @return array
|
298 |
+
* Example: array(
|
299 |
+
* ['page_num'] => 3
|
300 |
+
* ['page_items_count'] => 20
|
301 |
+
* ['sort'] => 'booking_id'
|
302 |
+
* )
|
303 |
+
*/
|
304 |
+
public function get_sanitized__in_request__value_or_default( $prefix_in_request = false ){
|
305 |
+
|
306 |
+
$request_rules_structure = $this->get_request_rules_structure();
|
307 |
+
|
308 |
+
$request_params_values_arr = array();
|
309 |
+
|
310 |
+
foreach ( $request_rules_structure as $request_key => $clean_type ) {
|
311 |
+
|
312 |
+
$exist_request_param_value = wpbc_get_direct_value_in_request( $request_key, $prefix_in_request ); // Get direct request values: $_REQUEST['page_num'] => 3
|
313 |
+
// if ( $prefix_in_request == 'listing_page' ): $_REQUEST['listing_page']['page_num'] => 3
|
314 |
+
if ( false !== $exist_request_param_value ) {
|
315 |
+
$request_params_values_arr[ $request_key ] = $exist_request_param_value;
|
316 |
+
}
|
317 |
+
}
|
318 |
+
|
319 |
+
$escaped_request_params = wpbc_sanitize_params_in_arr( $request_params_values_arr, $request_rules_structure );
|
320 |
+
|
321 |
+
return $escaped_request_params;
|
322 |
+
}
|
323 |
+
|
324 |
+
|
325 |
+
// <editor-fold defaultstate="collapsed" desc=" D B S A V E / G E T U S E R R E Q U E S T " >
|
326 |
+
|
327 |
+
/**
|
328 |
+
* Save user filter request - saving user filters in toolbar
|
329 |
+
*
|
330 |
+
* @param array $params_arr
|
331 |
+
*
|
332 |
+
* @return bool|int
|
333 |
+
*/
|
334 |
+
function user_request_params__db_save( $params_arr ) {
|
335 |
+
|
336 |
+
return update_user_option( $this->user_id, $this->db_option_name__for_saved_request , $params_arr );
|
337 |
+
}
|
338 |
+
|
339 |
+
/**
|
340 |
+
* Delete saved user request - used for resetting user filters in toolbar
|
341 |
+
*
|
342 |
+
* @return bool
|
343 |
+
*/
|
344 |
+
function user_request_params__db_delete() {
|
345 |
+
|
346 |
+
return delete_user_option( $this->user_id, $this->db_option_name__for_saved_request );
|
347 |
+
}
|
348 |
+
|
349 |
+
/**
|
350 |
+
* Get saved user filter request - params for user filters in toolbar
|
351 |
+
*
|
352 |
+
* @return false|mixed
|
353 |
+
*/
|
354 |
+
function user_request_params__db_get() {
|
355 |
+
|
356 |
+
return get_user_option( $this->db_option_name__for_saved_request, $this->user_id );
|
357 |
+
}
|
358 |
+
|
359 |
+
// </editor-fold>
|
360 |
+
|
361 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
362 |
+
// Get user option - single parameter
|
363 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
364 |
+
|
365 |
+
/**
|
366 |
+
* Get user saved option from Request in Booking Listing
|
367 |
+
*
|
368 |
+
* @param $user_id int 1
|
369 |
+
* @param $option_name string 'ui_usr__send_emails'
|
370 |
+
*
|
371 |
+
* @return false|mixed
|
372 |
+
*/
|
373 |
+
function user_request_params__get_option( $option_name ){
|
374 |
+
|
375 |
+
// Get User saved option from request
|
376 |
+
$escaped_request_params = $this->get_sanitized__saved__user_request_params();
|
377 |
+
if ( ( ! empty( $escaped_request_params ) ) && ( ! empty( $escaped_request_params[ $option_name ] ) ) ) {
|
378 |
+
return $escaped_request_params[ $option_name ];
|
379 |
+
}
|
380 |
+
|
381 |
+
// Get default option
|
382 |
+
$default_param_values = $this->get_request_rules_structure( 'default' );
|
383 |
+
if ( ! empty( $default_param_values[ $option_name ] ) ) {
|
384 |
+
return $default_param_values[ $option_name ];
|
385 |
+
}
|
386 |
+
|
387 |
+
// There is no such option
|
388 |
+
return false;
|
389 |
+
}
|
390 |
+
|
391 |
+
// Helpers:
|
392 |
+
/**
|
393 |
+
* Is send emails ? Check DB SAVED user defined option from Options toolbar.
|
394 |
+
* @param $user_id int ID of user
|
395 |
+
*
|
396 |
+
* @return int 1 | 0
|
397 |
+
*/
|
398 |
+
function user_request_option__is_send_emails(){
|
399 |
+
|
400 |
+
$is_send_emeils = $this->user_request_params__get_option( 'ui_usr__send_emails' );
|
401 |
+
|
402 |
+
$is_send_emeils = ( 'send' == $is_send_emeils ) ? 1 : 0;
|
403 |
+
|
404 |
+
return $is_send_emeils;
|
405 |
+
}
|
406 |
+
}
|
407 |
+
|
408 |
+
|
409 |
+
|
410 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
411 |
+
// Request
|
412 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
413 |
+
|
414 |
+
|
415 |
+
/**
|
416 |
+
* Get indexed or direct request from REQUEST
|
417 |
+
*
|
418 |
+
* @param $request_key
|
419 |
+
* @param false $prefix_in_request
|
420 |
+
*
|
421 |
+
* @return false|mixed
|
422 |
+
*/
|
423 |
+
function wpbc_get_direct_value_in_request( $request_key, $prefix_in_request = false ) {
|
424 |
+
|
425 |
+
/**
|
426 |
+
* Get value from 'direct request' - "$_REQUEST['page_num'] => 3"
|
427 |
+
* or
|
428 |
+
* from 'prefix request' - "$_REQUEST['request_params']['page_num'] => 3"
|
429 |
+
*/
|
430 |
+
|
431 |
+
if (
|
432 |
+
( empty( $prefix_in_request ) )
|
433 |
+
&& ( isset( $_REQUEST[ $request_key ] ) )
|
434 |
+
) {
|
435 |
+
return $_REQUEST[ $request_key ];
|
436 |
+
}
|
437 |
+
|
438 |
+
if (
|
439 |
+
( ! empty( $prefix_in_request ) )
|
440 |
+
&& ( isset( $_REQUEST[ $prefix_in_request ] ) )
|
441 |
+
&& ( isset( $_REQUEST[ $prefix_in_request ][ $request_key ] ) )
|
442 |
+
) {
|
443 |
+
return $_REQUEST[ $prefix_in_request ][ $request_key ];
|
444 |
+
}
|
445 |
+
|
446 |
+
return false;
|
447 |
+
}
|
448 |
+
|
449 |
+
|
450 |
+
/**
|
451 |
+
* Check specific parameters in ARRAY and return cleaned params or default values
|
452 |
+
*
|
453 |
+
* @param array $request_params_values_arr = / think like in $_REQUEST parameter /
|
454 |
+
* array(
|
455 |
+
* 'page_num' => 1,
|
456 |
+
* 'page_items_count' => 10,
|
457 |
+
* 'sort' => 'rule_id',
|
458 |
+
* 'sort_type' => 'DESC',
|
459 |
+
* 'status' => '',
|
460 |
+
* 'keyword' => '',
|
461 |
+
* 'create_date' => ''
|
462 |
+
* )
|
463 |
+
* @param array $params_rules = array(
|
464 |
+
* 'page_num' => array( 'validate' => 'd', 'default' => 1 )
|
465 |
+
* , 'page_items_count' => array( 'validate' => 'd', 'default' => 10 )
|
466 |
+
* , 'sort' => array( 'validate' => array( 'rule_id' ), 'default' => 'rule_id' )
|
467 |
+
* , 'sort_type' => array( 'validate' => array( 'ASC', 'DESC'),'default' => 'DESC' )
|
468 |
+
* , 'status' => array( 'validate' => 's', 'default' => '' )
|
469 |
+
* , 'keyword' => array( 'validate' => 's', 'default' => '' )
|
470 |
+
* , 'create_date' => array( 'validate' => 'date', 'default' => '' )
|
471 |
+
* )
|
472 |
+
*
|
473 |
+
*
|
474 |
+
* 'd'; // '1' | ''
|
475 |
+
* 's'; // string !!! Clean 'LIKE' string for DB !!!
|
476 |
+
* 'digit_or_csd'; // '0' | '1,2,3' | ''
|
477 |
+
* 'digit_or_date'; // number | date 2016-07-20
|
478 |
+
*
|
479 |
+
* 'checked_skip_it' // Skip checking
|
480 |
+
* array( '0', 'trash', 'any'); // Elements only listed in array
|
481 |
+
*
|
482 |
+
*@return array $clean_params = Array (
|
483 |
+
* [page_num] => 3
|
484 |
+
* [page_items_count] => 20
|
485 |
+
* [sort] => booking_id
|
486 |
+
* [sort_type] => DESC
|
487 |
+
* [keyword] =>
|
488 |
+
* [source] =>
|
489 |
+
* [create_date] =>
|
490 |
+
* )
|
491 |
+
*
|
492 |
+
*
|
493 |
+
Example of Direct Clean Params:
|
494 |
+
|
495 |
+
$request_params_ajx_booking = array(
|
496 |
+
'page_num' => array( 'validate' => 'd', 'default' => 1 )
|
497 |
+
, 'page_items_count' => array( 'validate' => 'd', 'default' => 10 )
|
498 |
+
, 'sort' => array( 'validate' => array( 'ajx_booking_id' ), 'default' => 'ajx_booking_id' )
|
499 |
+
, 'sort_type' => array( 'validate' => array( 'ASC', 'DESC'),'default' => 'DESC' )
|
500 |
+
, 'status' => array( 'validate' => 's', 'default' => '' )
|
501 |
+
, 'keyword' => array( 'validate' => 's', 'default' => '' )
|
502 |
+
, 'ru_create_date' => array( 'validate' => 'date', 'default' => '' )
|
503 |
+
);
|
504 |
+
$request_params_values = array( // Usually $request_params_values is $_REQUEST
|
505 |
+
'page_num' => 1,
|
506 |
+
'page_items_count' => 3,
|
507 |
+
'sort' => 'ajx_booking_id',
|
508 |
+
'sort_type' => 'DESC',
|
509 |
+
'status' => '',
|
510 |
+
'keyword' => '',
|
511 |
+
'ru_create_date' => ''
|
512 |
+
);
|
513 |
+
$request_params = wpbc_sanitize_params_in_arr( $request_params_values, $request_params_ajx_booking );
|
514 |
+
*/
|
515 |
+
function wpbc_sanitize_params_in_arr( $request_params_values_arr, $params_rules ){
|
516 |
+
|
517 |
+
$clean_params = array();
|
518 |
+
|
519 |
+
foreach ( $params_rules as $request_key_name => $clean_type ) {
|
520 |
+
|
521 |
+
if ( isset( $request_params_values_arr[ $request_key_name ] ) ) {
|
522 |
+
$request_value_check = $request_params_values_arr[ $request_key_name ];
|
523 |
+
} else {
|
524 |
+
$request_value_check = false;
|
525 |
+
}
|
526 |
+
|
527 |
+
// If not defined in VALUES (think like in $_REQUEST parameter), then get default value
|
528 |
+
if ( false === $request_value_check ) {
|
529 |
+
|
530 |
+
// D E F A U L T
|
531 |
+
$clean_params[ $request_key_name ] = $params_rules[ $request_key_name ]['default'];
|
532 |
+
|
533 |
+
} else {
|
534 |
+
|
535 |
+
// C L E A N I N G
|
536 |
+
$clean_type = $params_rules[ $request_key_name ]['validate'];
|
537 |
+
|
538 |
+
// Check only values from this Array
|
539 |
+
if ( is_array( $clean_type ) ) {
|
540 |
+
|
541 |
+
$clean_type = array_map( 'strtolower', $clean_type );
|
542 |
+
|
543 |
+
if ( ( isset( $request_value_check ) ) && ( ! in_array( strtolower( $request_value_check ), $clean_type ) ) ) {
|
544 |
+
$clean_type = 'checked_skip_it';
|
545 |
+
$request_value_check = $params_rules[ $request_key_name ]['default']; // Reset it, if value not in array And get default value
|
546 |
+
} else {
|
547 |
+
$clean_type = 'checked_skip_it';
|
548 |
+
}
|
549 |
+
}
|
550 |
+
|
551 |
+
switch ( $clean_type ) {
|
552 |
+
|
553 |
+
case 'checked_skip_it':
|
554 |
+
$clean_params[ $request_key_name ] = $request_value_check;
|
555 |
+
break;
|
556 |
+
|
557 |
+
case 'date': // Date
|
558 |
+
$clean_params[ $request_key_name ] = wpbc_sanitize_date( $request_value_check );
|
559 |
+
break;
|
560 |
+
|
561 |
+
case 'digit_or_date': // digit or Date
|
562 |
+
$clean_params[ $request_key_name ] = wpbc_sanitize_digit_or_date( $request_value_check );
|
563 |
+
break;
|
564 |
+
|
565 |
+
case 'digit_or_csd': // digit or comma separated digit
|
566 |
+
$clean_params[ $request_key_name ] = wpbc_sanitize_digit_or_csd( $request_value_check );
|
567 |
+
break;
|
568 |
+
|
569 |
+
case 's': // string
|
570 |
+
$clean_params[ $request_key_name ] = wpbc_sanitize_text( $request_value_check );
|
571 |
+
break;
|
572 |
+
|
573 |
+
case 'array':
|
574 |
+
if ( is_array( $request_value_check ) ) {
|
575 |
+
foreach ( $request_value_check as $check_arr_index => $check_arr_value ) {
|
576 |
+
$request_value_check[ $check_arr_index ] = wpbc_sanitize_text( $check_arr_value ); // Check each option as string
|
577 |
+
}
|
578 |
+
$clean_params[ $request_key_name ] = $request_value_check;
|
579 |
+
|
580 |
+
} else {
|
581 |
+
$clean_params[ $request_key_name ] = $params_rules[ $request_key_name ]['default'];
|
582 |
+
}
|
583 |
+
break;
|
584 |
+
|
585 |
+
case 'digit_or_empty': // digit or ''
|
586 |
+
if ( '' === $request_value_check) {
|
587 |
+
$clean_params[ $request_key_name ] = '';
|
588 |
+
} else {
|
589 |
+
$clean_params[ $request_key_name ] = intval( $request_value_check );
|
590 |
+
}
|
591 |
+
break;
|
592 |
+
|
593 |
+
case 'float_or_empty': // digit or ''
|
594 |
+
if ( '' === $request_value_check) {
|
595 |
+
$clean_params[ $request_key_name ] = '';
|
596 |
+
} else {
|
597 |
+
|
598 |
+
// In case if was entered 10,99 instead of 10.99
|
599 |
+
$request_value_check = str_replace( ',', '.', $request_value_check );
|
600 |
+
|
601 |
+
$clean_params[ $request_key_name ] = floatval( $request_value_check );
|
602 |
+
}
|
603 |
+
break;
|
604 |
+
|
605 |
+
case 'f': // float
|
606 |
+
$clean_params[ $request_key_name ] = floatval( $request_value_check );
|
607 |
+
break;
|
608 |
+
|
609 |
+
case 'd': // digit
|
610 |
+
$clean_params[ $request_key_name ] = intval( $request_value_check );
|
611 |
+
break;
|
612 |
+
|
613 |
+
default:
|
614 |
+
$clean_params[ $request_key_name ] = intval( $request_value_check );
|
615 |
+
break;
|
616 |
+
}
|
617 |
+
}
|
618 |
+
}
|
619 |
+
return $clean_params;
|
620 |
+
}
|
621 |
+
|
622 |
+
|
623 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
624 |
+
// Sanitize functions
|
625 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
626 |
+
|
627 |
+
/**
|
628 |
+
* Check parameter if it number or comma separated list of numbers
|
629 |
+
*
|
630 |
+
* @param string | array $value
|
631 |
+
*
|
632 |
+
* @return string
|
633 |
+
*
|
634 |
+
* Example:
|
635 |
+
* wpbc_esc_clean_digit_or_csd( '12,a,45,9' ) => '12,0,45,9'
|
636 |
+
* or
|
637 |
+
* wpbc_esc_clean_digit_or_csd( '10a' ) => '10
|
638 |
+
* or
|
639 |
+
* wpbc_esc_clean_digit_or_csd( array( '12,a,45,9', '10a' ) ) => array ( '12,0,45,9', '10' )
|
640 |
+
*@global type $wpdb
|
641 |
+
*/
|
642 |
+
function wpbc_sanitize_digit_or_csd( $value ) { //FixIn:6.2.1.4
|
643 |
+
|
644 |
+
if ( $value === '' ) {
|
645 |
+
return $value;
|
646 |
+
}
|
647 |
+
|
648 |
+
if ( is_array( $value ) ) {
|
649 |
+
foreach ( $value as $key => $check_value ) {
|
650 |
+
$value[ $key ] = wpbc_sanitize_digit_or_csd( $check_value );
|
651 |
+
}
|
652 |
+
|
653 |
+
return $value;
|
654 |
+
}
|
655 |
+
|
656 |
+
$value = str_replace( ';', ',', $value );
|
657 |
+
$array_of_nums = explode( ',', $value );
|
658 |
+
|
659 |
+
|
660 |
+
$result = array();
|
661 |
+
foreach ( $array_of_nums as $check_element ) {
|
662 |
+
$result[] = intval( $check_element );
|
663 |
+
}
|
664 |
+
$result = implode( ',', $result );
|
665 |
+
|
666 |
+
return $result;
|
667 |
+
}
|
668 |
+
|
669 |
+
|
670 |
+
/**
|
671 |
+
* Check about Valid date or number, like 2016-07-20 and return this date or number
|
672 |
+
*
|
673 |
+
* @param string $value
|
674 |
+
*
|
675 |
+
* @return string|digit '2022-05-31' or 5 or ''
|
676 |
+
*/
|
677 |
+
function wpbc_sanitize_digit_or_date( $value ) { //FixIn:6.2.1.4
|
678 |
+
|
679 |
+
if ( $value === '' ) return $value;
|
680 |
+
|
681 |
+
if ( preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $value ) ) {
|
682 |
+
|
683 |
+
return $value; // Date is valid in format: 2016-07-20
|
684 |
+
} else {
|
685 |
+
return intval( $value );
|
686 |
+
}
|
687 |
+
|
688 |
+
}
|
689 |
+
|
690 |
+
|
691 |
+
/**
|
692 |
+
* Check about Valid date, like 2016-07-20 and return this date or ''
|
693 |
+
*
|
694 |
+
* @param string $value
|
695 |
+
*
|
696 |
+
* @return string '2022-05-31' or ''
|
697 |
+
*/
|
698 |
+
function wpbc_sanitize_date( $value ) { //FixIn:6.2.1.4
|
699 |
+
|
700 |
+
if ( $value === '' ) return $value;
|
701 |
+
|
702 |
+
if ( preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $value ) ) {
|
703 |
+
|
704 |
+
return $value; // Date is valid in format: 2016-07-20
|
705 |
+
} else {
|
706 |
+
return '';
|
707 |
+
}
|
708 |
+
|
709 |
+
}
|
710 |
+
|
711 |
+
|
712 |
+
/**
|
713 |
+
* Escape string from SQL for the HTML form field
|
714 |
+
*
|
715 |
+
* @param string $value
|
716 |
+
*
|
717 |
+
* @return string
|
718 |
+
*
|
719 |
+
* Used: esc_sql function.
|
720 |
+
*
|
721 |
+
* https://codex.wordpress.org/Function_Reference/esc_sql
|
722 |
+
* Note: Be careful to use this function correctly. It will only escape values to be used in strings in the query.
|
723 |
+
* That is, it only provides escaping for values that will be within quotes in the SQL (as in field = '{$escaped_value}').
|
724 |
+
* If your value is not going to be within quotes, your code will still be vulnerable to SQL injection.
|
725 |
+
* For example, this is vulnerable, because the escaped value is not surrounded by quotes in the SQL query:
|
726 |
+
* ORDER BY {$escaped_value}. As such, this function does not escape unquoted numeric values, field names, or SQL keywords.
|
727 |
+
*
|
728 |
+
*/
|
729 |
+
function wpbc_sanitize_text( $value ){
|
730 |
+
|
731 |
+
$value_trimmed = trim( stripslashes( $value ) ); // \' becomes ' and so on
|
732 |
+
|
733 |
+
$esc_sql_value = sanitize_textarea_field( $value_trimmed ); // preserves new lines (\n) and other whitespace
|
734 |
+
//$esc_sql_value = sanitize_text_field( $value_trimmed ); // remove new lines (\n) and other whitespace
|
735 |
+
|
736 |
+
|
737 |
+
//global $wpdb;
|
738 |
+
//$value = trim( $wpdb->prepare( "'%s'", $esc_sql_value ) , "'" );
|
739 |
+
//$esc_sql_value = trim( stripslashes( $esc_sql_value ) );
|
740 |
+
|
741 |
+
return $esc_sql_value;
|
742 |
+
|
743 |
+
}
|
744 |
+
|
includes/page-availability/_out/availability_calendar.css
ADDED
File without changes
|
includes/page-availability/_out/availability_calendar.js
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
"use strict";
|
2 |
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXSwiZmlsZSI6ImluY2x1ZGVzL3BhZ2UtYXZhaWxhYmlsaXR5L19vdXQvYXZhaWxhYmlsaXR5X2NhbGVuZGFyLmpzIn0=
|
includes/page-availability/_out/availability_calendar.min.css
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
|
2 |
+
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJpbmNsdWRlcy9wYWdlLWF2YWlsYWJpbGl0eS9fb3V0L2F2YWlsYWJpbGl0eV9jYWxlbmRhci5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOltdfQ== */
|
includes/page-availability/_src/availability_calendar.css
ADDED
File without changes
|
includes/page-availability/_src/availability_calendar.js
ADDED
File without changes
|
includes/page-availability/availability__class.php
ADDED
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php /**
|
2 |
+
* @version 1.0
|
3 |
+
* @description WPBC_AJX__Availability
|
4 |
+
* @category WPBC_AJX__Availability Class
|
5 |
+
* @author wpdevelop
|
6 |
+
*
|
7 |
+
* @web-site http://oplugins.com/
|
8 |
+
* @email info@oplugins.com
|
9 |
+
*
|
10 |
+
* @modified 2022-10-24
|
11 |
+
*/
|
12 |
+
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
14 |
+
|
15 |
+
|
16 |
+
class WPBC_AJX__Availability {
|
17 |
+
|
18 |
+
// <editor-fold defaultstate="collapsed" desc=" /// JS | CSS files | Tpl loading /// " >
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Define HOOKs for loading CSS and JavaScript files
|
22 |
+
*/
|
23 |
+
public function init_load_css_js_tpl() {
|
24 |
+
|
25 |
+
// Load only at specific Page
|
26 |
+
if ( strpos( $_SERVER['REQUEST_URI'], 'page=wpbc-availability' ) !== false ) {
|
27 |
+
|
28 |
+
add_action( 'wpbc_enqueue_js_files', array( $this, 'js_load_files' ), 50 );
|
29 |
+
add_action( 'wpbc_enqueue_css_files', array( $this, 'enqueue_css_files' ), 50 );
|
30 |
+
|
31 |
+
//add_action( 'wpbc_hook_settings_page_footer', array( $this, 'hook__page_footer_tmpl' ) );
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
|
36 |
+
/** JS */
|
37 |
+
public function js_load_files( $where_to_load ) {
|
38 |
+
|
39 |
+
$in_footer = true;
|
40 |
+
|
41 |
+
if ( ( is_admin() ) && ( in_array( $where_to_load, array( 'admin', 'both' ) ) ) ) {
|
42 |
+
|
43 |
+
wp_enqueue_script( 'wpbc-ajx_availability_calendar'
|
44 |
+
, trailingslashit( plugins_url( '', __FILE__ ) ) . '_out/availability_calendar.js' /* wpbc_plugin_url( '/_out/js/codemirror.js' ) */
|
45 |
+
, array( 'wpbc-global-vars' ), '1.0', $in_footer );
|
46 |
+
/**
|
47 |
+
*
|
48 |
+
* wp_localize_script( 'wpbc-global-vars', 'wpbc_live_request_obj'
|
49 |
+
* , array(
|
50 |
+
* 'ajx_booking' => '',
|
51 |
+
* 'reminders' => ''
|
52 |
+
* )
|
53 |
+
* );
|
54 |
+
*/
|
55 |
+
}
|
56 |
+
}
|
57 |
+
|
58 |
+
|
59 |
+
/** CSS */
|
60 |
+
public function enqueue_css_files( $where_to_load ) {
|
61 |
+
|
62 |
+
if ( ( is_admin() ) && ( in_array( $where_to_load, array( 'admin', 'both' ) ) ) ) {
|
63 |
+
|
64 |
+
wp_enqueue_style( 'wpbc-ajx_availability_calendar'
|
65 |
+
, trailingslashit( plugins_url( '', __FILE__ ) ) . '_out/availability_calendar.css' //, wpbc_plugin_url( '/includes/listing_ajx_booking/o-ajx_booking-listing.css' )
|
66 |
+
, array(), WP_BK_VERSION_NUM );
|
67 |
+
}
|
68 |
+
}
|
69 |
+
|
70 |
+
// </editor-fold>
|
71 |
+
|
72 |
+
|
73 |
+
// <editor-fold defaultstate="collapsed" desc=" /// R e q u e s t /// " >
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Get params names for escaping and/or default value of such params
|
77 |
+
*
|
78 |
+
* @return array array ( 'resource_id' => array( 'validate' => 'digit_or_csd', 'default' => array( '1' ) )
|
79 |
+
* , ... )
|
80 |
+
*/
|
81 |
+
static public function request_rules_structure(){
|
82 |
+
|
83 |
+
return array(
|
84 |
+
// 'digit_or_csd' can check about 'digit_or_csd' in arrays, as well
|
85 |
+
'resource_id' => array( 'validate' => 'digit_or_csd', 'default' => 1 ) // if ['0'] - All booking resources
|
86 |
+
// , 'ui_wh_booking_date_checkout' => array( 'validate' => 'digit_or_date', 'default' => '' ) // number | date 2016-07-20
|
87 |
+
// , 'wh_modification_date' => array( 'validate' => 'array', 'default' => array( "3" ) ) // number | date 2016-07-20
|
88 |
+
// , 'ui_wh_modification_date_radio' => array( 'validate' => 'd', 'default' => 0 ) // '1' | '2' ....
|
89 |
+
// , 'keyword' => array( 'validate' => 's', 'default' => '' ) //string
|
90 |
+
// , 'wh_cost' => array( 'validate' => 'float_or_empty', 'default' => '' ) // '1' | ''
|
91 |
+
// , 'ui_usr__send_emails' => array( 'validate' => array( 'send', 'not_send' ), 'default' => 'send' )
|
92 |
+
);
|
93 |
+
|
94 |
+
}
|
95 |
+
|
96 |
+
// </editor-fold>
|
97 |
+
|
98 |
+
|
99 |
+
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Just for loading CSS and JavaScript files
|
104 |
+
*/
|
105 |
+
if ( true ) {
|
106 |
+
$ajx_availability_loading = new WPBC_AJX__Availability;
|
107 |
+
$ajx_availability_loading->init_load_css_js_tpl();
|
108 |
+
//$ajx_availability_loading->define_ajax_hook();
|
109 |
+
}
|
110 |
+
|
111 |
+
|
112 |
+
/**
|
113 |
+
* A c t i v a t e - Create new DB Table, for booking dates properties
|
114 |
+
*
|
115 |
+
* booking date property can be relative to: prop_name = 'unavailable', 'available', 'rate', 'allow_start_day_selection', 'allow_days_number_to_select', 'availability_count', ...
|
116 |
+
*
|
117 |
+
* @return void
|
118 |
+
*/
|
119 |
+
function wpbc_activation__dates_availability() { //FixIn: 9.3.1.2
|
120 |
+
|
121 |
+
global $wpdb;
|
122 |
+
$charset_collate = ( ! empty( $wpdb->charset ) ) ? "DEFAULT CHARACTER SET $wpdb->charset" : '';
|
123 |
+
$charset_collate .= ( ! empty( $wpdb->collate ) ) ? " COLLATE $wpdb->collate" : '';
|
124 |
+
|
125 |
+
if ( ! wpbc_is_table_exists( 'booking_dates_prop' ) ) {
|
126 |
+
$simple_sql = "CREATE TABLE {$wpdb->prefix}booking_dates_props (
|
127 |
+
booking_dates_prop_id bigint(20) unsigned NOT NULL auto_increment,
|
128 |
+
resource_id bigint(10) NOT NULL default 1,
|
129 |
+
calendar_date datetime NOT NULL default '0000-00-00 00:00:00',
|
130 |
+
prop_name varchar(200) NOT NULL default '',
|
131 |
+
prop_value text,
|
132 |
+
PRIMARY KEY (booking_dates_prop_id)
|
133 |
+
) {$charset_collate}";
|
134 |
+
$wpdb->query( $simple_sql );
|
135 |
+
}
|
136 |
+
}
|
137 |
+
add_bk_action( 'wpbc_activation_after_db_actions', 'wpbc_activation__dates_availability' );
|
138 |
+
|
139 |
+
|
140 |
+
/**
|
141 |
+
* D e a c t i v a t e
|
142 |
+
*/
|
143 |
+
function wpbc_deactivation__dates_availability() {
|
144 |
+
|
145 |
+
global $wpdb;
|
146 |
+
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}booking_dates_props" );
|
147 |
+
}
|
148 |
+
add_bk_action( 'wpbc_other_versions_deactivation', 'wpbc_deactivation__dates_availability' );
|
includes/page-availability/availability__page.php
CHANGED
@@ -57,66 +57,32 @@ class WPBC_Page_AJX_Availability extends WPBC_Page_Structure {
|
|
57 |
|
58 |
public function content() {
|
59 |
|
60 |
-
do_action( 'wpbc_hook_settings_page_header', '
|
61 |
|
62 |
-
if ( ! wpbc_is_mu_user_can_be_here( 'activated_user' ) ) { return false; }
|
63 |
|
64 |
-
|
65 |
|
66 |
|
67 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
68 |
// Get and escape request parameters
|
69 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
array( 'page_num' => 1
|
87 |
-
, 'page_items_count' => 100
|
88 |
-
, 'sort' => 'ajx_booking_id'
|
89 |
-
, 'sort_type' => 'DESC'
|
90 |
-
, 'keyword' => ''
|
91 |
-
, 'status' => ''
|
92 |
-
, 'ru_create_date' => ''
|
93 |
-
)
|
94 |
-
*/
|
95 |
-
|
96 |
-
/**
|
97 |
-
// 1. Direct Clean Params
|
98 |
-
|
99 |
-
$request_params_ajx_booking = array(
|
100 |
-
'page_num' => array( 'validate' => 'd', 'default' => 1 )
|
101 |
-
, 'page_items_count' => array( 'validate' => 'd', 'default' => 10 )
|
102 |
-
, 'sort' => array( 'validate' => array( 'ajx_booking_id' ), 'default' => 'ajx_booking_id' )
|
103 |
-
, 'sort_type' => array( 'validate' => array( 'ASC', 'DESC'),'default' => 'DESC' )
|
104 |
-
, 'status' => array( 'validate' => 's', 'default' => '' )
|
105 |
-
, 'keyword' => array( 'validate' => 's', 'default' => '' )
|
106 |
-
, 'ru_create_date' => array( 'validate' => 'date', 'default' => '' )
|
107 |
-
);
|
108 |
-
$request_params_values = array( // Usually $request_params_values is $_REQUEST
|
109 |
-
'page_num' => 1,
|
110 |
-
'page_items_count' => 3,
|
111 |
-
'sort' => 'ajx_booking_id',
|
112 |
-
'sort_type' => 'DESC',
|
113 |
-
'status' => '',
|
114 |
-
'keyword' => '',
|
115 |
-
'ru_create_date' => ''
|
116 |
-
);
|
117 |
-
$request_params = wpbc_sanitize_params_in_arr( $request_params_values, $request_params_ajx_booking );
|
118 |
-
*/
|
119 |
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
120 |
|
121 |
|
122 |
// Submit /////////////////////////////////////////////////////////////
|
@@ -128,15 +94,10 @@ class WPBC_Page_AJX_Availability extends WPBC_Page_Structure {
|
|
128 |
|
129 |
wpbc_js_for_bookings_page(); // JavaScript functions
|
130 |
|
131 |
-
|
132 |
-
|
133 |
-
wpbc_ajx_bookings_toolbar( $escaped_search_request_params );
|
134 |
|
135 |
-
|
136 |
|
137 |
-
?></span><?php // BS UI CSS Class
|
138 |
-
|
139 |
-
//$this->show_help_section();
|
140 |
|
141 |
?><div id="wpbc_log_screen" class="wpbc_log_screen"></div><?php
|
142 |
|
@@ -152,7 +113,7 @@ class WPBC_Page_AJX_Availability extends WPBC_Page_Structure {
|
|
152 |
|
153 |
///wpbc_ajx_booking_modify_container_show(); // Container for showing Edit ajx_booking and define Edit and Delete ajx_booking JavaScript vars.
|
154 |
|
155 |
-
wpbc_ajx__ui__booking_sorting( $
|
156 |
|
157 |
?><div class="wpbc_ajx_booking_pagination"></div><?php // Pagination container at head
|
158 |
wpbc_clear_div();
|
@@ -160,7 +121,7 @@ class WPBC_Page_AJX_Availability extends WPBC_Page_Structure {
|
|
160 |
$is_test_sql_directly = false;
|
161 |
if ( ! $is_test_sql_directly ) {
|
162 |
|
163 |
-
|
164 |
|
165 |
$this->show_pagination_container();
|
166 |
|
@@ -182,100 +143,6 @@ class WPBC_Page_AJX_Availability extends WPBC_Page_Structure {
|
|
182 |
|
183 |
|
184 |
|
185 |
-
|
186 |
-
// TODO: create some help text here
|
187 |
-
private function show_help_section(){
|
188 |
-
|
189 |
-
if ( ! wpbc_section_is_dismissed( 'wpbc-panel-help-wizard' ) ) {
|
190 |
-
return;
|
191 |
-
}
|
192 |
-
|
193 |
-
$notice_id = 'wpbc_ajx_booking_help_section';
|
194 |
-
if ( ! wpbc_section_is_dismissed( $notice_id ) ) {
|
195 |
-
|
196 |
-
?><div id="<?php echo $notice_id; ?>"
|
197 |
-
class="wpbc_system_notice wpbc_is_dismissible wpbc_is_hideable notice-info wpbc_internal_notice"
|
198 |
-
data-nonce="<?php echo wp_create_nonce( $nonce_name = $notice_id . '_wpbcnonce' ); ?>"
|
199 |
-
data-user-id="<?php echo wpbc_get_current_user_id(); ?>"
|
200 |
-
><?php
|
201 |
-
|
202 |
-
wpbc_x_dismiss_button();
|
203 |
-
|
204 |
-
$field_options = array();
|
205 |
-
$field_options[] = '<div class="wpbc-help-container">';
|
206 |
-
|
207 |
-
$field_options[] = '<h3 style="margin:0;">' . __( 'How to create the booking?', 'booking' ) . '</h3>';
|
208 |
-
$field_options[] = '1. ' . sprintf( __( 'Click on %s"Add New Booking"%s button.', 'booking' ), '<strong>', '</strong>' );
|
209 |
-
$field_options[] = '2. ' . sprintf( __( 'Select email template, that you want to use for sending as reminder. You can create and configure email template(s) at %semails settings%s page.', 'booking' )
|
210 |
-
, '<strong><a href="' . esc_url( wpbc_get_settings_url() ) . '&tab=email">', '</a></strong>'
|
211 |
-
, '<strong>', '</strong>'
|
212 |
-
);
|
213 |
-
$field_options[] = '3. ' . sprintf( __( 'Configure one or several conditions. %sNote%s. If your condition for the date field, then you can use configuration that possible to use in %sstrtotime%s function. For example: %sTODAY - 6 MONTHS - 1 DAY%s ', 'booking' )
|
214 |
-
, '<strong>', '</strong>'
|
215 |
-
, '<strong><a href="https://www.php.net/manual/en/datetime.formats.relative.php" target="_blank">', '</a></strong>'
|
216 |
-
, '<code>', '</code>'
|
217 |
-
);
|
218 |
-
$field_options[] = '4. ' . sprintf( __( 'Click on Create Booking button.', 'booking' ) );
|
219 |
-
|
220 |
-
$field_options[] = '<h3 style="margin:0;">' . __( 'How to run booking manually?', 'booking' ) . '</h3>';
|
221 |
-
$field_options[] = '1. ' . sprintf( __( 'Click on %s"Run"%s button to execute specific booking.', 'booking' ), '<strong>', '</strong>' );
|
222 |
-
$field_options[] = '2. ' . sprintf( __( 'System will run booking and create %semail reminders%s from %sajx_booking%s based on conditions of current booking.', 'booking' )
|
223 |
-
, '<strong><a href="' . esc_url( wpbc_get_reminders_url() ) . '">', '</a></strong>'
|
224 |
-
, '<strong><a href="' . esc_url( wpbc_get_ajx_booking_url() ) . '">', '</a></strong>'
|
225 |
-
, '<strong>', '</strong>'
|
226 |
-
);
|
227 |
-
|
228 |
-
$field_options[] = '<div class="wpbc-help-columns">';
|
229 |
-
$field_options[] = ' <div class="wpbc-help-col">';
|
230 |
-
$field_options[] = ' <h3 class="wpbc-header-h"">' . __( 'How to set up automatic creation of reminders?', 'booking' ) . '</h3>';
|
231 |
-
$field_options[] = ' 1. ' . sprintf( __( 'Insert into the page %sshortcode%s for creation of reminders for specific booking.', 'booking' )
|
232 |
-
, '<strong><a href="https://oplugins.com/faq/email-reminders-how-to-set-up-run-rule-automatically-to-create-reminders/">', '</a></strong>' );
|
233 |
-
$field_options[] = ' 2. ' . sprintf( __( 'When someone visit this page, shortcode will run Booking and Reminder(s) will be created.', 'booking' )
|
234 |
-
, '<strong>', '</strong>' );
|
235 |
-
$field_options[] = ' </div>';
|
236 |
-
$field_options[] = ' <div class="wpbc-help-col">';
|
237 |
-
$field_options[] = ' <h3 class="wpbc-header-h wpbc-header-h-premium">' . __( 'Advanced automatic creation of reminders in premium versions.', 'booking' ) . '</h3>';
|
238 |
-
$field_options[] = ' 1. ' . sprintf( __( 'Configure %sCRON script%s at your server for creation of reminders periodically in automatic mode. ', 'booking' )
|
239 |
-
, '<strong><a href="https://oplugins.com/plugins/email-reminders-automate/">', '</a></strong>' );
|
240 |
-
$field_options[] = ' 2. ' . sprintf( __( 'Its can be useful, for every day automatic creation of email reminders, that different from today date on X days, relative to specific field. For example, its can be friendly notification of upcoming in 1 day booking, or follow-up email after event.', 'booking' )
|
241 |
-
, '<strong><a href="https://oplugins.com/plugins/email-reminders-automate/">', '</a></strong>' );
|
242 |
-
$field_options[] = ' </div>';
|
243 |
-
$field_options[] = '</div>';
|
244 |
-
|
245 |
-
$field_options[] = '</div>';
|
246 |
-
WPBC_Settings_API::field_help_row_static(
|
247 |
-
'help_translation_section_after_legend_items'
|
248 |
-
, array(
|
249 |
-
'type' => 'help'
|
250 |
-
, 'value' => $field_options
|
251 |
-
, 'class' => ''
|
252 |
-
, 'css' => 'margin:0;padding:0;border:0;'
|
253 |
-
, 'description' => ''
|
254 |
-
, 'cols' => 2
|
255 |
-
, 'group' => 'help'
|
256 |
-
, 'tr_class' => ''
|
257 |
-
, 'description_tag' => 'p'
|
258 |
-
)
|
259 |
-
);
|
260 |
-
?></div>
|
261 |
-
<?php
|
262 |
-
if ( wpbc_section_is_dismissed( 'wpbc-panel-help-wizard' ) ) {
|
263 |
-
|
264 |
-
// Move help section to the top of the page, after Title before toolbar ?>
|
265 |
-
<script type="text/javascript">
|
266 |
-
jQuery(document).ready(function(){
|
267 |
-
jQuery(document).ready(function(){
|
268 |
-
jQuery( '.wpbc_admin_message' ).after( jQuery( '#<?php echo $notice_id; ?>' ) );
|
269 |
-
});
|
270 |
-
});
|
271 |
-
</script>
|
272 |
-
<?php
|
273 |
-
}
|
274 |
-
}
|
275 |
-
|
276 |
-
}
|
277 |
-
|
278 |
-
|
279 |
private function show_pagination_container(){
|
280 |
?>
|
281 |
<div class="wpbc_ajx_booking_pagination"></div>
|
@@ -379,4 +246,4 @@ debuge($items_arr);
|
|
379 |
}
|
380 |
|
381 |
}
|
382 |
-
add_action('wpbc_menu_created', array( new WPBC_Page_AJX_Availability() , '__construct') ); // Executed after creation of Menu
|
57 |
|
58 |
public function content() {
|
59 |
|
60 |
+
do_action( 'wpbc_hook_settings_page_header', 'page_booking_availability'); // Define Notices Section and show some static messages, if needed.
|
61 |
|
62 |
+
if ( ! wpbc_is_mu_user_can_be_here( 'activated_user' ) ) { return false; } // Check if MU user activated, otherwise show Warning message.
|
63 |
|
64 |
+
// if ( ! wpbc_set_default_resource_to__get() ) return false; // Define default booking resources for $_GET and check if booking resource belong to user.
|
65 |
|
66 |
|
67 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
68 |
// Get and escape request parameters
|
69 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
70 |
+
|
71 |
+
$user_request = new WPBC_AJX__REQUEST( array(
|
72 |
+
'db_option_name' => 'booking_availability_request_params',
|
73 |
+
'user_id' => wpbc_get_current_user_id(),
|
74 |
+
'request_rules_structure' => WPBC_AJX__Availability::request_rules_structure()
|
75 |
+
)
|
76 |
+
);
|
77 |
+
$escaped_request_params_arr = $user_request->get_sanitized__saved__user_request_params(); // Get Saved
|
78 |
+
|
79 |
+
if ( false === $escaped_request_params_arr ) { // This request was not saved before, then get sanitized direct parameters, like: $_REQUEST['resource_id']
|
80 |
+
|
81 |
+
$request_prefix = false;
|
82 |
+
$escaped_request_params_arr = $user_request->get_sanitized__in_request__value_or_default( $request_prefix ); // Direct: $_REQUEST['resource_id']
|
83 |
+
}
|
84 |
+
|
85 |
+
//debuge( $escaped_request_params_arr );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
|
87 |
|
88 |
// Submit /////////////////////////////////////////////////////////////
|
94 |
|
95 |
wpbc_js_for_bookings_page(); // JavaScript functions
|
96 |
|
97 |
+
wpbc_ajx_bookings_toolbar( $escaped_request_params_arr );
|
|
|
|
|
98 |
|
99 |
+
?></span><?php
|
100 |
|
|
|
|
|
|
|
101 |
|
102 |
?><div id="wpbc_log_screen" class="wpbc_log_screen"></div><?php
|
103 |
|
113 |
|
114 |
///wpbc_ajx_booking_modify_container_show(); // Container for showing Edit ajx_booking and define Edit and Delete ajx_booking JavaScript vars.
|
115 |
|
116 |
+
wpbc_ajx__ui__booking_sorting( $escaped_request_params_arr , wpbc_ajx_get__request_params__names_default( 'default' ) );
|
117 |
|
118 |
?><div class="wpbc_ajx_booking_pagination"></div><?php // Pagination container at head
|
119 |
wpbc_clear_div();
|
121 |
$is_test_sql_directly = false;
|
122 |
if ( ! $is_test_sql_directly ) {
|
123 |
|
124 |
+
//$this->show_ajx_booking_listing_container_ajax( $escaped_request_params_arr );
|
125 |
|
126 |
$this->show_pagination_container();
|
127 |
|
143 |
|
144 |
|
145 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
private function show_pagination_container(){
|
147 |
?>
|
148 |
<div class="wpbc_ajx_booking_pagination"></div>
|
246 |
}
|
247 |
|
248 |
}
|
249 |
+
add_action('wpbc_menu_created', array( new WPBC_Page_AJX_Availability() , '__construct') ); // Executed after creation of Menu
|
includes/page-bookings/bookings__actions.php
CHANGED
@@ -35,10 +35,7 @@ function wpbc_ajax_WPBC_AJX_BOOKING_ACTIONS() {
|
|
35 |
$user_id = ( isset( $_REQUEST['wpbc_ajx_user_id'] ) ) ? intval( $_REQUEST['wpbc_ajx_user_id'] ) : wpbc_get_current_user_id();
|
36 |
|
37 |
// Get clean Parameters for SQL ---------------------------------------------------------------------------
|
38 |
-
$
|
39 |
-
|
40 |
-
$request_params = wpbc_esc_get__value_or_default__in_request(
|
41 |
-
array(
|
42 |
'booking_action' => array( 'validate' => array(
|
43 |
'set_booking_locale',
|
44 |
'set_booking_pending' ,
|
@@ -84,8 +81,20 @@ function wpbc_ajax_WPBC_AJX_BOOKING_ACTIONS() {
|
|
84 |
|
85 |
'feedback__note' => array( 'validate' => 's', 'default' => '' ),
|
86 |
'feedback_stars' => array( 'validate' => 'd', 'default' => 0 )
|
87 |
-
)
|
88 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
|
90 |
$action_result = array();
|
91 |
|
@@ -2067,8 +2076,17 @@ function wpbc_ajax_WPBC_AJX_BOOKING_ACTIONS() {
|
|
2067 |
|
2068 |
} else {
|
2069 |
|
2070 |
-
|
2071 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2072 |
|
2073 |
// $data_arr = wpbc_ajx_get_booking_data_arr( $request_params_for_listing );
|
2074 |
|
35 |
$user_id = ( isset( $_REQUEST['wpbc_ajx_user_id'] ) ) ? intval( $_REQUEST['wpbc_ajx_user_id'] ) : wpbc_get_current_user_id();
|
36 |
|
37 |
// Get clean Parameters for SQL ---------------------------------------------------------------------------
|
38 |
+
$request_rules_structure = array(
|
|
|
|
|
|
|
39 |
'booking_action' => array( 'validate' => array(
|
40 |
'set_booking_locale',
|
41 |
'set_booking_pending' ,
|
81 |
|
82 |
'feedback__note' => array( 'validate' => 's', 'default' => '' ),
|
83 |
'feedback_stars' => array( 'validate' => 'd', 'default' => 0 )
|
84 |
+
);
|
85 |
+
|
86 |
+
$user_request = new WPBC_AJX__REQUEST( array(
|
87 |
+
'db_option_name' => 'booking_listing_request_params',
|
88 |
+
'user_id' => wpbc_get_current_user_id(),
|
89 |
+
'request_rules_structure' => $request_rules_structure
|
90 |
+
)
|
91 |
+
);
|
92 |
+
$request_prefix = 'action_params';
|
93 |
+
$request_params = $user_request->get_sanitized__in_request__value_or_default( $request_prefix ); // NOT Direct: $_REQUEST['action_params']['resource_id']
|
94 |
+
|
95 |
+
|
96 |
+
|
97 |
+
|
98 |
|
99 |
$action_result = array();
|
100 |
|
2076 |
|
2077 |
} else {
|
2078 |
|
2079 |
+
|
2080 |
+
$user_request = new WPBC_AJX__REQUEST( array(
|
2081 |
+
'db_option_name' => 'booking_listing_request_params',
|
2082 |
+
'user_id' => wpbc_get_current_user_id(),
|
2083 |
+
'request_rules_structure' => wpbc_ajx_get__request_params__names_default()
|
2084 |
+
)
|
2085 |
+
);
|
2086 |
+
$request_prefix = 'search_params';
|
2087 |
+
$request_params_for_listing = $user_request->get_sanitized__in_request__value_or_default( $request_prefix ); // NOT Direct: $_REQUEST['search_params']['resource_id']
|
2088 |
+
|
2089 |
+
|
2090 |
|
2091 |
// $data_arr = wpbc_ajx_get_booking_data_arr( $request_params_for_listing );
|
2092 |
|
includes/page-bookings/bookings__listing.php
CHANGED
@@ -488,7 +488,15 @@ console.log( 'row listing', data ); // LISTING_ROWS
|
|
488 |
* $_REQUEST['search_params']['page_num'], $_REQUEST['search_params']['page_items_count'],..
|
489 |
*/
|
490 |
|
491 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
492 |
|
493 |
$data_arr = wpbc_ajx_get_booking_data_arr( $request_params );
|
494 |
|
@@ -519,80 +527,6 @@ console.log( 'row listing', data ); // LISTING_ROWS
|
|
519 |
// </editor-fold>
|
520 |
|
521 |
|
522 |
-
// <editor-fold defaultstate="collapsed" desc=" /// C l e a n R E Q U E S T /// " >
|
523 |
-
|
524 |
-
/**
|
525 |
-
* Get clean specific $_REQUEST params, if param is NOT set then return "default"
|
526 |
-
*
|
527 |
-
* @param array() - Prefix for request - array( 'request_prefix' => 'search_params' )
|
528 |
-
*
|
529 |
-
* If Ajax, sending search request, like: $_REQUEST[ 'search_params' ]['page_num'] , $_REQUEST['search_params']['page_items_count'], ....
|
530 |
-
* then we need to use prefix - 'search_params'
|
531 |
-
* $this->clean_request_parameters( array( 'request_prefix' => 'search_params' ) );
|
532 |
-
*
|
533 |
-
* Note, if $_REQUEST[ 'search_params' ] not set, then get DEFAULT value
|
534 |
-
*
|
535 |
-
* Otherwise for usual request $this->clean_request_parameters( ); --> get values, like $_REQUEST['page_num'] and if not set, get DEFAULT value
|
536 |
-
*
|
537 |
-
* @return array(
|
538 |
-
* 'page_num' => 1
|
539 |
-
* , 'page_items_count' => 100
|
540 |
-
* , 'sort' => 'ajx_booking_id'
|
541 |
-
* , 'sort_type' => 'DESC'
|
542 |
-
* , 'keyword' => ''
|
543 |
-
* , 'status' => ''
|
544 |
-
* , 'ru_create_date' => ''
|
545 |
-
* )
|
546 |
-
*/
|
547 |
-
public function clean_request_parameters( $params = array() ){
|
548 |
-
|
549 |
-
// $user_escaped_request_params = array();
|
550 |
-
|
551 |
-
/**
|
552 |
-
* Get saved parameters from user metadata and then escape them:
|
553 |
-
* If params empty, it's means that we request them first time after page loading, and we can get saved data (if it exist)
|
554 |
-
*/
|
555 |
-
if ( empty( $params ) ) {
|
556 |
-
|
557 |
-
$user_id = wpbc_get_current_user_id();
|
558 |
-
|
559 |
-
$escaped_request_params = wpbc_ajx__user_request_params__get_sanitized( $user_id );
|
560 |
-
|
561 |
-
if ( ! empty( $escaped_request_params ) ) {
|
562 |
-
return $escaped_request_params;
|
563 |
-
}
|
564 |
-
}
|
565 |
-
|
566 |
-
$defaults = array( 'request_prefix' => false );
|
567 |
-
$params = wp_parse_args( $params, $defaults );
|
568 |
-
|
569 |
-
|
570 |
-
$request_params_structure = wpbc_ajx_get__request_params__names_default(); /**
|
571 |
-
* array( 'page_num' => array( 'validate' => 'd', 'default' => 1 )
|
572 |
-
, 'page_items_count' => array( 'validate' => 'd', 'default' => 10 )
|
573 |
-
, 'sort' => array( 'validate' => array( 'booking_id' ), 'default' => 'booking_id' )
|
574 |
-
, 'sort_type' => array( 'validate' => array( 'ASC', 'DESC'),'default' => 'DESC' )
|
575 |
-
, 'keyword' => array( 'validate' => 's', 'default' => '' )
|
576 |
-
, 'create_date' => array( 'validate' => 'date', 'default' => '' )
|
577 |
-
)
|
578 |
-
*/
|
579 |
-
|
580 |
-
$escaped_request_params = wpbc_esc_get__value_or_default__in_request(
|
581 |
-
$request_params_structure
|
582 |
-
, $params[ 'request_prefix' ]
|
583 |
-
);
|
584 |
-
|
585 |
-
// // Overwrite user saved last request parameters by some parameters from browser URL -- $_REQUEST
|
586 |
-
// if ( ! empty( $user_escaped_request_params ) ) {
|
587 |
-
// $escaped_request_params = wp_parse_args( $escaped_request_params, $user_escaped_request_params );
|
588 |
-
// }
|
589 |
-
|
590 |
-
return $escaped_request_params;
|
591 |
-
}
|
592 |
-
|
593 |
-
// </editor-fold>
|
594 |
-
|
595 |
-
|
596 |
}
|
597 |
|
598 |
|
488 |
* $_REQUEST['search_params']['page_num'], $_REQUEST['search_params']['page_items_count'],..
|
489 |
*/
|
490 |
|
491 |
+
$user_request = new WPBC_AJX__REQUEST( array(
|
492 |
+
'db_option_name' => 'booking_listing_request_params',
|
493 |
+
'user_id' => wpbc_get_current_user_id(),
|
494 |
+
'request_rules_structure' => wpbc_ajx_get__request_params__names_default()
|
495 |
+
)
|
496 |
+
);
|
497 |
+
$request_prefix = 'search_params';
|
498 |
+
$request_params = $user_request->get_sanitized__in_request__value_or_default( $request_prefix ); // NOT Direct: $_REQUEST['search_params']['resource_id']
|
499 |
+
|
500 |
|
501 |
$data_arr = wpbc_ajx_get_booking_data_arr( $request_params );
|
502 |
|
527 |
// </editor-fold>
|
528 |
|
529 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
530 |
}
|
531 |
|
532 |
|
includes/page-bookings/bookings__page.php
CHANGED
@@ -67,55 +67,27 @@ class WPBC_Page_AJX_Bookings extends WPBC_Page_Structure {
|
|
67 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
68 |
// Get and escape request parameters
|
69 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
70 |
-
$
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
, 'status' => ''
|
92 |
-
, 'ru_create_date' => ''
|
93 |
-
)
|
94 |
-
*/
|
95 |
-
|
96 |
-
/**
|
97 |
-
// 1. Direct Clean Params
|
98 |
-
|
99 |
-
$request_params_ajx_booking = array(
|
100 |
-
'page_num' => array( 'validate' => 'd', 'default' => 1 )
|
101 |
-
, 'page_items_count' => array( 'validate' => 'd', 'default' => 10 )
|
102 |
-
, 'sort' => array( 'validate' => array( 'ajx_booking_id' ), 'default' => 'ajx_booking_id' )
|
103 |
-
, 'sort_type' => array( 'validate' => array( 'ASC', 'DESC'),'default' => 'DESC' )
|
104 |
-
, 'status' => array( 'validate' => 's', 'default' => '' )
|
105 |
-
, 'keyword' => array( 'validate' => 's', 'default' => '' )
|
106 |
-
, 'ru_create_date' => array( 'validate' => 'date', 'default' => '' )
|
107 |
-
);
|
108 |
-
$request_params_values = array( // Usually $request_params_values is $_REQUEST
|
109 |
-
'page_num' => 1,
|
110 |
-
'page_items_count' => 3,
|
111 |
-
'sort' => 'ajx_booking_id',
|
112 |
-
'sort_type' => 'DESC',
|
113 |
-
'status' => '',
|
114 |
-
'keyword' => '',
|
115 |
-
'ru_create_date' => ''
|
116 |
-
);
|
117 |
-
$request_params = wpbc_sanitize_params_in_arr( $request_params_values, $request_params_ajx_booking );
|
118 |
-
*/
|
119 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
120 |
|
121 |
|
@@ -132,12 +104,8 @@ class WPBC_Page_AJX_Bookings extends WPBC_Page_Structure {
|
|
132 |
|
133 |
wpbc_ajx_bookings_toolbar( $escaped_search_request_params );
|
134 |
|
135 |
-
// wpbc_bookings_toolbar();
|
136 |
-
|
137 |
?></span><?php // BS UI CSS Class
|
138 |
|
139 |
-
//$this->show_help_section();
|
140 |
-
|
141 |
?><div id="wpbc_log_screen" class="wpbc_log_screen"></div><?php
|
142 |
|
143 |
// Content ////////////////////////////////////////////////////////////
|
@@ -175,108 +143,11 @@ class WPBC_Page_AJX_Bookings extends WPBC_Page_Structure {
|
|
175 |
</span>
|
176 |
<?php
|
177 |
|
178 |
-
//wpbc_show_wpbc_footer(); // Rating
|
179 |
-
|
180 |
do_action( 'wpbc_hook_settings_page_footer', 'wpbc-ajx_booking' );
|
|
|
181 |
wpbc_show_booking_footer(); // Show rating line
|
182 |
}
|
183 |
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
// TODO: create some help text here
|
188 |
-
private function show_help_section(){
|
189 |
-
|
190 |
-
if ( ! wpbc_section_is_dismissed( 'wpbc-panel-help-wizard' ) ) {
|
191 |
-
return;
|
192 |
-
}
|
193 |
-
|
194 |
-
$notice_id = 'wpbc_ajx_booking_help_section';
|
195 |
-
if ( ! wpbc_section_is_dismissed( $notice_id ) ) {
|
196 |
-
|
197 |
-
?><div id="<?php echo $notice_id; ?>"
|
198 |
-
class="wpbc_system_notice wpbc_is_dismissible wpbc_is_hideable notice-info wpbc_internal_notice"
|
199 |
-
data-nonce="<?php echo wp_create_nonce( $nonce_name = $notice_id . '_wpbcnonce' ); ?>"
|
200 |
-
data-user-id="<?php echo wpbc_get_current_user_id(); ?>"
|
201 |
-
><?php
|
202 |
-
|
203 |
-
wpbc_x_dismiss_button();
|
204 |
-
|
205 |
-
$field_options = array();
|
206 |
-
$field_options[] = '<div class="wpbc-help-container">';
|
207 |
-
|
208 |
-
$field_options[] = '<h3 style="margin:0;">' . __( 'How to create the booking?', 'booking' ) . '</h3>';
|
209 |
-
$field_options[] = '1. ' . sprintf( __( 'Click on %s"Add New Booking"%s button.', 'booking' ), '<strong>', '</strong>' );
|
210 |
-
$field_options[] = '2. ' . sprintf( __( 'Select email template, that you want to use for sending as reminder. You can create and configure email template(s) at %semails settings%s page.', 'booking' )
|
211 |
-
, '<strong><a href="' . esc_url( wpbc_get_settings_url() ) . '&tab=email">', '</a></strong>'
|
212 |
-
, '<strong>', '</strong>'
|
213 |
-
);
|
214 |
-
$field_options[] = '3. ' . sprintf( __( 'Configure one or several conditions. %sNote%s. If your condition for the date field, then you can use configuration that possible to use in %sstrtotime%s function. For example: %sTODAY - 6 MONTHS - 1 DAY%s ', 'booking' )
|
215 |
-
, '<strong>', '</strong>'
|
216 |
-
, '<strong><a href="https://www.php.net/manual/en/datetime.formats.relative.php" target="_blank">', '</a></strong>'
|
217 |
-
, '<code>', '</code>'
|
218 |
-
);
|
219 |
-
$field_options[] = '4. ' . sprintf( __( 'Click on Create Booking button.', 'booking' ) );
|
220 |
-
|
221 |
-
$field_options[] = '<h3 style="margin:0;">' . __( 'How to run booking manually?', 'booking' ) . '</h3>';
|
222 |
-
$field_options[] = '1. ' . sprintf( __( 'Click on %s"Run"%s button to execute specific booking.', 'booking' ), '<strong>', '</strong>' );
|
223 |
-
$field_options[] = '2. ' . sprintf( __( 'System will run booking and create %semail reminders%s from %sajx_booking%s based on conditions of current booking.', 'booking' )
|
224 |
-
, '<strong><a href="' . esc_url( wpbc_get_reminders_url() ) . '">', '</a></strong>'
|
225 |
-
, '<strong><a href="' . esc_url( wpbc_get_ajx_booking_url() ) . '">', '</a></strong>'
|
226 |
-
, '<strong>', '</strong>'
|
227 |
-
);
|
228 |
-
|
229 |
-
$field_options[] = '<div class="wpbc-help-columns">';
|
230 |
-
$field_options[] = ' <div class="wpbc-help-col">';
|
231 |
-
$field_options[] = ' <h3 class="wpbc-header-h"">' . __( 'How to set up automatic creation of reminders?', 'booking' ) . '</h3>';
|
232 |
-
$field_options[] = ' 1. ' . sprintf( __( 'Insert into the page %sshortcode%s for creation of reminders for specific booking.', 'booking' )
|
233 |
-
, '<strong><a href="https://oplugins.com/faq/email-reminders-how-to-set-up-run-rule-automatically-to-create-reminders/">', '</a></strong>' );
|
234 |
-
$field_options[] = ' 2. ' . sprintf( __( 'When someone visit this page, shortcode will run Booking and Reminder(s) will be created.', 'booking' )
|
235 |
-
, '<strong>', '</strong>' );
|
236 |
-
$field_options[] = ' </div>';
|
237 |
-
$field_options[] = ' <div class="wpbc-help-col">';
|
238 |
-
$field_options[] = ' <h3 class="wpbc-header-h wpbc-header-h-premium">' . __( 'Advanced automatic creation of reminders in premium versions.', 'booking' ) . '</h3>';
|
239 |
-
$field_options[] = ' 1. ' . sprintf( __( 'Configure %sCRON script%s at your server for creation of reminders periodically in automatic mode. ', 'booking' )
|
240 |
-
, '<strong><a href="https://oplugins.com/plugins/email-reminders-automate/">', '</a></strong>' );
|
241 |
-
$field_options[] = ' 2. ' . sprintf( __( 'Its can be useful, for every day automatic creation of email reminders, that different from today date on X days, relative to specific field. For example, its can be friendly notification of upcoming in 1 day booking, or follow-up email after event.', 'booking' )
|
242 |
-
, '<strong><a href="https://oplugins.com/plugins/email-reminders-automate/">', '</a></strong>' );
|
243 |
-
$field_options[] = ' </div>';
|
244 |
-
$field_options[] = '</div>';
|
245 |
-
|
246 |
-
$field_options[] = '</div>';
|
247 |
-
WPBC_Settings_API::field_help_row_static(
|
248 |
-
'help_translation_section_after_legend_items'
|
249 |
-
, array(
|
250 |
-
'type' => 'help'
|
251 |
-
, 'value' => $field_options
|
252 |
-
, 'class' => ''
|
253 |
-
, 'css' => 'margin:0;padding:0;border:0;'
|
254 |
-
, 'description' => ''
|
255 |
-
, 'cols' => 2
|
256 |
-
, 'group' => 'help'
|
257 |
-
, 'tr_class' => ''
|
258 |
-
, 'description_tag' => 'p'
|
259 |
-
)
|
260 |
-
);
|
261 |
-
?></div>
|
262 |
-
<?php
|
263 |
-
if ( wpbc_section_is_dismissed( 'wpbc-panel-help-wizard' ) ) {
|
264 |
-
|
265 |
-
// Move help section to the top of the page, after Title before toolbar ?>
|
266 |
-
<script type="text/javascript">
|
267 |
-
jQuery(document).ready(function(){
|
268 |
-
jQuery(document).ready(function(){
|
269 |
-
jQuery( '.wpbc_admin_message' ).after( jQuery( '#<?php echo $notice_id; ?>' ) );
|
270 |
-
});
|
271 |
-
});
|
272 |
-
</script>
|
273 |
-
<?php
|
274 |
-
}
|
275 |
-
}
|
276 |
-
|
277 |
-
}
|
278 |
-
|
279 |
-
|
280 |
private function show_pagination_container(){
|
281 |
?>
|
282 |
<div class="wpbc_ajx_booking_pagination"></div>
|
67 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
68 |
// Get and escape request parameters
|
69 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
70 |
+
$user_request = new WPBC_AJX__REQUEST( array(
|
71 |
+
'db_option_name' => 'booking_listing_request_params',
|
72 |
+
'user_id' => wpbc_get_current_user_id(),
|
73 |
+
'request_rules_structure' => wpbc_ajx_get__request_params__names_default()
|
74 |
+
)
|
75 |
+
);
|
76 |
+
|
77 |
+
$escaped_search_request_params = false;
|
78 |
+
if ( empty( $_REQUEST['overwrite'] ) ) {
|
79 |
+
$escaped_search_request_params = $user_request->get_sanitized__saved__user_request_params(); // Get Saved
|
80 |
+
}
|
81 |
+
|
82 |
+
if (
|
83 |
+
( false === $escaped_search_request_params )
|
84 |
+
|| ( ! empty( $_REQUEST['overwrite'] ) )
|
85 |
+
){ // This request was not saved before, then get sanitized direct parameters, like: $_REQUEST['resource_id']
|
86 |
+
|
87 |
+
$request_prefix = false;
|
88 |
+
$escaped_search_request_params = $user_request->get_sanitized__in_request__value_or_default( $request_prefix ); // Direct: $_REQUEST['resource_id']
|
89 |
+
}
|
90 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
92 |
|
93 |
|
104 |
|
105 |
wpbc_ajx_bookings_toolbar( $escaped_search_request_params );
|
106 |
|
|
|
|
|
107 |
?></span><?php // BS UI CSS Class
|
108 |
|
|
|
|
|
109 |
?><div id="wpbc_log_screen" class="wpbc_log_screen"></div><?php
|
110 |
|
111 |
// Content ////////////////////////////////////////////////////////////
|
143 |
</span>
|
144 |
<?php
|
145 |
|
|
|
|
|
146 |
do_action( 'wpbc_hook_settings_page_footer', 'wpbc-ajx_booking' );
|
147 |
+
|
148 |
wpbc_show_booking_footer(); // Show rating line
|
149 |
}
|
150 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
151 |
private function show_pagination_container(){
|
152 |
?>
|
153 |
<div class="wpbc_ajx_booking_pagination"></div>
|
includes/page-bookings/bookings__sql.php
CHANGED
@@ -2220,14 +2220,10 @@ function wpbc_ajx__user_request_params__get_option( $user_id, $option_name ){
|
|
2220 |
|
2221 |
|
2222 |
// <editor-fold defaultstate="collapsed" desc=" F u n c t i o n s f o r C l e a n i ng s " >
|
2223 |
-
////////////////////////////////////////////////////////////////////////////
|
2224 |
-
// G e n e r a l C l e a n i n g
|
2225 |
-
////////////////////////////////////////////////////////////////////////////
|
2226 |
|
2227 |
-
|
2228 |
-
|
2229 |
-
|
2230 |
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2231 |
|
2232 |
/**
|
2233 |
* Escaping for inline JavaScript.
|
@@ -2262,516 +2258,135 @@ function wpbc_ajx__user_request_params__get_option( $user_id, $option_name ){
|
|
2262 |
}
|
2263 |
|
2264 |
|
2265 |
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2266 |
-
// DB
|
2267 |
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2268 |
-
|
2269 |
-
/**
|
2270 |
-
* Check $value for injections. Basically can be used in Requests params checking.
|
2271 |
-
*
|
2272 |
-
* @param type $value
|
2273 |
-
*
|
2274 |
-
* @return type
|
2275 |
-
*/
|
2276 |
-
function wpbc_esc_clean_parameter( $value ) {
|
2277 |
-
|
2278 |
-
$value = preg_replace( '/<[^>]*>/', '', $value ); // clean any tags
|
2279 |
-
$value = str_replace( '<', ' ', $value );
|
2280 |
-
$value = str_replace( '>', ' ', $value );
|
2281 |
-
$value = strip_tags( $value ); // Strip HTML and PHP tags from a string
|
2282 |
-
|
2283 |
-
// Clean SQL injection
|
2284 |
-
$value = esc_sql( $value );
|
2285 |
-
$value = esc_textarea( $value ); //FixIn: 7.1.1.2
|
2286 |
-
|
2287 |
-
return $value;
|
2288 |
-
}
|
2289 |
-
|
2290 |
-
|
2291 |
-
function wpbc_esc_sql_like( $value_trimmed ) {
|
2292 |
-
|
2293 |
-
// check here https://code.tutsplus.com/articles/data-sanitization-and-validation-with-wordpress--wp-25536
|
2294 |
-
|
2295 |
-
global $wpdb;
|
2296 |
-
if ( method_exists( $wpdb ,'esc_like' ) )
|
2297 |
-
return $wpdb->esc_like( $value_trimmed ); // Its require minimum WP 4.0.0
|
2298 |
-
else
|
2299 |
-
return addcslashes( $value_trimmed, '_%\\' ); // Direct implementation from $wpdb->esc_like(
|
2300 |
-
}
|
2301 |
-
|
2302 |
-
|
2303 |
-
/**
|
2304 |
-
* Clean user string for using in SQL LIKE statement - append to LIKE sql
|
2305 |
-
*
|
2306 |
-
* @param string $value - to clean
|
2307 |
-
*
|
2308 |
-
* @return string - escaped
|
2309 |
-
* Exmaple:
|
2310 |
-
* $search_escaped_like_title = wpbc_esc_clean_like_string_for_append_in_sql_for_db( $input_var );
|
2311 |
-
*
|
2312 |
-
* $where_sql = " WHERE title LIKE ". $search_escaped_like_title ." ";
|
2313 |
-
*/
|
2314 |
-
function wpbc_esc_clean_like_string_for_append_in_sql_for_db( $value ) {
|
2315 |
-
|
2316 |
-
// check here https://code.tutsplus.com/articles/data-sanitization-and-validation-with-wordpress--wp-25536
|
2317 |
-
|
2318 |
-
global $wpdb;
|
2319 |
-
|
2320 |
-
$value_trimmed = trim( stripslashes( $value ) );
|
2321 |
-
|
2322 |
-
$wild = '%';
|
2323 |
-
$like = $wild . wpbc_esc_sql_like( $value_trimmed ) . $wild;
|
2324 |
-
$sql = $wpdb->prepare( "'%s'", $like );
|
2325 |
-
|
2326 |
-
return $sql;
|
2327 |
-
|
2328 |
-
|
2329 |
-
/* Help:
|
2330 |
-
* First half of escaping for LIKE special characters % and _ before preparing for MySQL.
|
2331 |
-
* Use this only before wpdb::prepare() or esc_sql(). Reversing the order is very bad for security.
|
2332 |
-
*
|
2333 |
-
* Example Prepared Statement:
|
2334 |
-
*
|
2335 |
-
* $wild = '%';
|
2336 |
-
* $find = 'only 43% of planets';
|
2337 |
-
* $like = $wild . wpbc_esc_sql_like( $find ) . $wild;
|
2338 |
-
* $sql = $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_content LIKE '%s'", $like );
|
2339 |
-
*
|
2340 |
-
* Example Escape Chain:
|
2341 |
-
*
|
2342 |
-
* $sql = esc_sql( wpbc_esc_sql_like( $input ) );
|
2343 |
-
*/
|
2344 |
-
|
2345 |
-
}
|
2346 |
-
|
2347 |
-
|
2348 |
-
/**
|
2349 |
-
* Clean string for using in SQL LIKE requests inside single quotes: WHERE title LIKE '%". $escaped_search_title ."%'
|
2350 |
-
* Replaced _ to \_ % to \% \ to \\
|
2351 |
-
*
|
2352 |
-
* @param string $value - to clean
|
2353 |
-
*
|
2354 |
-
* @return string - escaped
|
2355 |
-
* Exmaple:
|
2356 |
-
* $search_escaped_like_title = wpbc_esc_clean_like_string_for_db( $input_var );
|
2357 |
-
*
|
2358 |
-
* $where_sql = " WHERE title LIKE '%". $search_escaped_like_title ."%' ";
|
2359 |
-
*
|
2360 |
-
* Important! Use SINGLE quotes after in SQL query: LIKE '%".$data."%'
|
2361 |
-
*/
|
2362 |
-
function wpbc_esc_clean_like_string_for_db( $value ){
|
2363 |
-
|
2364 |
-
// check here https://code.tutsplus.com/articles/data-sanitization-and-validation-with-wordpress--wp-25536
|
2365 |
-
|
2366 |
-
global $wpdb;
|
2367 |
-
|
2368 |
-
$value_trimmed = trim( stripslashes( $value ) );
|
2369 |
-
|
2370 |
-
$value_trimmed = wpbc_esc_sql_like( $value_trimmed );
|
2371 |
-
|
2372 |
-
$value = trim( $wpdb->prepare( "'%s'", $value_trimmed ) , "'" );
|
2373 |
-
|
2374 |
-
return $value;
|
2375 |
-
|
2376 |
-
/* Help:
|
2377 |
-
* First half of escaping for LIKE special characters % and _ before preparing for MySQL.
|
2378 |
-
* Use this only before wpdb::prepare() or esc_sql(). Reversing the order is very bad for security.
|
2379 |
-
*
|
2380 |
-
* Example Prepared Statement:
|
2381 |
-
*
|
2382 |
-
* $wild = '%';
|
2383 |
-
* $find = 'only 43% of planets';
|
2384 |
-
* $like = $wild . wpbc_esc_sql_like( $find ) . $wild;
|
2385 |
-
* $sql = $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_content LIKE '%s'", $like );
|
2386 |
-
*
|
2387 |
-
* Example Escape Chain:
|
2388 |
-
*
|
2389 |
-
* $sql = esc_sql( wpbc_esc_sql_like( $input ) );
|
2390 |
-
*/
|
2391 |
-
}
|
2392 |
-
|
2393 |
-
|
2394 |
-
|
2395 |
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2396 |
-
// Request
|
2397 |
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2398 |
-
|
2399 |
-
/**
|
2400 |
-
* Check specific parameters in $_REQUEST and return cleaned params or default values
|
2401 |
-
*
|
2402 |
-
* @param array $request_params_rules = array(
|
2403 |
-
* 'page_num' => array( 'validate' => 'd', 'default' => 1 )
|
2404 |
-
* , 'page_items_count' => array( 'validate' => 'd', 'default' => 100 )
|
2405 |
-
* , 'sort' => array( 'validate' => 's', 'default' => 'booking_id' )
|
2406 |
-
* , 'sort_type' => array( 'validate' => array('ASC', 'DESC'), 'default' => 'DESC' )
|
2407 |
-
* , 'keyword' => array( 'validate' => 's', 'default' => '' )
|
2408 |
-
* , 'source' => array( 'validate' => 's', 'default' => '' )
|
2409 |
-
* , 'create_date' => array( 'validate' => 'date', 'default' => '' )
|
2410 |
-
* )
|
2411 |
-
*
|
2412 |
-
* @param string $prefix_in_request default FALSE
|
2413 |
-
* parameter is useful, if request like this:
|
2414 |
-
* $_REQUEST (
|
2415 |
-
* ['request_params'][page_num] => 3
|
2416 |
-
* ['request_params'][page_items_count] => 20
|
2417 |
-
* ['request_params'][sort] => booking_id
|
2418 |
-
* ['request_params'][sort_type] => DESC
|
2419 |
-
* ['request_params'][keyword] =>
|
2420 |
-
* ['request_params'][source] =>
|
2421 |
-
* )
|
2422 |
-
*
|
2423 |
-
*
|
2424 |
-
*
|
2425 |
-
* 'd'; // '1' | ''
|
2426 |
-
* 's'; // string !!! Clean 'LIKE' string for DB !!!
|
2427 |
-
* 'digit_or_csd'; // '0' | '1,2,3' | ''
|
2428 |
-
* 'digit_or_date'; // number | date 2016-07-20
|
2429 |
-
*
|
2430 |
-
* 'checked_skip_it' // Skip checking
|
2431 |
-
* array( '0', 'trash', 'any'); // Elements only listed in array
|
2432 |
-
*
|
2433 |
-
|
2434 |
-
*@return array $clean_params = Array (
|
2435 |
-
* [page_num] => 3
|
2436 |
-
* [page_items_count] => 20
|
2437 |
-
* [sort] => booking_id
|
2438 |
-
* [sort_type] => DESC
|
2439 |
-
* [keyword] =>
|
2440 |
-
* [source] =>
|
2441 |
-
* [create_date] =>
|
2442 |
-
* )
|
2443 |
-
*/
|
2444 |
-
function wpbc_esc_get__value_or_default__in_request( $request_params_rules, $prefix_in_request = false ){
|
2445 |
-
|
2446 |
-
$request_params_values_arr = array();
|
2447 |
|
2448 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2449 |
|
2450 |
-
|
2451 |
-
|
2452 |
-
|
2453 |
-
|
2454 |
-
*/
|
2455 |
|
2456 |
-
|
|
|
|
|
2457 |
|
2458 |
-
|
2459 |
-
$request_params_values_arr[ $request_key ] = $exist_request_param_value;
|
2460 |
-
}
|
2461 |
}
|
2462 |
|
2463 |
-
return wpbc_sanitize_params_in_arr( $request_params_values_arr, $request_params_rules );
|
2464 |
-
}
|
2465 |
-
|
2466 |
-
/**
|
2467 |
-
* Get indexed or direct request from REQUEST
|
2468 |
-
*
|
2469 |
-
* @param $request_key
|
2470 |
-
* @param false $prefix_in_request
|
2471 |
-
*
|
2472 |
-
* @return false|mixed
|
2473 |
-
*/
|
2474 |
-
function wpbc_get_direct_value_in_request( $request_key, $prefix_in_request = false ) {
|
2475 |
|
2476 |
-
|
2477 |
-
* Get value from 'direct request' - "$_REQUEST['page_num'] => 3"
|
2478 |
-
* or
|
2479 |
-
* from 'prefix request' - "$_REQUEST['request_params']['page_num'] => 3"
|
2480 |
-
*/
|
2481 |
-
|
2482 |
-
if (
|
2483 |
-
( empty( $prefix_in_request ) )
|
2484 |
-
&& ( isset( $_REQUEST[ $request_key ] ) )
|
2485 |
-
) {
|
2486 |
-
return $_REQUEST[ $request_key ];
|
2487 |
-
}
|
2488 |
-
|
2489 |
-
if (
|
2490 |
-
( ! empty( $prefix_in_request ) )
|
2491 |
-
&& ( isset( $_REQUEST[ $prefix_in_request ] ) )
|
2492 |
-
&& ( isset( $_REQUEST[ $prefix_in_request ][ $request_key ] ) )
|
2493 |
-
) {
|
2494 |
-
return $_REQUEST[ $prefix_in_request ][ $request_key ];
|
2495 |
-
}
|
2496 |
-
|
2497 |
-
return false;
|
2498 |
-
}
|
2499 |
|
|
|
2500 |
|
2501 |
-
|
2502 |
-
|
2503 |
-
|
2504 |
-
|
2505 |
-
|
2506 |
-
*
|
2507 |
-
* @param array $request_params_values_arr = / think like in $_REQUEST parameter /
|
2508 |
-
* array(
|
2509 |
-
* 'page_num' => 1,
|
2510 |
-
* 'page_items_count' => 10,
|
2511 |
-
* 'sort' => 'rule_id',
|
2512 |
-
* 'sort_type' => 'DESC',
|
2513 |
-
* 'status' => '',
|
2514 |
-
* 'keyword' => '',
|
2515 |
-
* 'create_date' => ''
|
2516 |
-
* )
|
2517 |
-
* @param array $params_rules = array(
|
2518 |
-
* 'page_num' => array( 'validate' => 'd', 'default' => 1 )
|
2519 |
-
* , 'page_items_count' => array( 'validate' => 'd', 'default' => 10 )
|
2520 |
-
* , 'sort' => array( 'validate' => array( 'rule_id' ), 'default' => 'rule_id' )
|
2521 |
-
* , 'sort_type' => array( 'validate' => array( 'ASC', 'DESC'),'default' => 'DESC' )
|
2522 |
-
* , 'status' => array( 'validate' => 's', 'default' => '' )
|
2523 |
-
* , 'keyword' => array( 'validate' => 's', 'default' => '' )
|
2524 |
-
* , 'create_date' => array( 'validate' => 'date', 'default' => '' )
|
2525 |
-
* )
|
2526 |
-
*
|
2527 |
-
*
|
2528 |
-
* 'd'; // '1' | ''
|
2529 |
-
* 's'; // string !!! Clean 'LIKE' string for DB !!!
|
2530 |
-
* 'digit_or_csd'; // '0' | '1,2,3' | ''
|
2531 |
-
* 'digit_or_date'; // number | date 2016-07-20
|
2532 |
-
*
|
2533 |
-
* 'checked_skip_it' // Skip checking
|
2534 |
-
* array( '0', 'trash', 'any'); // Elements only listed in array
|
2535 |
-
*
|
2536 |
-
*@return array $clean_params = Array (
|
2537 |
-
* [page_num] => 3
|
2538 |
-
* [page_items_count] => 20
|
2539 |
-
* [sort] => booking_id
|
2540 |
-
* [sort_type] => DESC
|
2541 |
-
* [keyword] =>
|
2542 |
-
* [source] =>
|
2543 |
-
* [create_date] =>
|
2544 |
-
* )
|
2545 |
-
*/
|
2546 |
-
function wpbc_sanitize_params_in_arr( $request_params_values_arr, $params_rules ){
|
2547 |
-
|
2548 |
-
$clean_params = array();
|
2549 |
-
|
2550 |
-
foreach ( $params_rules as $request_key_name => $clean_type ) {
|
2551 |
-
|
2552 |
-
if ( isset( $request_params_values_arr[ $request_key_name ] ) ) {
|
2553 |
-
$request_value_check = $request_params_values_arr[ $request_key_name ];
|
2554 |
-
} else {
|
2555 |
-
$request_value_check = false;
|
2556 |
-
}
|
2557 |
-
|
2558 |
-
// If not defined in VALUES (think like in $_REQUEST parameter), then get default value
|
2559 |
-
if ( false === $request_value_check ) {
|
2560 |
-
|
2561 |
-
// D E F A U L T
|
2562 |
-
$clean_params[ $request_key_name ] = $params_rules[ $request_key_name ]['default'];
|
2563 |
-
|
2564 |
-
} else {
|
2565 |
-
|
2566 |
-
// C L E A N I N G
|
2567 |
-
$clean_type = $params_rules[ $request_key_name ]['validate'];
|
2568 |
-
|
2569 |
-
// Check only values from this Array
|
2570 |
-
if ( is_array( $clean_type ) ) {
|
2571 |
-
|
2572 |
-
$clean_type = array_map( 'strtolower', $clean_type );
|
2573 |
-
|
2574 |
-
if ( ( isset( $request_value_check ) ) && ( ! in_array( strtolower( $request_value_check ), $clean_type ) ) ) {
|
2575 |
-
$clean_type = 'checked_skip_it';
|
2576 |
-
$request_value_check = $params_rules[ $request_key_name ]['default']; // Reset it, if value not in array And get default value
|
2577 |
-
} else {
|
2578 |
-
$clean_type = 'checked_skip_it';
|
2579 |
-
}
|
2580 |
-
}
|
2581 |
-
|
2582 |
-
switch ( $clean_type ) {
|
2583 |
-
|
2584 |
-
case 'checked_skip_it':
|
2585 |
-
$clean_params[ $request_key_name ] = $request_value_check;
|
2586 |
-
break;
|
2587 |
-
|
2588 |
-
case 'date': // Date
|
2589 |
-
$clean_params[ $request_key_name ] = wpbc_sanitize_date( $request_value_check );
|
2590 |
-
break;
|
2591 |
-
|
2592 |
-
case 'digit_or_date': // digit or Date
|
2593 |
-
$clean_params[ $request_key_name ] = wpbc_sanitize_digit_or_date( $request_value_check );
|
2594 |
-
break;
|
2595 |
-
|
2596 |
-
case 'digit_or_csd': // digit or comma separated digit
|
2597 |
-
$clean_params[ $request_key_name ] = wpbc_sanitize_digit_or_csd( $request_value_check );
|
2598 |
-
break;
|
2599 |
-
|
2600 |
-
case 's': // string
|
2601 |
-
$clean_params[ $request_key_name ] = wpbc_sanitize_text( $request_value_check );
|
2602 |
-
break;
|
2603 |
-
|
2604 |
-
case 'array':
|
2605 |
-
if ( is_array( $request_value_check ) ) {
|
2606 |
-
foreach ( $request_value_check as $check_arr_index => $check_arr_value ) {
|
2607 |
-
$request_value_check[ $check_arr_index ] = wpbc_sanitize_text( $check_arr_value ); // Check each option as string
|
2608 |
-
}
|
2609 |
-
$clean_params[ $request_key_name ] = $request_value_check;
|
2610 |
-
|
2611 |
-
} else {
|
2612 |
-
$clean_params[ $request_key_name ] = $params_rules[ $request_key_name ]['default'];
|
2613 |
-
}
|
2614 |
-
break;
|
2615 |
-
|
2616 |
-
case 'digit_or_empty': // digit or ''
|
2617 |
-
if ( '' === $request_value_check) {
|
2618 |
-
$clean_params[ $request_key_name ] = '';
|
2619 |
-
} else {
|
2620 |
-
$clean_params[ $request_key_name ] = intval( $request_value_check );
|
2621 |
-
}
|
2622 |
-
break;
|
2623 |
-
|
2624 |
-
case 'float_or_empty': // digit or ''
|
2625 |
-
if ( '' === $request_value_check) {
|
2626 |
-
$clean_params[ $request_key_name ] = '';
|
2627 |
-
} else {
|
2628 |
-
|
2629 |
-
// In case if was entered 10,99 instead of 10.99
|
2630 |
-
$request_value_check = str_replace( ',', '.', $request_value_check );
|
2631 |
-
|
2632 |
-
$clean_params[ $request_key_name ] = floatval( $request_value_check );
|
2633 |
-
}
|
2634 |
-
break;
|
2635 |
-
|
2636 |
-
case 'f': // float
|
2637 |
-
$clean_params[ $request_key_name ] = floatval( $request_value_check );
|
2638 |
-
break;
|
2639 |
-
|
2640 |
-
case 'd': // digit
|
2641 |
-
$clean_params[ $request_key_name ] = intval( $request_value_check );
|
2642 |
-
break;
|
2643 |
-
|
2644 |
-
default:
|
2645 |
-
$clean_params[ $request_key_name ] = intval( $request_value_check );
|
2646 |
-
break;
|
2647 |
-
}
|
2648 |
-
}
|
2649 |
}
|
2650 |
-
return $clean_params;
|
2651 |
-
}
|
2652 |
-
|
2653 |
|
2654 |
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2655 |
-
// Sanitize functions
|
2656 |
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2657 |
|
2658 |
/**
|
2659 |
-
*
|
2660 |
*
|
2661 |
-
* @param string
|
2662 |
*
|
2663 |
-
* @return string
|
|
|
|
|
2664 |
*
|
2665 |
-
*
|
2666 |
-
* wpbc_esc_clean_digit_or_csd( '12,a,45,9' ) => '12,0,45,9'
|
2667 |
-
* or
|
2668 |
-
* wpbc_esc_clean_digit_or_csd( '10a' ) => '10
|
2669 |
-
* or
|
2670 |
-
* wpbc_esc_clean_digit_or_csd( array( '12,a,45,9', '10a' ) ) => array ( '12,0,45,9', '10' )
|
2671 |
-
*@global type $wpdb
|
2672 |
*/
|
2673 |
-
function
|
2674 |
-
|
2675 |
-
if ( $value === '' ) {
|
2676 |
-
return $value;
|
2677 |
-
}
|
2678 |
-
|
2679 |
-
if ( is_array( $value ) ) {
|
2680 |
-
foreach ( $value as $key => $check_value ) {
|
2681 |
-
$value[ $key ] = wpbc_sanitize_digit_or_csd( $check_value );
|
2682 |
-
}
|
2683 |
|
2684 |
-
|
2685 |
-
}
|
2686 |
|
2687 |
-
|
2688 |
-
$array_of_nums = explode( ',', $value );
|
2689 |
|
|
|
2690 |
|
2691 |
-
$
|
2692 |
-
|
2693 |
-
|
2694 |
-
}
|
2695 |
-
$result = implode( ',', $result );
|
2696 |
|
2697 |
-
return $
|
2698 |
-
}
|
2699 |
|
2700 |
|
2701 |
-
|
2702 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2703 |
*
|
2704 |
-
*
|
2705 |
*
|
2706 |
-
*
|
2707 |
*/
|
2708 |
-
function wpbc_sanitize_digit_or_date( $value ) { //FixIn:6.2.1.4
|
2709 |
-
|
2710 |
-
if ( $value === '' ) return $value;
|
2711 |
-
|
2712 |
-
if ( preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $value ) ) {
|
2713 |
-
|
2714 |
-
return $value; // Date is valid in format: 2016-07-20
|
2715 |
-
} else {
|
2716 |
-
return intval( $value );
|
2717 |
-
}
|
2718 |
|
2719 |
}
|
2720 |
|
2721 |
|
2722 |
/**
|
2723 |
-
*
|
|
|
|
|
|
|
2724 |
*
|
2725 |
-
* @
|
|
|
|
|
2726 |
*
|
2727 |
-
*
|
|
|
|
|
2728 |
*/
|
2729 |
-
function
|
2730 |
|
2731 |
-
|
2732 |
|
2733 |
-
|
2734 |
|
2735 |
-
|
2736 |
-
} else {
|
2737 |
-
return '';
|
2738 |
-
}
|
2739 |
|
2740 |
-
|
2741 |
|
|
|
2742 |
|
2743 |
-
|
2744 |
-
|
2745 |
-
|
2746 |
-
*
|
|
|
2747 |
*
|
2748 |
-
*
|
2749 |
*
|
2750 |
-
*
|
|
|
|
|
|
|
2751 |
*
|
2752 |
-
*
|
2753 |
-
* Note: Be careful to use this function correctly. It will only escape values to be used in strings in the query.
|
2754 |
-
* That is, it only provides escaping for values that will be within quotes in the SQL (as in field = '{$escaped_value}').
|
2755 |
-
* If your value is not going to be within quotes, your code will still be vulnerable to SQL injection.
|
2756 |
-
* For example, this is vulnerable, because the escaped value is not surrounded by quotes in the SQL query:
|
2757 |
-
* ORDER BY {$escaped_value}. As such, this function does not escape unquoted numeric values, field names, or SQL keywords.
|
2758 |
*
|
|
|
2759 |
*/
|
2760 |
-
|
2761 |
-
|
2762 |
-
$value_trimmed = trim( stripslashes( $value ) ); // \' becomes ' and so on
|
2763 |
-
|
2764 |
-
$esc_sql_value = sanitize_textarea_field( $value_trimmed ); // preserves new lines (\n) and other whitespace
|
2765 |
-
//$esc_sql_value = sanitize_text_field( $value_trimmed ); // remove new lines (\n) and other whitespace
|
2766 |
-
|
2767 |
-
|
2768 |
-
//global $wpdb;
|
2769 |
-
//$value = trim( $wpdb->prepare( "'%s'", $esc_sql_value ) , "'" );
|
2770 |
-
//$esc_sql_value = trim( stripslashes( $esc_sql_value ) );
|
2771 |
|
2772 |
-
return $esc_sql_value;
|
2773 |
|
2774 |
-
}
|
2775 |
// </editor-fold>
|
2776 |
|
2777 |
|
2220 |
|
2221 |
|
2222 |
// <editor-fold defaultstate="collapsed" desc=" F u n c t i o n s f o r C l e a n i ng s " >
|
|
|
|
|
|
|
2223 |
|
2224 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2225 |
+
// Escaping
|
2226 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
2227 |
|
2228 |
/**
|
2229 |
* Escaping for inline JavaScript.
|
2258 |
}
|
2259 |
|
2260 |
|
2261 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2262 |
+
// DB
|
2263 |
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2264 |
|
2265 |
+
/**
|
2266 |
+
* Check $value for injections. Basically can be used in Requests params checking.
|
2267 |
+
*
|
2268 |
+
* @param type $value
|
2269 |
+
*
|
2270 |
+
* @return type
|
2271 |
+
*/
|
2272 |
+
function wpbc_esc_clean_parameter( $value ) {
|
2273 |
|
2274 |
+
$value = preg_replace( '/<[^>]*>/', '', $value ); // clean any tags
|
2275 |
+
$value = str_replace( '<', ' ', $value );
|
2276 |
+
$value = str_replace( '>', ' ', $value );
|
2277 |
+
$value = strip_tags( $value ); // Strip HTML and PHP tags from a string
|
|
|
2278 |
|
2279 |
+
// Clean SQL injection
|
2280 |
+
$value = esc_sql( $value );
|
2281 |
+
$value = esc_textarea( $value ); //FixIn: 7.1.1.2
|
2282 |
|
2283 |
+
return $value;
|
|
|
|
|
2284 |
}
|
2285 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2286 |
|
2287 |
+
function wpbc_esc_sql_like( $value_trimmed ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2288 |
|
2289 |
+
// check here https://code.tutsplus.com/articles/data-sanitization-and-validation-with-wordpress--wp-25536
|
2290 |
|
2291 |
+
global $wpdb;
|
2292 |
+
if ( method_exists( $wpdb ,'esc_like' ) )
|
2293 |
+
return $wpdb->esc_like( $value_trimmed ); // Its require minimum WP 4.0.0
|
2294 |
+
else
|
2295 |
+
return addcslashes( $value_trimmed, '_%\\' ); // Direct implementation from $wpdb->esc_like(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2296 |
}
|
|
|
|
|
|
|
2297 |
|
|
|
|
|
|
|
2298 |
|
2299 |
/**
|
2300 |
+
* Clean user string for using in SQL LIKE statement - append to LIKE sql
|
2301 |
*
|
2302 |
+
* @param string $value - to clean
|
2303 |
*
|
2304 |
+
* @return string - escaped
|
2305 |
+
* Exmaple:
|
2306 |
+
* $search_escaped_like_title = wpbc_esc_clean_like_string_for_append_in_sql_for_db( $input_var );
|
2307 |
*
|
2308 |
+
* $where_sql = " WHERE title LIKE ". $search_escaped_like_title ." ";
|
|
|
|
|
|
|
|
|
|
|
|
|
2309 |
*/
|
2310 |
+
function wpbc_esc_clean_like_string_for_append_in_sql_for_db( $value ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2311 |
|
2312 |
+
// check here https://code.tutsplus.com/articles/data-sanitization-and-validation-with-wordpress--wp-25536
|
|
|
2313 |
|
2314 |
+
global $wpdb;
|
|
|
2315 |
|
2316 |
+
$value_trimmed = trim( stripslashes( $value ) );
|
2317 |
|
2318 |
+
$wild = '%';
|
2319 |
+
$like = $wild . wpbc_esc_sql_like( $value_trimmed ) . $wild;
|
2320 |
+
$sql = $wpdb->prepare( "'%s'", $like );
|
|
|
|
|
2321 |
|
2322 |
+
return $sql;
|
|
|
2323 |
|
2324 |
|
2325 |
+
/* Help:
|
2326 |
+
* First half of escaping for LIKE special characters % and _ before preparing for MySQL.
|
2327 |
+
* Use this only before wpdb::prepare() or esc_sql(). Reversing the order is very bad for security.
|
2328 |
+
*
|
2329 |
+
* Example Prepared Statement:
|
2330 |
+
*
|
2331 |
+
* $wild = '%';
|
2332 |
+
* $find = 'only 43% of planets';
|
2333 |
+
* $like = $wild . wpbc_esc_sql_like( $find ) . $wild;
|
2334 |
+
* $sql = $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_content LIKE '%s'", $like );
|
2335 |
*
|
2336 |
+
* Example Escape Chain:
|
2337 |
*
|
2338 |
+
* $sql = esc_sql( wpbc_esc_sql_like( $input ) );
|
2339 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2340 |
|
2341 |
}
|
2342 |
|
2343 |
|
2344 |
/**
|
2345 |
+
* Clean string for using in SQL LIKE requests inside single quotes: WHERE title LIKE '%". $escaped_search_title ."%'
|
2346 |
+
* Replaced _ to \_ % to \% \ to \\
|
2347 |
+
*
|
2348 |
+
* @param string $value - to clean
|
2349 |
*
|
2350 |
+
* @return string - escaped
|
2351 |
+
* Exmaple:
|
2352 |
+
* $search_escaped_like_title = wpbc_esc_clean_like_string_for_db( $input_var );
|
2353 |
*
|
2354 |
+
* $where_sql = " WHERE title LIKE '%". $search_escaped_like_title ."%' ";
|
2355 |
+
*
|
2356 |
+
* Important! Use SINGLE quotes after in SQL query: LIKE '%".$data."%'
|
2357 |
*/
|
2358 |
+
function wpbc_esc_clean_like_string_for_db( $value ){
|
2359 |
|
2360 |
+
// check here https://code.tutsplus.com/articles/data-sanitization-and-validation-with-wordpress--wp-25536
|
2361 |
|
2362 |
+
global $wpdb;
|
2363 |
|
2364 |
+
$value_trimmed = trim( stripslashes( $value ) );
|
|
|
|
|
|
|
2365 |
|
2366 |
+
$value_trimmed = wpbc_esc_sql_like( $value_trimmed );
|
2367 |
|
2368 |
+
$value = trim( $wpdb->prepare( "'%s'", $value_trimmed ) , "'" );
|
2369 |
|
2370 |
+
return $value;
|
2371 |
+
|
2372 |
+
/* Help:
|
2373 |
+
* First half of escaping for LIKE special characters % and _ before preparing for MySQL.
|
2374 |
+
* Use this only before wpdb::prepare() or esc_sql(). Reversing the order is very bad for security.
|
2375 |
*
|
2376 |
+
* Example Prepared Statement:
|
2377 |
*
|
2378 |
+
* $wild = '%';
|
2379 |
+
* $find = 'only 43% of planets';
|
2380 |
+
* $like = $wild . wpbc_esc_sql_like( $find ) . $wild;
|
2381 |
+
* $sql = $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_content LIKE '%s'", $like );
|
2382 |
*
|
2383 |
+
* Example Escape Chain:
|
|
|
|
|
|
|
|
|
|
|
2384 |
*
|
2385 |
+
* $sql = esc_sql( wpbc_esc_sql_like( $input ) );
|
2386 |
*/
|
2387 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2388 |
|
|
|
2389 |
|
|
|
2390 |
// </editor-fold>
|
2391 |
|
2392 |
|
js/client.js
CHANGED
@@ -697,8 +697,8 @@ function mybooking_submit( submit_form , bk_type, wpdev_active_locale){
|
|
697 |
if (element.checked) {
|
698 |
inp_value = element.value;
|
699 |
} else {
|
700 |
-
//
|
701 |
-
// We need to check it here, because radio have the several
|
702 |
if ( //FixIn: 7.0.1.62
|
703 |
( element.className.indexOf('wpdev-validates-as-required') !== -1 )
|
704 |
&& ( jQuery( element ).is( ':visible' ) ) //FixIn: 7.2.1.12.2 // Its prevent of saving hints, and some other hidden element
|
@@ -1083,9 +1083,20 @@ function showErrorMessage( element , errorMessage , isScrollStop ) { //FixIn:
|
|
1083 |
.after( '<span class="wpdev-help-message alert alert-warning">' + errorMessage + '</span>' ); // Show message
|
1084 |
}
|
1085 |
}
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1089 |
if ( element.type == 'checkbox' )
|
1090 |
jQuery(".wpdev-help-message").css( { 'vertical-align': 'middle'} );
|
1091 |
|
@@ -1099,8 +1110,7 @@ function showErrorMessage( element , errorMessage , isScrollStop ) { //FixIn:
|
|
1099 |
makeScroll( jQuery(".wpdev-help-message") );
|
1100 |
}
|
1101 |
jQuery( element ).trigger( 'focus' ); //FixIn: 8.7.11.12
|
1102 |
-
return;
|
1103 |
-
|
1104 |
}
|
1105 |
|
1106 |
/**
|
@@ -1335,6 +1345,8 @@ function wpbc_check_errors_in_booking_form( bk_type ) {
|
|
1335 |
|
1336 |
if ( my_form.length ) {
|
1337 |
|
|
|
|
|
1338 |
// Pseudo-selector that get form elements <input , <textarea , <select, <button...
|
1339 |
my_form.find( ':input' ).each( function( index, el ) {
|
1340 |
|
@@ -1372,6 +1384,7 @@ function wpbc_check_errors_in_booking_form( bk_type ) {
|
|
1372 |
&& ( ! jQuery( ':checkbox[name="' + el.name + '"]', my_form ).is( ":checked" ) ) //FixIn: 8.5.2.12
|
1373 |
){
|
1374 |
showErrorMessage( el, message_verif_requred_for_check_box, is_error_in_field );
|
|
|
1375 |
is_error_in_field = true; // Error
|
1376 |
}
|
1377 |
|
@@ -1380,6 +1393,7 @@ function wpbc_check_errors_in_booking_form( bk_type ) {
|
|
1380 |
|
1381 |
if ( !jQuery( ':radio[name="' + jQuery( el ).attr( 'name' ) + '"]', my_form ).is( ':checked' ) ){
|
1382 |
showErrorMessage( el, message_verif_requred_for_radio_box, is_error_in_field );
|
|
|
1383 |
is_error_in_field = true; // Error
|
1384 |
}
|
1385 |
|
@@ -1390,6 +1404,7 @@ function wpbc_check_errors_in_booking_form( bk_type ) {
|
|
1390 |
|
1391 |
if ( '' === wpbc_trim( inp_value ) ){ //FixIn: 8.8.1.3 //FixIn: 8.7.11.12
|
1392 |
showErrorMessage( el, message_verif_requred, is_error_in_field );
|
|
|
1393 |
is_error_in_field = true; // Error
|
1394 |
}
|
1395 |
}
|
@@ -1402,6 +1417,7 @@ function wpbc_check_errors_in_booking_form( bk_type ) {
|
|
1402 |
var reg = /^([A-Za-z0-9_\-\.\+])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,})$/;
|
1403 |
if ( (inp_value != '') && (reg.test( inp_value ) == false) ){
|
1404 |
showErrorMessage( el, message_verif_emeil, is_error_in_field );
|
|
|
1405 |
is_error_in_field = true; // Error
|
1406 |
}
|
1407 |
}
|
@@ -1430,6 +1446,7 @@ function wpbc_check_errors_in_booking_form( bk_type ) {
|
|
1430 |
|
1431 |
if ( ( inp_value != '' ) && ( regex.test( inp_value ) == false ) ){
|
1432 |
showErrorMessage( el, message_verif_phone, is_error_in_field );
|
|
|
1433 |
is_error_in_field = true; // Error
|
1434 |
}
|
1435 |
}
|
@@ -1445,6 +1462,7 @@ function wpbc_check_errors_in_booking_form( bk_type ) {
|
|
1445 |
|
1446 |
if ( ( inp_value != '' ) && ( regex.test( inp_value ) == false ) ){
|
1447 |
showErrorMessage( el, message_verif_phone, is_error_in_field );
|
|
|
1448 |
is_error_in_field = true; // Error
|
1449 |
}
|
1450 |
}
|
@@ -1469,6 +1487,7 @@ function wpbc_check_errors_in_booking_form( bk_type ) {
|
|
1469 |
|
1470 |
if ( ( inp_value != '' ) && ( regex.test( inp_value ) == false ) ){
|
1471 |
showErrorMessage( el, message_verif_phone, is_error_in_field );
|
|
|
1472 |
is_error_in_field = true; // Error
|
1473 |
}
|
1474 |
}
|
@@ -1482,7 +1501,11 @@ function wpbc_check_errors_in_booking_form( bk_type ) {
|
|
1482 |
}
|
1483 |
} );
|
1484 |
|
|
|
|
|
|
|
1485 |
}
|
|
|
1486 |
return is_error_in_field;
|
1487 |
}
|
1488 |
|
697 |
if (element.checked) {
|
698 |
inp_value = element.value;
|
699 |
} else {
|
700 |
+
// Check if this radio required, and if it does not check, then show warning, otherwise if it is not required or some other option checked skip this loop
|
701 |
+
// We need to check it here, because radio have the several options with same name and type, and otherwise we will save several options with selected and empty values.
|
702 |
if ( //FixIn: 7.0.1.62
|
703 |
( element.className.indexOf('wpdev-validates-as-required') !== -1 )
|
704 |
&& ( jQuery( element ).is( ':visible' ) ) //FixIn: 7.2.1.12.2 // Its prevent of saving hints, and some other hidden element
|
1083 |
.after( '<span class="wpdev-help-message alert alert-warning">' + errorMessage + '</span>' ); // Show message
|
1084 |
}
|
1085 |
}
|
1086 |
+
|
1087 |
+
jQuery( '.wpdev-help-message' ).css( {
|
1088 |
+
'padding' : '5px 5px 4px',
|
1089 |
+
'margin' : '2px 2px 2px 10px',
|
1090 |
+
'vertical-align': 'top',
|
1091 |
+
'line-height' : '32px'
|
1092 |
+
} );
|
1093 |
+
// Calendar error message: //FixIn: 9.3.1.9
|
1094 |
+
jQuery( '.wpdev-element-message' ).css( {
|
1095 |
+
'margin' : '10px 5px 10px 0px',
|
1096 |
+
'line-height' : '32px'
|
1097 |
+
} );
|
1098 |
+
|
1099 |
+
|
1100 |
if ( element.type == 'checkbox' )
|
1101 |
jQuery(".wpdev-help-message").css( { 'vertical-align': 'middle'} );
|
1102 |
|
1110 |
makeScroll( jQuery(".wpdev-help-message") );
|
1111 |
}
|
1112 |
jQuery( element ).trigger( 'focus' ); //FixIn: 8.7.11.12
|
1113 |
+
return element; //FixIn: 9.3.1.9
|
|
|
1114 |
}
|
1115 |
|
1116 |
/**
|
1345 |
|
1346 |
if ( my_form.length ) {
|
1347 |
|
1348 |
+
var fields_with_errors_arr = [];
|
1349 |
+
|
1350 |
// Pseudo-selector that get form elements <input , <textarea , <select, <button...
|
1351 |
my_form.find( ':input' ).each( function( index, el ) {
|
1352 |
|
1384 |
&& ( ! jQuery( ':checkbox[name="' + el.name + '"]', my_form ).is( ":checked" ) ) //FixIn: 8.5.2.12
|
1385 |
){
|
1386 |
showErrorMessage( el, message_verif_requred_for_check_box, is_error_in_field );
|
1387 |
+
fields_with_errors_arr.push( el );
|
1388 |
is_error_in_field = true; // Error
|
1389 |
}
|
1390 |
|
1393 |
|
1394 |
if ( !jQuery( ':radio[name="' + jQuery( el ).attr( 'name' ) + '"]', my_form ).is( ':checked' ) ){
|
1395 |
showErrorMessage( el, message_verif_requred_for_radio_box, is_error_in_field );
|
1396 |
+
fields_with_errors_arr.push( el );
|
1397 |
is_error_in_field = true; // Error
|
1398 |
}
|
1399 |
|
1404 |
|
1405 |
if ( '' === wpbc_trim( inp_value ) ){ //FixIn: 8.8.1.3 //FixIn: 8.7.11.12
|
1406 |
showErrorMessage( el, message_verif_requred, is_error_in_field );
|
1407 |
+
fields_with_errors_arr.push( el );
|
1408 |
is_error_in_field = true; // Error
|
1409 |
}
|
1410 |
}
|
1417 |
var reg = /^([A-Za-z0-9_\-\.\+])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,})$/;
|
1418 |
if ( (inp_value != '') && (reg.test( inp_value ) == false) ){
|
1419 |
showErrorMessage( el, message_verif_emeil, is_error_in_field );
|
1420 |
+
fields_with_errors_arr.push( el );
|
1421 |
is_error_in_field = true; // Error
|
1422 |
}
|
1423 |
}
|
1446 |
|
1447 |
if ( ( inp_value != '' ) && ( regex.test( inp_value ) == false ) ){
|
1448 |
showErrorMessage( el, message_verif_phone, is_error_in_field );
|
1449 |
+
fields_with_errors_arr.push( el );
|
1450 |
is_error_in_field = true; // Error
|
1451 |
}
|
1452 |
}
|
1462 |
|
1463 |
if ( ( inp_value != '' ) && ( regex.test( inp_value ) == false ) ){
|
1464 |
showErrorMessage( el, message_verif_phone, is_error_in_field );
|
1465 |
+
fields_with_errors_arr.push( el );
|
1466 |
is_error_in_field = true; // Error
|
1467 |
}
|
1468 |
}
|
1487 |
|
1488 |
if ( ( inp_value != '' ) && ( regex.test( inp_value ) == false ) ){
|
1489 |
showErrorMessage( el, message_verif_phone, is_error_in_field );
|
1490 |
+
fields_with_errors_arr.push( el );
|
1491 |
is_error_in_field = true; // Error
|
1492 |
}
|
1493 |
}
|
1501 |
}
|
1502 |
} );
|
1503 |
|
1504 |
+
if ( fields_with_errors_arr.length > 0 ){
|
1505 |
+
jQuery( fields_with_errors_arr[ 0 ] ).trigger( 'focus' ); //FixIn: 9.3.1.9
|
1506 |
+
}
|
1507 |
}
|
1508 |
+
|
1509 |
return is_error_in_field;
|
1510 |
}
|
1511 |
|
js/wpbc_times.js
CHANGED
@@ -871,7 +871,6 @@ function wpbc_is_time_field_in_booking_form( resource_id, form_elements ){
|
|
871 |
// Disable Booked Time Slots in selectbox
|
872 |
function bkDisableBookedTimeSlots( all_dates, bk_type ){
|
873 |
var i, h,m,s,j;
|
874 |
-
var inst = jQuery.datepick._getInst( document.getElementById( 'calendar_booking' + bk_type ) );
|
875 |
var td_class;
|
876 |
|
877 |
var time_slot_field_name = 'select[name="rangetime' + bk_type + '"]';
|
@@ -886,10 +885,11 @@ function wpbc_is_time_field_in_booking_form( resource_id, form_elements ){
|
|
886 |
|
887 |
// HERE WE WILL DISABLE ALL OPTIONS IN RANGE TIME INTERVALS FOR SINGLE DAYS SELECTIONS FOR THAT DAYS WHERE HOURS ALREADY BOOKED
|
888 |
//here is not range selections
|
889 |
-
|
890 |
|
891 |
//FixIn: 8.9.3.4
|
892 |
-
if ( (
|
|
|
893 |
|| ( (bk_days_selection_mode == 'multiple') && (wpbcg.time_disable_modes.indexOf( 'multiple' ) >= 0) )
|
894 |
|| ( (bk_days_selection_mode == 'dynamic') && (wpbcg.time_disable_modes.indexOf( 'dynamic' ) >= 0) )
|
895 |
|| ( (bk_days_selection_mode == 'fixed') && (wpbcg.time_disable_modes.indexOf( 'fixed' ) >= 0) )
|
@@ -897,7 +897,7 @@ function wpbc_is_time_field_in_booking_form( resource_id, form_elements ){
|
|
897 |
|
898 |
// if ( ( bk_days_selection_mode == 'single') ){ // Only single day selections here //FixIn: 8.7.11.6
|
899 |
// if ( ( bk_days_selection_mode == 'single' ) || ( bk_days_selection_mode == 'multiple' ) ) {
|
900 |
-
var current_single_day_selections =
|
901 |
td_class = (current_single_day_selections[ 1 ] * 1) + '-' + (current_single_day_selections[ 0 ] * 1) + '-' + (current_single_day_selections[ 2 ] * 1);
|
902 |
var times_array = [];
|
903 |
|
@@ -1024,7 +1024,7 @@ function wpbc_is_time_field_in_booking_form( resource_id, form_elements ){
|
|
1024 |
}
|
1025 |
|
1026 |
//FixIn: 8.7.11.9
|
1027 |
-
jQuery( ".booking_form_div" ).trigger( 'wpbc_hook_timeslots_disabled', [bk_type,
|
1028 |
|
1029 |
}
|
1030 |
|
871 |
// Disable Booked Time Slots in selectbox
|
872 |
function bkDisableBookedTimeSlots( all_dates, bk_type ){
|
873 |
var i, h,m,s,j;
|
|
|
874 |
var td_class;
|
875 |
|
876 |
var time_slot_field_name = 'select[name="rangetime' + bk_type + '"]';
|
885 |
|
886 |
// HERE WE WILL DISABLE ALL OPTIONS IN RANGE TIME INTERVALS FOR SINGLE DAYS SELECTIONS FOR THAT DAYS WHERE HOURS ALREADY BOOKED
|
887 |
//here is not range selections
|
888 |
+
var check_in_date = get_first_day_of_selection( all_dates );
|
889 |
|
890 |
//FixIn: 8.9.3.4
|
891 |
+
if ( ( check_in_date === all_dates ) /* Is selected only one date ? //FixIn: 9.3.1.1 */
|
892 |
+
|| ( (bk_days_selection_mode == 'single') /*&& (wpbcg.time_disable_modes.indexOf( 'single' ) >= 0)*/ )
|
893 |
|| ( (bk_days_selection_mode == 'multiple') && (wpbcg.time_disable_modes.indexOf( 'multiple' ) >= 0) )
|
894 |
|| ( (bk_days_selection_mode == 'dynamic') && (wpbcg.time_disable_modes.indexOf( 'dynamic' ) >= 0) )
|
895 |
|| ( (bk_days_selection_mode == 'fixed') && (wpbcg.time_disable_modes.indexOf( 'fixed' ) >= 0) )
|
897 |
|
898 |
// if ( ( bk_days_selection_mode == 'single') ){ // Only single day selections here //FixIn: 8.7.11.6
|
899 |
// if ( ( bk_days_selection_mode == 'single' ) || ( bk_days_selection_mode == 'multiple' ) ) {
|
900 |
+
var current_single_day_selections = check_in_date.split( '.' );
|
901 |
td_class = (current_single_day_selections[ 1 ] * 1) + '-' + (current_single_day_selections[ 0 ] * 1) + '-' + (current_single_day_selections[ 2 ] * 1);
|
902 |
var times_array = [];
|
903 |
|
1024 |
}
|
1025 |
|
1026 |
//FixIn: 8.7.11.9
|
1027 |
+
jQuery( ".booking_form_div" ).trigger( 'wpbc_hook_timeslots_disabled', [bk_type, check_in_date] ); // Trigger hook on disabling timeslots. Usage: jQuery( ".booking_form_div" ).on( 'wpbc_hook_timeslots_disabled', function ( event, bk_type, all_dates ){ ... } );
|
1028 |
|
1029 |
}
|
1030 |
|
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.6
|
7 |
Tested up to: 6.1
|
8 |
-
Stable tag: 9.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -169,38 +169,38 @@ Please see [FAQ](https://wpbookingcalendar.com/faq/).
|
|
169 |
= Support Languages (local) =
|
170 |
|
171 |
- English
|
172 |
-
- Greek
|
173 |
-
- German
|
174 |
-
- French (France)
|
175 |
-
- Romanian
|
176 |
-
- Arabic
|
177 |
-
- Finnish
|
178 |
-
- Portuguese (Brazil)
|
179 |
-
- Spanish (Mexico)
|
180 |
-
- Dutch
|
181 |
-
- Swedish
|
182 |
-
- Spanish (Spain)
|
183 |
-
- Norwegian (Bokmål)
|
184 |
-
- Polish
|
185 |
-
- Slovenian
|
186 |
-
- Hungarian
|
187 |
-
- Italian
|
188 |
-
- Danish
|
189 |
-
- Bulgarian
|
190 |
-
- Turkish
|
191 |
-
- Chinese (Taiwan)
|
192 |
-
- Russian
|
193 |
-
- Portuguese (Portugal)
|
194 |
-
- Galician
|
195 |
-
- Thai
|
196 |
-
- Hebrew
|
197 |
-
- Ukrainian
|
198 |
-
- Chinese (China)
|
199 |
-
- Croatian
|
200 |
-
- Slovak
|
201 |
-
- Czech
|
202 |
-
- Catalan
|
203 |
-
- Belarusian 8.
|
204 |
|
205 |
Please recheck the status of each translation, before using plugin.
|
206 |
We open for your help in new translations or correcting existing ones. You can translate to new language or update exist one, using this [tutorial of translation](https://wpbookingcalendar.com/faq/make-translation-of-wp-plugin/)
|
@@ -232,6 +232,21 @@ Please see [Video Guides](https://wpbookingcalendar.com/help/).
|
|
232 |
|
233 |
|
234 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
= 9.3 =
|
236 |
- Changes in **all** versions:
|
237 |
* **New**. **Edit bookings** in Booking Calendar Free version. Ability to update booking details or reselect booking dates for existing bookings. (9.2.3.4)
|
@@ -1072,5 +1087,9 @@ Please see [Video Guides](https://wpbookingcalendar.com/help/).
|
|
1072 |
For more information, see the [full release notes](https://wpbookingcalendar.com/changelog/).
|
1073 |
|
1074 |
== Upgrade Notice ==
|
|
|
|
|
1075 |
= 9.3 =
|
1076 |
-
Ability to Edit bookings in the Booking Calendar Free version. Simulate login of a regular user from a "super booking administrator" account in MultiUser version.
|
|
|
|
5 |
Requires at least: 4.0
|
6 |
Requires PHP: 5.6
|
7 |
Tested up to: 6.1
|
8 |
+
Stable tag: 9.4
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
169 |
= Support Languages (local) =
|
170 |
|
171 |
- English
|
172 |
+
- Greek 93.97% [ 1931 / 2055 ], fuzzy 86, not translated 38
|
173 |
+
- German 92.75% [ 1906 / 2055 ], fuzzy 96, not translated 53
|
174 |
+
- French (France) 92.75% [ 1906 / 2055 ], fuzzy 96, not translated 53
|
175 |
+
- Romanian 91% [ 1870 / 2055 ], fuzzy 116, not translated 69
|
176 |
+
- Arabic 90.66% [ 1863 / 2055 ], fuzzy 122, not translated 70
|
177 |
+
- Finnish 90.46% [ 1859 / 2055 ], fuzzy 126, not translated 70
|
178 |
+
- Portuguese (Brazil) 90.41% [ 1858 / 2055 ], fuzzy 128, not translated 69
|
179 |
+
- Spanish (Mexico) 90.36% [ 1857 / 2055 ], fuzzy 128, not translated 70
|
180 |
+
- Dutch 90.32% [ 1856 / 2055 ], fuzzy 132, not translated 67
|
181 |
+
- Swedish 89.83% [ 1846 / 2055 ], fuzzy 131, not translated 78
|
182 |
+
- Spanish (Spain) 89.44% [ 1838 / 2055 ], fuzzy 137, not translated 80
|
183 |
+
- Norwegian (Bokmål) 89.39% [ 1837 / 2055 ], fuzzy 139, not translated 79
|
184 |
+
- Polish 89.15% [ 1832 / 2055 ], fuzzy 140, not translated 83
|
185 |
+
- Slovenian 88.18% [ 1812 / 2055 ], fuzzy 151, not translated 92
|
186 |
+
- Hungarian 88.13% [ 1811 / 2055 ], fuzzy 151, not translated 93
|
187 |
+
- Italian 85.64% [ 1760 / 2055 ], fuzzy 182, not translated 113
|
188 |
+
- Danish 83.65% [ 1719 / 2055 ], fuzzy 210, not translated 126
|
189 |
+
- Bulgarian 83.6% [ 1718 / 2055 ], fuzzy 208, not translated 129
|
190 |
+
- Turkish 83.6% [ 1718 / 2055 ], fuzzy 208, not translated 129
|
191 |
+
- Chinese (Taiwan) 81.75% [ 1680 / 2055 ], fuzzy 268, not translated 107
|
192 |
+
- Russian 80.15% [ 1647 / 2055 ], fuzzy 255, not translated 153
|
193 |
+
- Portuguese (Portugal) 79.42% [ 1632 / 2055 ], fuzzy 268, not translated 155
|
194 |
+
- Galician 79.32% [ 1630 / 2055 ], fuzzy 273, not translated 152
|
195 |
+
- Thai 79.27% [ 1629 / 2055 ], fuzzy 267, not translated 159
|
196 |
+
- Hebrew 76.79% [ 1578 / 2055 ], fuzzy 279, not translated 198
|
197 |
+
- Ukrainian 76.16% [ 1565 / 2055 ], fuzzy 287, not translated 203
|
198 |
+
- Chinese (China) 76.11% [ 1564 / 2055 ], fuzzy 284, not translated 207
|
199 |
+
- Croatian 65.21% [ 1340 / 2055 ], fuzzy 273, not translated 442
|
200 |
+
- Slovak 65.16% [ 1339 / 2055 ], fuzzy 275, not translated 441
|
201 |
+
- Czech 65.11% [ 1338 / 2055 ], fuzzy 274, not translated 443
|
202 |
+
- Catalan 64.77% [ 1331 / 2055 ], fuzzy 276, not translated 448
|
203 |
+
- Belarusian 8.27% [ 170 / 2055 ], fuzzy 886, not translated 999
|
204 |
|
205 |
Please recheck the status of each translation, before using plugin.
|
206 |
We open for your help in new translations or correcting existing ones. You can translate to new language or update exist one, using this [tutorial of translation](https://wpbookingcalendar.com/faq/make-translation-of-wp-plugin/)
|
232 |
|
233 |
|
234 |
== Changelog ==
|
235 |
+
= 9.4 =
|
236 |
+
- Changes in **all** versions:
|
237 |
+
* **New**. Update styles of calendar skins. More clear and modern look. Defined minimum width for calendars. Adding padding between months in multi months view modes. (9.3.1.4)
|
238 |
+
* **New**. 2 new calendar skins without outer border. (9.3.1.4)
|
239 |
+
* **Improvement**. Showing calendars at mobile devices, while defined size of calendar in shortcode parameter. (9.3.1.5)
|
240 |
+
* **New**. Parameter strong_width for definition of calendar width in shortcode for option parameter. Please check more here https://wpbookingcalendar.com/faq/shortcode-booking-form/#booking-options (9.3.1.6)
|
241 |
+
* **Improvement**. Removed meta tags from the email templates to prevent marked bookings emails as spam in some servers. (9.3.1.3)
|
242 |
+
* **Improvement**. During validation when submitting the booking form, focus on the first field that requires action. This will help complete the booking form. (9.3.1.9)
|
243 |
+
* **Under Hood**. New WPBC_AJX__REQUEST class for sanitizing, saving and helping working with user requests. (9.3.1.2)
|
244 |
+
* **Fix**. Fix dashboard/agenda links of showing "New | Pending | Today " bookings, in a new ajax Booking Listing page. (9.3.1.7)
|
245 |
+
* **Fix**. Fix border width issue in Chrome browser in calendars. (9.3.1.8)
|
246 |
+
- Changes in **Personal / Business Small / Business Medium / Business Large / MultiUser** versions:
|
247 |
+
* **Improvement**. Disable booked time slots, for predefined selected date in the booking form (it's shortcode for booking form, without the calendar) (9.3.1.1)
|
248 |
+
* **Fix**. Update text in settings. (9.3.1.8)
|
249 |
+
|
250 |
= 9.3 =
|
251 |
- Changes in **all** versions:
|
252 |
* **New**. **Edit bookings** in Booking Calendar Free version. Ability to update booking details or reselect booking dates for existing bookings. (9.2.3.4)
|
1087 |
For more information, see the [full release notes](https://wpbookingcalendar.com/changelog/).
|
1088 |
|
1089 |
== Upgrade Notice ==
|
1090 |
+
= 9.4 =
|
1091 |
+
Update styles of all calendar skins and add 2 new calendar skins. More modern and crisp look. Padding between months in multiple month view modes. Prevent marked bookings emails as spam on some servers...
|
1092 |
= 9.3 =
|
1093 |
+
Ability to Edit bookings in the Booking Calendar Free version. Simulate login of a regular user from a "super booking administrator" account in MultiUser version.
|
1094 |
+
= 9.2 =
|
1095 |
+
New Booking Listing - modern looking & instant working. Single page app design for Booking Listing page with fully new modern design.
|
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: 9.
|
11 |
*/
|
12 |
|
13 |
/* Copyright 2009 - 2022 www.wpbookingcalendar.com (email: info@wpbookingcalendar.com),
|
@@ -29,11 +29,13 @@ Version: 9.3
|
|
29 |
if ( ! defined( 'ABSPATH' ) ) die( '<h3>Direct access to this file do not allow!</h3>' ); // Exit if accessed directly
|
30 |
|
31 |
|
32 |
-
if ( ! defined( 'WP_BK_VERSION_NUM' ) ) { define( 'WP_BK_VERSION_NUM', '9.
|
|
|
33 |
|
34 |
if ( ! defined( 'WPBC_EXIST_NEW_BOOKING_LISTING' ) ) { define( 'WPBC_EXIST_NEW_BOOKING_LISTING', true ); } //FixIn: 9.2.1
|
35 |
-
if ( ! defined( 'WPBC_EXIST_NEW_AVAILABILITY' ) ) { define( 'WPBC_EXIST_NEW_AVAILABILITY', !true ); }
|
36 |
|
|
|
37 |
if (
|
38 |
( WP_DEBUG )
|
39 |
&& ( version_compare( PHP_VERSION, '8.1', '>=' ) ) // If PHP >= 8.1
|
@@ -55,6 +57,7 @@ if (
|
|
55 |
add_filter( 'deprecated_argument_trigger_error', '__return_false' );
|
56 |
add_filter( 'deprecated_hook_trigger_error', '__return_false' );
|
57 |
}
|
|
|
58 |
|
59 |
////////////////////////////////////////////////////////////////////////////////
|
60 |
// PRIMARY URL CONSTANTS
|
7 |
Author URI: https://wpbookingcalendar.com/
|
8 |
Text Domain: booking
|
9 |
Domain Path: /languages/
|
10 |
+
Version: 9.4
|
11 |
*/
|
12 |
|
13 |
/* Copyright 2009 - 2022 www.wpbookingcalendar.com (email: info@wpbookingcalendar.com),
|
29 |
if ( ! defined( 'ABSPATH' ) ) die( '<h3>Direct access to this file do not allow!</h3>' ); // Exit if accessed directly
|
30 |
|
31 |
|
32 |
+
if ( ! defined( 'WP_BK_VERSION_NUM' ) ) { define( 'WP_BK_VERSION_NUM', '9.4' ); }
|
33 |
+
if ( ! defined( 'WP_BK_MINOR_UPDATE' ) ) { define( 'WP_BK_MINOR_UPDATE', ! true ); }
|
34 |
|
35 |
if ( ! defined( 'WPBC_EXIST_NEW_BOOKING_LISTING' ) ) { define( 'WPBC_EXIST_NEW_BOOKING_LISTING', true ); } //FixIn: 9.2.1
|
36 |
+
if ( ! defined( 'WPBC_EXIST_NEW_AVAILABILITY' ) ) { define( 'WPBC_EXIST_NEW_AVAILABILITY', ! true ); } //FixIn: 9.3.0.1
|
37 |
|
38 |
+
/*
|
39 |
if (
|
40 |
( WP_DEBUG )
|
41 |
&& ( version_compare( PHP_VERSION, '8.1', '>=' ) ) // If PHP >= 8.1
|
57 |
add_filter( 'deprecated_argument_trigger_error', '__return_false' );
|
58 |
add_filter( 'deprecated_hook_trigger_error', '__return_false' );
|
59 |
}
|
60 |
+
*/
|
61 |
|
62 |
////////////////////////////////////////////////////////////////////////////////
|
63 |
// PRIMARY URL CONSTANTS
|